diff --git a/benchmark/pom.xml b/benchmark/pom.xml deleted file mode 100644 index f779b3aa..00000000 --- a/benchmark/pom.xml +++ /dev/null @@ -1,187 +0,0 @@ - - - - 4.0.0 - - org.htmlunit.cybernecko - test - 1.0 - jar - - HtmlUnit-Neko-Benchmark-Suite - - - - - - org.openjdk.jmh - jmh-core - ${jmh.version} - - - org.openjdk.jmh - jmh-generator-annprocess - ${jmh.version} - provided - - - org.junit.jupiter - junit-jupiter-engine - 5.10.0 - test - - - - - UTF-8 - - - 1.37 - - - 1.8 - - - benchmarks - - - - - - src/main/java - - **/*.properties - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.0 - - ${javac.target} - ${javac.target} - ${javac.target} - - - - org.apache.maven.plugins - maven-shade-plugin - 3.2.1 - - - package - - shade - - - ${uberjar.name} - - - org.openjdk.jmh.Main - - - - - - - *:* - - META-INF/*.SF - META-INF/*.DSA - META-INF/*.RSA - - - - - - - - - - - - maven-clean-plugin - 2.5 - - - maven-deploy-plugin - 2.8.1 - - - maven-install-plugin - 2.5.1 - - - maven-jar-plugin - 2.4 - - - maven-javadoc-plugin - 2.9.1 - - - maven-resources-plugin - 2.6 - - - maven-site-plugin - 3.3 - - - maven-source-plugin - 2.2.1 - - - maven-surefire-plugin - 2.17 - - - - - - diff --git a/benchmark/src/main/java/org/htmlunit/benchmark/util/FastRandom.java b/benchmark/src/main/java/org/htmlunit/benchmark/util/FastRandom.java deleted file mode 100644 index 7662fdc9..00000000 --- a/benchmark/src/main/java/org/htmlunit/benchmark/util/FastRandom.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.htmlunit.benchmark.util; - -/** - * Ultra-fast pseudo random generator that is not synchronized! - * Don't use anything from Random by inheritance, this will inherit - * a volatile! - * - * @author rschwietzke - * - */ -public class FastRandom -{ - private long seed; - - public FastRandom() - { - this.seed = System.currentTimeMillis(); - } - - public FastRandom(long seed) - { - this.seed = seed; - } - - protected int next(int nbits) - { - // N.B. Not thread-safe! - long x = this.seed; - x ^= (x << 21); - x ^= (x >>> 35); - x ^= (x << 4); - this.seed = x; - - x &= ((1L << nbits) -1); - - return (int) x; - } - - /** - * Borrowed from the JDK - * - * @param bound - * @return - */ - public int nextInt(int bound) { - - int r = next(31); - int m = bound - 1; - if ((bound & m) == 0) // i.e., bound is a power of 2 - r = (int)((bound * (long)r) >> 31); - else { - for (int u = r; - u - (r = u % bound) + m < 0; - u = next(31)) - ; - } - return r; - } - - /** - * Borrowed from the JDK - * @return - */ - public int nextInt() { - return next(32); - } -} diff --git a/benchmark/src/main/java/org/htmlunit/benchmark/util/RandomUtils.java b/benchmark/src/main/java/org/htmlunit/benchmark/util/RandomUtils.java deleted file mode 100644 index 2b77f5eb..00000000 --- a/benchmark/src/main/java/org/htmlunit/benchmark/util/RandomUtils.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.htmlunit.benchmark.util; -public class RandomUtils -{ - private final static String LOWERCHARS = "abcdefghijklmnopqrstuvwxyz"; - private final static String UPPERCHARS = LOWERCHARS.toUpperCase(); - private final static String CHARS = LOWERCHARS + UPPERCHARS; - - /** - * Fixed length random string - * @param random - * @param length - * @return - */ - public static String randomString(final FastRandom random, final int length) - { - return randomString(random, length, length); - } - - /** - * Variable length random string - * @param random - * @param from - * @param to - * @return - */ - public static String randomString(final FastRandom random, final int from, final int to) - { - final int length = random.nextInt(to - from + 1) + from; - - final StringBuilder sb = new StringBuilder(to); - - for (int i = 0; i < length; i++) - { - final int pos = random.nextInt(CHARS.length()); - sb.append(CHARS.charAt(pos)); - } - - return sb.toString(); - } -} diff --git a/benchmark/src/main/java/org/htmlunit/cyberneko/HTMLEntitiesParser_Old.java b/benchmark/src/main/java/org/htmlunit/cyberneko/HTMLEntitiesParser_Old.java deleted file mode 100644 index 51edbc58..00000000 --- a/benchmark/src/main/java/org/htmlunit/cyberneko/HTMLEntitiesParser_Old.java +++ /dev/null @@ -1,60552 +0,0 @@ -/* - * Copyright 2002-2009 Andy Clark, Marc Guillemot - * Copyright 2017-2023 Ronald Brill - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.htmlunit.cyberneko; - -/** - * Parser for the Pre-defined named HTML entities. - * 12.2.5.72 Character reference state - *

- * From the spec:
- * Consume the maximum number of characters possible, with the consumed characters matching - * one of the identifiers in the first column of the named character references table - * (in a case-sensitive manner). - * Append each character to the temporary buffer when it's consumed. - * - * @author Ronald Brill - */ -public class HTMLEntitiesParser_Old { - public static final int STATE_START = 0; - private static final int STATE_ENDS_WITH_SEMICOLON = -2; - - private static final int STATE_HEXADECIMAL_CHAR = -102; - private static final int STATE_DECIMAL_CHAR = -104; - - private static final int STATE_NUMERIC_CHAR_END_SEMICOLON_MISSING = -105; - - private int state; - private int consumedCount; - private String match; - private int code; - private int matchLength; - - public String getMatch() { - return match; - } - - public int getMatchLength() { - return matchLength; - } - - public int getRewindCount() { - return consumedCount - matchLength; - } - - public boolean endsWithSemicolon() { - return STATE_ENDS_WITH_SEMICOLON == state; - } - - public HTMLEntitiesParser_Old() { - state = STATE_START; - } - - public void setMatchFromCode() { - // If the number is 0x00, then this is a null-character-reference parse error. Set the character reference code to 0xFFFD. - // If the number is greater than 0x10FFFF, then this is a character-reference-outside-unicode-range parse error. Set the character reference code to 0xFFFD. - if ((0x00 == code) || (code > 0x10FFFF)) { - match = "\uFFFD"; - matchLength = consumedCount; - return; - } - - // If the number is a surrogate, then this is a surrogate-character-reference parse error. Set the character reference code to 0xFFFD - if (Character.isSurrogate((char) code)) { - match = "\uFFFD"; - return; - } - - // If the number is a noncharacter, then this is a noncharacter-character-reference parse error. - - // If the number is 0x0D, or a control that's not ASCII whitespace, then this is a control-character-reference parse error. - - // If the number is one of the numbers in the first column of the following table, then find the row with that number in the first column, - // and set the character reference code to the number in the second column of that row. - switch (code) { - case 0x80: - match = "\u20AC"; - matchLength = consumedCount; - return; - - case 0x82: - match = "\u201A"; - matchLength = consumedCount; - return; - - case 0x83: - match = "\u0192"; - matchLength = consumedCount; - return; - - case 0x84: - match = "\u201E"; - matchLength = consumedCount; - return; - - case 0x85: - match = "\u2026"; - matchLength = consumedCount; - return; - - case 0x86: - match = "\u2020"; - matchLength = consumedCount; - return; - - case 0x87: - match = "\u2021"; - matchLength = consumedCount; - return; - - case 0x88: - match = "\u02C6"; - matchLength = consumedCount; - return; - - case 0x89: - match = "\u2030"; - matchLength = consumedCount; - return; - - case 0x8A: - match = "\u0160"; - matchLength = consumedCount; - return; - - case 0x8B: - match = "\u2039"; - matchLength = consumedCount; - return; - - case 0x8C: - match = "\u0152"; - matchLength = consumedCount; - return; - - case 0x8E: - match = "\u017D"; - matchLength = consumedCount; - return; - - case 0x91: - match = "\u2018"; - matchLength = consumedCount; - return; - - case 0x92: - match = "\u2019"; - matchLength = consumedCount; - return; - - case 0x93: - match = "\u201C"; - matchLength = consumedCount; - return; - - case 0x94: - match = "\u201D"; - matchLength = consumedCount; - return; - - case 0x95: - match = "\u2022"; - matchLength = consumedCount; - return; - - case 0x96: - match = "\u2013"; - matchLength = consumedCount; - return; - - case 0x97: - match = "\u2014"; - matchLength = consumedCount; - return; - - case 0x98: - match = "\u20DC"; - matchLength = consumedCount; - return; - - case 0x99: - match = "\u2122"; - matchLength = consumedCount; - return; - - case 0x9A: - match = "\u0161"; - matchLength = consumedCount; - return; - - case 0x9B: - match = "\u203A"; - matchLength = consumedCount; - return; - - case 0x9C: - match = "\u0153"; - matchLength = consumedCount; - return; - - case 0x9E: - match = "\u017E"; - matchLength = consumedCount; - return; - - case 0x9F: - match = "\u0178"; - matchLength = consumedCount; - return; - - default: - break; - } - match = new String(Character.toChars(code)); - matchLength = consumedCount; - } - - public boolean parseNumeric(final int current) { - consumedCount++; - switch (state) { - case STATE_START: - if ('X' == current || 'x' == current) { - state = STATE_HEXADECIMAL_CHAR; - return true; - } - if ('0' <= current && current <= '9') { - state = STATE_DECIMAL_CHAR; - code = (code * 10) + current - 0x30; - return true; - } - break; - case STATE_HEXADECIMAL_CHAR: - if ('0' <= current && current <= '9') { - code = (code * 16) + current - 0x30; - return true; - } - if ('A' <= current && current <= 'F') { - code = (code * 16) + current - 0x37; - return true; - } - if ('a' <= current && current <= 'f') { - code = (code * 16) + current - 0x57; - return true; - } - if (';' == current) { - setMatchFromCode(); - return false; - } - - state = STATE_NUMERIC_CHAR_END_SEMICOLON_MISSING; - setMatchFromCode(); - matchLength = consumedCount - 1; - break; - case STATE_DECIMAL_CHAR: - if ('0' <= current && current <= '9') { - code = (code * 10) + current - 0x30; - return true; - } - if (';' == current) { - setMatchFromCode(); - return false; - } - - state = STATE_NUMERIC_CHAR_END_SEMICOLON_MISSING; - setMatchFromCode(); - matchLength = consumedCount - 1; - break; - } - return false; - } - - private boolean parse1(final int current) { - consumedCount++; - switch (state) { - case 0: - switch (current) { - case 'A': - state = 1; - return true; - case 'B': - state = 77; - return true; - case 'C': - state = 126; - return true; - case 'D': - state = 342; - return true; - case 'E': - state = 666; - return true; - case 'F': - state = 788; - return true; - case 'G': - state = 842; - return true; - case 'H': - state = 929; - return true; - case 'I': - state = 995; - return true; - case 'J': - state = 1096; - return true; - case 'K': - state = 1118; - return true; - case 'L': - state = 1143; - return true; - case 'M': - state = 1514; - return true; - case 'N': - state = 1553; - return true; - case 'O': - state = 2048; - return true; - case 'P': - state = 2157; - return true; - case 'Q': - state = 2242; - return true; - case 'R': - state = 2254; - return true; - case 'S': - state = 2509; - return true; - case 'T': - state = 2706; - return true; - case 'U': - state = 2801; - return true; - case 'V': - state = 2981; - return true; - case 'W': - state = 3051; - return true; - case 'X': - state = 3068; - return true; - case 'Y': - state = 3078; - return true; - case 'Z': - state = 3109; - return true; - case 'a': - state = 3150; - return true; - case 'b': - state = 3295; - return true; - case 'c': - state = 3607; - return true; - case 'd': - state = 3899; - return true; - case 'e': - state = 4140; - return true; - case 'f': - state = 4326; - return true; - case 'g': - state = 4426; - return true; - case 'h': - state = 4572; - return true; - case 'i': - state = 4688; - return true; - case 'j': - state = 4831; - return true; - case 'k': - state = 4857; - return true; - case 'l': - state = 4888; - return true; - case 'm': - state = 5381; - return true; - case 'n': - state = 5494; - return true; - case 'o': - state = 5929; - return true; - case 'p': - state = 6076; - return true; - case 'q': - state = 6256; - return true; - case 'r': - state = 6293; - return true; - case 's': - state = 6626; - return true; - case 't': - state = 7027; - return true; - case 'u': - state = 7222; - return true; - case 'v': - state = 7392; - return true; - case 'w': - state = 7546; - return true; - case 'x': - state = 7577; - return true; - case 'y': - state = 7656; - return true; - case 'z': - state = 7686; - return true; - } - break; - case 1: - switch (current) { - case 'E': - state = 2; - return true; - case 'M': - state = 6; - return true; - case 'a': - state = 8; - return true; - case 'b': - state = 13; - return true; - case 'c': - state = 18; - return true; - case 'f': - state = 23; - return true; - case 'g': - state = 25; - return true; - case 'l': - state = 30; - return true; - case 'm': - state = 34; - return true; - case 'n': - state = 38; - return true; - case 'o': - state = 40; - return true; - case 'p': - state = 46; - return true; - case 'r': - state = 58; - return true; - case 's': - state = 62; - return true; - case 't': - state = 69; - return true; - case 'u': - state = 74; - return true; - } - break; - case 2: - if ('l' == current) { - state = 3; - return true; - } - break; - case 3: - if ('i' == current) { - state = 4; - return true; - } - break; - case 4: - // AElig - if ('g' == current) { - match = "\u00C6"; - matchLength = consumedCount; - state = 5; - return true; - } - break; - case 5: - // AElig; - if (';' == current) { - match = "\u00C6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6: - // AMP - if ('P' == current) { - match = "&"; - matchLength = consumedCount; - state = 7; - return true; - } - break; - case 7: - // AMP; - if (';' == current) { - match = "&"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 8: - if ('c' == current) { - state = 9; - return true; - } - break; - case 9: - if ('u' == current) { - state = 10; - return true; - } - break; - case 10: - if ('t' == current) { - state = 11; - return true; - } - break; - case 11: - // Aacute - if ('e' == current) { - match = "\u00C1"; - matchLength = consumedCount; - state = 12; - return true; - } - break; - case 12: - // Aacute; - if (';' == current) { - match = "\u00C1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 13: - if ('r' == current) { - state = 14; - return true; - } - break; - case 14: - if ('e' == current) { - state = 15; - return true; - } - break; - case 15: - if ('v' == current) { - state = 16; - return true; - } - break; - case 16: - if ('e' == current) { - state = 17; - return true; - } - break; - case 17: - // Abreve; - if (';' == current) { - match = "\u0102"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 18: - if ('i' == current) { - state = 19; - return true; - } - else if ('y' == current) { - state = 22; - return true; - } - break; - case 19: - if ('r' == current) { - state = 20; - return true; - } - break; - case 20: - // Acirc - if ('c' == current) { - match = "\u00C2"; - matchLength = consumedCount; - state = 21; - return true; - } - break; - case 21: - // Acirc; - if (';' == current) { - match = "\u00C2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 22: - // Acy; - if (';' == current) { - match = "\u0410"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 23: - if ('r' == current) { - state = 24; - return true; - } - break; - case 24: - // Afr; - if (';' == current) { - match = "\uD835\uDD04"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 25: - if ('r' == current) { - state = 26; - return true; - } - break; - case 26: - if ('a' == current) { - state = 27; - return true; - } - break; - case 27: - if ('v' == current) { - state = 28; - return true; - } - break; - case 28: - // Agrave - if ('e' == current) { - match = "\u00C0"; - matchLength = consumedCount; - state = 29; - return true; - } - break; - case 29: - // Agrave; - if (';' == current) { - match = "\u00C0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 30: - if ('p' == current) { - state = 31; - return true; - } - break; - case 31: - if ('h' == current) { - state = 32; - return true; - } - break; - case 32: - if ('a' == current) { - state = 33; - return true; - } - break; - case 33: - // Alpha; - if (';' == current) { - match = "\u0391"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 34: - if ('a' == current) { - state = 35; - return true; - } - break; - case 35: - if ('c' == current) { - state = 36; - return true; - } - break; - case 36: - if ('r' == current) { - state = 37; - return true; - } - break; - case 37: - // Amacr; - if (';' == current) { - match = "\u0100"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 38: - if ('d' == current) { - state = 39; - return true; - } - break; - case 39: - // And; - if (';' == current) { - match = "\u2A53"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 40: - if ('g' == current) { - state = 41; - return true; - } - else if ('p' == current) { - state = 44; - return true; - } - break; - case 41: - if ('o' == current) { - state = 42; - return true; - } - break; - case 42: - if ('n' == current) { - state = 43; - return true; - } - break; - case 43: - // Aogon; - if (';' == current) { - match = "\u0104"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 44: - if ('f' == current) { - state = 45; - return true; - } - break; - case 45: - // Aopf; - if (';' == current) { - match = "\uD835\uDD38"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 46: - if ('p' == current) { - state = 47; - return true; - } - break; - case 47: - if ('l' == current) { - state = 48; - return true; - } - break; - case 48: - if ('y' == current) { - state = 49; - return true; - } - break; - case 49: - if ('F' == current) { - state = 50; - return true; - } - break; - case 50: - if ('u' == current) { - state = 51; - return true; - } - break; - case 51: - if ('n' == current) { - state = 52; - return true; - } - break; - case 52: - if ('c' == current) { - state = 53; - return true; - } - break; - case 53: - if ('t' == current) { - state = 54; - return true; - } - break; - case 54: - if ('i' == current) { - state = 55; - return true; - } - break; - case 55: - if ('o' == current) { - state = 56; - return true; - } - break; - case 56: - if ('n' == current) { - state = 57; - return true; - } - break; - case 57: - // ApplyFunction; - if (';' == current) { - match = "\u2061"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 58: - if ('i' == current) { - state = 59; - return true; - } - break; - case 59: - if ('n' == current) { - state = 60; - return true; - } - break; - case 60: - // Aring - if ('g' == current) { - match = "\u00C5"; - matchLength = consumedCount; - state = 61; - return true; - } - break; - case 61: - // Aring; - if (';' == current) { - match = "\u00C5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 62: - if ('c' == current) { - state = 63; - return true; - } - else if ('s' == current) { - state = 65; - return true; - } - break; - case 63: - if ('r' == current) { - state = 64; - return true; - } - break; - case 64: - // Ascr; - if (';' == current) { - match = "\uD835\uDC9C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 65: - if ('i' == current) { - state = 66; - return true; - } - break; - case 66: - if ('g' == current) { - state = 67; - return true; - } - break; - case 67: - if ('n' == current) { - state = 68; - return true; - } - break; - case 68: - // Assign; - if (';' == current) { - match = "\u2254"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 69: - if ('i' == current) { - state = 70; - return true; - } - break; - case 70: - if ('l' == current) { - state = 71; - return true; - } - break; - case 71: - if ('d' == current) { - state = 72; - return true; - } - break; - case 72: - // Atilde - if ('e' == current) { - match = "\u00C3"; - matchLength = consumedCount; - state = 73; - return true; - } - break; - case 73: - // Atilde; - if (';' == current) { - match = "\u00C3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 74: - if ('m' == current) { - state = 75; - return true; - } - break; - case 75: - // Auml - if ('l' == current) { - match = "\u00C4"; - matchLength = consumedCount; - state = 76; - return true; - } - break; - case 76: - // Auml; - if (';' == current) { - match = "\u00C4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 77: - switch (current) { - case 'a': - state = 78; - return true; - case 'c': - state = 91; - return true; - case 'e': - state = 93; - return true; - case 'f': - state = 109; - return true; - case 'o': - state = 111; - return true; - case 'r': - state = 114; - return true; - case 's': - state = 118; - return true; - case 'u': - state = 121; - return true; - } - break; - case 78: - if ('c' == current) { - state = 79; - return true; - } - else if ('r' == current) { - state = 86; - return true; - } - break; - case 79: - if ('k' == current) { - state = 80; - return true; - } - break; - case 80: - if ('s' == current) { - state = 81; - return true; - } - break; - case 81: - if ('l' == current) { - state = 82; - return true; - } - break; - case 82: - if ('a' == current) { - state = 83; - return true; - } - break; - case 83: - if ('s' == current) { - state = 84; - return true; - } - break; - case 84: - if ('h' == current) { - state = 85; - return true; - } - break; - case 85: - // Backslash; - if (';' == current) { - match = "\u2216"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 86: - if ('v' == current) { - state = 87; - return true; - } - else if ('w' == current) { - state = 88; - return true; - } - break; - case 87: - // Barv; - if (';' == current) { - match = "\u2AE7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 88: - if ('e' == current) { - state = 89; - return true; - } - break; - case 89: - if ('d' == current) { - state = 90; - return true; - } - break; - case 90: - // Barwed; - if (';' == current) { - match = "\u2306"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 91: - if ('y' == current) { - state = 92; - return true; - } - break; - case 92: - // Bcy; - if (';' == current) { - match = "\u0411"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 93: - switch (current) { - case 'c': - state = 94; - return true; - case 'r': - state = 99; - return true; - case 't': - state = 107; - return true; - } - break; - case 94: - if ('a' == current) { - state = 95; - return true; - } - break; - case 95: - if ('u' == current) { - state = 96; - return true; - } - break; - case 96: - if ('s' == current) { - state = 97; - return true; - } - break; - case 97: - if ('e' == current) { - state = 98; - return true; - } - break; - case 98: - // Because; - if (';' == current) { - match = "\u2235"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 99: - if ('n' == current) { - state = 100; - return true; - } - break; - case 100: - if ('o' == current) { - state = 101; - return true; - } - break; - case 101: - if ('u' == current) { - state = 102; - return true; - } - break; - case 102: - if ('l' == current) { - state = 103; - return true; - } - break; - case 103: - if ('l' == current) { - state = 104; - return true; - } - break; - case 104: - if ('i' == current) { - state = 105; - return true; - } - break; - case 105: - if ('s' == current) { - state = 106; - return true; - } - break; - case 106: - // Bernoullis; - if (';' == current) { - match = "\u212C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 107: - if ('a' == current) { - state = 108; - return true; - } - break; - case 108: - // Beta; - if (';' == current) { - match = "\u0392"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 109: - if ('r' == current) { - state = 110; - return true; - } - break; - case 110: - // Bfr; - if (';' == current) { - match = "\uD835\uDD05"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 111: - if ('p' == current) { - state = 112; - return true; - } - break; - case 112: - if ('f' == current) { - state = 113; - return true; - } - break; - case 113: - // Bopf; - if (';' == current) { - match = "\uD835\uDD39"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 114: - if ('e' == current) { - state = 115; - return true; - } - break; - case 115: - if ('v' == current) { - state = 116; - return true; - } - break; - case 116: - if ('e' == current) { - state = 117; - return true; - } - break; - case 117: - // Breve; - if (';' == current) { - match = "\u02D8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 118: - if ('c' == current) { - state = 119; - return true; - } - break; - case 119: - if ('r' == current) { - state = 120; - return true; - } - break; - case 120: - // Bscr; - if (';' == current) { - match = "\u212C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 121: - if ('m' == current) { - state = 122; - return true; - } - break; - case 122: - if ('p' == current) { - state = 123; - return true; - } - break; - case 123: - if ('e' == current) { - state = 124; - return true; - } - break; - case 124: - if ('q' == current) { - state = 125; - return true; - } - break; - case 125: - // Bumpeq; - if (';' == current) { - match = "\u224E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 126: - switch (current) { - case 'H': - state = 127; - return true; - case 'O': - state = 130; - return true; - case 'a': - state = 133; - return true; - case 'c': - state = 161; - return true; - case 'd': - state = 178; - return true; - case 'e': - state = 181; - return true; - case 'f': - state = 194; - return true; - case 'h': - state = 196; - return true; - case 'i': - state = 198; - return true; - case 'l': - state = 220; - return true; - case 'o': - state = 266; - return true; - case 'r': - state = 330; - return true; - case 's': - state = 334; - return true; - case 'u': - state = 337; - return true; - } - break; - case 127: - if ('c' == current) { - state = 128; - return true; - } - break; - case 128: - if ('y' == current) { - state = 129; - return true; - } - break; - case 129: - // CHcy; - if (';' == current) { - match = "\u0427"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 130: - if ('P' == current) { - state = 131; - return true; - } - break; - case 131: - // COPY - if ('Y' == current) { - match = "\u00A9"; - matchLength = consumedCount; - state = 132; - return true; - } - break; - case 132: - // COPY; - if (';' == current) { - match = "\u00A9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 133: - switch (current) { - case 'c': - state = 134; - return true; - case 'p': - state = 138; - return true; - case 'y': - state = 156; - return true; - } - break; - case 134: - if ('u' == current) { - state = 135; - return true; - } - break; - case 135: - if ('t' == current) { - state = 136; - return true; - } - break; - case 136: - if ('e' == current) { - state = 137; - return true; - } - break; - case 137: - // Cacute; - if (';' == current) { - match = "\u0106"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 138: - // Cap; - if (';' == current) { - match = "\u22D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('i' == current) { - state = 139; - return true; - } - break; - case 139: - if ('t' == current) { - state = 140; - return true; - } - break; - case 140: - if ('a' == current) { - state = 141; - return true; - } - break; - case 141: - if ('l' == current) { - state = 142; - return true; - } - break; - case 142: - if ('D' == current) { - state = 143; - return true; - } - break; - case 143: - if ('i' == current) { - state = 144; - return true; - } - break; - case 144: - if ('f' == current) { - state = 145; - return true; - } - break; - case 145: - if ('f' == current) { - state = 146; - return true; - } - break; - case 146: - if ('e' == current) { - state = 147; - return true; - } - break; - case 147: - if ('r' == current) { - state = 148; - return true; - } - break; - case 148: - if ('e' == current) { - state = 149; - return true; - } - break; - case 149: - if ('n' == current) { - state = 150; - return true; - } - break; - case 150: - if ('t' == current) { - state = 151; - return true; - } - break; - case 151: - if ('i' == current) { - state = 152; - return true; - } - break; - case 152: - if ('a' == current) { - state = 153; - return true; - } - break; - case 153: - if ('l' == current) { - state = 154; - return true; - } - break; - case 154: - if ('D' == current) { - state = 155; - return true; - } - break; - case 155: - // CapitalDifferentialD; - if (';' == current) { - match = "\u2145"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 156: - if ('l' == current) { - state = 157; - return true; - } - break; - case 157: - if ('e' == current) { - state = 158; - return true; - } - break; - case 158: - if ('y' == current) { - state = 159; - return true; - } - break; - case 159: - if ('s' == current) { - state = 160; - return true; - } - break; - case 160: - // Cayleys; - if (';' == current) { - match = "\u212D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 161: - switch (current) { - case 'a': - state = 162; - return true; - case 'e': - state = 166; - return true; - case 'i': - state = 170; - return true; - case 'o': - state = 173; - return true; - } - break; - case 162: - if ('r' == current) { - state = 163; - return true; - } - break; - case 163: - if ('o' == current) { - state = 164; - return true; - } - break; - case 164: - if ('n' == current) { - state = 165; - return true; - } - break; - case 165: - // Ccaron; - if (';' == current) { - match = "\u010C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 166: - if ('d' == current) { - state = 167; - return true; - } - break; - case 167: - if ('i' == current) { - state = 168; - return true; - } - break; - case 168: - // Ccedil - if ('l' == current) { - match = "\u00C7"; - matchLength = consumedCount; - state = 169; - return true; - } - break; - case 169: - // Ccedil; - if (';' == current) { - match = "\u00C7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 170: - if ('r' == current) { - state = 171; - return true; - } - break; - case 171: - if ('c' == current) { - state = 172; - return true; - } - break; - case 172: - // Ccirc; - if (';' == current) { - match = "\u0108"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 173: - if ('n' == current) { - state = 174; - return true; - } - break; - case 174: - if ('i' == current) { - state = 175; - return true; - } - break; - case 175: - if ('n' == current) { - state = 176; - return true; - } - break; - case 176: - if ('t' == current) { - state = 177; - return true; - } - break; - case 177: - // Cconint; - if (';' == current) { - match = "\u2230"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 178: - if ('o' == current) { - state = 179; - return true; - } - break; - case 179: - if ('t' == current) { - state = 180; - return true; - } - break; - case 180: - // Cdot; - if (';' == current) { - match = "\u010A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 181: - if ('d' == current) { - state = 182; - return true; - } - else if ('n' == current) { - state = 187; - return true; - } - break; - case 182: - if ('i' == current) { - state = 183; - return true; - } - break; - case 183: - if ('l' == current) { - state = 184; - return true; - } - break; - case 184: - if ('l' == current) { - state = 185; - return true; - } - break; - case 185: - if ('a' == current) { - state = 186; - return true; - } - break; - case 186: - // Cedilla; - if (';' == current) { - match = "\u00B8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 187: - if ('t' == current) { - state = 188; - return true; - } - break; - case 188: - if ('e' == current) { - state = 189; - return true; - } - break; - case 189: - if ('r' == current) { - state = 190; - return true; - } - break; - case 190: - if ('D' == current) { - state = 191; - return true; - } - break; - case 191: - if ('o' == current) { - state = 192; - return true; - } - break; - case 192: - if ('t' == current) { - state = 193; - return true; - } - break; - case 193: - // CenterDot; - if (';' == current) { - match = "\u00B7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 194: - if ('r' == current) { - state = 195; - return true; - } - break; - case 195: - // Cfr; - if (';' == current) { - match = "\u212D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 196: - if ('i' == current) { - state = 197; - return true; - } - break; - case 197: - // Chi; - if (';' == current) { - match = "\u03A7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 198: - if ('r' == current) { - state = 199; - return true; - } - break; - case 199: - if ('c' == current) { - state = 200; - return true; - } - break; - case 200: - if ('l' == current) { - state = 201; - return true; - } - break; - case 201: - if ('e' == current) { - state = 202; - return true; - } - break; - case 202: - switch (current) { - case 'D': - state = 203; - return true; - case 'M': - state = 206; - return true; - case 'P': - state = 211; - return true; - case 'T': - state = 215; - return true; - } - break; - case 203: - if ('o' == current) { - state = 204; - return true; - } - break; - case 204: - if ('t' == current) { - state = 205; - return true; - } - break; - case 205: - // CircleDot; - if (';' == current) { - match = "\u2299"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 206: - if ('i' == current) { - state = 207; - return true; - } - break; - case 207: - if ('n' == current) { - state = 208; - return true; - } - break; - case 208: - if ('u' == current) { - state = 209; - return true; - } - break; - case 209: - if ('s' == current) { - state = 210; - return true; - } - break; - case 210: - // CircleMinus; - if (';' == current) { - match = "\u2296"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 211: - if ('l' == current) { - state = 212; - return true; - } - break; - case 212: - if ('u' == current) { - state = 213; - return true; - } - break; - case 213: - if ('s' == current) { - state = 214; - return true; - } - break; - case 214: - // CirclePlus; - if (';' == current) { - match = "\u2295"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 215: - if ('i' == current) { - state = 216; - return true; - } - break; - case 216: - if ('m' == current) { - state = 217; - return true; - } - break; - case 217: - if ('e' == current) { - state = 218; - return true; - } - break; - case 218: - if ('s' == current) { - state = 219; - return true; - } - break; - case 219: - // CircleTimes; - if (';' == current) { - match = "\u2297"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 220: - if ('o' == current) { - state = 221; - return true; - } - break; - case 221: - if ('c' == current) { - state = 222; - return true; - } - else if ('s' == current) { - state = 243; - return true; - } - break; - case 222: - if ('k' == current) { - state = 223; - return true; - } - break; - case 223: - if ('w' == current) { - state = 224; - return true; - } - break; - case 224: - if ('i' == current) { - state = 225; - return true; - } - break; - case 225: - if ('s' == current) { - state = 226; - return true; - } - break; - case 226: - if ('e' == current) { - state = 227; - return true; - } - break; - case 227: - if ('C' == current) { - state = 228; - return true; - } - break; - case 228: - if ('o' == current) { - state = 229; - return true; - } - break; - case 229: - if ('n' == current) { - state = 230; - return true; - } - break; - case 230: - if ('t' == current) { - state = 231; - return true; - } - break; - case 231: - if ('o' == current) { - state = 232; - return true; - } - break; - case 232: - if ('u' == current) { - state = 233; - return true; - } - break; - case 233: - if ('r' == current) { - state = 234; - return true; - } - break; - case 234: - if ('I' == current) { - state = 235; - return true; - } - break; - case 235: - if ('n' == current) { - state = 236; - return true; - } - break; - case 236: - if ('t' == current) { - state = 237; - return true; - } - break; - case 237: - if ('e' == current) { - state = 238; - return true; - } - break; - case 238: - if ('g' == current) { - state = 239; - return true; - } - break; - case 239: - if ('r' == current) { - state = 240; - return true; - } - break; - case 240: - if ('a' == current) { - state = 241; - return true; - } - break; - case 241: - if ('l' == current) { - state = 242; - return true; - } - break; - case 242: - // ClockwiseContourIntegral; - if (';' == current) { - match = "\u2232"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 243: - if ('e' == current) { - state = 244; - return true; - } - break; - case 244: - if ('C' == current) { - state = 245; - return true; - } - break; - case 245: - if ('u' == current) { - state = 246; - return true; - } - break; - case 246: - if ('r' == current) { - state = 247; - return true; - } - break; - case 247: - if ('l' == current) { - state = 248; - return true; - } - break; - case 248: - if ('y' == current) { - state = 249; - return true; - } - break; - case 249: - if ('D' == current) { - state = 250; - return true; - } - else if ('Q' == current) { - state = 261; - return true; - } - break; - case 250: - if ('o' == current) { - state = 251; - return true; - } - break; - case 251: - if ('u' == current) { - state = 252; - return true; - } - break; - case 252: - if ('b' == current) { - state = 253; - return true; - } - break; - case 253: - if ('l' == current) { - state = 254; - return true; - } - break; - case 254: - if ('e' == current) { - state = 255; - return true; - } - break; - case 255: - if ('Q' == current) { - state = 256; - return true; - } - break; - case 256: - if ('u' == current) { - state = 257; - return true; - } - break; - case 257: - if ('o' == current) { - state = 258; - return true; - } - break; - case 258: - if ('t' == current) { - state = 259; - return true; - } - break; - case 259: - if ('e' == current) { - state = 260; - return true; - } - break; - case 260: - // CloseCurlyDoubleQuote; - if (';' == current) { - match = "\u201D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 261: - if ('u' == current) { - state = 262; - return true; - } - break; - case 262: - if ('o' == current) { - state = 263; - return true; - } - break; - case 263: - if ('t' == current) { - state = 264; - return true; - } - break; - case 264: - if ('e' == current) { - state = 265; - return true; - } - break; - case 265: - // CloseCurlyQuote; - if (';' == current) { - match = "\u2019"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 266: - switch (current) { - case 'l': - state = 267; - return true; - case 'n': - state = 271; - return true; - case 'p': - state = 293; - return true; - case 'u': - state = 301; - return true; - } - break; - case 267: - if ('o' == current) { - state = 268; - return true; - } - break; - case 268: - if ('n' == current) { - state = 269; - return true; - } - break; - case 269: - // Colon; - if (';' == current) { - match = "\u2237"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 270; - return true; - } - break; - case 270: - // Colone; - if (';' == current) { - match = "\u2A74"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 271: - switch (current) { - case 'g': - state = 272; - return true; - case 'i': - state = 278; - return true; - case 't': - state = 281; - return true; - } - break; - case 272: - if ('r' == current) { - state = 273; - return true; - } - break; - case 273: - if ('u' == current) { - state = 274; - return true; - } - break; - case 274: - if ('e' == current) { - state = 275; - return true; - } - break; - case 275: - if ('n' == current) { - state = 276; - return true; - } - break; - case 276: - if ('t' == current) { - state = 277; - return true; - } - break; - case 277: - // Congruent; - if (';' == current) { - match = "\u2261"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 278: - if ('n' == current) { - state = 279; - return true; - } - break; - case 279: - if ('t' == current) { - state = 280; - return true; - } - break; - case 280: - // Conint; - if (';' == current) { - match = "\u222F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 281: - if ('o' == current) { - state = 282; - return true; - } - break; - case 282: - if ('u' == current) { - state = 283; - return true; - } - break; - case 283: - if ('r' == current) { - state = 284; - return true; - } - break; - case 284: - if ('I' == current) { - state = 285; - return true; - } - break; - case 285: - if ('n' == current) { - state = 286; - return true; - } - break; - case 286: - if ('t' == current) { - state = 287; - return true; - } - break; - case 287: - if ('e' == current) { - state = 288; - return true; - } - break; - case 288: - if ('g' == current) { - state = 289; - return true; - } - break; - case 289: - if ('r' == current) { - state = 290; - return true; - } - break; - case 290: - if ('a' == current) { - state = 291; - return true; - } - break; - case 291: - if ('l' == current) { - state = 292; - return true; - } - break; - case 292: - // ContourIntegral; - if (';' == current) { - match = "\u222E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 293: - if ('f' == current) { - state = 294; - return true; - } - else if ('r' == current) { - state = 295; - return true; - } - break; - case 294: - // Copf; - if (';' == current) { - match = "\u2102"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 295: - if ('o' == current) { - state = 296; - return true; - } - break; - case 296: - if ('d' == current) { - state = 297; - return true; - } - break; - case 297: - if ('u' == current) { - state = 298; - return true; - } - break; - case 298: - if ('c' == current) { - state = 299; - return true; - } - break; - case 299: - if ('t' == current) { - state = 300; - return true; - } - break; - case 300: - // Coproduct; - if (';' == current) { - match = "\u2210"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 301: - if ('n' == current) { - state = 302; - return true; - } - break; - case 302: - if ('t' == current) { - state = 303; - return true; - } - break; - case 303: - if ('e' == current) { - state = 304; - return true; - } - break; - case 304: - if ('r' == current) { - state = 305; - return true; - } - break; - case 305: - if ('C' == current) { - state = 306; - return true; - } - break; - case 306: - if ('l' == current) { - state = 307; - return true; - } - break; - case 307: - if ('o' == current) { - state = 308; - return true; - } - break; - case 308: - if ('c' == current) { - state = 309; - return true; - } - break; - case 309: - if ('k' == current) { - state = 310; - return true; - } - break; - case 310: - if ('w' == current) { - state = 311; - return true; - } - break; - case 311: - if ('i' == current) { - state = 312; - return true; - } - break; - case 312: - if ('s' == current) { - state = 313; - return true; - } - break; - case 313: - if ('e' == current) { - state = 314; - return true; - } - break; - case 314: - if ('C' == current) { - state = 315; - return true; - } - break; - case 315: - if ('o' == current) { - state = 316; - return true; - } - break; - case 316: - if ('n' == current) { - state = 317; - return true; - } - break; - case 317: - if ('t' == current) { - state = 318; - return true; - } - break; - case 318: - if ('o' == current) { - state = 319; - return true; - } - break; - case 319: - if ('u' == current) { - state = 320; - return true; - } - break; - case 320: - if ('r' == current) { - state = 321; - return true; - } - break; - case 321: - if ('I' == current) { - state = 322; - return true; - } - break; - case 322: - if ('n' == current) { - state = 323; - return true; - } - break; - case 323: - if ('t' == current) { - state = 324; - return true; - } - break; - case 324: - if ('e' == current) { - state = 325; - return true; - } - break; - case 325: - if ('g' == current) { - state = 326; - return true; - } - break; - case 326: - if ('r' == current) { - state = 327; - return true; - } - break; - case 327: - if ('a' == current) { - state = 328; - return true; - } - break; - case 328: - if ('l' == current) { - state = 329; - return true; - } - break; - case 329: - // CounterClockwiseContourIntegral; - if (';' == current) { - match = "\u2233"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 330: - if ('o' == current) { - state = 331; - return true; - } - break; - case 331: - if ('s' == current) { - state = 332; - return true; - } - break; - case 332: - if ('s' == current) { - state = 333; - return true; - } - break; - case 333: - // Cross; - if (';' == current) { - match = "\u2A2F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 334: - if ('c' == current) { - state = 335; - return true; - } - break; - case 335: - if ('r' == current) { - state = 336; - return true; - } - break; - case 336: - // Cscr; - if (';' == current) { - match = "\uD835\uDC9E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 337: - if ('p' == current) { - state = 338; - return true; - } - break; - case 338: - // Cup; - if (';' == current) { - match = "\u22D3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('C' == current) { - state = 339; - return true; - } - break; - case 339: - if ('a' == current) { - state = 340; - return true; - } - break; - case 340: - if ('p' == current) { - state = 341; - return true; - } - break; - case 341: - // CupCap; - if (';' == current) { - match = "\u224D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 342: - switch (current) { - case 'D': - state = 343; - return true; - case 'J': - state = 350; - return true; - case 'S': - state = 353; - return true; - case 'Z': - state = 356; - return true; - case 'a': - state = 359; - return true; - case 'c': - state = 369; - return true; - case 'e': - state = 375; - return true; - case 'f': - state = 379; - return true; - case 'i': - state = 381; - return true; - case 'o': - state = 433; - return true; - case 's': - state = 659; - return true; - } - break; - case 343: - // DD; - if (';' == current) { - match = "\u2145"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('o' == current) { - state = 344; - return true; - } - break; - case 344: - if ('t' == current) { - state = 345; - return true; - } - break; - case 345: - if ('r' == current) { - state = 346; - return true; - } - break; - case 346: - if ('a' == current) { - state = 347; - return true; - } - break; - case 347: - if ('h' == current) { - state = 348; - return true; - } - break; - case 348: - if ('d' == current) { - state = 349; - return true; - } - break; - case 349: - // DDotrahd; - if (';' == current) { - match = "\u2911"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 350: - if ('c' == current) { - state = 351; - return true; - } - break; - case 351: - if ('y' == current) { - state = 352; - return true; - } - break; - case 352: - // DJcy; - if (';' == current) { - match = "\u0402"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 353: - if ('c' == current) { - state = 354; - return true; - } - break; - case 354: - if ('y' == current) { - state = 355; - return true; - } - break; - case 355: - // DScy; - if (';' == current) { - match = "\u0405"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 356: - if ('c' == current) { - state = 357; - return true; - } - break; - case 357: - if ('y' == current) { - state = 358; - return true; - } - break; - case 358: - // DZcy; - if (';' == current) { - match = "\u040F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 359: - switch (current) { - case 'g': - state = 360; - return true; - case 'r': - state = 364; - return true; - case 's': - state = 366; - return true; - } - break; - case 360: - if ('g' == current) { - state = 361; - return true; - } - break; - case 361: - if ('e' == current) { - state = 362; - return true; - } - break; - case 362: - if ('r' == current) { - state = 363; - return true; - } - break; - case 363: - // Dagger; - if (';' == current) { - match = "\u2021"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 364: - if ('r' == current) { - state = 365; - return true; - } - break; - case 365: - // Darr; - if (';' == current) { - match = "\u21A1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 366: - if ('h' == current) { - state = 367; - return true; - } - break; - case 367: - if ('v' == current) { - state = 368; - return true; - } - break; - case 368: - // Dashv; - if (';' == current) { - match = "\u2AE4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 369: - if ('a' == current) { - state = 370; - return true; - } - else if ('y' == current) { - state = 374; - return true; - } - break; - case 370: - if ('r' == current) { - state = 371; - return true; - } - break; - case 371: - if ('o' == current) { - state = 372; - return true; - } - break; - case 372: - if ('n' == current) { - state = 373; - return true; - } - break; - case 373: - // Dcaron; - if (';' == current) { - match = "\u010E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 374: - // Dcy; - if (';' == current) { - match = "\u0414"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 375: - if ('l' == current) { - state = 376; - return true; - } - break; - case 376: - // Del; - if (';' == current) { - match = "\u2207"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('t' == current) { - state = 377; - return true; - } - break; - case 377: - if ('a' == current) { - state = 378; - return true; - } - break; - case 378: - // Delta; - if (';' == current) { - match = "\u0394"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 379: - if ('r' == current) { - state = 380; - return true; - } - break; - case 380: - // Dfr; - if (';' == current) { - match = "\uD835\uDD07"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 381: - if ('a' == current) { - state = 382; - return true; - } - else if ('f' == current) { - state = 422; - return true; - } - break; - case 382: - if ('c' == current) { - state = 383; - return true; - } - else if ('m' == current) { - state = 418; - return true; - } - break; - case 383: - if ('r' == current) { - state = 384; - return true; - } - break; - case 384: - if ('i' == current) { - state = 385; - return true; - } - break; - case 385: - if ('t' == current) { - state = 386; - return true; - } - break; - case 386: - if ('i' == current) { - state = 387; - return true; - } - break; - case 387: - if ('c' == current) { - state = 388; - return true; - } - break; - case 388: - if ('a' == current) { - state = 389; - return true; - } - break; - case 389: - if ('l' == current) { - state = 390; - return true; - } - break; - case 390: - switch (current) { - case 'A': - state = 391; - return true; - case 'D': - state = 396; - return true; - case 'G': - state = 408; - return true; - case 'T': - state = 413; - return true; - } - break; - case 391: - if ('c' == current) { - state = 392; - return true; - } - break; - case 392: - if ('u' == current) { - state = 393; - return true; - } - break; - case 393: - if ('t' == current) { - state = 394; - return true; - } - break; - case 394: - if ('e' == current) { - state = 395; - return true; - } - break; - case 395: - // DiacriticalAcute; - if (';' == current) { - match = "\u00B4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 396: - if ('o' == current) { - state = 397; - return true; - } - break; - case 397: - if ('t' == current) { - state = 398; - return true; - } - else if ('u' == current) { - state = 399; - return true; - } - break; - case 398: - // DiacriticalDot; - if (';' == current) { - match = "\u02D9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 399: - if ('b' == current) { - state = 400; - return true; - } - break; - case 400: - if ('l' == current) { - state = 401; - return true; - } - break; - case 401: - if ('e' == current) { - state = 402; - return true; - } - break; - case 402: - if ('A' == current) { - state = 403; - return true; - } - break; - case 403: - if ('c' == current) { - state = 404; - return true; - } - break; - case 404: - if ('u' == current) { - state = 405; - return true; - } - break; - case 405: - if ('t' == current) { - state = 406; - return true; - } - break; - case 406: - if ('e' == current) { - state = 407; - return true; - } - break; - case 407: - // DiacriticalDoubleAcute; - if (';' == current) { - match = "\u02DD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 408: - if ('r' == current) { - state = 409; - return true; - } - break; - case 409: - if ('a' == current) { - state = 410; - return true; - } - break; - case 410: - if ('v' == current) { - state = 411; - return true; - } - break; - case 411: - if ('e' == current) { - state = 412; - return true; - } - break; - case 412: - // DiacriticalGrave; - if (';' == current) { - match = "`"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 413: - if ('i' == current) { - state = 414; - return true; - } - break; - case 414: - if ('l' == current) { - state = 415; - return true; - } - break; - case 415: - if ('d' == current) { - state = 416; - return true; - } - break; - case 416: - if ('e' == current) { - state = 417; - return true; - } - break; - case 417: - // DiacriticalTilde; - if (';' == current) { - match = "\u02DC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 418: - if ('o' == current) { - state = 419; - return true; - } - break; - case 419: - if ('n' == current) { - state = 420; - return true; - } - break; - case 420: - if ('d' == current) { - state = 421; - return true; - } - break; - case 421: - // Diamond; - if (';' == current) { - match = "\u22C4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 422: - if ('f' == current) { - state = 423; - return true; - } - break; - case 423: - if ('e' == current) { - state = 424; - return true; - } - break; - case 424: - if ('r' == current) { - state = 425; - return true; - } - break; - case 425: - if ('e' == current) { - state = 426; - return true; - } - break; - case 426: - if ('n' == current) { - state = 427; - return true; - } - break; - case 427: - if ('t' == current) { - state = 428; - return true; - } - break; - case 428: - if ('i' == current) { - state = 429; - return true; - } - break; - case 429: - if ('a' == current) { - state = 430; - return true; - } - break; - case 430: - if ('l' == current) { - state = 431; - return true; - } - break; - case 431: - if ('D' == current) { - state = 432; - return true; - } - break; - case 432: - // DifferentialD; - if (';' == current) { - match = "\u2146"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 433: - switch (current) { - case 'p': - state = 434; - return true; - case 't': - state = 436; - return true; - case 'u': - state = 445; - return true; - case 'w': - state = 568; - return true; - } - break; - case 434: - if ('f' == current) { - state = 435; - return true; - } - break; - case 435: - // Dopf; - if (';' == current) { - match = "\uD835\uDD3B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 436: - switch (current) { - case ';': // Dot; - match = "\u00A8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'D': - state = 437; - return true; - case 'E': - state = 440; - return true; - } - break; - case 437: - if ('o' == current) { - state = 438; - return true; - } - break; - case 438: - if ('t' == current) { - state = 439; - return true; - } - break; - case 439: - // DotDot; - if (';' == current) { - match = "\u20DC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 440: - if ('q' == current) { - state = 441; - return true; - } - break; - case 441: - if ('u' == current) { - state = 442; - return true; - } - break; - case 442: - if ('a' == current) { - state = 443; - return true; - } - break; - case 443: - if ('l' == current) { - state = 444; - return true; - } - break; - case 444: - // DotEqual; - if (';' == current) { - match = "\u2250"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 445: - if ('b' == current) { - state = 446; - return true; - } - break; - case 446: - if ('l' == current) { - state = 447; - return true; - } - break; - case 447: - if ('e' == current) { - state = 448; - return true; - } - break; - case 448: - switch (current) { - case 'C': - state = 449; - return true; - case 'D': - state = 464; - return true; - case 'L': - state = 474; - return true; - case 'R': - state = 528; - return true; - case 'U': - state = 541; - return true; - case 'V': - state = 557; - return true; - } - break; - case 449: - if ('o' == current) { - state = 450; - return true; - } - break; - case 450: - if ('n' == current) { - state = 451; - return true; - } - break; - case 451: - if ('t' == current) { - state = 452; - return true; - } - break; - case 452: - if ('o' == current) { - state = 453; - return true; - } - break; - case 453: - if ('u' == current) { - state = 454; - return true; - } - break; - case 454: - if ('r' == current) { - state = 455; - return true; - } - break; - case 455: - if ('I' == current) { - state = 456; - return true; - } - break; - case 456: - if ('n' == current) { - state = 457; - return true; - } - break; - case 457: - if ('t' == current) { - state = 458; - return true; - } - break; - case 458: - if ('e' == current) { - state = 459; - return true; - } - break; - case 459: - if ('g' == current) { - state = 460; - return true; - } - break; - case 460: - if ('r' == current) { - state = 461; - return true; - } - break; - case 461: - if ('a' == current) { - state = 462; - return true; - } - break; - case 462: - if ('l' == current) { - state = 463; - return true; - } - break; - case 463: - // DoubleContourIntegral; - if (';' == current) { - match = "\u222F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 464: - if ('o' == current) { - state = 465; - return true; - } - break; - case 465: - if ('t' == current) { - state = 466; - return true; - } - else if ('w' == current) { - state = 467; - return true; - } - break; - case 466: - // DoubleDot; - if (';' == current) { - match = "\u00A8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 467: - if ('n' == current) { - state = 468; - return true; - } - break; - case 468: - if ('A' == current) { - state = 469; - return true; - } - break; - case 469: - if ('r' == current) { - state = 470; - return true; - } - break; - case 470: - if ('r' == current) { - state = 471; - return true; - } - break; - case 471: - if ('o' == current) { - state = 472; - return true; - } - break; - case 472: - if ('w' == current) { - state = 473; - return true; - } - break; - case 473: - // DoubleDownArrow; - if (';' == current) { - match = "\u21D3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 474: - if ('e' == current) { - state = 475; - return true; - } - else if ('o' == current) { - state = 496; - return true; - } - break; - case 475: - if ('f' == current) { - state = 476; - return true; - } - break; - case 476: - if ('t' == current) { - state = 477; - return true; - } - break; - case 477: - switch (current) { - case 'A': - state = 478; - return true; - case 'R': - state = 483; - return true; - case 'T': - state = 493; - return true; - } - break; - case 478: - if ('r' == current) { - state = 479; - return true; - } - break; - case 479: - if ('r' == current) { - state = 480; - return true; - } - break; - case 480: - if ('o' == current) { - state = 481; - return true; - } - break; - case 481: - if ('w' == current) { - state = 482; - return true; - } - break; - case 482: - // DoubleLeftArrow; - if (';' == current) { - match = "\u21D0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 483: - if ('i' == current) { - state = 484; - return true; - } - break; - case 484: - if ('g' == current) { - state = 485; - return true; - } - break; - case 485: - if ('h' == current) { - state = 486; - return true; - } - break; - case 486: - if ('t' == current) { - state = 487; - return true; - } - break; - case 487: - if ('A' == current) { - state = 488; - return true; - } - break; - case 488: - if ('r' == current) { - state = 489; - return true; - } - break; - case 489: - if ('r' == current) { - state = 490; - return true; - } - break; - case 490: - if ('o' == current) { - state = 491; - return true; - } - break; - case 491: - if ('w' == current) { - state = 492; - return true; - } - break; - case 492: - // DoubleLeftRightArrow; - if (';' == current) { - match = "\u21D4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 493: - if ('e' == current) { - state = 494; - return true; - } - break; - case 494: - if ('e' == current) { - state = 495; - return true; - } - break; - case 495: - // DoubleLeftTee; - if (';' == current) { - match = "\u2AE4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 496: - if ('n' == current) { - state = 497; - return true; - } - break; - case 497: - if ('g' == current) { - state = 498; - return true; - } - break; - case 498: - if ('L' == current) { - state = 499; - return true; - } - else if ('R' == current) { - state = 518; - return true; - } - break; - case 499: - if ('e' == current) { - state = 500; - return true; - } - break; - case 500: - if ('f' == current) { - state = 501; - return true; - } - break; - case 501: - if ('t' == current) { - state = 502; - return true; - } - break; - case 502: - if ('A' == current) { - state = 503; - return true; - } - else if ('R' == current) { - state = 508; - return true; - } - break; - case 503: - if ('r' == current) { - state = 504; - return true; - } - break; - case 504: - if ('r' == current) { - state = 505; - return true; - } - break; - case 505: - if ('o' == current) { - state = 506; - return true; - } - break; - case 506: - if ('w' == current) { - state = 507; - return true; - } - break; - case 507: - // DoubleLongLeftArrow; - if (';' == current) { - match = "\u27F8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 508: - if ('i' == current) { - state = 509; - return true; - } - break; - case 509: - if ('g' == current) { - state = 510; - return true; - } - break; - case 510: - if ('h' == current) { - state = 511; - return true; - } - break; - case 511: - if ('t' == current) { - state = 512; - return true; - } - break; - case 512: - if ('A' == current) { - state = 513; - return true; - } - break; - case 513: - if ('r' == current) { - state = 514; - return true; - } - break; - case 514: - if ('r' == current) { - state = 515; - return true; - } - break; - case 515: - if ('o' == current) { - state = 516; - return true; - } - break; - case 516: - if ('w' == current) { - state = 517; - return true; - } - break; - case 517: - // DoubleLongLeftRightArrow; - if (';' == current) { - match = "\u27FA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 518: - if ('i' == current) { - state = 519; - return true; - } - break; - case 519: - if ('g' == current) { - state = 520; - return true; - } - break; - case 520: - if ('h' == current) { - state = 521; - return true; - } - break; - case 521: - if ('t' == current) { - state = 522; - return true; - } - break; - case 522: - if ('A' == current) { - state = 523; - return true; - } - break; - case 523: - if ('r' == current) { - state = 524; - return true; - } - break; - case 524: - if ('r' == current) { - state = 525; - return true; - } - break; - case 525: - if ('o' == current) { - state = 526; - return true; - } - break; - case 526: - if ('w' == current) { - state = 527; - return true; - } - break; - case 527: - // DoubleLongRightArrow; - if (';' == current) { - match = "\u27F9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 528: - if ('i' == current) { - state = 529; - return true; - } - break; - case 529: - if ('g' == current) { - state = 530; - return true; - } - break; - case 530: - if ('h' == current) { - state = 531; - return true; - } - break; - case 531: - if ('t' == current) { - state = 532; - return true; - } - break; - case 532: - if ('A' == current) { - state = 533; - return true; - } - else if ('T' == current) { - state = 538; - return true; - } - break; - case 533: - if ('r' == current) { - state = 534; - return true; - } - break; - case 534: - if ('r' == current) { - state = 535; - return true; - } - break; - case 535: - if ('o' == current) { - state = 536; - return true; - } - break; - case 536: - if ('w' == current) { - state = 537; - return true; - } - break; - case 537: - // DoubleRightArrow; - if (';' == current) { - match = "\u21D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 538: - if ('e' == current) { - state = 539; - return true; - } - break; - case 539: - if ('e' == current) { - state = 540; - return true; - } - break; - case 540: - // DoubleRightTee; - if (';' == current) { - match = "\u22A8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 541: - if ('p' == current) { - state = 542; - return true; - } - break; - case 542: - if ('A' == current) { - state = 543; - return true; - } - else if ('D' == current) { - state = 548; - return true; - } - break; - case 543: - if ('r' == current) { - state = 544; - return true; - } - break; - case 544: - if ('r' == current) { - state = 545; - return true; - } - break; - case 545: - if ('o' == current) { - state = 546; - return true; - } - break; - case 546: - if ('w' == current) { - state = 547; - return true; - } - break; - case 547: - // DoubleUpArrow; - if (';' == current) { - match = "\u21D1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 548: - if ('o' == current) { - state = 549; - return true; - } - break; - case 549: - if ('w' == current) { - state = 550; - return true; - } - break; - case 550: - if ('n' == current) { - state = 551; - return true; - } - break; - case 551: - if ('A' == current) { - state = 552; - return true; - } - break; - case 552: - if ('r' == current) { - state = 553; - return true; - } - break; - case 553: - if ('r' == current) { - state = 554; - return true; - } - break; - case 554: - if ('o' == current) { - state = 555; - return true; - } - break; - case 555: - if ('w' == current) { - state = 556; - return true; - } - break; - case 556: - // DoubleUpDownArrow; - if (';' == current) { - match = "\u21D5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 557: - if ('e' == current) { - state = 558; - return true; - } - break; - case 558: - if ('r' == current) { - state = 559; - return true; - } - break; - case 559: - if ('t' == current) { - state = 560; - return true; - } - break; - case 560: - if ('i' == current) { - state = 561; - return true; - } - break; - case 561: - if ('c' == current) { - state = 562; - return true; - } - break; - case 562: - if ('a' == current) { - state = 563; - return true; - } - break; - case 563: - if ('l' == current) { - state = 564; - return true; - } - break; - case 564: - if ('B' == current) { - state = 565; - return true; - } - break; - case 565: - if ('a' == current) { - state = 566; - return true; - } - break; - case 566: - if ('r' == current) { - state = 567; - return true; - } - break; - case 567: - // DoubleVerticalBar; - if (';' == current) { - match = "\u2225"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 568: - if ('n' == current) { - state = 569; - return true; - } - break; - case 569: - switch (current) { - case 'A': - state = 570; - return true; - case 'B': - state = 585; - return true; - case 'L': - state = 590; - return true; - case 'R': - state = 623; - return true; - case 'T': - state = 646; - return true; - case 'a': - state = 654; - return true; - } - break; - case 570: - if ('r' == current) { - state = 571; - return true; - } - break; - case 571: - if ('r' == current) { - state = 572; - return true; - } - break; - case 572: - if ('o' == current) { - state = 573; - return true; - } - break; - case 573: - if ('w' == current) { - state = 574; - return true; - } - break; - case 574: - switch (current) { - case ';': // DownArrow; - match = "\u2193"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'B': - state = 575; - return true; - case 'U': - state = 578; - return true; - } - break; - case 575: - if ('a' == current) { - state = 576; - return true; - } - break; - case 576: - if ('r' == current) { - state = 577; - return true; - } - break; - case 577: - // DownArrowBar; - if (';' == current) { - match = "\u2913"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 578: - if ('p' == current) { - state = 579; - return true; - } - break; - case 579: - if ('A' == current) { - state = 580; - return true; - } - break; - case 580: - if ('r' == current) { - state = 581; - return true; - } - break; - case 581: - if ('r' == current) { - state = 582; - return true; - } - break; - case 582: - if ('o' == current) { - state = 583; - return true; - } - break; - case 583: - if ('w' == current) { - state = 584; - return true; - } - break; - case 584: - // DownArrowUpArrow; - if (';' == current) { - match = "\u21F5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 585: - if ('r' == current) { - state = 586; - return true; - } - break; - case 586: - if ('e' == current) { - state = 587; - return true; - } - break; - case 587: - if ('v' == current) { - state = 588; - return true; - } - break; - case 588: - if ('e' == current) { - state = 589; - return true; - } - break; - case 589: - // DownBreve; - if (';' == current) { - match = "\u0311"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 590: - if ('e' == current) { - state = 591; - return true; - } - break; - case 591: - if ('f' == current) { - state = 592; - return true; - } - break; - case 592: - if ('t' == current) { - state = 593; - return true; - } - break; - case 593: - switch (current) { - case 'R': - state = 594; - return true; - case 'T': - state = 605; - return true; - case 'V': - state = 614; - return true; - } - break; - case 594: - if ('i' == current) { - state = 595; - return true; - } - break; - case 595: - if ('g' == current) { - state = 596; - return true; - } - break; - case 596: - if ('h' == current) { - state = 597; - return true; - } - break; - case 597: - if ('t' == current) { - state = 598; - return true; - } - break; - case 598: - if ('V' == current) { - state = 599; - return true; - } - break; - case 599: - if ('e' == current) { - state = 600; - return true; - } - break; - case 600: - if ('c' == current) { - state = 601; - return true; - } - break; - case 601: - if ('t' == current) { - state = 602; - return true; - } - break; - case 602: - if ('o' == current) { - state = 603; - return true; - } - break; - case 603: - if ('r' == current) { - state = 604; - return true; - } - break; - case 604: - // DownLeftRightVector; - if (';' == current) { - match = "\u2950"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 605: - if ('e' == current) { - state = 606; - return true; - } - break; - case 606: - if ('e' == current) { - state = 607; - return true; - } - break; - case 607: - if ('V' == current) { - state = 608; - return true; - } - break; - case 608: - if ('e' == current) { - state = 609; - return true; - } - break; - case 609: - if ('c' == current) { - state = 610; - return true; - } - break; - case 610: - if ('t' == current) { - state = 611; - return true; - } - break; - case 611: - if ('o' == current) { - state = 612; - return true; - } - break; - case 612: - if ('r' == current) { - state = 613; - return true; - } - break; - case 613: - // DownLeftTeeVector; - if (';' == current) { - match = "\u295E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 614: - if ('e' == current) { - state = 615; - return true; - } - break; - case 615: - if ('c' == current) { - state = 616; - return true; - } - break; - case 616: - if ('t' == current) { - state = 617; - return true; - } - break; - case 617: - if ('o' == current) { - state = 618; - return true; - } - break; - case 618: - if ('r' == current) { - state = 619; - return true; - } - break; - case 619: - // DownLeftVector; - if (';' == current) { - match = "\u21BD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('B' == current) { - state = 620; - return true; - } - break; - case 620: - if ('a' == current) { - state = 621; - return true; - } - break; - case 621: - if ('r' == current) { - state = 622; - return true; - } - break; - case 622: - // DownLeftVectorBar; - if (';' == current) { - match = "\u2956"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 623: - if ('i' == current) { - state = 624; - return true; - } - break; - case 624: - if ('g' == current) { - state = 625; - return true; - } - break; - case 625: - if ('h' == current) { - state = 626; - return true; - } - break; - case 626: - if ('t' == current) { - state = 627; - return true; - } - break; - case 627: - if ('T' == current) { - state = 628; - return true; - } - else if ('V' == current) { - state = 637; - return true; - } - break; - case 628: - if ('e' == current) { - state = 629; - return true; - } - break; - case 629: - if ('e' == current) { - state = 630; - return true; - } - break; - case 630: - if ('V' == current) { - state = 631; - return true; - } - break; - case 631: - if ('e' == current) { - state = 632; - return true; - } - break; - case 632: - if ('c' == current) { - state = 633; - return true; - } - break; - case 633: - if ('t' == current) { - state = 634; - return true; - } - break; - case 634: - if ('o' == current) { - state = 635; - return true; - } - break; - case 635: - if ('r' == current) { - state = 636; - return true; - } - break; - case 636: - // DownRightTeeVector; - if (';' == current) { - match = "\u295F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 637: - if ('e' == current) { - state = 638; - return true; - } - break; - case 638: - if ('c' == current) { - state = 639; - return true; - } - break; - case 639: - if ('t' == current) { - state = 640; - return true; - } - break; - case 640: - if ('o' == current) { - state = 641; - return true; - } - break; - case 641: - if ('r' == current) { - state = 642; - return true; - } - break; - case 642: - // DownRightVector; - if (';' == current) { - match = "\u21C1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('B' == current) { - state = 643; - return true; - } - break; - case 643: - if ('a' == current) { - state = 644; - return true; - } - break; - case 644: - if ('r' == current) { - state = 645; - return true; - } - break; - case 645: - // DownRightVectorBar; - if (';' == current) { - match = "\u2957"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 646: - if ('e' == current) { - state = 647; - return true; - } - break; - case 647: - if ('e' == current) { - state = 648; - return true; - } - break; - case 648: - // DownTee; - if (';' == current) { - match = "\u22A4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('A' == current) { - state = 649; - return true; - } - break; - case 649: - if ('r' == current) { - state = 650; - return true; - } - break; - case 650: - if ('r' == current) { - state = 651; - return true; - } - break; - case 651: - if ('o' == current) { - state = 652; - return true; - } - break; - case 652: - if ('w' == current) { - state = 653; - return true; - } - break; - case 653: - // DownTeeArrow; - if (';' == current) { - match = "\u21A7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 654: - if ('r' == current) { - state = 655; - return true; - } - break; - case 655: - if ('r' == current) { - state = 656; - return true; - } - break; - case 656: - if ('o' == current) { - state = 657; - return true; - } - break; - case 657: - if ('w' == current) { - state = 658; - return true; - } - break; - case 658: - // Downarrow; - if (';' == current) { - match = "\u21D3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 659: - if ('c' == current) { - state = 660; - return true; - } - else if ('t' == current) { - state = 662; - return true; - } - break; - case 660: - if ('r' == current) { - state = 661; - return true; - } - break; - case 661: - // Dscr; - if (';' == current) { - match = "\uD835\uDC9F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 662: - if ('r' == current) { - state = 663; - return true; - } - break; - case 663: - if ('o' == current) { - state = 664; - return true; - } - break; - case 664: - if ('k' == current) { - state = 665; - return true; - } - break; - case 665: - // Dstrok; - if (';' == current) { - match = "\u0110"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 666: - switch (current) { - case 'N': - state = 667; - return true; - case 'T': - state = 669; - return true; - case 'a': - state = 671; - return true; - case 'c': - state = 676; - return true; - case 'd': - state = 685; - return true; - case 'f': - state = 688; - return true; - case 'g': - state = 690; - return true; - case 'l': - state = 695; - return true; - case 'm': - state = 701; - return true; - case 'o': - state = 734; - return true; - case 'p': - state = 740; - return true; - case 'q': - state = 746; - return true; - case 's': - state = 763; - return true; - case 't': - state = 768; - return true; - case 'u': - state = 770; - return true; - case 'x': - state = 773; - return true; - } - break; - case 667: - if ('G' == current) { - state = 668; - return true; - } - break; - case 668: - // ENG; - if (';' == current) { - match = "\u014A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 669: - // ETH - if ('H' == current) { - match = "\u00D0"; - matchLength = consumedCount; - state = 670; - return true; - } - break; - case 670: - // ETH; - if (';' == current) { - match = "\u00D0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 671: - if ('c' == current) { - state = 672; - return true; - } - break; - case 672: - if ('u' == current) { - state = 673; - return true; - } - break; - case 673: - if ('t' == current) { - state = 674; - return true; - } - break; - case 674: - // Eacute - if ('e' == current) { - match = "\u00C9"; - matchLength = consumedCount; - state = 675; - return true; - } - break; - case 675: - // Eacute; - if (';' == current) { - match = "\u00C9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 676: - switch (current) { - case 'a': - state = 677; - return true; - case 'i': - state = 681; - return true; - case 'y': - state = 684; - return true; - } - break; - case 677: - if ('r' == current) { - state = 678; - return true; - } - break; - case 678: - if ('o' == current) { - state = 679; - return true; - } - break; - case 679: - if ('n' == current) { - state = 680; - return true; - } - break; - case 680: - // Ecaron; - if (';' == current) { - match = "\u011A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 681: - if ('r' == current) { - state = 682; - return true; - } - break; - case 682: - // Ecirc - if ('c' == current) { - match = "\u00CA"; - matchLength = consumedCount; - state = 683; - return true; - } - break; - case 683: - // Ecirc; - if (';' == current) { - match = "\u00CA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 684: - // Ecy; - if (';' == current) { - match = "\u042D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 685: - if ('o' == current) { - state = 686; - return true; - } - break; - case 686: - if ('t' == current) { - state = 687; - return true; - } - break; - case 687: - // Edot; - if (';' == current) { - match = "\u0116"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 688: - if ('r' == current) { - state = 689; - return true; - } - break; - case 689: - // Efr; - if (';' == current) { - match = "\uD835\uDD08"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 690: - if ('r' == current) { - state = 691; - return true; - } - break; - case 691: - if ('a' == current) { - state = 692; - return true; - } - break; - case 692: - if ('v' == current) { - state = 693; - return true; - } - break; - case 693: - // Egrave - if ('e' == current) { - match = "\u00C8"; - matchLength = consumedCount; - state = 694; - return true; - } - break; - case 694: - // Egrave; - if (';' == current) { - match = "\u00C8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 695: - if ('e' == current) { - state = 696; - return true; - } - break; - case 696: - if ('m' == current) { - state = 697; - return true; - } - break; - case 697: - if ('e' == current) { - state = 698; - return true; - } - break; - case 698: - if ('n' == current) { - state = 699; - return true; - } - break; - case 699: - if ('t' == current) { - state = 700; - return true; - } - break; - case 700: - // Element; - if (';' == current) { - match = "\u2208"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 701: - if ('a' == current) { - state = 702; - return true; - } - else if ('p' == current) { - state = 705; - return true; - } - break; - case 702: - if ('c' == current) { - state = 703; - return true; - } - break; - case 703: - if ('r' == current) { - state = 704; - return true; - } - break; - case 704: - // Emacr; - if (';' == current) { - match = "\u0112"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 705: - if ('t' == current) { - state = 706; - return true; - } - break; - case 706: - if ('y' == current) { - state = 707; - return true; - } - break; - case 707: - if ('S' == current) { - state = 708; - return true; - } - else if ('V' == current) { - state = 719; - return true; - } - break; - case 708: - if ('m' == current) { - state = 709; - return true; - } - break; - case 709: - if ('a' == current) { - state = 710; - return true; - } - break; - case 710: - if ('l' == current) { - state = 711; - return true; - } - break; - case 711: - if ('l' == current) { - state = 712; - return true; - } - break; - case 712: - if ('S' == current) { - state = 713; - return true; - } - break; - case 713: - if ('q' == current) { - state = 714; - return true; - } - break; - case 714: - if ('u' == current) { - state = 715; - return true; - } - break; - case 715: - if ('a' == current) { - state = 716; - return true; - } - break; - case 716: - if ('r' == current) { - state = 717; - return true; - } - break; - case 717: - if ('e' == current) { - state = 718; - return true; - } - break; - case 718: - // EmptySmallSquare; - if (';' == current) { - match = "\u25FB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 719: - if ('e' == current) { - state = 720; - return true; - } - break; - case 720: - if ('r' == current) { - state = 721; - return true; - } - break; - case 721: - if ('y' == current) { - state = 722; - return true; - } - break; - case 722: - if ('S' == current) { - state = 723; - return true; - } - break; - case 723: - if ('m' == current) { - state = 724; - return true; - } - break; - case 724: - if ('a' == current) { - state = 725; - return true; - } - break; - case 725: - if ('l' == current) { - state = 726; - return true; - } - break; - case 726: - if ('l' == current) { - state = 727; - return true; - } - break; - case 727: - if ('S' == current) { - state = 728; - return true; - } - break; - case 728: - if ('q' == current) { - state = 729; - return true; - } - break; - case 729: - if ('u' == current) { - state = 730; - return true; - } - break; - case 730: - if ('a' == current) { - state = 731; - return true; - } - break; - case 731: - if ('r' == current) { - state = 732; - return true; - } - break; - case 732: - if ('e' == current) { - state = 733; - return true; - } - break; - case 733: - // EmptyVerySmallSquare; - if (';' == current) { - match = "\u25AB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 734: - if ('g' == current) { - state = 735; - return true; - } - else if ('p' == current) { - state = 738; - return true; - } - break; - case 735: - if ('o' == current) { - state = 736; - return true; - } - break; - case 736: - if ('n' == current) { - state = 737; - return true; - } - break; - case 737: - // Eogon; - if (';' == current) { - match = "\u0118"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 738: - if ('f' == current) { - state = 739; - return true; - } - break; - case 739: - // Eopf; - if (';' == current) { - match = "\uD835\uDD3C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 740: - if ('s' == current) { - state = 741; - return true; - } - break; - case 741: - if ('i' == current) { - state = 742; - return true; - } - break; - case 742: - if ('l' == current) { - state = 743; - return true; - } - break; - case 743: - if ('o' == current) { - state = 744; - return true; - } - break; - case 744: - if ('n' == current) { - state = 745; - return true; - } - break; - case 745: - // Epsilon; - if (';' == current) { - match = "\u0395"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 746: - if ('u' == current) { - state = 747; - return true; - } - break; - case 747: - if ('a' == current) { - state = 748; - return true; - } - else if ('i' == current) { - state = 755; - return true; - } - break; - case 748: - if ('l' == current) { - state = 749; - return true; - } - break; - case 749: - // Equal; - if (';' == current) { - match = "\u2A75"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('T' == current) { - state = 750; - return true; - } - break; - case 750: - if ('i' == current) { - state = 751; - return true; - } - break; - case 751: - if ('l' == current) { - state = 752; - return true; - } - break; - case 752: - if ('d' == current) { - state = 753; - return true; - } - break; - case 753: - if ('e' == current) { - state = 754; - return true; - } - break; - case 754: - // EqualTilde; - if (';' == current) { - match = "\u2242"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 755: - if ('l' == current) { - state = 756; - return true; - } - break; - case 756: - if ('i' == current) { - state = 757; - return true; - } - break; - case 757: - if ('b' == current) { - state = 758; - return true; - } - break; - case 758: - if ('r' == current) { - state = 759; - return true; - } - break; - case 759: - if ('i' == current) { - state = 760; - return true; - } - break; - case 760: - if ('u' == current) { - state = 761; - return true; - } - break; - case 761: - if ('m' == current) { - state = 762; - return true; - } - break; - case 762: - // Equilibrium; - if (';' == current) { - match = "\u21CC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 763: - if ('c' == current) { - state = 764; - return true; - } - else if ('i' == current) { - state = 766; - return true; - } - break; - case 764: - if ('r' == current) { - state = 765; - return true; - } - break; - case 765: - // Escr; - if (';' == current) { - match = "\u2130"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 766: - if ('m' == current) { - state = 767; - return true; - } - break; - case 767: - // Esim; - if (';' == current) { - match = "\u2A73"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 768: - if ('a' == current) { - state = 769; - return true; - } - break; - case 769: - // Eta; - if (';' == current) { - match = "\u0397"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 770: - if ('m' == current) { - state = 771; - return true; - } - break; - case 771: - // Euml - if ('l' == current) { - match = "\u00CB"; - matchLength = consumedCount; - state = 772; - return true; - } - break; - case 772: - // Euml; - if (';' == current) { - match = "\u00CB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 773: - if ('i' == current) { - state = 774; - return true; - } - else if ('p' == current) { - state = 778; - return true; - } - break; - case 774: - if ('s' == current) { - state = 775; - return true; - } - break; - case 775: - if ('t' == current) { - state = 776; - return true; - } - break; - case 776: - if ('s' == current) { - state = 777; - return true; - } - break; - case 777: - // Exists; - if (';' == current) { - match = "\u2203"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 778: - if ('o' == current) { - state = 779; - return true; - } - break; - case 779: - if ('n' == current) { - state = 780; - return true; - } - break; - case 780: - if ('e' == current) { - state = 781; - return true; - } - break; - case 781: - if ('n' == current) { - state = 782; - return true; - } - break; - case 782: - if ('t' == current) { - state = 783; - return true; - } - break; - case 783: - if ('i' == current) { - state = 784; - return true; - } - break; - case 784: - if ('a' == current) { - state = 785; - return true; - } - break; - case 785: - if ('l' == current) { - state = 786; - return true; - } - break; - case 786: - if ('E' == current) { - state = 787; - return true; - } - break; - case 787: - // ExponentialE; - if (';' == current) { - match = "\u2147"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 788: - switch (current) { - case 'c': - state = 789; - return true; - case 'f': - state = 791; - return true; - case 'i': - state = 793; - return true; - case 'o': - state = 824; - return true; - case 's': - state = 839; - return true; - } - break; - case 789: - if ('y' == current) { - state = 790; - return true; - } - break; - case 790: - // Fcy; - if (';' == current) { - match = "\u0424"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 791: - if ('r' == current) { - state = 792; - return true; - } - break; - case 792: - // Ffr; - if (';' == current) { - match = "\uD835\uDD09"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 793: - if ('l' == current) { - state = 794; - return true; - } - break; - case 794: - if ('l' == current) { - state = 795; - return true; - } - break; - case 795: - if ('e' == current) { - state = 796; - return true; - } - break; - case 796: - if ('d' == current) { - state = 797; - return true; - } - break; - case 797: - if ('S' == current) { - state = 798; - return true; - } - else if ('V' == current) { - state = 809; - return true; - } - break; - case 798: - if ('m' == current) { - state = 799; - return true; - } - break; - case 799: - if ('a' == current) { - state = 800; - return true; - } - break; - case 800: - if ('l' == current) { - state = 801; - return true; - } - break; - case 801: - if ('l' == current) { - state = 802; - return true; - } - break; - case 802: - if ('S' == current) { - state = 803; - return true; - } - break; - case 803: - if ('q' == current) { - state = 804; - return true; - } - break; - case 804: - if ('u' == current) { - state = 805; - return true; - } - break; - case 805: - if ('a' == current) { - state = 806; - return true; - } - break; - case 806: - if ('r' == current) { - state = 807; - return true; - } - break; - case 807: - if ('e' == current) { - state = 808; - return true; - } - break; - case 808: - // FilledSmallSquare; - if (';' == current) { - match = "\u25FC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 809: - if ('e' == current) { - state = 810; - return true; - } - break; - case 810: - if ('r' == current) { - state = 811; - return true; - } - break; - case 811: - if ('y' == current) { - state = 812; - return true; - } - break; - case 812: - if ('S' == current) { - state = 813; - return true; - } - break; - case 813: - if ('m' == current) { - state = 814; - return true; - } - break; - case 814: - if ('a' == current) { - state = 815; - return true; - } - break; - case 815: - if ('l' == current) { - state = 816; - return true; - } - break; - case 816: - if ('l' == current) { - state = 817; - return true; - } - break; - case 817: - if ('S' == current) { - state = 818; - return true; - } - break; - case 818: - if ('q' == current) { - state = 819; - return true; - } - break; - case 819: - if ('u' == current) { - state = 820; - return true; - } - break; - case 820: - if ('a' == current) { - state = 821; - return true; - } - break; - case 821: - if ('r' == current) { - state = 822; - return true; - } - break; - case 822: - if ('e' == current) { - state = 823; - return true; - } - break; - case 823: - // FilledVerySmallSquare; - if (';' == current) { - match = "\u25AA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 824: - switch (current) { - case 'p': - state = 825; - return true; - case 'r': - state = 827; - return true; - case 'u': - state = 831; - return true; - } - break; - case 825: - if ('f' == current) { - state = 826; - return true; - } - break; - case 826: - // Fopf; - if (';' == current) { - match = "\uD835\uDD3D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 827: - if ('A' == current) { - state = 828; - return true; - } - break; - case 828: - if ('l' == current) { - state = 829; - return true; - } - break; - case 829: - if ('l' == current) { - state = 830; - return true; - } - break; - case 830: - // ForAll; - if (';' == current) { - match = "\u2200"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 831: - if ('r' == current) { - state = 832; - return true; - } - break; - case 832: - if ('i' == current) { - state = 833; - return true; - } - break; - case 833: - if ('e' == current) { - state = 834; - return true; - } - break; - case 834: - if ('r' == current) { - state = 835; - return true; - } - break; - case 835: - if ('t' == current) { - state = 836; - return true; - } - break; - case 836: - if ('r' == current) { - state = 837; - return true; - } - break; - case 837: - if ('f' == current) { - state = 838; - return true; - } - break; - case 838: - // Fouriertrf; - if (';' == current) { - match = "\u2131"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 839: - if ('c' == current) { - state = 840; - return true; - } - break; - case 840: - if ('r' == current) { - state = 841; - return true; - } - break; - case 841: - // Fscr; - if (';' == current) { - match = "\u2131"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 842: - switch (current) { - case 'J': - state = 843; - return true; - case 'T': // GT - match = ">"; - matchLength = consumedCount; - state = 846; - return true; - case 'a': - state = 847; - return true; - case 'b': - state = 852; - return true; - case 'c': - state = 857; - return true; - case 'd': - state = 866; - return true; - case 'f': - state = 869; - return true; - case 'g': - state = 871; - return true; - case 'o': - state = 872; - return true; - case 'r': - state = 875; - return true; - case 's': - state = 925; - return true; - case 't': - state = 928; - return true; - } - break; - case 843: - if ('c' == current) { - state = 844; - return true; - } - break; - case 844: - if ('y' == current) { - state = 845; - return true; - } - break; - case 845: - // GJcy; - if (';' == current) { - match = "\u0403"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 846: - // GT; - if (';' == current) { - match = ">"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 847: - if ('m' == current) { - state = 848; - return true; - } - break; - case 848: - if ('m' == current) { - state = 849; - return true; - } - break; - case 849: - if ('a' == current) { - state = 850; - return true; - } - break; - case 850: - // Gamma; - if (';' == current) { - match = "\u0393"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('d' == current) { - state = 851; - return true; - } - break; - case 851: - // Gammad; - if (';' == current) { - match = "\u03DC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 852: - if ('r' == current) { - state = 853; - return true; - } - break; - case 853: - if ('e' == current) { - state = 854; - return true; - } - break; - case 854: - if ('v' == current) { - state = 855; - return true; - } - break; - case 855: - if ('e' == current) { - state = 856; - return true; - } - break; - case 856: - // Gbreve; - if (';' == current) { - match = "\u011E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 857: - switch (current) { - case 'e': - state = 858; - return true; - case 'i': - state = 862; - return true; - case 'y': - state = 865; - return true; - } - break; - case 858: - if ('d' == current) { - state = 859; - return true; - } - break; - case 859: - if ('i' == current) { - state = 860; - return true; - } - break; - case 860: - if ('l' == current) { - state = 861; - return true; - } - break; - case 861: - // Gcedil; - if (';' == current) { - match = "\u0122"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 862: - if ('r' == current) { - state = 863; - return true; - } - break; - case 863: - if ('c' == current) { - state = 864; - return true; - } - break; - case 864: - // Gcirc; - if (';' == current) { - match = "\u011C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 865: - // Gcy; - if (';' == current) { - match = "\u0413"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 866: - if ('o' == current) { - state = 867; - return true; - } - break; - case 867: - if ('t' == current) { - state = 868; - return true; - } - break; - case 868: - // Gdot; - if (';' == current) { - match = "\u0120"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 869: - if ('r' == current) { - state = 870; - return true; - } - break; - case 870: - // Gfr; - if (';' == current) { - match = "\uD835\uDD0A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 871: - // Gg; - if (';' == current) { - match = "\u22D9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 872: - if ('p' == current) { - state = 873; - return true; - } - break; - case 873: - if ('f' == current) { - state = 874; - return true; - } - break; - case 874: - // Gopf; - if (';' == current) { - match = "\uD835\uDD3E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 875: - if ('e' == current) { - state = 876; - return true; - } - break; - case 876: - if ('a' == current) { - state = 877; - return true; - } - break; - case 877: - if ('t' == current) { - state = 878; - return true; - } - break; - case 878: - if ('e' == current) { - state = 879; - return true; - } - break; - case 879: - if ('r' == current) { - state = 880; - return true; - } - break; - case 880: - switch (current) { - case 'E': - state = 881; - return true; - case 'F': - state = 890; - return true; - case 'G': - state = 899; - return true; - case 'L': - state = 906; - return true; - case 'S': - state = 910; - return true; - case 'T': - state = 920; - return true; - } - break; - case 881: - if ('q' == current) { - state = 882; - return true; - } - break; - case 882: - if ('u' == current) { - state = 883; - return true; - } - break; - case 883: - if ('a' == current) { - state = 884; - return true; - } - break; - case 884: - if ('l' == current) { - state = 885; - return true; - } - break; - case 885: - // GreaterEqual; - if (';' == current) { - match = "\u2265"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('L' == current) { - state = 886; - return true; - } - break; - case 886: - if ('e' == current) { - state = 887; - return true; - } - break; - case 887: - if ('s' == current) { - state = 888; - return true; - } - break; - case 888: - if ('s' == current) { - state = 889; - return true; - } - break; - case 889: - // GreaterEqualLess; - if (';' == current) { - match = "\u22DB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 890: - if ('u' == current) { - state = 891; - return true; - } - break; - case 891: - if ('l' == current) { - state = 892; - return true; - } - break; - case 892: - if ('l' == current) { - state = 893; - return true; - } - break; - case 893: - if ('E' == current) { - state = 894; - return true; - } - break; - case 894: - if ('q' == current) { - state = 895; - return true; - } - break; - case 895: - if ('u' == current) { - state = 896; - return true; - } - break; - case 896: - if ('a' == current) { - state = 897; - return true; - } - break; - case 897: - if ('l' == current) { - state = 898; - return true; - } - break; - case 898: - // GreaterFullEqual; - if (';' == current) { - match = "\u2267"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 899: - if ('r' == current) { - state = 900; - return true; - } - break; - case 900: - if ('e' == current) { - state = 901; - return true; - } - break; - case 901: - if ('a' == current) { - state = 902; - return true; - } - break; - case 902: - if ('t' == current) { - state = 903; - return true; - } - break; - case 903: - if ('e' == current) { - state = 904; - return true; - } - break; - case 904: - if ('r' == current) { - state = 905; - return true; - } - break; - case 905: - // GreaterGreater; - if (';' == current) { - match = "\u2AA2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 906: - if ('e' == current) { - state = 907; - return true; - } - break; - case 907: - if ('s' == current) { - state = 908; - return true; - } - break; - case 908: - if ('s' == current) { - state = 909; - return true; - } - break; - case 909: - // GreaterLess; - if (';' == current) { - match = "\u2277"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 910: - if ('l' == current) { - state = 911; - return true; - } - break; - case 911: - if ('a' == current) { - state = 912; - return true; - } - break; - case 912: - if ('n' == current) { - state = 913; - return true; - } - break; - case 913: - if ('t' == current) { - state = 914; - return true; - } - break; - case 914: - if ('E' == current) { - state = 915; - return true; - } - break; - case 915: - if ('q' == current) { - state = 916; - return true; - } - break; - case 916: - if ('u' == current) { - state = 917; - return true; - } - break; - case 917: - if ('a' == current) { - state = 918; - return true; - } - break; - case 918: - if ('l' == current) { - state = 919; - return true; - } - break; - case 919: - // GreaterSlantEqual; - if (';' == current) { - match = "\u2A7E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 920: - if ('i' == current) { - state = 921; - return true; - } - break; - case 921: - if ('l' == current) { - state = 922; - return true; - } - break; - case 922: - if ('d' == current) { - state = 923; - return true; - } - break; - case 923: - if ('e' == current) { - state = 924; - return true; - } - break; - case 924: - // GreaterTilde; - if (';' == current) { - match = "\u2273"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 925: - if ('c' == current) { - state = 926; - return true; - } - break; - case 926: - if ('r' == current) { - state = 927; - return true; - } - break; - case 927: - // Gscr; - if (';' == current) { - match = "\uD835\uDCA2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 928: - // Gt; - if (';' == current) { - match = "\u226B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 929: - switch (current) { - case 'A': - state = 930; - return true; - case 'a': - state = 935; - return true; - case 'c': - state = 940; - return true; - case 'f': - state = 944; - return true; - case 'i': - state = 946; - return true; - case 'o': - state = 957; - return true; - case 's': - state = 972; - return true; - case 'u': - state = 979; - return true; - } - break; - case 930: - if ('R' == current) { - state = 931; - return true; - } - break; - case 931: - if ('D' == current) { - state = 932; - return true; - } - break; - case 932: - if ('c' == current) { - state = 933; - return true; - } - break; - case 933: - if ('y' == current) { - state = 934; - return true; - } - break; - case 934: - // HARDcy; - if (';' == current) { - match = "\u042A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 935: - if ('c' == current) { - state = 936; - return true; - } - else if ('t' == current) { - state = 939; - return true; - } - break; - case 936: - if ('e' == current) { - state = 937; - return true; - } - break; - case 937: - if ('k' == current) { - state = 938; - return true; - } - break; - case 938: - // Hacek; - if (';' == current) { - match = "\u02C7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 939: - // Hat; - if (';' == current) { - match = "^"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 940: - if ('i' == current) { - state = 941; - return true; - } - break; - case 941: - if ('r' == current) { - state = 942; - return true; - } - break; - case 942: - if ('c' == current) { - state = 943; - return true; - } - break; - case 943: - // Hcirc; - if (';' == current) { - match = "\u0124"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 944: - if ('r' == current) { - state = 945; - return true; - } - break; - case 945: - // Hfr; - if (';' == current) { - match = "\u210C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 946: - if ('l' == current) { - state = 947; - return true; - } - break; - case 947: - if ('b' == current) { - state = 948; - return true; - } - break; - case 948: - if ('e' == current) { - state = 949; - return true; - } - break; - case 949: - if ('r' == current) { - state = 950; - return true; - } - break; - case 950: - if ('t' == current) { - state = 951; - return true; - } - break; - case 951: - if ('S' == current) { - state = 952; - return true; - } - break; - case 952: - if ('p' == current) { - state = 953; - return true; - } - break; - case 953: - if ('a' == current) { - state = 954; - return true; - } - break; - case 954: - if ('c' == current) { - state = 955; - return true; - } - break; - case 955: - if ('e' == current) { - state = 956; - return true; - } - break; - case 956: - // HilbertSpace; - if (';' == current) { - match = "\u210B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 957: - if ('p' == current) { - state = 958; - return true; - } - else if ('r' == current) { - state = 960; - return true; - } - break; - case 958: - if ('f' == current) { - state = 959; - return true; - } - break; - case 959: - // Hopf; - if (';' == current) { - match = "\u210D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 960: - if ('i' == current) { - state = 961; - return true; - } - break; - case 961: - if ('z' == current) { - state = 962; - return true; - } - break; - case 962: - if ('o' == current) { - state = 963; - return true; - } - break; - case 963: - if ('n' == current) { - state = 964; - return true; - } - break; - case 964: - if ('t' == current) { - state = 965; - return true; - } - break; - case 965: - if ('a' == current) { - state = 966; - return true; - } - break; - case 966: - if ('l' == current) { - state = 967; - return true; - } - break; - case 967: - if ('L' == current) { - state = 968; - return true; - } - break; - case 968: - if ('i' == current) { - state = 969; - return true; - } - break; - case 969: - if ('n' == current) { - state = 970; - return true; - } - break; - case 970: - if ('e' == current) { - state = 971; - return true; - } - break; - case 971: - // HorizontalLine; - if (';' == current) { - match = "\u2500"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 972: - if ('c' == current) { - state = 973; - return true; - } - else if ('t' == current) { - state = 975; - return true; - } - break; - case 973: - if ('r' == current) { - state = 974; - return true; - } - break; - case 974: - // Hscr; - if (';' == current) { - match = "\u210B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 975: - if ('r' == current) { - state = 976; - return true; - } - break; - case 976: - if ('o' == current) { - state = 977; - return true; - } - break; - case 977: - if ('k' == current) { - state = 978; - return true; - } - break; - case 978: - // Hstrok; - if (';' == current) { - match = "\u0126"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 979: - if ('m' == current) { - state = 980; - return true; - } - break; - case 980: - if ('p' == current) { - state = 981; - return true; - } - break; - case 981: - if ('D' == current) { - state = 982; - return true; - } - else if ('E' == current) { - state = 990; - return true; - } - break; - case 982: - if ('o' == current) { - state = 983; - return true; - } - break; - case 983: - if ('w' == current) { - state = 984; - return true; - } - break; - case 984: - if ('n' == current) { - state = 985; - return true; - } - break; - case 985: - if ('H' == current) { - state = 986; - return true; - } - break; - case 986: - if ('u' == current) { - state = 987; - return true; - } - break; - case 987: - if ('m' == current) { - state = 988; - return true; - } - break; - case 988: - if ('p' == current) { - state = 989; - return true; - } - break; - case 989: - // HumpDownHump; - if (';' == current) { - match = "\u224E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 990: - if ('q' == current) { - state = 991; - return true; - } - break; - case 991: - if ('u' == current) { - state = 992; - return true; - } - break; - case 992: - if ('a' == current) { - state = 993; - return true; - } - break; - case 993: - if ('l' == current) { - state = 994; - return true; - } - break; - case 994: - // HumpEqual; - if (';' == current) { - match = "\u224F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 995: - switch (current) { - case 'E': - state = 996; - return true; - case 'J': - state = 999; - return true; - case 'O': - state = 1003; - return true; - case 'a': - state = 1006; - return true; - case 'c': - state = 1011; - return true; - case 'd': - state = 1016; - return true; - case 'f': - state = 1019; - return true; - case 'g': - state = 1021; - return true; - case 'm': - state = 1026; - return true; - case 'n': - state = 1042; - return true; - case 'o': - state = 1074; - return true; - case 's': - state = 1082; - return true; - case 't': - state = 1085; - return true; - case 'u': - state = 1090; - return true; - } - break; - case 996: - if ('c' == current) { - state = 997; - return true; - } - break; - case 997: - if ('y' == current) { - state = 998; - return true; - } - break; - case 998: - // IEcy; - if (';' == current) { - match = "\u0415"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 999: - if ('l' == current) { - state = 1000; - return true; - } - break; - } - return false; - } - - private boolean parse2(final int current) { - consumedCount++; - switch (state) { - case 1000: - if ('i' == current) { - state = 1001; - return true; - } - break; - case 1001: - if ('g' == current) { - state = 1002; - return true; - } - break; - case 1002: - // IJlig; - if (';' == current) { - match = "\u0132"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1003: - if ('c' == current) { - state = 1004; - return true; - } - break; - case 1004: - if ('y' == current) { - state = 1005; - return true; - } - break; - case 1005: - // IOcy; - if (';' == current) { - match = "\u0401"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1006: - if ('c' == current) { - state = 1007; - return true; - } - break; - case 1007: - if ('u' == current) { - state = 1008; - return true; - } - break; - case 1008: - if ('t' == current) { - state = 1009; - return true; - } - break; - case 1009: - // Iacute - if ('e' == current) { - match = "\u00CD"; - matchLength = consumedCount; - state = 1010; - return true; - } - break; - case 1010: - // Iacute; - if (';' == current) { - match = "\u00CD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1011: - if ('i' == current) { - state = 1012; - return true; - } - else if ('y' == current) { - state = 1015; - return true; - } - break; - case 1012: - if ('r' == current) { - state = 1013; - return true; - } - break; - case 1013: - // Icirc - if ('c' == current) { - match = "\u00CE"; - matchLength = consumedCount; - state = 1014; - return true; - } - break; - case 1014: - // Icirc; - if (';' == current) { - match = "\u00CE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1015: - // Icy; - if (';' == current) { - match = "\u0418"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1016: - if ('o' == current) { - state = 1017; - return true; - } - break; - case 1017: - if ('t' == current) { - state = 1018; - return true; - } - break; - case 1018: - // Idot; - if (';' == current) { - match = "\u0130"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1019: - if ('r' == current) { - state = 1020; - return true; - } - break; - case 1020: - // Ifr; - if (';' == current) { - match = "\u2111"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1021: - if ('r' == current) { - state = 1022; - return true; - } - break; - case 1022: - if ('a' == current) { - state = 1023; - return true; - } - break; - case 1023: - if ('v' == current) { - state = 1024; - return true; - } - break; - case 1024: - // Igrave - if ('e' == current) { - match = "\u00CC"; - matchLength = consumedCount; - state = 1025; - return true; - } - break; - case 1025: - // Igrave; - if (';' == current) { - match = "\u00CC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1026: - switch (current) { - case ';': // Im; - match = "\u2111"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'a': - state = 1027; - return true; - case 'p': - state = 1037; - return true; - } - break; - case 1027: - if ('c' == current) { - state = 1028; - return true; - } - else if ('g' == current) { - state = 1030; - return true; - } - break; - case 1028: - if ('r' == current) { - state = 1029; - return true; - } - break; - case 1029: - // Imacr; - if (';' == current) { - match = "\u012A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1030: - if ('i' == current) { - state = 1031; - return true; - } - break; - case 1031: - if ('n' == current) { - state = 1032; - return true; - } - break; - case 1032: - if ('a' == current) { - state = 1033; - return true; - } - break; - case 1033: - if ('r' == current) { - state = 1034; - return true; - } - break; - case 1034: - if ('y' == current) { - state = 1035; - return true; - } - break; - case 1035: - if ('I' == current) { - state = 1036; - return true; - } - break; - case 1036: - // ImaginaryI; - if (';' == current) { - match = "\u2148"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1037: - if ('l' == current) { - state = 1038; - return true; - } - break; - case 1038: - if ('i' == current) { - state = 1039; - return true; - } - break; - case 1039: - if ('e' == current) { - state = 1040; - return true; - } - break; - case 1040: - if ('s' == current) { - state = 1041; - return true; - } - break; - case 1041: - // Implies; - if (';' == current) { - match = "\u21D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1042: - if ('t' == current) { - state = 1043; - return true; - } - else if ('v' == current) { - state = 1057; - return true; - } - break; - case 1043: - // Int; - if (';' == current) { - match = "\u222C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 1044; - return true; - } - break; - case 1044: - if ('g' == current) { - state = 1045; - return true; - } - else if ('r' == current) { - state = 1049; - return true; - } - break; - case 1045: - if ('r' == current) { - state = 1046; - return true; - } - break; - case 1046: - if ('a' == current) { - state = 1047; - return true; - } - break; - case 1047: - if ('l' == current) { - state = 1048; - return true; - } - break; - case 1048: - // Integral; - if (';' == current) { - match = "\u222B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1049: - if ('s' == current) { - state = 1050; - return true; - } - break; - case 1050: - if ('e' == current) { - state = 1051; - return true; - } - break; - case 1051: - if ('c' == current) { - state = 1052; - return true; - } - break; - case 1052: - if ('t' == current) { - state = 1053; - return true; - } - break; - case 1053: - if ('i' == current) { - state = 1054; - return true; - } - break; - case 1054: - if ('o' == current) { - state = 1055; - return true; - } - break; - case 1055: - if ('n' == current) { - state = 1056; - return true; - } - break; - case 1056: - // Intersection; - if (';' == current) { - match = "\u22C2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1057: - if ('i' == current) { - state = 1058; - return true; - } - break; - case 1058: - if ('s' == current) { - state = 1059; - return true; - } - break; - case 1059: - if ('i' == current) { - state = 1060; - return true; - } - break; - case 1060: - if ('b' == current) { - state = 1061; - return true; - } - break; - case 1061: - if ('l' == current) { - state = 1062; - return true; - } - break; - case 1062: - if ('e' == current) { - state = 1063; - return true; - } - break; - case 1063: - if ('C' == current) { - state = 1064; - return true; - } - else if ('T' == current) { - state = 1069; - return true; - } - break; - case 1064: - if ('o' == current) { - state = 1065; - return true; - } - break; - case 1065: - if ('m' == current) { - state = 1066; - return true; - } - break; - case 1066: - if ('m' == current) { - state = 1067; - return true; - } - break; - case 1067: - if ('a' == current) { - state = 1068; - return true; - } - break; - case 1068: - // InvisibleComma; - if (';' == current) { - match = "\u2063"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1069: - if ('i' == current) { - state = 1070; - return true; - } - break; - case 1070: - if ('m' == current) { - state = 1071; - return true; - } - break; - case 1071: - if ('e' == current) { - state = 1072; - return true; - } - break; - case 1072: - if ('s' == current) { - state = 1073; - return true; - } - break; - case 1073: - // InvisibleTimes; - if (';' == current) { - match = "\u2062"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1074: - switch (current) { - case 'g': - state = 1075; - return true; - case 'p': - state = 1078; - return true; - case 't': - state = 1080; - return true; - } - break; - case 1075: - if ('o' == current) { - state = 1076; - return true; - } - break; - case 1076: - if ('n' == current) { - state = 1077; - return true; - } - break; - case 1077: - // Iogon; - if (';' == current) { - match = "\u012E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1078: - if ('f' == current) { - state = 1079; - return true; - } - break; - case 1079: - // Iopf; - if (';' == current) { - match = "\uD835\uDD40"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1080: - if ('a' == current) { - state = 1081; - return true; - } - break; - case 1081: - // Iota; - if (';' == current) { - match = "\u0399"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1082: - if ('c' == current) { - state = 1083; - return true; - } - break; - case 1083: - if ('r' == current) { - state = 1084; - return true; - } - break; - case 1084: - // Iscr; - if (';' == current) { - match = "\u2110"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1085: - if ('i' == current) { - state = 1086; - return true; - } - break; - case 1086: - if ('l' == current) { - state = 1087; - return true; - } - break; - case 1087: - if ('d' == current) { - state = 1088; - return true; - } - break; - case 1088: - if ('e' == current) { - state = 1089; - return true; - } - break; - case 1089: - // Itilde; - if (';' == current) { - match = "\u0128"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1090: - if ('k' == current) { - state = 1091; - return true; - } - else if ('m' == current) { - state = 1094; - return true; - } - break; - case 1091: - if ('c' == current) { - state = 1092; - return true; - } - break; - case 1092: - if ('y' == current) { - state = 1093; - return true; - } - break; - case 1093: - // Iukcy; - if (';' == current) { - match = "\u0406"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1094: - // Iuml - if ('l' == current) { - match = "\u00CF"; - matchLength = consumedCount; - state = 1095; - return true; - } - break; - case 1095: - // Iuml; - if (';' == current) { - match = "\u00CF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1096: - switch (current) { - case 'c': - state = 1097; - return true; - case 'f': - state = 1102; - return true; - case 'o': - state = 1104; - return true; - case 's': - state = 1107; - return true; - case 'u': - state = 1114; - return true; - } - break; - case 1097: - if ('i' == current) { - state = 1098; - return true; - } - else if ('y' == current) { - state = 1101; - return true; - } - break; - case 1098: - if ('r' == current) { - state = 1099; - return true; - } - break; - case 1099: - if ('c' == current) { - state = 1100; - return true; - } - break; - case 1100: - // Jcirc; - if (';' == current) { - match = "\u0134"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1101: - // Jcy; - if (';' == current) { - match = "\u0419"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1102: - if ('r' == current) { - state = 1103; - return true; - } - break; - case 1103: - // Jfr; - if (';' == current) { - match = "\uD835\uDD0D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1104: - if ('p' == current) { - state = 1105; - return true; - } - break; - case 1105: - if ('f' == current) { - state = 1106; - return true; - } - break; - case 1106: - // Jopf; - if (';' == current) { - match = "\uD835\uDD41"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1107: - if ('c' == current) { - state = 1108; - return true; - } - else if ('e' == current) { - state = 1110; - return true; - } - break; - case 1108: - if ('r' == current) { - state = 1109; - return true; - } - break; - case 1109: - // Jscr; - if (';' == current) { - match = "\uD835\uDCA5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1110: - if ('r' == current) { - state = 1111; - return true; - } - break; - case 1111: - if ('c' == current) { - state = 1112; - return true; - } - break; - case 1112: - if ('y' == current) { - state = 1113; - return true; - } - break; - case 1113: - // Jsercy; - if (';' == current) { - match = "\u0408"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1114: - if ('k' == current) { - state = 1115; - return true; - } - break; - case 1115: - if ('c' == current) { - state = 1116; - return true; - } - break; - case 1116: - if ('y' == current) { - state = 1117; - return true; - } - break; - case 1117: - // Jukcy; - if (';' == current) { - match = "\u0404"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1118: - switch (current) { - case 'H': - state = 1119; - return true; - case 'J': - state = 1122; - return true; - case 'a': - state = 1125; - return true; - case 'c': - state = 1129; - return true; - case 'f': - state = 1135; - return true; - case 'o': - state = 1137; - return true; - case 's': - state = 1140; - return true; - } - break; - case 1119: - if ('c' == current) { - state = 1120; - return true; - } - break; - case 1120: - if ('y' == current) { - state = 1121; - return true; - } - break; - case 1121: - // KHcy; - if (';' == current) { - match = "\u0425"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1122: - if ('c' == current) { - state = 1123; - return true; - } - break; - case 1123: - if ('y' == current) { - state = 1124; - return true; - } - break; - case 1124: - // KJcy; - if (';' == current) { - match = "\u040C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1125: - if ('p' == current) { - state = 1126; - return true; - } - break; - case 1126: - if ('p' == current) { - state = 1127; - return true; - } - break; - case 1127: - if ('a' == current) { - state = 1128; - return true; - } - break; - case 1128: - // Kappa; - if (';' == current) { - match = "\u039A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1129: - if ('e' == current) { - state = 1130; - return true; - } - else if ('y' == current) { - state = 1134; - return true; - } - break; - case 1130: - if ('d' == current) { - state = 1131; - return true; - } - break; - case 1131: - if ('i' == current) { - state = 1132; - return true; - } - break; - case 1132: - if ('l' == current) { - state = 1133; - return true; - } - break; - case 1133: - // Kcedil; - if (';' == current) { - match = "\u0136"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1134: - // Kcy; - if (';' == current) { - match = "\u041A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1135: - if ('r' == current) { - state = 1136; - return true; - } - break; - case 1136: - // Kfr; - if (';' == current) { - match = "\uD835\uDD0E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1137: - if ('p' == current) { - state = 1138; - return true; - } - break; - case 1138: - if ('f' == current) { - state = 1139; - return true; - } - break; - case 1139: - // Kopf; - if (';' == current) { - match = "\uD835\uDD42"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1140: - if ('c' == current) { - state = 1141; - return true; - } - break; - case 1141: - if ('r' == current) { - state = 1142; - return true; - } - break; - case 1142: - // Kscr; - if (';' == current) { - match = "\uD835\uDCA6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1143: - switch (current) { - case 'J': - state = 1144; - return true; - case 'T': // LT - match = "<"; - matchLength = consumedCount; - state = 1147; - return true; - case 'a': - state = 1148; - return true; - case 'c': - state = 1169; - return true; - case 'e': - state = 1179; - return true; - case 'f': - state = 1404; - return true; - case 'l': - state = 1406; - return true; - case 'm': - state = 1415; - return true; - case 'o': - state = 1420; - return true; - case 's': - state = 1505; - return true; - case 't': - state = 1513; - return true; - } - break; - case 1144: - if ('c' == current) { - state = 1145; - return true; - } - break; - case 1145: - if ('y' == current) { - state = 1146; - return true; - } - break; - case 1146: - // LJcy; - if (';' == current) { - match = "\u0409"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1147: - // LT; - if (';' == current) { - match = "<"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1148: - switch (current) { - case 'c': - state = 1149; - return true; - case 'm': - state = 1153; - return true; - case 'n': - state = 1157; - return true; - case 'p': - state = 1159; - return true; - case 'r': - state = 1167; - return true; - } - break; - case 1149: - if ('u' == current) { - state = 1150; - return true; - } - break; - case 1150: - if ('t' == current) { - state = 1151; - return true; - } - break; - case 1151: - if ('e' == current) { - state = 1152; - return true; - } - break; - case 1152: - // Lacute; - if (';' == current) { - match = "\u0139"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1153: - if ('b' == current) { - state = 1154; - return true; - } - break; - case 1154: - if ('d' == current) { - state = 1155; - return true; - } - break; - case 1155: - if ('a' == current) { - state = 1156; - return true; - } - break; - case 1156: - // Lambda; - if (';' == current) { - match = "\u039B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1157: - if ('g' == current) { - state = 1158; - return true; - } - break; - case 1158: - // Lang; - if (';' == current) { - match = "\u27EA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1159: - if ('l' == current) { - state = 1160; - return true; - } - break; - case 1160: - if ('a' == current) { - state = 1161; - return true; - } - break; - case 1161: - if ('c' == current) { - state = 1162; - return true; - } - break; - case 1162: - if ('e' == current) { - state = 1163; - return true; - } - break; - case 1163: - if ('t' == current) { - state = 1164; - return true; - } - break; - case 1164: - if ('r' == current) { - state = 1165; - return true; - } - break; - case 1165: - if ('f' == current) { - state = 1166; - return true; - } - break; - case 1166: - // Laplacetrf; - if (';' == current) { - match = "\u2112"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1167: - if ('r' == current) { - state = 1168; - return true; - } - break; - case 1168: - // Larr; - if (';' == current) { - match = "\u219E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1169: - switch (current) { - case 'a': - state = 1170; - return true; - case 'e': - state = 1174; - return true; - case 'y': - state = 1178; - return true; - } - break; - case 1170: - if ('r' == current) { - state = 1171; - return true; - } - break; - case 1171: - if ('o' == current) { - state = 1172; - return true; - } - break; - case 1172: - if ('n' == current) { - state = 1173; - return true; - } - break; - case 1173: - // Lcaron; - if (';' == current) { - match = "\u013D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1174: - if ('d' == current) { - state = 1175; - return true; - } - break; - case 1175: - if ('i' == current) { - state = 1176; - return true; - } - break; - case 1176: - if ('l' == current) { - state = 1177; - return true; - } - break; - case 1177: - // Lcedil; - if (';' == current) { - match = "\u013B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1178: - // Lcy; - if (';' == current) { - match = "\u041B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1179: - if ('f' == current) { - state = 1180; - return true; - } - else if ('s' == current) { - state = 1355; - return true; - } - break; - case 1180: - if ('t' == current) { - state = 1181; - return true; - } - break; - case 1181: - switch (current) { - case 'A': - state = 1182; - return true; - case 'C': - state = 1211; - return true; - case 'D': - state = 1218; - return true; - case 'F': - state = 1251; - return true; - case 'R': - state = 1256; - return true; - case 'T': - state = 1272; - return true; - case 'U': - state = 1301; - return true; - case 'V': - state = 1331; - return true; - case 'a': - state = 1340; - return true; - case 'r': - state = 1345; - return true; - } - break; - case 1182: - if ('n' == current) { - state = 1183; - return true; - } - else if ('r' == current) { - state = 1194; - return true; - } - break; - case 1183: - if ('g' == current) { - state = 1184; - return true; - } - break; - case 1184: - if ('l' == current) { - state = 1185; - return true; - } - break; - case 1185: - if ('e' == current) { - state = 1186; - return true; - } - break; - case 1186: - if ('B' == current) { - state = 1187; - return true; - } - break; - case 1187: - if ('r' == current) { - state = 1188; - return true; - } - break; - case 1188: - if ('a' == current) { - state = 1189; - return true; - } - break; - case 1189: - if ('c' == current) { - state = 1190; - return true; - } - break; - case 1190: - if ('k' == current) { - state = 1191; - return true; - } - break; - case 1191: - if ('e' == current) { - state = 1192; - return true; - } - break; - case 1192: - if ('t' == current) { - state = 1193; - return true; - } - break; - case 1193: - // LeftAngleBracket; - if (';' == current) { - match = "\u27E8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1194: - if ('r' == current) { - state = 1195; - return true; - } - break; - case 1195: - if ('o' == current) { - state = 1196; - return true; - } - break; - case 1196: - if ('w' == current) { - state = 1197; - return true; - } - break; - case 1197: - switch (current) { - case ';': // LeftArrow; - match = "\u2190"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'B': - state = 1198; - return true; - case 'R': - state = 1201; - return true; - } - break; - case 1198: - if ('a' == current) { - state = 1199; - return true; - } - break; - case 1199: - if ('r' == current) { - state = 1200; - return true; - } - break; - case 1200: - // LeftArrowBar; - if (';' == current) { - match = "\u21E4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1201: - if ('i' == current) { - state = 1202; - return true; - } - break; - case 1202: - if ('g' == current) { - state = 1203; - return true; - } - break; - case 1203: - if ('h' == current) { - state = 1204; - return true; - } - break; - case 1204: - if ('t' == current) { - state = 1205; - return true; - } - break; - case 1205: - if ('A' == current) { - state = 1206; - return true; - } - break; - case 1206: - if ('r' == current) { - state = 1207; - return true; - } - break; - case 1207: - if ('r' == current) { - state = 1208; - return true; - } - break; - case 1208: - if ('o' == current) { - state = 1209; - return true; - } - break; - case 1209: - if ('w' == current) { - state = 1210; - return true; - } - break; - case 1210: - // LeftArrowRightArrow; - if (';' == current) { - match = "\u21C6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1211: - if ('e' == current) { - state = 1212; - return true; - } - break; - case 1212: - if ('i' == current) { - state = 1213; - return true; - } - break; - case 1213: - if ('l' == current) { - state = 1214; - return true; - } - break; - case 1214: - if ('i' == current) { - state = 1215; - return true; - } - break; - case 1215: - if ('n' == current) { - state = 1216; - return true; - } - break; - case 1216: - if ('g' == current) { - state = 1217; - return true; - } - break; - case 1217: - // LeftCeiling; - if (';' == current) { - match = "\u2308"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1218: - if ('o' == current) { - state = 1219; - return true; - } - break; - case 1219: - if ('u' == current) { - state = 1220; - return true; - } - else if ('w' == current) { - state = 1231; - return true; - } - break; - case 1220: - if ('b' == current) { - state = 1221; - return true; - } - break; - case 1221: - if ('l' == current) { - state = 1222; - return true; - } - break; - case 1222: - if ('e' == current) { - state = 1223; - return true; - } - break; - case 1223: - if ('B' == current) { - state = 1224; - return true; - } - break; - case 1224: - if ('r' == current) { - state = 1225; - return true; - } - break; - case 1225: - if ('a' == current) { - state = 1226; - return true; - } - break; - case 1226: - if ('c' == current) { - state = 1227; - return true; - } - break; - case 1227: - if ('k' == current) { - state = 1228; - return true; - } - break; - case 1228: - if ('e' == current) { - state = 1229; - return true; - } - break; - case 1229: - if ('t' == current) { - state = 1230; - return true; - } - break; - case 1230: - // LeftDoubleBracket; - if (';' == current) { - match = "\u27E6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1231: - if ('n' == current) { - state = 1232; - return true; - } - break; - case 1232: - if ('T' == current) { - state = 1233; - return true; - } - else if ('V' == current) { - state = 1242; - return true; - } - break; - case 1233: - if ('e' == current) { - state = 1234; - return true; - } - break; - case 1234: - if ('e' == current) { - state = 1235; - return true; - } - break; - case 1235: - if ('V' == current) { - state = 1236; - return true; - } - break; - case 1236: - if ('e' == current) { - state = 1237; - return true; - } - break; - case 1237: - if ('c' == current) { - state = 1238; - return true; - } - break; - case 1238: - if ('t' == current) { - state = 1239; - return true; - } - break; - case 1239: - if ('o' == current) { - state = 1240; - return true; - } - break; - case 1240: - if ('r' == current) { - state = 1241; - return true; - } - break; - case 1241: - // LeftDownTeeVector; - if (';' == current) { - match = "\u2961"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1242: - if ('e' == current) { - state = 1243; - return true; - } - break; - case 1243: - if ('c' == current) { - state = 1244; - return true; - } - break; - case 1244: - if ('t' == current) { - state = 1245; - return true; - } - break; - case 1245: - if ('o' == current) { - state = 1246; - return true; - } - break; - case 1246: - if ('r' == current) { - state = 1247; - return true; - } - break; - case 1247: - // LeftDownVector; - if (';' == current) { - match = "\u21C3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('B' == current) { - state = 1248; - return true; - } - break; - case 1248: - if ('a' == current) { - state = 1249; - return true; - } - break; - case 1249: - if ('r' == current) { - state = 1250; - return true; - } - break; - case 1250: - // LeftDownVectorBar; - if (';' == current) { - match = "\u2959"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1251: - if ('l' == current) { - state = 1252; - return true; - } - break; - case 1252: - if ('o' == current) { - state = 1253; - return true; - } - break; - case 1253: - if ('o' == current) { - state = 1254; - return true; - } - break; - case 1254: - if ('r' == current) { - state = 1255; - return true; - } - break; - case 1255: - // LeftFloor; - if (';' == current) { - match = "\u230A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1256: - if ('i' == current) { - state = 1257; - return true; - } - break; - case 1257: - if ('g' == current) { - state = 1258; - return true; - } - break; - case 1258: - if ('h' == current) { - state = 1259; - return true; - } - break; - case 1259: - if ('t' == current) { - state = 1260; - return true; - } - break; - case 1260: - if ('A' == current) { - state = 1261; - return true; - } - else if ('V' == current) { - state = 1266; - return true; - } - break; - case 1261: - if ('r' == current) { - state = 1262; - return true; - } - break; - case 1262: - if ('r' == current) { - state = 1263; - return true; - } - break; - case 1263: - if ('o' == current) { - state = 1264; - return true; - } - break; - case 1264: - if ('w' == current) { - state = 1265; - return true; - } - break; - case 1265: - // LeftRightArrow; - if (';' == current) { - match = "\u2194"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1266: - if ('e' == current) { - state = 1267; - return true; - } - break; - case 1267: - if ('c' == current) { - state = 1268; - return true; - } - break; - case 1268: - if ('t' == current) { - state = 1269; - return true; - } - break; - case 1269: - if ('o' == current) { - state = 1270; - return true; - } - break; - case 1270: - if ('r' == current) { - state = 1271; - return true; - } - break; - case 1271: - // LeftRightVector; - if (';' == current) { - match = "\u294E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1272: - if ('e' == current) { - state = 1273; - return true; - } - else if ('r' == current) { - state = 1286; - return true; - } - break; - case 1273: - if ('e' == current) { - state = 1274; - return true; - } - break; - case 1274: - switch (current) { - case ';': // LeftTee; - match = "\u22A3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'A': - state = 1275; - return true; - case 'V': - state = 1280; - return true; - } - break; - case 1275: - if ('r' == current) { - state = 1276; - return true; - } - break; - case 1276: - if ('r' == current) { - state = 1277; - return true; - } - break; - case 1277: - if ('o' == current) { - state = 1278; - return true; - } - break; - case 1278: - if ('w' == current) { - state = 1279; - return true; - } - break; - case 1279: - // LeftTeeArrow; - if (';' == current) { - match = "\u21A4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1280: - if ('e' == current) { - state = 1281; - return true; - } - break; - case 1281: - if ('c' == current) { - state = 1282; - return true; - } - break; - case 1282: - if ('t' == current) { - state = 1283; - return true; - } - break; - case 1283: - if ('o' == current) { - state = 1284; - return true; - } - break; - case 1284: - if ('r' == current) { - state = 1285; - return true; - } - break; - case 1285: - // LeftTeeVector; - if (';' == current) { - match = "\u295A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1286: - if ('i' == current) { - state = 1287; - return true; - } - break; - case 1287: - if ('a' == current) { - state = 1288; - return true; - } - break; - case 1288: - if ('n' == current) { - state = 1289; - return true; - } - break; - case 1289: - if ('g' == current) { - state = 1290; - return true; - } - break; - case 1290: - if ('l' == current) { - state = 1291; - return true; - } - break; - case 1291: - if ('e' == current) { - state = 1292; - return true; - } - break; - case 1292: - switch (current) { - case ';': // LeftTriangle; - match = "\u22B2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'B': - state = 1293; - return true; - case 'E': - state = 1296; - return true; - } - break; - case 1293: - if ('a' == current) { - state = 1294; - return true; - } - break; - case 1294: - if ('r' == current) { - state = 1295; - return true; - } - break; - case 1295: - // LeftTriangleBar; - if (';' == current) { - match = "\u29CF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1296: - if ('q' == current) { - state = 1297; - return true; - } - break; - case 1297: - if ('u' == current) { - state = 1298; - return true; - } - break; - case 1298: - if ('a' == current) { - state = 1299; - return true; - } - break; - case 1299: - if ('l' == current) { - state = 1300; - return true; - } - break; - case 1300: - // LeftTriangleEqual; - if (';' == current) { - match = "\u22B4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1301: - if ('p' == current) { - state = 1302; - return true; - } - break; - case 1302: - switch (current) { - case 'D': - state = 1303; - return true; - case 'T': - state = 1313; - return true; - case 'V': - state = 1322; - return true; - } - break; - case 1303: - if ('o' == current) { - state = 1304; - return true; - } - break; - case 1304: - if ('w' == current) { - state = 1305; - return true; - } - break; - case 1305: - if ('n' == current) { - state = 1306; - return true; - } - break; - case 1306: - if ('V' == current) { - state = 1307; - return true; - } - break; - case 1307: - if ('e' == current) { - state = 1308; - return true; - } - break; - case 1308: - if ('c' == current) { - state = 1309; - return true; - } - break; - case 1309: - if ('t' == current) { - state = 1310; - return true; - } - break; - case 1310: - if ('o' == current) { - state = 1311; - return true; - } - break; - case 1311: - if ('r' == current) { - state = 1312; - return true; - } - break; - case 1312: - // LeftUpDownVector; - if (';' == current) { - match = "\u2951"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1313: - if ('e' == current) { - state = 1314; - return true; - } - break; - case 1314: - if ('e' == current) { - state = 1315; - return true; - } - break; - case 1315: - if ('V' == current) { - state = 1316; - return true; - } - break; - case 1316: - if ('e' == current) { - state = 1317; - return true; - } - break; - case 1317: - if ('c' == current) { - state = 1318; - return true; - } - break; - case 1318: - if ('t' == current) { - state = 1319; - return true; - } - break; - case 1319: - if ('o' == current) { - state = 1320; - return true; - } - break; - case 1320: - if ('r' == current) { - state = 1321; - return true; - } - break; - case 1321: - // LeftUpTeeVector; - if (';' == current) { - match = "\u2960"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1322: - if ('e' == current) { - state = 1323; - return true; - } - break; - case 1323: - if ('c' == current) { - state = 1324; - return true; - } - break; - case 1324: - if ('t' == current) { - state = 1325; - return true; - } - break; - case 1325: - if ('o' == current) { - state = 1326; - return true; - } - break; - case 1326: - if ('r' == current) { - state = 1327; - return true; - } - break; - case 1327: - // LeftUpVector; - if (';' == current) { - match = "\u21BF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('B' == current) { - state = 1328; - return true; - } - break; - case 1328: - if ('a' == current) { - state = 1329; - return true; - } - break; - case 1329: - if ('r' == current) { - state = 1330; - return true; - } - break; - case 1330: - // LeftUpVectorBar; - if (';' == current) { - match = "\u2958"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1331: - if ('e' == current) { - state = 1332; - return true; - } - break; - case 1332: - if ('c' == current) { - state = 1333; - return true; - } - break; - case 1333: - if ('t' == current) { - state = 1334; - return true; - } - break; - case 1334: - if ('o' == current) { - state = 1335; - return true; - } - break; - case 1335: - if ('r' == current) { - state = 1336; - return true; - } - break; - case 1336: - // LeftVector; - if (';' == current) { - match = "\u21BC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('B' == current) { - state = 1337; - return true; - } - break; - case 1337: - if ('a' == current) { - state = 1338; - return true; - } - break; - case 1338: - if ('r' == current) { - state = 1339; - return true; - } - break; - case 1339: - // LeftVectorBar; - if (';' == current) { - match = "\u2952"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1340: - if ('r' == current) { - state = 1341; - return true; - } - break; - case 1341: - if ('r' == current) { - state = 1342; - return true; - } - break; - case 1342: - if ('o' == current) { - state = 1343; - return true; - } - break; - case 1343: - if ('w' == current) { - state = 1344; - return true; - } - break; - case 1344: - // Leftarrow; - if (';' == current) { - match = "\u21D0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1345: - if ('i' == current) { - state = 1346; - return true; - } - break; - case 1346: - if ('g' == current) { - state = 1347; - return true; - } - break; - case 1347: - if ('h' == current) { - state = 1348; - return true; - } - break; - case 1348: - if ('t' == current) { - state = 1349; - return true; - } - break; - case 1349: - if ('a' == current) { - state = 1350; - return true; - } - break; - case 1350: - if ('r' == current) { - state = 1351; - return true; - } - break; - case 1351: - if ('r' == current) { - state = 1352; - return true; - } - break; - case 1352: - if ('o' == current) { - state = 1353; - return true; - } - break; - case 1353: - if ('w' == current) { - state = 1354; - return true; - } - break; - case 1354: - // Leftrightarrow; - if (';' == current) { - match = "\u21D4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1355: - if ('s' == current) { - state = 1356; - return true; - } - break; - case 1356: - switch (current) { - case 'E': - state = 1357; - return true; - case 'F': - state = 1369; - return true; - case 'G': - state = 1378; - return true; - case 'L': - state = 1385; - return true; - case 'S': - state = 1389; - return true; - case 'T': - state = 1399; - return true; - } - break; - case 1357: - if ('q' == current) { - state = 1358; - return true; - } - break; - case 1358: - if ('u' == current) { - state = 1359; - return true; - } - break; - case 1359: - if ('a' == current) { - state = 1360; - return true; - } - break; - case 1360: - if ('l' == current) { - state = 1361; - return true; - } - break; - case 1361: - if ('G' == current) { - state = 1362; - return true; - } - break; - case 1362: - if ('r' == current) { - state = 1363; - return true; - } - break; - case 1363: - if ('e' == current) { - state = 1364; - return true; - } - break; - case 1364: - if ('a' == current) { - state = 1365; - return true; - } - break; - case 1365: - if ('t' == current) { - state = 1366; - return true; - } - break; - case 1366: - if ('e' == current) { - state = 1367; - return true; - } - break; - case 1367: - if ('r' == current) { - state = 1368; - return true; - } - break; - case 1368: - // LessEqualGreater; - if (';' == current) { - match = "\u22DA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1369: - if ('u' == current) { - state = 1370; - return true; - } - break; - case 1370: - if ('l' == current) { - state = 1371; - return true; - } - break; - case 1371: - if ('l' == current) { - state = 1372; - return true; - } - break; - case 1372: - if ('E' == current) { - state = 1373; - return true; - } - break; - case 1373: - if ('q' == current) { - state = 1374; - return true; - } - break; - case 1374: - if ('u' == current) { - state = 1375; - return true; - } - break; - case 1375: - if ('a' == current) { - state = 1376; - return true; - } - break; - case 1376: - if ('l' == current) { - state = 1377; - return true; - } - break; - case 1377: - // LessFullEqual; - if (';' == current) { - match = "\u2266"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1378: - if ('r' == current) { - state = 1379; - return true; - } - break; - case 1379: - if ('e' == current) { - state = 1380; - return true; - } - break; - case 1380: - if ('a' == current) { - state = 1381; - return true; - } - break; - case 1381: - if ('t' == current) { - state = 1382; - return true; - } - break; - case 1382: - if ('e' == current) { - state = 1383; - return true; - } - break; - case 1383: - if ('r' == current) { - state = 1384; - return true; - } - break; - case 1384: - // LessGreater; - if (';' == current) { - match = "\u2276"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1385: - if ('e' == current) { - state = 1386; - return true; - } - break; - case 1386: - if ('s' == current) { - state = 1387; - return true; - } - break; - case 1387: - if ('s' == current) { - state = 1388; - return true; - } - break; - case 1388: - // LessLess; - if (';' == current) { - match = "\u2AA1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1389: - if ('l' == current) { - state = 1390; - return true; - } - break; - case 1390: - if ('a' == current) { - state = 1391; - return true; - } - break; - case 1391: - if ('n' == current) { - state = 1392; - return true; - } - break; - case 1392: - if ('t' == current) { - state = 1393; - return true; - } - break; - case 1393: - if ('E' == current) { - state = 1394; - return true; - } - break; - case 1394: - if ('q' == current) { - state = 1395; - return true; - } - break; - case 1395: - if ('u' == current) { - state = 1396; - return true; - } - break; - case 1396: - if ('a' == current) { - state = 1397; - return true; - } - break; - case 1397: - if ('l' == current) { - state = 1398; - return true; - } - break; - case 1398: - // LessSlantEqual; - if (';' == current) { - match = "\u2A7D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1399: - if ('i' == current) { - state = 1400; - return true; - } - break; - case 1400: - if ('l' == current) { - state = 1401; - return true; - } - break; - case 1401: - if ('d' == current) { - state = 1402; - return true; - } - break; - case 1402: - if ('e' == current) { - state = 1403; - return true; - } - break; - case 1403: - // LessTilde; - if (';' == current) { - match = "\u2272"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1404: - if ('r' == current) { - state = 1405; - return true; - } - break; - case 1405: - // Lfr; - if (';' == current) { - match = "\uD835\uDD0F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1406: - // Ll; - if (';' == current) { - match = "\u22D8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 1407; - return true; - } - break; - case 1407: - if ('f' == current) { - state = 1408; - return true; - } - break; - case 1408: - if ('t' == current) { - state = 1409; - return true; - } - break; - case 1409: - if ('a' == current) { - state = 1410; - return true; - } - break; - case 1410: - if ('r' == current) { - state = 1411; - return true; - } - break; - case 1411: - if ('r' == current) { - state = 1412; - return true; - } - break; - case 1412: - if ('o' == current) { - state = 1413; - return true; - } - break; - case 1413: - if ('w' == current) { - state = 1414; - return true; - } - break; - case 1414: - // Lleftarrow; - if (';' == current) { - match = "\u21DA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1415: - if ('i' == current) { - state = 1416; - return true; - } - break; - case 1416: - if ('d' == current) { - state = 1417; - return true; - } - break; - case 1417: - if ('o' == current) { - state = 1418; - return true; - } - break; - case 1418: - if ('t' == current) { - state = 1419; - return true; - } - break; - case 1419: - // Lmidot; - if (';' == current) { - match = "\u013F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1420: - switch (current) { - case 'n': - state = 1421; - return true; - case 'p': - state = 1481; - return true; - case 'w': - state = 1483; - return true; - } - break; - case 1421: - if ('g' == current) { - state = 1422; - return true; - } - break; - case 1422: - switch (current) { - case 'L': - state = 1423; - return true; - case 'R': - state = 1442; - return true; - case 'l': - state = 1452; - return true; - case 'r': - state = 1471; - return true; - } - break; - case 1423: - if ('e' == current) { - state = 1424; - return true; - } - break; - case 1424: - if ('f' == current) { - state = 1425; - return true; - } - break; - case 1425: - if ('t' == current) { - state = 1426; - return true; - } - break; - case 1426: - if ('A' == current) { - state = 1427; - return true; - } - else if ('R' == current) { - state = 1432; - return true; - } - break; - case 1427: - if ('r' == current) { - state = 1428; - return true; - } - break; - case 1428: - if ('r' == current) { - state = 1429; - return true; - } - break; - case 1429: - if ('o' == current) { - state = 1430; - return true; - } - break; - case 1430: - if ('w' == current) { - state = 1431; - return true; - } - break; - case 1431: - // LongLeftArrow; - if (';' == current) { - match = "\u27F5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1432: - if ('i' == current) { - state = 1433; - return true; - } - break; - case 1433: - if ('g' == current) { - state = 1434; - return true; - } - break; - case 1434: - if ('h' == current) { - state = 1435; - return true; - } - break; - case 1435: - if ('t' == current) { - state = 1436; - return true; - } - break; - case 1436: - if ('A' == current) { - state = 1437; - return true; - } - break; - case 1437: - if ('r' == current) { - state = 1438; - return true; - } - break; - case 1438: - if ('r' == current) { - state = 1439; - return true; - } - break; - case 1439: - if ('o' == current) { - state = 1440; - return true; - } - break; - case 1440: - if ('w' == current) { - state = 1441; - return true; - } - break; - case 1441: - // LongLeftRightArrow; - if (';' == current) { - match = "\u27F7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1442: - if ('i' == current) { - state = 1443; - return true; - } - break; - case 1443: - if ('g' == current) { - state = 1444; - return true; - } - break; - case 1444: - if ('h' == current) { - state = 1445; - return true; - } - break; - case 1445: - if ('t' == current) { - state = 1446; - return true; - } - break; - case 1446: - if ('A' == current) { - state = 1447; - return true; - } - break; - case 1447: - if ('r' == current) { - state = 1448; - return true; - } - break; - case 1448: - if ('r' == current) { - state = 1449; - return true; - } - break; - case 1449: - if ('o' == current) { - state = 1450; - return true; - } - break; - case 1450: - if ('w' == current) { - state = 1451; - return true; - } - break; - case 1451: - // LongRightArrow; - if (';' == current) { - match = "\u27F6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1452: - if ('e' == current) { - state = 1453; - return true; - } - break; - case 1453: - if ('f' == current) { - state = 1454; - return true; - } - break; - case 1454: - if ('t' == current) { - state = 1455; - return true; - } - break; - case 1455: - if ('a' == current) { - state = 1456; - return true; - } - else if ('r' == current) { - state = 1461; - return true; - } - break; - case 1456: - if ('r' == current) { - state = 1457; - return true; - } - break; - case 1457: - if ('r' == current) { - state = 1458; - return true; - } - break; - case 1458: - if ('o' == current) { - state = 1459; - return true; - } - break; - case 1459: - if ('w' == current) { - state = 1460; - return true; - } - break; - case 1460: - // Longleftarrow; - if (';' == current) { - match = "\u27F8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1461: - if ('i' == current) { - state = 1462; - return true; - } - break; - case 1462: - if ('g' == current) { - state = 1463; - return true; - } - break; - case 1463: - if ('h' == current) { - state = 1464; - return true; - } - break; - case 1464: - if ('t' == current) { - state = 1465; - return true; - } - break; - case 1465: - if ('a' == current) { - state = 1466; - return true; - } - break; - case 1466: - if ('r' == current) { - state = 1467; - return true; - } - break; - case 1467: - if ('r' == current) { - state = 1468; - return true; - } - break; - case 1468: - if ('o' == current) { - state = 1469; - return true; - } - break; - case 1469: - if ('w' == current) { - state = 1470; - return true; - } - break; - case 1470: - // Longleftrightarrow; - if (';' == current) { - match = "\u27FA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1471: - if ('i' == current) { - state = 1472; - return true; - } - break; - case 1472: - if ('g' == current) { - state = 1473; - return true; - } - break; - case 1473: - if ('h' == current) { - state = 1474; - return true; - } - break; - case 1474: - if ('t' == current) { - state = 1475; - return true; - } - break; - case 1475: - if ('a' == current) { - state = 1476; - return true; - } - break; - case 1476: - if ('r' == current) { - state = 1477; - return true; - } - break; - case 1477: - if ('r' == current) { - state = 1478; - return true; - } - break; - case 1478: - if ('o' == current) { - state = 1479; - return true; - } - break; - case 1479: - if ('w' == current) { - state = 1480; - return true; - } - break; - case 1480: - // Longrightarrow; - if (';' == current) { - match = "\u27F9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1481: - if ('f' == current) { - state = 1482; - return true; - } - break; - case 1482: - // Lopf; - if (';' == current) { - match = "\uD835\uDD43"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1483: - if ('e' == current) { - state = 1484; - return true; - } - break; - case 1484: - if ('r' == current) { - state = 1485; - return true; - } - break; - case 1485: - if ('L' == current) { - state = 1486; - return true; - } - else if ('R' == current) { - state = 1495; - return true; - } - break; - case 1486: - if ('e' == current) { - state = 1487; - return true; - } - break; - case 1487: - if ('f' == current) { - state = 1488; - return true; - } - break; - case 1488: - if ('t' == current) { - state = 1489; - return true; - } - break; - case 1489: - if ('A' == current) { - state = 1490; - return true; - } - break; - case 1490: - if ('r' == current) { - state = 1491; - return true; - } - break; - case 1491: - if ('r' == current) { - state = 1492; - return true; - } - break; - case 1492: - if ('o' == current) { - state = 1493; - return true; - } - break; - case 1493: - if ('w' == current) { - state = 1494; - return true; - } - break; - case 1494: - // LowerLeftArrow; - if (';' == current) { - match = "\u2199"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1495: - if ('i' == current) { - state = 1496; - return true; - } - break; - case 1496: - if ('g' == current) { - state = 1497; - return true; - } - break; - case 1497: - if ('h' == current) { - state = 1498; - return true; - } - break; - case 1498: - if ('t' == current) { - state = 1499; - return true; - } - break; - case 1499: - if ('A' == current) { - state = 1500; - return true; - } - break; - case 1500: - if ('r' == current) { - state = 1501; - return true; - } - break; - case 1501: - if ('r' == current) { - state = 1502; - return true; - } - break; - case 1502: - if ('o' == current) { - state = 1503; - return true; - } - break; - case 1503: - if ('w' == current) { - state = 1504; - return true; - } - break; - case 1504: - // LowerRightArrow; - if (';' == current) { - match = "\u2198"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1505: - switch (current) { - case 'c': - state = 1506; - return true; - case 'h': - state = 1508; - return true; - case 't': - state = 1509; - return true; - } - break; - case 1506: - if ('r' == current) { - state = 1507; - return true; - } - break; - case 1507: - // Lscr; - if (';' == current) { - match = "\u2112"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1508: - // Lsh; - if (';' == current) { - match = "\u21B0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1509: - if ('r' == current) { - state = 1510; - return true; - } - break; - case 1510: - if ('o' == current) { - state = 1511; - return true; - } - break; - case 1511: - if ('k' == current) { - state = 1512; - return true; - } - break; - case 1512: - // Lstrok; - if (';' == current) { - match = "\u0141"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1513: - // Lt; - if (';' == current) { - match = "\u226A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1514: - switch (current) { - case 'a': - state = 1515; - return true; - case 'c': - state = 1517; - return true; - case 'e': - state = 1519; - return true; - case 'f': - state = 1536; - return true; - case 'i': - state = 1538; - return true; - case 'o': - state = 1546; - return true; - case 's': - state = 1549; - return true; - case 'u': - state = 1552; - return true; - } - break; - case 1515: - if ('p' == current) { - state = 1516; - return true; - } - break; - case 1516: - // Map; - if (';' == current) { - match = "\u2905"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1517: - if ('y' == current) { - state = 1518; - return true; - } - break; - case 1518: - // Mcy; - if (';' == current) { - match = "\u041C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1519: - if ('d' == current) { - state = 1520; - return true; - } - else if ('l' == current) { - state = 1529; - return true; - } - break; - case 1520: - if ('i' == current) { - state = 1521; - return true; - } - break; - case 1521: - if ('u' == current) { - state = 1522; - return true; - } - break; - case 1522: - if ('m' == current) { - state = 1523; - return true; - } - break; - case 1523: - if ('S' == current) { - state = 1524; - return true; - } - break; - case 1524: - if ('p' == current) { - state = 1525; - return true; - } - break; - case 1525: - if ('a' == current) { - state = 1526; - return true; - } - break; - case 1526: - if ('c' == current) { - state = 1527; - return true; - } - break; - case 1527: - if ('e' == current) { - state = 1528; - return true; - } - break; - case 1528: - // MediumSpace; - if (';' == current) { - match = "\u205F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1529: - if ('l' == current) { - state = 1530; - return true; - } - break; - case 1530: - if ('i' == current) { - state = 1531; - return true; - } - break; - case 1531: - if ('n' == current) { - state = 1532; - return true; - } - break; - case 1532: - if ('t' == current) { - state = 1533; - return true; - } - break; - case 1533: - if ('r' == current) { - state = 1534; - return true; - } - break; - case 1534: - if ('f' == current) { - state = 1535; - return true; - } - break; - case 1535: - // Mellintrf; - if (';' == current) { - match = "\u2133"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1536: - if ('r' == current) { - state = 1537; - return true; - } - break; - case 1537: - // Mfr; - if (';' == current) { - match = "\uD835\uDD10"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1538: - if ('n' == current) { - state = 1539; - return true; - } - break; - case 1539: - if ('u' == current) { - state = 1540; - return true; - } - break; - case 1540: - if ('s' == current) { - state = 1541; - return true; - } - break; - case 1541: - if ('P' == current) { - state = 1542; - return true; - } - break; - case 1542: - if ('l' == current) { - state = 1543; - return true; - } - break; - case 1543: - if ('u' == current) { - state = 1544; - return true; - } - break; - case 1544: - if ('s' == current) { - state = 1545; - return true; - } - break; - case 1545: - // MinusPlus; - if (';' == current) { - match = "\u2213"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1546: - if ('p' == current) { - state = 1547; - return true; - } - break; - case 1547: - if ('f' == current) { - state = 1548; - return true; - } - break; - case 1548: - // Mopf; - if (';' == current) { - match = "\uD835\uDD44"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1549: - if ('c' == current) { - state = 1550; - return true; - } - break; - case 1550: - if ('r' == current) { - state = 1551; - return true; - } - break; - case 1551: - // Mscr; - if (';' == current) { - match = "\u2133"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1552: - // Mu; - if (';' == current) { - match = "\u039C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1553: - switch (current) { - case 'J': - state = 1554; - return true; - case 'a': - state = 1557; - return true; - case 'c': - state = 1562; - return true; - case 'e': - state = 1572; - return true; - case 'f': - state = 1650; - return true; - case 'o': - state = 1652; - return true; - case 's': - state = 2039; - return true; - case 't': - state = 2042; - return true; - case 'u': - state = 2047; - return true; - } - break; - case 1554: - if ('c' == current) { - state = 1555; - return true; - } - break; - case 1555: - if ('y' == current) { - state = 1556; - return true; - } - break; - case 1556: - // NJcy; - if (';' == current) { - match = "\u040A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1557: - if ('c' == current) { - state = 1558; - return true; - } - break; - case 1558: - if ('u' == current) { - state = 1559; - return true; - } - break; - case 1559: - if ('t' == current) { - state = 1560; - return true; - } - break; - case 1560: - if ('e' == current) { - state = 1561; - return true; - } - break; - case 1561: - // Nacute; - if (';' == current) { - match = "\u0143"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1562: - switch (current) { - case 'a': - state = 1563; - return true; - case 'e': - state = 1567; - return true; - case 'y': - state = 1571; - return true; - } - break; - case 1563: - if ('r' == current) { - state = 1564; - return true; - } - break; - case 1564: - if ('o' == current) { - state = 1565; - return true; - } - break; - case 1565: - if ('n' == current) { - state = 1566; - return true; - } - break; - case 1566: - // Ncaron; - if (';' == current) { - match = "\u0147"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1567: - if ('d' == current) { - state = 1568; - return true; - } - break; - case 1568: - if ('i' == current) { - state = 1569; - return true; - } - break; - case 1569: - if ('l' == current) { - state = 1570; - return true; - } - break; - case 1570: - // Ncedil; - if (';' == current) { - match = "\u0145"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1571: - // Ncy; - if (';' == current) { - match = "\u041D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1572: - switch (current) { - case 'g': - state = 1573; - return true; - case 's': - state = 1619; - return true; - case 'w': - state = 1645; - return true; - } - break; - case 1573: - if ('a' == current) { - state = 1574; - return true; - } - break; - case 1574: - if ('t' == current) { - state = 1575; - return true; - } - break; - case 1575: - if ('i' == current) { - state = 1576; - return true; - } - break; - case 1576: - if ('v' == current) { - state = 1577; - return true; - } - break; - case 1577: - if ('e' == current) { - state = 1578; - return true; - } - break; - case 1578: - switch (current) { - case 'M': - state = 1579; - return true; - case 'T': - state = 1590; - return true; - case 'V': - state = 1606; - return true; - } - break; - case 1579: - if ('e' == current) { - state = 1580; - return true; - } - break; - case 1580: - if ('d' == current) { - state = 1581; - return true; - } - break; - case 1581: - if ('i' == current) { - state = 1582; - return true; - } - break; - case 1582: - if ('u' == current) { - state = 1583; - return true; - } - break; - case 1583: - if ('m' == current) { - state = 1584; - return true; - } - break; - case 1584: - if ('S' == current) { - state = 1585; - return true; - } - break; - case 1585: - if ('p' == current) { - state = 1586; - return true; - } - break; - case 1586: - if ('a' == current) { - state = 1587; - return true; - } - break; - case 1587: - if ('c' == current) { - state = 1588; - return true; - } - break; - case 1588: - if ('e' == current) { - state = 1589; - return true; - } - break; - case 1589: - // NegativeMediumSpace; - if (';' == current) { - match = "\u200B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1590: - if ('h' == current) { - state = 1591; - return true; - } - break; - case 1591: - if ('i' == current) { - state = 1592; - return true; - } - break; - case 1592: - if ('c' == current) { - state = 1593; - return true; - } - else if ('n' == current) { - state = 1600; - return true; - } - break; - case 1593: - if ('k' == current) { - state = 1594; - return true; - } - break; - case 1594: - if ('S' == current) { - state = 1595; - return true; - } - break; - case 1595: - if ('p' == current) { - state = 1596; - return true; - } - break; - case 1596: - if ('a' == current) { - state = 1597; - return true; - } - break; - case 1597: - if ('c' == current) { - state = 1598; - return true; - } - break; - case 1598: - if ('e' == current) { - state = 1599; - return true; - } - break; - case 1599: - // NegativeThickSpace; - if (';' == current) { - match = "\u200B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1600: - if ('S' == current) { - state = 1601; - return true; - } - break; - case 1601: - if ('p' == current) { - state = 1602; - return true; - } - break; - case 1602: - if ('a' == current) { - state = 1603; - return true; - } - break; - case 1603: - if ('c' == current) { - state = 1604; - return true; - } - break; - case 1604: - if ('e' == current) { - state = 1605; - return true; - } - break; - case 1605: - // NegativeThinSpace; - if (';' == current) { - match = "\u200B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1606: - if ('e' == current) { - state = 1607; - return true; - } - break; - case 1607: - if ('r' == current) { - state = 1608; - return true; - } - break; - case 1608: - if ('y' == current) { - state = 1609; - return true; - } - break; - case 1609: - if ('T' == current) { - state = 1610; - return true; - } - break; - case 1610: - if ('h' == current) { - state = 1611; - return true; - } - break; - case 1611: - if ('i' == current) { - state = 1612; - return true; - } - break; - case 1612: - if ('n' == current) { - state = 1613; - return true; - } - break; - case 1613: - if ('S' == current) { - state = 1614; - return true; - } - break; - case 1614: - if ('p' == current) { - state = 1615; - return true; - } - break; - case 1615: - if ('a' == current) { - state = 1616; - return true; - } - break; - case 1616: - if ('c' == current) { - state = 1617; - return true; - } - break; - case 1617: - if ('e' == current) { - state = 1618; - return true; - } - break; - case 1618: - // NegativeVeryThinSpace; - if (';' == current) { - match = "\u200B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1619: - if ('t' == current) { - state = 1620; - return true; - } - break; - case 1620: - if ('e' == current) { - state = 1621; - return true; - } - break; - case 1621: - if ('d' == current) { - state = 1622; - return true; - } - break; - case 1622: - if ('G' == current) { - state = 1623; - return true; - } - else if ('L' == current) { - state = 1637; - return true; - } - break; - case 1623: - if ('r' == current) { - state = 1624; - return true; - } - break; - case 1624: - if ('e' == current) { - state = 1625; - return true; - } - break; - case 1625: - if ('a' == current) { - state = 1626; - return true; - } - break; - case 1626: - if ('t' == current) { - state = 1627; - return true; - } - break; - case 1627: - if ('e' == current) { - state = 1628; - return true; - } - break; - case 1628: - if ('r' == current) { - state = 1629; - return true; - } - break; - case 1629: - if ('G' == current) { - state = 1630; - return true; - } - break; - case 1630: - if ('r' == current) { - state = 1631; - return true; - } - break; - case 1631: - if ('e' == current) { - state = 1632; - return true; - } - break; - case 1632: - if ('a' == current) { - state = 1633; - return true; - } - break; - case 1633: - if ('t' == current) { - state = 1634; - return true; - } - break; - case 1634: - if ('e' == current) { - state = 1635; - return true; - } - break; - case 1635: - if ('r' == current) { - state = 1636; - return true; - } - break; - case 1636: - // NestedGreaterGreater; - if (';' == current) { - match = "\u226B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1637: - if ('e' == current) { - state = 1638; - return true; - } - break; - case 1638: - if ('s' == current) { - state = 1639; - return true; - } - break; - case 1639: - if ('s' == current) { - state = 1640; - return true; - } - break; - case 1640: - if ('L' == current) { - state = 1641; - return true; - } - break; - case 1641: - if ('e' == current) { - state = 1642; - return true; - } - break; - case 1642: - if ('s' == current) { - state = 1643; - return true; - } - break; - case 1643: - if ('s' == current) { - state = 1644; - return true; - } - break; - case 1644: - // NestedLessLess; - if (';' == current) { - match = "\u226A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1645: - if ('L' == current) { - state = 1646; - return true; - } - break; - case 1646: - if ('i' == current) { - state = 1647; - return true; - } - break; - case 1647: - if ('n' == current) { - state = 1648; - return true; - } - break; - case 1648: - if ('e' == current) { - state = 1649; - return true; - } - break; - case 1649: - // NewLine; - if (';' == current) { - match = "\n"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1650: - if ('r' == current) { - state = 1651; - return true; - } - break; - case 1651: - // Nfr; - if (';' == current) { - match = "\uD835\uDD11"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1652: - switch (current) { - case 'B': - state = 1653; - return true; - case 'n': - state = 1658; - return true; - case 'p': - state = 1672; - return true; - case 't': - state = 1674; - return true; - } - break; - case 1653: - if ('r' == current) { - state = 1654; - return true; - } - break; - case 1654: - if ('e' == current) { - state = 1655; - return true; - } - break; - case 1655: - if ('a' == current) { - state = 1656; - return true; - } - break; - case 1656: - if ('k' == current) { - state = 1657; - return true; - } - break; - case 1657: - // NoBreak; - if (';' == current) { - match = "\u2060"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1658: - if ('B' == current) { - state = 1659; - return true; - } - break; - case 1659: - if ('r' == current) { - state = 1660; - return true; - } - break; - case 1660: - if ('e' == current) { - state = 1661; - return true; - } - break; - case 1661: - if ('a' == current) { - state = 1662; - return true; - } - break; - case 1662: - if ('k' == current) { - state = 1663; - return true; - } - break; - case 1663: - if ('i' == current) { - state = 1664; - return true; - } - break; - case 1664: - if ('n' == current) { - state = 1665; - return true; - } - break; - case 1665: - if ('g' == current) { - state = 1666; - return true; - } - break; - case 1666: - if ('S' == current) { - state = 1667; - return true; - } - break; - case 1667: - if ('p' == current) { - state = 1668; - return true; - } - break; - case 1668: - if ('a' == current) { - state = 1669; - return true; - } - break; - case 1669: - if ('c' == current) { - state = 1670; - return true; - } - break; - case 1670: - if ('e' == current) { - state = 1671; - return true; - } - break; - case 1671: - // NonBreakingSpace; - if (';' == current) { - match = "\u00A0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1672: - if ('f' == current) { - state = 1673; - return true; - } - break; - case 1673: - // Nopf; - if (';' == current) { - match = "\u2115"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1674: - switch (current) { - case ';': // Not; - match = "\u2AEC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'C': - state = 1675; - return true; - case 'D': - state = 1689; - return true; - case 'E': - state = 1706; - return true; - case 'G': - state = 1727; - return true; - case 'H': - state = 1774; - return true; - case 'L': - state = 1791; - return true; - case 'N': - state = 1844; - return true; - case 'P': - state = 1872; - return true; - case 'R': - state = 1895; - return true; - case 'S': - state = 1929; - return true; - case 'T': - state = 2004; - return true; - case 'V': - state = 2028; - return true; - } - break; - case 1675: - if ('o' == current) { - state = 1676; - return true; - } - else if ('u' == current) { - state = 1684; - return true; - } - break; - case 1676: - if ('n' == current) { - state = 1677; - return true; - } - break; - case 1677: - if ('g' == current) { - state = 1678; - return true; - } - break; - case 1678: - if ('r' == current) { - state = 1679; - return true; - } - break; - case 1679: - if ('u' == current) { - state = 1680; - return true; - } - break; - case 1680: - if ('e' == current) { - state = 1681; - return true; - } - break; - case 1681: - if ('n' == current) { - state = 1682; - return true; - } - break; - case 1682: - if ('t' == current) { - state = 1683; - return true; - } - break; - case 1683: - // NotCongruent; - if (';' == current) { - match = "\u2262"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1684: - if ('p' == current) { - state = 1685; - return true; - } - break; - case 1685: - if ('C' == current) { - state = 1686; - return true; - } - break; - case 1686: - if ('a' == current) { - state = 1687; - return true; - } - break; - case 1687: - if ('p' == current) { - state = 1688; - return true; - } - break; - case 1688: - // NotCupCap; - if (';' == current) { - match = "\u226D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1689: - if ('o' == current) { - state = 1690; - return true; - } - break; - case 1690: - if ('u' == current) { - state = 1691; - return true; - } - break; - case 1691: - if ('b' == current) { - state = 1692; - return true; - } - break; - case 1692: - if ('l' == current) { - state = 1693; - return true; - } - break; - case 1693: - if ('e' == current) { - state = 1694; - return true; - } - break; - case 1694: - if ('V' == current) { - state = 1695; - return true; - } - break; - case 1695: - if ('e' == current) { - state = 1696; - return true; - } - break; - case 1696: - if ('r' == current) { - state = 1697; - return true; - } - break; - case 1697: - if ('t' == current) { - state = 1698; - return true; - } - break; - case 1698: - if ('i' == current) { - state = 1699; - return true; - } - break; - case 1699: - if ('c' == current) { - state = 1700; - return true; - } - break; - case 1700: - if ('a' == current) { - state = 1701; - return true; - } - break; - case 1701: - if ('l' == current) { - state = 1702; - return true; - } - break; - case 1702: - if ('B' == current) { - state = 1703; - return true; - } - break; - case 1703: - if ('a' == current) { - state = 1704; - return true; - } - break; - case 1704: - if ('r' == current) { - state = 1705; - return true; - } - break; - case 1705: - // NotDoubleVerticalBar; - if (';' == current) { - match = "\u2226"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1706: - switch (current) { - case 'l': - state = 1707; - return true; - case 'q': - state = 1713; - return true; - case 'x': - state = 1722; - return true; - } - break; - case 1707: - if ('e' == current) { - state = 1708; - return true; - } - break; - case 1708: - if ('m' == current) { - state = 1709; - return true; - } - break; - case 1709: - if ('e' == current) { - state = 1710; - return true; - } - break; - case 1710: - if ('n' == current) { - state = 1711; - return true; - } - break; - case 1711: - if ('t' == current) { - state = 1712; - return true; - } - break; - case 1712: - // NotElement; - if (';' == current) { - match = "\u2209"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1713: - if ('u' == current) { - state = 1714; - return true; - } - break; - case 1714: - if ('a' == current) { - state = 1715; - return true; - } - break; - case 1715: - if ('l' == current) { - state = 1716; - return true; - } - break; - case 1716: - // NotEqual; - if (';' == current) { - match = "\u2260"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('T' == current) { - state = 1717; - return true; - } - break; - case 1717: - if ('i' == current) { - state = 1718; - return true; - } - break; - case 1718: - if ('l' == current) { - state = 1719; - return true; - } - break; - case 1719: - if ('d' == current) { - state = 1720; - return true; - } - break; - case 1720: - if ('e' == current) { - state = 1721; - return true; - } - break; - case 1721: - // NotEqualTilde; - if (';' == current) { - match = "\u2242\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1722: - if ('i' == current) { - state = 1723; - return true; - } - break; - case 1723: - if ('s' == current) { - state = 1724; - return true; - } - break; - case 1724: - if ('t' == current) { - state = 1725; - return true; - } - break; - case 1725: - if ('s' == current) { - state = 1726; - return true; - } - break; - case 1726: - // NotExists; - if (';' == current) { - match = "\u2204"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1727: - if ('r' == current) { - state = 1728; - return true; - } - break; - case 1728: - if ('e' == current) { - state = 1729; - return true; - } - break; - case 1729: - if ('a' == current) { - state = 1730; - return true; - } - break; - case 1730: - if ('t' == current) { - state = 1731; - return true; - } - break; - case 1731: - if ('e' == current) { - state = 1732; - return true; - } - break; - case 1732: - if ('r' == current) { - state = 1733; - return true; - } - break; - case 1733: - switch (current) { - case ';': // NotGreater; - match = "\u226F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 1734; - return true; - case 'F': - state = 1739; - return true; - case 'G': - state = 1748; - return true; - case 'L': - state = 1755; - return true; - case 'S': - state = 1759; - return true; - case 'T': - state = 1769; - return true; - } - break; - case 1734: - if ('q' == current) { - state = 1735; - return true; - } - break; - case 1735: - if ('u' == current) { - state = 1736; - return true; - } - break; - case 1736: - if ('a' == current) { - state = 1737; - return true; - } - break; - case 1737: - if ('l' == current) { - state = 1738; - return true; - } - break; - case 1738: - // NotGreaterEqual; - if (';' == current) { - match = "\u2271"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1739: - if ('u' == current) { - state = 1740; - return true; - } - break; - case 1740: - if ('l' == current) { - state = 1741; - return true; - } - break; - case 1741: - if ('l' == current) { - state = 1742; - return true; - } - break; - case 1742: - if ('E' == current) { - state = 1743; - return true; - } - break; - case 1743: - if ('q' == current) { - state = 1744; - return true; - } - break; - case 1744: - if ('u' == current) { - state = 1745; - return true; - } - break; - case 1745: - if ('a' == current) { - state = 1746; - return true; - } - break; - case 1746: - if ('l' == current) { - state = 1747; - return true; - } - break; - case 1747: - // NotGreaterFullEqual; - if (';' == current) { - match = "\u2267\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1748: - if ('r' == current) { - state = 1749; - return true; - } - break; - case 1749: - if ('e' == current) { - state = 1750; - return true; - } - break; - case 1750: - if ('a' == current) { - state = 1751; - return true; - } - break; - case 1751: - if ('t' == current) { - state = 1752; - return true; - } - break; - case 1752: - if ('e' == current) { - state = 1753; - return true; - } - break; - case 1753: - if ('r' == current) { - state = 1754; - return true; - } - break; - case 1754: - // NotGreaterGreater; - if (';' == current) { - match = "\u226B\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1755: - if ('e' == current) { - state = 1756; - return true; - } - break; - case 1756: - if ('s' == current) { - state = 1757; - return true; - } - break; - case 1757: - if ('s' == current) { - state = 1758; - return true; - } - break; - case 1758: - // NotGreaterLess; - if (';' == current) { - match = "\u2279"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1759: - if ('l' == current) { - state = 1760; - return true; - } - break; - case 1760: - if ('a' == current) { - state = 1761; - return true; - } - break; - case 1761: - if ('n' == current) { - state = 1762; - return true; - } - break; - case 1762: - if ('t' == current) { - state = 1763; - return true; - } - break; - case 1763: - if ('E' == current) { - state = 1764; - return true; - } - break; - case 1764: - if ('q' == current) { - state = 1765; - return true; - } - break; - case 1765: - if ('u' == current) { - state = 1766; - return true; - } - break; - case 1766: - if ('a' == current) { - state = 1767; - return true; - } - break; - case 1767: - if ('l' == current) { - state = 1768; - return true; - } - break; - case 1768: - // NotGreaterSlantEqual; - if (';' == current) { - match = "\u2A7E\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1769: - if ('i' == current) { - state = 1770; - return true; - } - break; - case 1770: - if ('l' == current) { - state = 1771; - return true; - } - break; - case 1771: - if ('d' == current) { - state = 1772; - return true; - } - break; - case 1772: - if ('e' == current) { - state = 1773; - return true; - } - break; - case 1773: - // NotGreaterTilde; - if (';' == current) { - match = "\u2275"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1774: - if ('u' == current) { - state = 1775; - return true; - } - break; - case 1775: - if ('m' == current) { - state = 1776; - return true; - } - break; - case 1776: - if ('p' == current) { - state = 1777; - return true; - } - break; - case 1777: - if ('D' == current) { - state = 1778; - return true; - } - else if ('E' == current) { - state = 1786; - return true; - } - break; - case 1778: - if ('o' == current) { - state = 1779; - return true; - } - break; - case 1779: - if ('w' == current) { - state = 1780; - return true; - } - break; - case 1780: - if ('n' == current) { - state = 1781; - return true; - } - break; - case 1781: - if ('H' == current) { - state = 1782; - return true; - } - break; - case 1782: - if ('u' == current) { - state = 1783; - return true; - } - break; - case 1783: - if ('m' == current) { - state = 1784; - return true; - } - break; - case 1784: - if ('p' == current) { - state = 1785; - return true; - } - break; - case 1785: - // NotHumpDownHump; - if (';' == current) { - match = "\u224E\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1786: - if ('q' == current) { - state = 1787; - return true; - } - break; - case 1787: - if ('u' == current) { - state = 1788; - return true; - } - break; - case 1788: - if ('a' == current) { - state = 1789; - return true; - } - break; - case 1789: - if ('l' == current) { - state = 1790; - return true; - } - break; - case 1790: - // NotHumpEqual; - if (';' == current) { - match = "\u224F\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1791: - if ('e' == current) { - state = 1792; - return true; - } - break; - case 1792: - if ('f' == current) { - state = 1793; - return true; - } - else if ('s' == current) { - state = 1811; - return true; - } - break; - case 1793: - if ('t' == current) { - state = 1794; - return true; - } - break; - case 1794: - if ('T' == current) { - state = 1795; - return true; - } - break; - case 1795: - if ('r' == current) { - state = 1796; - return true; - } - break; - case 1796: - if ('i' == current) { - state = 1797; - return true; - } - break; - case 1797: - if ('a' == current) { - state = 1798; - return true; - } - break; - case 1798: - if ('n' == current) { - state = 1799; - return true; - } - break; - case 1799: - if ('g' == current) { - state = 1800; - return true; - } - break; - case 1800: - if ('l' == current) { - state = 1801; - return true; - } - break; - case 1801: - if ('e' == current) { - state = 1802; - return true; - } - break; - case 1802: - switch (current) { - case ';': // NotLeftTriangle; - match = "\u22EA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'B': - state = 1803; - return true; - case 'E': - state = 1806; - return true; - } - break; - case 1803: - if ('a' == current) { - state = 1804; - return true; - } - break; - case 1804: - if ('r' == current) { - state = 1805; - return true; - } - break; - case 1805: - // NotLeftTriangleBar; - if (';' == current) { - match = "\u29CF\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1806: - if ('q' == current) { - state = 1807; - return true; - } - break; - case 1807: - if ('u' == current) { - state = 1808; - return true; - } - break; - case 1808: - if ('a' == current) { - state = 1809; - return true; - } - break; - case 1809: - if ('l' == current) { - state = 1810; - return true; - } - break; - case 1810: - // NotLeftTriangleEqual; - if (';' == current) { - match = "\u22EC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1811: - if ('s' == current) { - state = 1812; - return true; - } - break; - case 1812: - switch (current) { - case ';': // NotLess; - match = "\u226E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 1813; - return true; - case 'G': - state = 1818; - return true; - case 'L': - state = 1825; - return true; - case 'S': - state = 1829; - return true; - case 'T': - state = 1839; - return true; - } - break; - case 1813: - if ('q' == current) { - state = 1814; - return true; - } - break; - case 1814: - if ('u' == current) { - state = 1815; - return true; - } - break; - case 1815: - if ('a' == current) { - state = 1816; - return true; - } - break; - case 1816: - if ('l' == current) { - state = 1817; - return true; - } - break; - case 1817: - // NotLessEqual; - if (';' == current) { - match = "\u2270"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1818: - if ('r' == current) { - state = 1819; - return true; - } - break; - case 1819: - if ('e' == current) { - state = 1820; - return true; - } - break; - case 1820: - if ('a' == current) { - state = 1821; - return true; - } - break; - case 1821: - if ('t' == current) { - state = 1822; - return true; - } - break; - case 1822: - if ('e' == current) { - state = 1823; - return true; - } - break; - case 1823: - if ('r' == current) { - state = 1824; - return true; - } - break; - case 1824: - // NotLessGreater; - if (';' == current) { - match = "\u2278"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1825: - if ('e' == current) { - state = 1826; - return true; - } - break; - case 1826: - if ('s' == current) { - state = 1827; - return true; - } - break; - case 1827: - if ('s' == current) { - state = 1828; - return true; - } - break; - case 1828: - // NotLessLess; - if (';' == current) { - match = "\u226A\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1829: - if ('l' == current) { - state = 1830; - return true; - } - break; - case 1830: - if ('a' == current) { - state = 1831; - return true; - } - break; - case 1831: - if ('n' == current) { - state = 1832; - return true; - } - break; - case 1832: - if ('t' == current) { - state = 1833; - return true; - } - break; - case 1833: - if ('E' == current) { - state = 1834; - return true; - } - break; - case 1834: - if ('q' == current) { - state = 1835; - return true; - } - break; - case 1835: - if ('u' == current) { - state = 1836; - return true; - } - break; - case 1836: - if ('a' == current) { - state = 1837; - return true; - } - break; - case 1837: - if ('l' == current) { - state = 1838; - return true; - } - break; - case 1838: - // NotLessSlantEqual; - if (';' == current) { - match = "\u2A7D\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1839: - if ('i' == current) { - state = 1840; - return true; - } - break; - case 1840: - if ('l' == current) { - state = 1841; - return true; - } - break; - case 1841: - if ('d' == current) { - state = 1842; - return true; - } - break; - case 1842: - if ('e' == current) { - state = 1843; - return true; - } - break; - case 1843: - // NotLessTilde; - if (';' == current) { - match = "\u2274"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1844: - if ('e' == current) { - state = 1845; - return true; - } - break; - case 1845: - if ('s' == current) { - state = 1846; - return true; - } - break; - case 1846: - if ('t' == current) { - state = 1847; - return true; - } - break; - case 1847: - if ('e' == current) { - state = 1848; - return true; - } - break; - case 1848: - if ('d' == current) { - state = 1849; - return true; - } - break; - case 1849: - if ('G' == current) { - state = 1850; - return true; - } - else if ('L' == current) { - state = 1864; - return true; - } - break; - case 1850: - if ('r' == current) { - state = 1851; - return true; - } - break; - case 1851: - if ('e' == current) { - state = 1852; - return true; - } - break; - case 1852: - if ('a' == current) { - state = 1853; - return true; - } - break; - case 1853: - if ('t' == current) { - state = 1854; - return true; - } - break; - case 1854: - if ('e' == current) { - state = 1855; - return true; - } - break; - case 1855: - if ('r' == current) { - state = 1856; - return true; - } - break; - case 1856: - if ('G' == current) { - state = 1857; - return true; - } - break; - case 1857: - if ('r' == current) { - state = 1858; - return true; - } - break; - case 1858: - if ('e' == current) { - state = 1859; - return true; - } - break; - case 1859: - if ('a' == current) { - state = 1860; - return true; - } - break; - case 1860: - if ('t' == current) { - state = 1861; - return true; - } - break; - case 1861: - if ('e' == current) { - state = 1862; - return true; - } - break; - case 1862: - if ('r' == current) { - state = 1863; - return true; - } - break; - case 1863: - // NotNestedGreaterGreater; - if (';' == current) { - match = "\u2AA2\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1864: - if ('e' == current) { - state = 1865; - return true; - } - break; - case 1865: - if ('s' == current) { - state = 1866; - return true; - } - break; - case 1866: - if ('s' == current) { - state = 1867; - return true; - } - break; - case 1867: - if ('L' == current) { - state = 1868; - return true; - } - break; - case 1868: - if ('e' == current) { - state = 1869; - return true; - } - break; - case 1869: - if ('s' == current) { - state = 1870; - return true; - } - break; - case 1870: - if ('s' == current) { - state = 1871; - return true; - } - break; - case 1871: - // NotNestedLessLess; - if (';' == current) { - match = "\u2AA1\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1872: - if ('r' == current) { - state = 1873; - return true; - } - break; - case 1873: - if ('e' == current) { - state = 1874; - return true; - } - break; - case 1874: - if ('c' == current) { - state = 1875; - return true; - } - break; - case 1875: - if ('e' == current) { - state = 1876; - return true; - } - break; - case 1876: - if ('d' == current) { - state = 1877; - return true; - } - break; - case 1877: - if ('e' == current) { - state = 1878; - return true; - } - break; - case 1878: - if ('s' == current) { - state = 1879; - return true; - } - break; - case 1879: - switch (current) { - case ';': // NotPrecedes; - match = "\u2280"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 1880; - return true; - case 'S': - state = 1885; - return true; - } - break; - case 1880: - if ('q' == current) { - state = 1881; - return true; - } - break; - case 1881: - if ('u' == current) { - state = 1882; - return true; - } - break; - case 1882: - if ('a' == current) { - state = 1883; - return true; - } - break; - case 1883: - if ('l' == current) { - state = 1884; - return true; - } - break; - case 1884: - // NotPrecedesEqual; - if (';' == current) { - match = "\u2AAF\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1885: - if ('l' == current) { - state = 1886; - return true; - } - break; - case 1886: - if ('a' == current) { - state = 1887; - return true; - } - break; - case 1887: - if ('n' == current) { - state = 1888; - return true; - } - break; - case 1888: - if ('t' == current) { - state = 1889; - return true; - } - break; - case 1889: - if ('E' == current) { - state = 1890; - return true; - } - break; - case 1890: - if ('q' == current) { - state = 1891; - return true; - } - break; - case 1891: - if ('u' == current) { - state = 1892; - return true; - } - break; - case 1892: - if ('a' == current) { - state = 1893; - return true; - } - break; - case 1893: - if ('l' == current) { - state = 1894; - return true; - } - break; - case 1894: - // NotPrecedesSlantEqual; - if (';' == current) { - match = "\u22E0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1895: - if ('e' == current) { - state = 1896; - return true; - } - else if ('i' == current) { - state = 1909; - return true; - } - break; - case 1896: - if ('v' == current) { - state = 1897; - return true; - } - break; - case 1897: - if ('e' == current) { - state = 1898; - return true; - } - break; - case 1898: - if ('r' == current) { - state = 1899; - return true; - } - break; - case 1899: - if ('s' == current) { - state = 1900; - return true; - } - break; - case 1900: - if ('e' == current) { - state = 1901; - return true; - } - break; - case 1901: - if ('E' == current) { - state = 1902; - return true; - } - break; - case 1902: - if ('l' == current) { - state = 1903; - return true; - } - break; - case 1903: - if ('e' == current) { - state = 1904; - return true; - } - break; - case 1904: - if ('m' == current) { - state = 1905; - return true; - } - break; - case 1905: - if ('e' == current) { - state = 1906; - return true; - } - break; - case 1906: - if ('n' == current) { - state = 1907; - return true; - } - break; - case 1907: - if ('t' == current) { - state = 1908; - return true; - } - break; - case 1908: - // NotReverseElement; - if (';' == current) { - match = "\u220C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1909: - if ('g' == current) { - state = 1910; - return true; - } - break; - case 1910: - if ('h' == current) { - state = 1911; - return true; - } - break; - case 1911: - if ('t' == current) { - state = 1912; - return true; - } - break; - case 1912: - if ('T' == current) { - state = 1913; - return true; - } - break; - case 1913: - if ('r' == current) { - state = 1914; - return true; - } - break; - case 1914: - if ('i' == current) { - state = 1915; - return true; - } - break; - case 1915: - if ('a' == current) { - state = 1916; - return true; - } - break; - case 1916: - if ('n' == current) { - state = 1917; - return true; - } - break; - case 1917: - if ('g' == current) { - state = 1918; - return true; - } - break; - case 1918: - if ('l' == current) { - state = 1919; - return true; - } - break; - case 1919: - if ('e' == current) { - state = 1920; - return true; - } - break; - case 1920: - switch (current) { - case ';': // NotRightTriangle; - match = "\u22EB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'B': - state = 1921; - return true; - case 'E': - state = 1924; - return true; - } - break; - case 1921: - if ('a' == current) { - state = 1922; - return true; - } - break; - case 1922: - if ('r' == current) { - state = 1923; - return true; - } - break; - case 1923: - // NotRightTriangleBar; - if (';' == current) { - match = "\u29D0\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1924: - if ('q' == current) { - state = 1925; - return true; - } - break; - case 1925: - if ('u' == current) { - state = 1926; - return true; - } - break; - case 1926: - if ('a' == current) { - state = 1927; - return true; - } - break; - case 1927: - if ('l' == current) { - state = 1928; - return true; - } - break; - case 1928: - // NotRightTriangleEqual; - if (';' == current) { - match = "\u22ED"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1929: - if ('q' == current) { - state = 1930; - return true; - } - else if ('u' == current) { - state = 1957; - return true; - } - break; - case 1930: - if ('u' == current) { - state = 1931; - return true; - } - break; - case 1931: - if ('a' == current) { - state = 1932; - return true; - } - break; - case 1932: - if ('r' == current) { - state = 1933; - return true; - } - break; - case 1933: - if ('e' == current) { - state = 1934; - return true; - } - break; - case 1934: - if ('S' == current) { - state = 1935; - return true; - } - break; - case 1935: - if ('u' == current) { - state = 1936; - return true; - } - break; - case 1936: - if ('b' == current) { - state = 1937; - return true; - } - else if ('p' == current) { - state = 1946; - return true; - } - break; - case 1937: - if ('s' == current) { - state = 1938; - return true; - } - break; - case 1938: - if ('e' == current) { - state = 1939; - return true; - } - break; - case 1939: - if ('t' == current) { - state = 1940; - return true; - } - break; - case 1940: - // NotSquareSubset; - if (';' == current) { - match = "\u228F\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('E' == current) { - state = 1941; - return true; - } - break; - case 1941: - if ('q' == current) { - state = 1942; - return true; - } - break; - case 1942: - if ('u' == current) { - state = 1943; - return true; - } - break; - case 1943: - if ('a' == current) { - state = 1944; - return true; - } - break; - case 1944: - if ('l' == current) { - state = 1945; - return true; - } - break; - case 1945: - // NotSquareSubsetEqual; - if (';' == current) { - match = "\u22E2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1946: - if ('e' == current) { - state = 1947; - return true; - } - break; - case 1947: - if ('r' == current) { - state = 1948; - return true; - } - break; - case 1948: - if ('s' == current) { - state = 1949; - return true; - } - break; - case 1949: - if ('e' == current) { - state = 1950; - return true; - } - break; - case 1950: - if ('t' == current) { - state = 1951; - return true; - } - break; - case 1951: - // NotSquareSuperset; - if (';' == current) { - match = "\u2290\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('E' == current) { - state = 1952; - return true; - } - break; - case 1952: - if ('q' == current) { - state = 1953; - return true; - } - break; - case 1953: - if ('u' == current) { - state = 1954; - return true; - } - break; - case 1954: - if ('a' == current) { - state = 1955; - return true; - } - break; - case 1955: - if ('l' == current) { - state = 1956; - return true; - } - break; - case 1956: - // NotSquareSupersetEqual; - if (';' == current) { - match = "\u22E3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1957: - switch (current) { - case 'b': - state = 1958; - return true; - case 'c': - state = 1967; - return true; - case 'p': - state = 1993; - return true; - } - break; - case 1958: - if ('s' == current) { - state = 1959; - return true; - } - break; - case 1959: - if ('e' == current) { - state = 1960; - return true; - } - break; - case 1960: - if ('t' == current) { - state = 1961; - return true; - } - break; - case 1961: - // NotSubset; - if (';' == current) { - match = "\u2282\u20D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('E' == current) { - state = 1962; - return true; - } - break; - case 1962: - if ('q' == current) { - state = 1963; - return true; - } - break; - case 1963: - if ('u' == current) { - state = 1964; - return true; - } - break; - case 1964: - if ('a' == current) { - state = 1965; - return true; - } - break; - case 1965: - if ('l' == current) { - state = 1966; - return true; - } - break; - case 1966: - // NotSubsetEqual; - if (';' == current) { - match = "\u2288"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1967: - if ('c' == current) { - state = 1968; - return true; - } - break; - case 1968: - if ('e' == current) { - state = 1969; - return true; - } - break; - case 1969: - if ('e' == current) { - state = 1970; - return true; - } - break; - case 1970: - if ('d' == current) { - state = 1971; - return true; - } - break; - case 1971: - if ('s' == current) { - state = 1972; - return true; - } - break; - case 1972: - switch (current) { - case ';': // NotSucceeds; - match = "\u2281"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 1973; - return true; - case 'S': - state = 1978; - return true; - case 'T': - state = 1988; - return true; - } - break; - case 1973: - if ('q' == current) { - state = 1974; - return true; - } - break; - case 1974: - if ('u' == current) { - state = 1975; - return true; - } - break; - case 1975: - if ('a' == current) { - state = 1976; - return true; - } - break; - case 1976: - if ('l' == current) { - state = 1977; - return true; - } - break; - case 1977: - // NotSucceedsEqual; - if (';' == current) { - match = "\u2AB0\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1978: - if ('l' == current) { - state = 1979; - return true; - } - break; - case 1979: - if ('a' == current) { - state = 1980; - return true; - } - break; - case 1980: - if ('n' == current) { - state = 1981; - return true; - } - break; - case 1981: - if ('t' == current) { - state = 1982; - return true; - } - break; - case 1982: - if ('E' == current) { - state = 1983; - return true; - } - break; - case 1983: - if ('q' == current) { - state = 1984; - return true; - } - break; - case 1984: - if ('u' == current) { - state = 1985; - return true; - } - break; - case 1985: - if ('a' == current) { - state = 1986; - return true; - } - break; - case 1986: - if ('l' == current) { - state = 1987; - return true; - } - break; - case 1987: - // NotSucceedsSlantEqual; - if (';' == current) { - match = "\u22E1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1988: - if ('i' == current) { - state = 1989; - return true; - } - break; - case 1989: - if ('l' == current) { - state = 1990; - return true; - } - break; - case 1990: - if ('d' == current) { - state = 1991; - return true; - } - break; - case 1991: - if ('e' == current) { - state = 1992; - return true; - } - break; - case 1992: - // NotSucceedsTilde; - if (';' == current) { - match = "\u227F\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 1993: - if ('e' == current) { - state = 1994; - return true; - } - break; - case 1994: - if ('r' == current) { - state = 1995; - return true; - } - break; - case 1995: - if ('s' == current) { - state = 1996; - return true; - } - break; - case 1996: - if ('e' == current) { - state = 1997; - return true; - } - break; - case 1997: - if ('t' == current) { - state = 1998; - return true; - } - break; - case 1998: - // NotSuperset; - if (';' == current) { - match = "\u2283\u20D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('E' == current) { - state = 1999; - return true; - } - break; - case 1999: - if ('q' == current) { - state = 2000; - return true; - } - break; - } - return false; - } - - private boolean parse3(final int current) { - consumedCount++; - switch (state) { - case 2000: - if ('u' == current) { - state = 2001; - return true; - } - break; - case 2001: - if ('a' == current) { - state = 2002; - return true; - } - break; - case 2002: - if ('l' == current) { - state = 2003; - return true; - } - break; - case 2003: - // NotSupersetEqual; - if (';' == current) { - match = "\u2289"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2004: - if ('i' == current) { - state = 2005; - return true; - } - break; - case 2005: - if ('l' == current) { - state = 2006; - return true; - } - break; - case 2006: - if ('d' == current) { - state = 2007; - return true; - } - break; - case 2007: - if ('e' == current) { - state = 2008; - return true; - } - break; - case 2008: - switch (current) { - case ';': // NotTilde; - match = "\u2241"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 2009; - return true; - case 'F': - state = 2014; - return true; - case 'T': - state = 2023; - return true; - } - break; - case 2009: - if ('q' == current) { - state = 2010; - return true; - } - break; - case 2010: - if ('u' == current) { - state = 2011; - return true; - } - break; - case 2011: - if ('a' == current) { - state = 2012; - return true; - } - break; - case 2012: - if ('l' == current) { - state = 2013; - return true; - } - break; - case 2013: - // NotTildeEqual; - if (';' == current) { - match = "\u2244"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2014: - if ('u' == current) { - state = 2015; - return true; - } - break; - case 2015: - if ('l' == current) { - state = 2016; - return true; - } - break; - case 2016: - if ('l' == current) { - state = 2017; - return true; - } - break; - case 2017: - if ('E' == current) { - state = 2018; - return true; - } - break; - case 2018: - if ('q' == current) { - state = 2019; - return true; - } - break; - case 2019: - if ('u' == current) { - state = 2020; - return true; - } - break; - case 2020: - if ('a' == current) { - state = 2021; - return true; - } - break; - case 2021: - if ('l' == current) { - state = 2022; - return true; - } - break; - case 2022: - // NotTildeFullEqual; - if (';' == current) { - match = "\u2247"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2023: - if ('i' == current) { - state = 2024; - return true; - } - break; - case 2024: - if ('l' == current) { - state = 2025; - return true; - } - break; - case 2025: - if ('d' == current) { - state = 2026; - return true; - } - break; - case 2026: - if ('e' == current) { - state = 2027; - return true; - } - break; - case 2027: - // NotTildeTilde; - if (';' == current) { - match = "\u2249"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2028: - if ('e' == current) { - state = 2029; - return true; - } - break; - case 2029: - if ('r' == current) { - state = 2030; - return true; - } - break; - case 2030: - if ('t' == current) { - state = 2031; - return true; - } - break; - case 2031: - if ('i' == current) { - state = 2032; - return true; - } - break; - case 2032: - if ('c' == current) { - state = 2033; - return true; - } - break; - case 2033: - if ('a' == current) { - state = 2034; - return true; - } - break; - case 2034: - if ('l' == current) { - state = 2035; - return true; - } - break; - case 2035: - if ('B' == current) { - state = 2036; - return true; - } - break; - case 2036: - if ('a' == current) { - state = 2037; - return true; - } - break; - case 2037: - if ('r' == current) { - state = 2038; - return true; - } - break; - case 2038: - // NotVerticalBar; - if (';' == current) { - match = "\u2224"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2039: - if ('c' == current) { - state = 2040; - return true; - } - break; - case 2040: - if ('r' == current) { - state = 2041; - return true; - } - break; - case 2041: - // Nscr; - if (';' == current) { - match = "\uD835\uDCA9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2042: - if ('i' == current) { - state = 2043; - return true; - } - break; - case 2043: - if ('l' == current) { - state = 2044; - return true; - } - break; - case 2044: - if ('d' == current) { - state = 2045; - return true; - } - break; - case 2045: - // Ntilde - if ('e' == current) { - match = "\u00D1"; - matchLength = consumedCount; - state = 2046; - return true; - } - break; - case 2046: - // Ntilde; - if (';' == current) { - match = "\u00D1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2047: - // Nu; - if (';' == current) { - match = "\u039D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2048: - switch (current) { - case 'E': - state = 2049; - return true; - case 'a': - state = 2053; - return true; - case 'c': - state = 2058; - return true; - case 'd': - state = 2063; - return true; - case 'f': - state = 2068; - return true; - case 'g': - state = 2070; - return true; - case 'm': - state = 2075; - return true; - case 'o': - state = 2087; - return true; - case 'p': - state = 2090; - return true; - case 'r': - state = 2114; - return true; - case 's': - state = 2115; - return true; - case 't': - state = 2122; - return true; - case 'u': - state = 2130; - return true; - case 'v': - state = 2133; - return true; - } - break; - case 2049: - if ('l' == current) { - state = 2050; - return true; - } - break; - case 2050: - if ('i' == current) { - state = 2051; - return true; - } - break; - case 2051: - if ('g' == current) { - state = 2052; - return true; - } - break; - case 2052: - // OElig; - if (';' == current) { - match = "\u0152"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2053: - if ('c' == current) { - state = 2054; - return true; - } - break; - case 2054: - if ('u' == current) { - state = 2055; - return true; - } - break; - case 2055: - if ('t' == current) { - state = 2056; - return true; - } - break; - case 2056: - // Oacute - if ('e' == current) { - match = "\u00D3"; - matchLength = consumedCount; - state = 2057; - return true; - } - break; - case 2057: - // Oacute; - if (';' == current) { - match = "\u00D3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2058: - if ('i' == current) { - state = 2059; - return true; - } - else if ('y' == current) { - state = 2062; - return true; - } - break; - case 2059: - if ('r' == current) { - state = 2060; - return true; - } - break; - case 2060: - // Ocirc - if ('c' == current) { - match = "\u00D4"; - matchLength = consumedCount; - state = 2061; - return true; - } - break; - case 2061: - // Ocirc; - if (';' == current) { - match = "\u00D4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2062: - // Ocy; - if (';' == current) { - match = "\u041E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2063: - if ('b' == current) { - state = 2064; - return true; - } - break; - case 2064: - if ('l' == current) { - state = 2065; - return true; - } - break; - case 2065: - if ('a' == current) { - state = 2066; - return true; - } - break; - case 2066: - if ('c' == current) { - state = 2067; - return true; - } - break; - case 2067: - // Odblac; - if (';' == current) { - match = "\u0150"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2068: - if ('r' == current) { - state = 2069; - return true; - } - break; - case 2069: - // Ofr; - if (';' == current) { - match = "\uD835\uDD12"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2070: - if ('r' == current) { - state = 2071; - return true; - } - break; - case 2071: - if ('a' == current) { - state = 2072; - return true; - } - break; - case 2072: - if ('v' == current) { - state = 2073; - return true; - } - break; - case 2073: - // Ograve - if ('e' == current) { - match = "\u00D2"; - matchLength = consumedCount; - state = 2074; - return true; - } - break; - case 2074: - // Ograve; - if (';' == current) { - match = "\u00D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2075: - switch (current) { - case 'a': - state = 2076; - return true; - case 'e': - state = 2079; - return true; - case 'i': - state = 2082; - return true; - } - break; - case 2076: - if ('c' == current) { - state = 2077; - return true; - } - break; - case 2077: - if ('r' == current) { - state = 2078; - return true; - } - break; - case 2078: - // Omacr; - if (';' == current) { - match = "\u014C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2079: - if ('g' == current) { - state = 2080; - return true; - } - break; - case 2080: - if ('a' == current) { - state = 2081; - return true; - } - break; - case 2081: - // Omega; - if (';' == current) { - match = "\u03A9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2082: - if ('c' == current) { - state = 2083; - return true; - } - break; - case 2083: - if ('r' == current) { - state = 2084; - return true; - } - break; - case 2084: - if ('o' == current) { - state = 2085; - return true; - } - break; - case 2085: - if ('n' == current) { - state = 2086; - return true; - } - break; - case 2086: - // Omicron; - if (';' == current) { - match = "\u039F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2087: - if ('p' == current) { - state = 2088; - return true; - } - break; - case 2088: - if ('f' == current) { - state = 2089; - return true; - } - break; - case 2089: - // Oopf; - if (';' == current) { - match = "\uD835\uDD46"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2090: - if ('e' == current) { - state = 2091; - return true; - } - break; - case 2091: - if ('n' == current) { - state = 2092; - return true; - } - break; - case 2092: - if ('C' == current) { - state = 2093; - return true; - } - break; - case 2093: - if ('u' == current) { - state = 2094; - return true; - } - break; - case 2094: - if ('r' == current) { - state = 2095; - return true; - } - break; - case 2095: - if ('l' == current) { - state = 2096; - return true; - } - break; - case 2096: - if ('y' == current) { - state = 2097; - return true; - } - break; - case 2097: - if ('D' == current) { - state = 2098; - return true; - } - else if ('Q' == current) { - state = 2109; - return true; - } - break; - case 2098: - if ('o' == current) { - state = 2099; - return true; - } - break; - case 2099: - if ('u' == current) { - state = 2100; - return true; - } - break; - case 2100: - if ('b' == current) { - state = 2101; - return true; - } - break; - case 2101: - if ('l' == current) { - state = 2102; - return true; - } - break; - case 2102: - if ('e' == current) { - state = 2103; - return true; - } - break; - case 2103: - if ('Q' == current) { - state = 2104; - return true; - } - break; - case 2104: - if ('u' == current) { - state = 2105; - return true; - } - break; - case 2105: - if ('o' == current) { - state = 2106; - return true; - } - break; - case 2106: - if ('t' == current) { - state = 2107; - return true; - } - break; - case 2107: - if ('e' == current) { - state = 2108; - return true; - } - break; - case 2108: - // OpenCurlyDoubleQuote; - if (';' == current) { - match = "\u201C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2109: - if ('u' == current) { - state = 2110; - return true; - } - break; - case 2110: - if ('o' == current) { - state = 2111; - return true; - } - break; - case 2111: - if ('t' == current) { - state = 2112; - return true; - } - break; - case 2112: - if ('e' == current) { - state = 2113; - return true; - } - break; - case 2113: - // OpenCurlyQuote; - if (';' == current) { - match = "\u2018"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2114: - // Or; - if (';' == current) { - match = "\u2A54"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2115: - if ('c' == current) { - state = 2116; - return true; - } - else if ('l' == current) { - state = 2118; - return true; - } - break; - case 2116: - if ('r' == current) { - state = 2117; - return true; - } - break; - case 2117: - // Oscr; - if (';' == current) { - match = "\uD835\uDCAA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2118: - if ('a' == current) { - state = 2119; - return true; - } - break; - case 2119: - if ('s' == current) { - state = 2120; - return true; - } - break; - case 2120: - // Oslash - if ('h' == current) { - match = "\u00D8"; - matchLength = consumedCount; - state = 2121; - return true; - } - break; - case 2121: - // Oslash; - if (';' == current) { - match = "\u00D8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2122: - if ('i' == current) { - state = 2123; - return true; - } - break; - case 2123: - if ('l' == current) { - state = 2124; - return true; - } - else if ('m' == current) { - state = 2127; - return true; - } - break; - case 2124: - if ('d' == current) { - state = 2125; - return true; - } - break; - case 2125: - // Otilde - if ('e' == current) { - match = "\u00D5"; - matchLength = consumedCount; - state = 2126; - return true; - } - break; - case 2126: - // Otilde; - if (';' == current) { - match = "\u00D5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2127: - if ('e' == current) { - state = 2128; - return true; - } - break; - case 2128: - if ('s' == current) { - state = 2129; - return true; - } - break; - case 2129: - // Otimes; - if (';' == current) { - match = "\u2A37"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2130: - if ('m' == current) { - state = 2131; - return true; - } - break; - case 2131: - // Ouml - if ('l' == current) { - match = "\u00D6"; - matchLength = consumedCount; - state = 2132; - return true; - } - break; - case 2132: - // Ouml; - if (';' == current) { - match = "\u00D6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2133: - if ('e' == current) { - state = 2134; - return true; - } - break; - case 2134: - if ('r' == current) { - state = 2135; - return true; - } - break; - case 2135: - if ('B' == current) { - state = 2136; - return true; - } - else if ('P' == current) { - state = 2146; - return true; - } - break; - case 2136: - if ('a' == current) { - state = 2137; - return true; - } - else if ('r' == current) { - state = 2139; - return true; - } - break; - case 2137: - if ('r' == current) { - state = 2138; - return true; - } - break; - case 2138: - // OverBar; - if (';' == current) { - match = "\u203E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2139: - if ('a' == current) { - state = 2140; - return true; - } - break; - case 2140: - if ('c' == current) { - state = 2141; - return true; - } - break; - case 2141: - if ('e' == current) { - state = 2142; - return true; - } - else if ('k' == current) { - state = 2143; - return true; - } - break; - case 2142: - // OverBrace; - if (';' == current) { - match = "\u23DE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2143: - if ('e' == current) { - state = 2144; - return true; - } - break; - case 2144: - if ('t' == current) { - state = 2145; - return true; - } - break; - case 2145: - // OverBracket; - if (';' == current) { - match = "\u23B4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2146: - if ('a' == current) { - state = 2147; - return true; - } - break; - case 2147: - if ('r' == current) { - state = 2148; - return true; - } - break; - case 2148: - if ('e' == current) { - state = 2149; - return true; - } - break; - case 2149: - if ('n' == current) { - state = 2150; - return true; - } - break; - case 2150: - if ('t' == current) { - state = 2151; - return true; - } - break; - case 2151: - if ('h' == current) { - state = 2152; - return true; - } - break; - case 2152: - if ('e' == current) { - state = 2153; - return true; - } - break; - case 2153: - if ('s' == current) { - state = 2154; - return true; - } - break; - case 2154: - if ('i' == current) { - state = 2155; - return true; - } - break; - case 2155: - if ('s' == current) { - state = 2156; - return true; - } - break; - case 2156: - // OverParenthesis; - if (';' == current) { - match = "\u23DC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2157: - switch (current) { - case 'a': - state = 2158; - return true; - case 'c': - state = 2165; - return true; - case 'f': - state = 2167; - return true; - case 'h': - state = 2169; - return true; - case 'i': - state = 2171; - return true; - case 'l': - state = 2172; - return true; - case 'o': - state = 2180; - return true; - case 'r': - state = 2194; - return true; - case 's': - state = 2238; - return true; - } - break; - case 2158: - if ('r' == current) { - state = 2159; - return true; - } - break; - case 2159: - if ('t' == current) { - state = 2160; - return true; - } - break; - case 2160: - if ('i' == current) { - state = 2161; - return true; - } - break; - case 2161: - if ('a' == current) { - state = 2162; - return true; - } - break; - case 2162: - if ('l' == current) { - state = 2163; - return true; - } - break; - case 2163: - if ('D' == current) { - state = 2164; - return true; - } - break; - case 2164: - // PartialD; - if (';' == current) { - match = "\u2202"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2165: - if ('y' == current) { - state = 2166; - return true; - } - break; - case 2166: - // Pcy; - if (';' == current) { - match = "\u041F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2167: - if ('r' == current) { - state = 2168; - return true; - } - break; - case 2168: - // Pfr; - if (';' == current) { - match = "\uD835\uDD13"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2169: - if ('i' == current) { - state = 2170; - return true; - } - break; - case 2170: - // Phi; - if (';' == current) { - match = "\u03A6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2171: - // Pi; - if (';' == current) { - match = "\u03A0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2172: - if ('u' == current) { - state = 2173; - return true; - } - break; - case 2173: - if ('s' == current) { - state = 2174; - return true; - } - break; - case 2174: - if ('M' == current) { - state = 2175; - return true; - } - break; - case 2175: - if ('i' == current) { - state = 2176; - return true; - } - break; - case 2176: - if ('n' == current) { - state = 2177; - return true; - } - break; - case 2177: - if ('u' == current) { - state = 2178; - return true; - } - break; - case 2178: - if ('s' == current) { - state = 2179; - return true; - } - break; - case 2179: - // PlusMinus; - if (';' == current) { - match = "\u00B1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2180: - if ('i' == current) { - state = 2181; - return true; - } - else if ('p' == current) { - state = 2192; - return true; - } - break; - case 2181: - if ('n' == current) { - state = 2182; - return true; - } - break; - case 2182: - if ('c' == current) { - state = 2183; - return true; - } - break; - case 2183: - if ('a' == current) { - state = 2184; - return true; - } - break; - case 2184: - if ('r' == current) { - state = 2185; - return true; - } - break; - case 2185: - if ('e' == current) { - state = 2186; - return true; - } - break; - case 2186: - if ('p' == current) { - state = 2187; - return true; - } - break; - case 2187: - if ('l' == current) { - state = 2188; - return true; - } - break; - case 2188: - if ('a' == current) { - state = 2189; - return true; - } - break; - case 2189: - if ('n' == current) { - state = 2190; - return true; - } - break; - case 2190: - if ('e' == current) { - state = 2191; - return true; - } - break; - case 2191: - // Poincareplane; - if (';' == current) { - match = "\u210C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2192: - if ('f' == current) { - state = 2193; - return true; - } - break; - case 2193: - // Popf; - if (';' == current) { - match = "\u2119"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2194: - switch (current) { - case ';': // Pr; - match = "\u2ABB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'e': - state = 2195; - return true; - case 'i': - state = 2221; - return true; - case 'o': - state = 2224; - return true; - } - break; - case 2195: - if ('c' == current) { - state = 2196; - return true; - } - break; - case 2196: - if ('e' == current) { - state = 2197; - return true; - } - break; - case 2197: - if ('d' == current) { - state = 2198; - return true; - } - break; - case 2198: - if ('e' == current) { - state = 2199; - return true; - } - break; - case 2199: - if ('s' == current) { - state = 2200; - return true; - } - break; - case 2200: - switch (current) { - case ';': // Precedes; - match = "\u227A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 2201; - return true; - case 'S': - state = 2206; - return true; - case 'T': - state = 2216; - return true; - } - break; - case 2201: - if ('q' == current) { - state = 2202; - return true; - } - break; - case 2202: - if ('u' == current) { - state = 2203; - return true; - } - break; - case 2203: - if ('a' == current) { - state = 2204; - return true; - } - break; - case 2204: - if ('l' == current) { - state = 2205; - return true; - } - break; - case 2205: - // PrecedesEqual; - if (';' == current) { - match = "\u2AAF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2206: - if ('l' == current) { - state = 2207; - return true; - } - break; - case 2207: - if ('a' == current) { - state = 2208; - return true; - } - break; - case 2208: - if ('n' == current) { - state = 2209; - return true; - } - break; - case 2209: - if ('t' == current) { - state = 2210; - return true; - } - break; - case 2210: - if ('E' == current) { - state = 2211; - return true; - } - break; - case 2211: - if ('q' == current) { - state = 2212; - return true; - } - break; - case 2212: - if ('u' == current) { - state = 2213; - return true; - } - break; - case 2213: - if ('a' == current) { - state = 2214; - return true; - } - break; - case 2214: - if ('l' == current) { - state = 2215; - return true; - } - break; - case 2215: - // PrecedesSlantEqual; - if (';' == current) { - match = "\u227C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2216: - if ('i' == current) { - state = 2217; - return true; - } - break; - case 2217: - if ('l' == current) { - state = 2218; - return true; - } - break; - case 2218: - if ('d' == current) { - state = 2219; - return true; - } - break; - case 2219: - if ('e' == current) { - state = 2220; - return true; - } - break; - case 2220: - // PrecedesTilde; - if (';' == current) { - match = "\u227E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2221: - if ('m' == current) { - state = 2222; - return true; - } - break; - case 2222: - if ('e' == current) { - state = 2223; - return true; - } - break; - case 2223: - // Prime; - if (';' == current) { - match = "\u2033"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2224: - if ('d' == current) { - state = 2225; - return true; - } - else if ('p' == current) { - state = 2229; - return true; - } - break; - case 2225: - if ('u' == current) { - state = 2226; - return true; - } - break; - case 2226: - if ('c' == current) { - state = 2227; - return true; - } - break; - case 2227: - if ('t' == current) { - state = 2228; - return true; - } - break; - case 2228: - // Product; - if (';' == current) { - match = "\u220F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2229: - if ('o' == current) { - state = 2230; - return true; - } - break; - case 2230: - if ('r' == current) { - state = 2231; - return true; - } - break; - case 2231: - if ('t' == current) { - state = 2232; - return true; - } - break; - case 2232: - if ('i' == current) { - state = 2233; - return true; - } - break; - case 2233: - if ('o' == current) { - state = 2234; - return true; - } - break; - case 2234: - if ('n' == current) { - state = 2235; - return true; - } - break; - case 2235: - // Proportion; - if (';' == current) { - match = "\u2237"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('a' == current) { - state = 2236; - return true; - } - break; - case 2236: - if ('l' == current) { - state = 2237; - return true; - } - break; - case 2237: - // Proportional; - if (';' == current) { - match = "\u221D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2238: - if ('c' == current) { - state = 2239; - return true; - } - else if ('i' == current) { - state = 2241; - return true; - } - break; - case 2239: - if ('r' == current) { - state = 2240; - return true; - } - break; - case 2240: - // Pscr; - if (';' == current) { - match = "\uD835\uDCAB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2241: - // Psi; - if (';' == current) { - match = "\u03A8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2242: - switch (current) { - case 'U': - state = 2243; - return true; - case 'f': - state = 2246; - return true; - case 'o': - state = 2248; - return true; - case 's': - state = 2251; - return true; - } - break; - case 2243: - if ('O' == current) { - state = 2244; - return true; - } - break; - case 2244: - // QUOT - if ('T' == current) { - match = "\""; - matchLength = consumedCount; - state = 2245; - return true; - } - break; - case 2245: - // QUOT; - if (';' == current) { - match = "\""; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2246: - if ('r' == current) { - state = 2247; - return true; - } - break; - case 2247: - // Qfr; - if (';' == current) { - match = "\uD835\uDD14"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2248: - if ('p' == current) { - state = 2249; - return true; - } - break; - case 2249: - if ('f' == current) { - state = 2250; - return true; - } - break; - case 2250: - // Qopf; - if (';' == current) { - match = "\u211A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2251: - if ('c' == current) { - state = 2252; - return true; - } - break; - case 2252: - if ('r' == current) { - state = 2253; - return true; - } - break; - case 2253: - // Qscr; - if (';' == current) { - match = "\uD835\uDCAC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2254: - switch (current) { - case 'B': - state = 2255; - return true; - case 'E': - state = 2259; - return true; - case 'a': - state = 2261; - return true; - case 'c': - state = 2272; - return true; - case 'e': - state = 2282; - return true; - case 'f': - state = 2318; - return true; - case 'h': - state = 2320; - return true; - case 'i': - state = 2322; - return true; - case 'o': - state = 2472; - return true; - case 'r': - state = 2485; - return true; - case 's': - state = 2495; - return true; - case 'u': - state = 2499; - return true; - } - break; - case 2255: - if ('a' == current) { - state = 2256; - return true; - } - break; - case 2256: - if ('r' == current) { - state = 2257; - return true; - } - break; - case 2257: - if ('r' == current) { - state = 2258; - return true; - } - break; - case 2258: - // RBarr; - if (';' == current) { - match = "\u2910"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2259: - // REG - if ('G' == current) { - match = "\u00AE"; - matchLength = consumedCount; - state = 2260; - return true; - } - break; - case 2260: - // REG; - if (';' == current) { - match = "\u00AE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2261: - switch (current) { - case 'c': - state = 2262; - return true; - case 'n': - state = 2266; - return true; - case 'r': - state = 2268; - return true; - } - break; - case 2262: - if ('u' == current) { - state = 2263; - return true; - } - break; - case 2263: - if ('t' == current) { - state = 2264; - return true; - } - break; - case 2264: - if ('e' == current) { - state = 2265; - return true; - } - break; - case 2265: - // Racute; - if (';' == current) { - match = "\u0154"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2266: - if ('g' == current) { - state = 2267; - return true; - } - break; - case 2267: - // Rang; - if (';' == current) { - match = "\u27EB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2268: - if ('r' == current) { - state = 2269; - return true; - } - break; - case 2269: - // Rarr; - if (';' == current) { - match = "\u21A0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('t' == current) { - state = 2270; - return true; - } - break; - case 2270: - if ('l' == current) { - state = 2271; - return true; - } - break; - case 2271: - // Rarrtl; - if (';' == current) { - match = "\u2916"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2272: - switch (current) { - case 'a': - state = 2273; - return true; - case 'e': - state = 2277; - return true; - case 'y': - state = 2281; - return true; - } - break; - case 2273: - if ('r' == current) { - state = 2274; - return true; - } - break; - case 2274: - if ('o' == current) { - state = 2275; - return true; - } - break; - case 2275: - if ('n' == current) { - state = 2276; - return true; - } - break; - case 2276: - // Rcaron; - if (';' == current) { - match = "\u0158"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2277: - if ('d' == current) { - state = 2278; - return true; - } - break; - case 2278: - if ('i' == current) { - state = 2279; - return true; - } - break; - case 2279: - if ('l' == current) { - state = 2280; - return true; - } - break; - case 2280: - // Rcedil; - if (';' == current) { - match = "\u0156"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2281: - // Rcy; - if (';' == current) { - match = "\u0420"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2282: - // Re; - if (';' == current) { - match = "\u211C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('v' == current) { - state = 2283; - return true; - } - break; - case 2283: - if ('e' == current) { - state = 2284; - return true; - } - break; - case 2284: - if ('r' == current) { - state = 2285; - return true; - } - break; - case 2285: - if ('s' == current) { - state = 2286; - return true; - } - break; - case 2286: - if ('e' == current) { - state = 2287; - return true; - } - break; - case 2287: - if ('E' == current) { - state = 2288; - return true; - } - else if ('U' == current) { - state = 2305; - return true; - } - break; - case 2288: - if ('l' == current) { - state = 2289; - return true; - } - else if ('q' == current) { - state = 2295; - return true; - } - break; - case 2289: - if ('e' == current) { - state = 2290; - return true; - } - break; - case 2290: - if ('m' == current) { - state = 2291; - return true; - } - break; - case 2291: - if ('e' == current) { - state = 2292; - return true; - } - break; - case 2292: - if ('n' == current) { - state = 2293; - return true; - } - break; - case 2293: - if ('t' == current) { - state = 2294; - return true; - } - break; - case 2294: - // ReverseElement; - if (';' == current) { - match = "\u220B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2295: - if ('u' == current) { - state = 2296; - return true; - } - break; - case 2296: - if ('i' == current) { - state = 2297; - return true; - } - break; - case 2297: - if ('l' == current) { - state = 2298; - return true; - } - break; - case 2298: - if ('i' == current) { - state = 2299; - return true; - } - break; - case 2299: - if ('b' == current) { - state = 2300; - return true; - } - break; - case 2300: - if ('r' == current) { - state = 2301; - return true; - } - break; - case 2301: - if ('i' == current) { - state = 2302; - return true; - } - break; - case 2302: - if ('u' == current) { - state = 2303; - return true; - } - break; - case 2303: - if ('m' == current) { - state = 2304; - return true; - } - break; - case 2304: - // ReverseEquilibrium; - if (';' == current) { - match = "\u21CB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2305: - if ('p' == current) { - state = 2306; - return true; - } - break; - case 2306: - if ('E' == current) { - state = 2307; - return true; - } - break; - case 2307: - if ('q' == current) { - state = 2308; - return true; - } - break; - case 2308: - if ('u' == current) { - state = 2309; - return true; - } - break; - case 2309: - if ('i' == current) { - state = 2310; - return true; - } - break; - case 2310: - if ('l' == current) { - state = 2311; - return true; - } - break; - case 2311: - if ('i' == current) { - state = 2312; - return true; - } - break; - case 2312: - if ('b' == current) { - state = 2313; - return true; - } - break; - case 2313: - if ('r' == current) { - state = 2314; - return true; - } - break; - case 2314: - if ('i' == current) { - state = 2315; - return true; - } - break; - case 2315: - if ('u' == current) { - state = 2316; - return true; - } - break; - case 2316: - if ('m' == current) { - state = 2317; - return true; - } - break; - case 2317: - // ReverseUpEquilibrium; - if (';' == current) { - match = "\u296F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2318: - if ('r' == current) { - state = 2319; - return true; - } - break; - case 2319: - // Rfr; - if (';' == current) { - match = "\u211C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2320: - if ('o' == current) { - state = 2321; - return true; - } - break; - case 2321: - // Rho; - if (';' == current) { - match = "\u03A1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2322: - if ('g' == current) { - state = 2323; - return true; - } - break; - case 2323: - if ('h' == current) { - state = 2324; - return true; - } - break; - case 2324: - if ('t' == current) { - state = 2325; - return true; - } - break; - case 2325: - switch (current) { - case 'A': - state = 2326; - return true; - case 'C': - state = 2354; - return true; - case 'D': - state = 2361; - return true; - case 'F': - state = 2394; - return true; - case 'T': - state = 2399; - return true; - case 'U': - state = 2428; - return true; - case 'V': - state = 2458; - return true; - case 'a': - state = 2467; - return true; - } - break; - case 2326: - if ('n' == current) { - state = 2327; - return true; - } - else if ('r' == current) { - state = 2338; - return true; - } - break; - case 2327: - if ('g' == current) { - state = 2328; - return true; - } - break; - case 2328: - if ('l' == current) { - state = 2329; - return true; - } - break; - case 2329: - if ('e' == current) { - state = 2330; - return true; - } - break; - case 2330: - if ('B' == current) { - state = 2331; - return true; - } - break; - case 2331: - if ('r' == current) { - state = 2332; - return true; - } - break; - case 2332: - if ('a' == current) { - state = 2333; - return true; - } - break; - case 2333: - if ('c' == current) { - state = 2334; - return true; - } - break; - case 2334: - if ('k' == current) { - state = 2335; - return true; - } - break; - case 2335: - if ('e' == current) { - state = 2336; - return true; - } - break; - case 2336: - if ('t' == current) { - state = 2337; - return true; - } - break; - case 2337: - // RightAngleBracket; - if (';' == current) { - match = "\u27E9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2338: - if ('r' == current) { - state = 2339; - return true; - } - break; - case 2339: - if ('o' == current) { - state = 2340; - return true; - } - break; - case 2340: - if ('w' == current) { - state = 2341; - return true; - } - break; - case 2341: - switch (current) { - case ';': // RightArrow; - match = "\u2192"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'B': - state = 2342; - return true; - case 'L': - state = 2345; - return true; - } - break; - case 2342: - if ('a' == current) { - state = 2343; - return true; - } - break; - case 2343: - if ('r' == current) { - state = 2344; - return true; - } - break; - case 2344: - // RightArrowBar; - if (';' == current) { - match = "\u21E5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2345: - if ('e' == current) { - state = 2346; - return true; - } - break; - case 2346: - if ('f' == current) { - state = 2347; - return true; - } - break; - case 2347: - if ('t' == current) { - state = 2348; - return true; - } - break; - case 2348: - if ('A' == current) { - state = 2349; - return true; - } - break; - case 2349: - if ('r' == current) { - state = 2350; - return true; - } - break; - case 2350: - if ('r' == current) { - state = 2351; - return true; - } - break; - case 2351: - if ('o' == current) { - state = 2352; - return true; - } - break; - case 2352: - if ('w' == current) { - state = 2353; - return true; - } - break; - case 2353: - // RightArrowLeftArrow; - if (';' == current) { - match = "\u21C4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2354: - if ('e' == current) { - state = 2355; - return true; - } - break; - case 2355: - if ('i' == current) { - state = 2356; - return true; - } - break; - case 2356: - if ('l' == current) { - state = 2357; - return true; - } - break; - case 2357: - if ('i' == current) { - state = 2358; - return true; - } - break; - case 2358: - if ('n' == current) { - state = 2359; - return true; - } - break; - case 2359: - if ('g' == current) { - state = 2360; - return true; - } - break; - case 2360: - // RightCeiling; - if (';' == current) { - match = "\u2309"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2361: - if ('o' == current) { - state = 2362; - return true; - } - break; - case 2362: - if ('u' == current) { - state = 2363; - return true; - } - else if ('w' == current) { - state = 2374; - return true; - } - break; - case 2363: - if ('b' == current) { - state = 2364; - return true; - } - break; - case 2364: - if ('l' == current) { - state = 2365; - return true; - } - break; - case 2365: - if ('e' == current) { - state = 2366; - return true; - } - break; - case 2366: - if ('B' == current) { - state = 2367; - return true; - } - break; - case 2367: - if ('r' == current) { - state = 2368; - return true; - } - break; - case 2368: - if ('a' == current) { - state = 2369; - return true; - } - break; - case 2369: - if ('c' == current) { - state = 2370; - return true; - } - break; - case 2370: - if ('k' == current) { - state = 2371; - return true; - } - break; - case 2371: - if ('e' == current) { - state = 2372; - return true; - } - break; - case 2372: - if ('t' == current) { - state = 2373; - return true; - } - break; - case 2373: - // RightDoubleBracket; - if (';' == current) { - match = "\u27E7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2374: - if ('n' == current) { - state = 2375; - return true; - } - break; - case 2375: - if ('T' == current) { - state = 2376; - return true; - } - else if ('V' == current) { - state = 2385; - return true; - } - break; - case 2376: - if ('e' == current) { - state = 2377; - return true; - } - break; - case 2377: - if ('e' == current) { - state = 2378; - return true; - } - break; - case 2378: - if ('V' == current) { - state = 2379; - return true; - } - break; - case 2379: - if ('e' == current) { - state = 2380; - return true; - } - break; - case 2380: - if ('c' == current) { - state = 2381; - return true; - } - break; - case 2381: - if ('t' == current) { - state = 2382; - return true; - } - break; - case 2382: - if ('o' == current) { - state = 2383; - return true; - } - break; - case 2383: - if ('r' == current) { - state = 2384; - return true; - } - break; - case 2384: - // RightDownTeeVector; - if (';' == current) { - match = "\u295D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2385: - if ('e' == current) { - state = 2386; - return true; - } - break; - case 2386: - if ('c' == current) { - state = 2387; - return true; - } - break; - case 2387: - if ('t' == current) { - state = 2388; - return true; - } - break; - case 2388: - if ('o' == current) { - state = 2389; - return true; - } - break; - case 2389: - if ('r' == current) { - state = 2390; - return true; - } - break; - case 2390: - // RightDownVector; - if (';' == current) { - match = "\u21C2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('B' == current) { - state = 2391; - return true; - } - break; - case 2391: - if ('a' == current) { - state = 2392; - return true; - } - break; - case 2392: - if ('r' == current) { - state = 2393; - return true; - } - break; - case 2393: - // RightDownVectorBar; - if (';' == current) { - match = "\u2955"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2394: - if ('l' == current) { - state = 2395; - return true; - } - break; - case 2395: - if ('o' == current) { - state = 2396; - return true; - } - break; - case 2396: - if ('o' == current) { - state = 2397; - return true; - } - break; - case 2397: - if ('r' == current) { - state = 2398; - return true; - } - break; - case 2398: - // RightFloor; - if (';' == current) { - match = "\u230B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2399: - if ('e' == current) { - state = 2400; - return true; - } - else if ('r' == current) { - state = 2413; - return true; - } - break; - case 2400: - if ('e' == current) { - state = 2401; - return true; - } - break; - case 2401: - switch (current) { - case ';': // RightTee; - match = "\u22A2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'A': - state = 2402; - return true; - case 'V': - state = 2407; - return true; - } - break; - case 2402: - if ('r' == current) { - state = 2403; - return true; - } - break; - case 2403: - if ('r' == current) { - state = 2404; - return true; - } - break; - case 2404: - if ('o' == current) { - state = 2405; - return true; - } - break; - case 2405: - if ('w' == current) { - state = 2406; - return true; - } - break; - case 2406: - // RightTeeArrow; - if (';' == current) { - match = "\u21A6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2407: - if ('e' == current) { - state = 2408; - return true; - } - break; - case 2408: - if ('c' == current) { - state = 2409; - return true; - } - break; - case 2409: - if ('t' == current) { - state = 2410; - return true; - } - break; - case 2410: - if ('o' == current) { - state = 2411; - return true; - } - break; - case 2411: - if ('r' == current) { - state = 2412; - return true; - } - break; - case 2412: - // RightTeeVector; - if (';' == current) { - match = "\u295B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2413: - if ('i' == current) { - state = 2414; - return true; - } - break; - case 2414: - if ('a' == current) { - state = 2415; - return true; - } - break; - case 2415: - if ('n' == current) { - state = 2416; - return true; - } - break; - case 2416: - if ('g' == current) { - state = 2417; - return true; - } - break; - case 2417: - if ('l' == current) { - state = 2418; - return true; - } - break; - case 2418: - if ('e' == current) { - state = 2419; - return true; - } - break; - case 2419: - switch (current) { - case ';': // RightTriangle; - match = "\u22B3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'B': - state = 2420; - return true; - case 'E': - state = 2423; - return true; - } - break; - case 2420: - if ('a' == current) { - state = 2421; - return true; - } - break; - case 2421: - if ('r' == current) { - state = 2422; - return true; - } - break; - case 2422: - // RightTriangleBar; - if (';' == current) { - match = "\u29D0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2423: - if ('q' == current) { - state = 2424; - return true; - } - break; - case 2424: - if ('u' == current) { - state = 2425; - return true; - } - break; - case 2425: - if ('a' == current) { - state = 2426; - return true; - } - break; - case 2426: - if ('l' == current) { - state = 2427; - return true; - } - break; - case 2427: - // RightTriangleEqual; - if (';' == current) { - match = "\u22B5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2428: - if ('p' == current) { - state = 2429; - return true; - } - break; - case 2429: - switch (current) { - case 'D': - state = 2430; - return true; - case 'T': - state = 2440; - return true; - case 'V': - state = 2449; - return true; - } - break; - case 2430: - if ('o' == current) { - state = 2431; - return true; - } - break; - case 2431: - if ('w' == current) { - state = 2432; - return true; - } - break; - case 2432: - if ('n' == current) { - state = 2433; - return true; - } - break; - case 2433: - if ('V' == current) { - state = 2434; - return true; - } - break; - case 2434: - if ('e' == current) { - state = 2435; - return true; - } - break; - case 2435: - if ('c' == current) { - state = 2436; - return true; - } - break; - case 2436: - if ('t' == current) { - state = 2437; - return true; - } - break; - case 2437: - if ('o' == current) { - state = 2438; - return true; - } - break; - case 2438: - if ('r' == current) { - state = 2439; - return true; - } - break; - case 2439: - // RightUpDownVector; - if (';' == current) { - match = "\u294F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2440: - if ('e' == current) { - state = 2441; - return true; - } - break; - case 2441: - if ('e' == current) { - state = 2442; - return true; - } - break; - case 2442: - if ('V' == current) { - state = 2443; - return true; - } - break; - case 2443: - if ('e' == current) { - state = 2444; - return true; - } - break; - case 2444: - if ('c' == current) { - state = 2445; - return true; - } - break; - case 2445: - if ('t' == current) { - state = 2446; - return true; - } - break; - case 2446: - if ('o' == current) { - state = 2447; - return true; - } - break; - case 2447: - if ('r' == current) { - state = 2448; - return true; - } - break; - case 2448: - // RightUpTeeVector; - if (';' == current) { - match = "\u295C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2449: - if ('e' == current) { - state = 2450; - return true; - } - break; - case 2450: - if ('c' == current) { - state = 2451; - return true; - } - break; - case 2451: - if ('t' == current) { - state = 2452; - return true; - } - break; - case 2452: - if ('o' == current) { - state = 2453; - return true; - } - break; - case 2453: - if ('r' == current) { - state = 2454; - return true; - } - break; - case 2454: - // RightUpVector; - if (';' == current) { - match = "\u21BE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('B' == current) { - state = 2455; - return true; - } - break; - case 2455: - if ('a' == current) { - state = 2456; - return true; - } - break; - case 2456: - if ('r' == current) { - state = 2457; - return true; - } - break; - case 2457: - // RightUpVectorBar; - if (';' == current) { - match = "\u2954"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2458: - if ('e' == current) { - state = 2459; - return true; - } - break; - case 2459: - if ('c' == current) { - state = 2460; - return true; - } - break; - case 2460: - if ('t' == current) { - state = 2461; - return true; - } - break; - case 2461: - if ('o' == current) { - state = 2462; - return true; - } - break; - case 2462: - if ('r' == current) { - state = 2463; - return true; - } - break; - case 2463: - // RightVector; - if (';' == current) { - match = "\u21C0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('B' == current) { - state = 2464; - return true; - } - break; - case 2464: - if ('a' == current) { - state = 2465; - return true; - } - break; - case 2465: - if ('r' == current) { - state = 2466; - return true; - } - break; - case 2466: - // RightVectorBar; - if (';' == current) { - match = "\u2953"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2467: - if ('r' == current) { - state = 2468; - return true; - } - break; - case 2468: - if ('r' == current) { - state = 2469; - return true; - } - break; - case 2469: - if ('o' == current) { - state = 2470; - return true; - } - break; - case 2470: - if ('w' == current) { - state = 2471; - return true; - } - break; - case 2471: - // Rightarrow; - if (';' == current) { - match = "\u21D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2472: - if ('p' == current) { - state = 2473; - return true; - } - else if ('u' == current) { - state = 2475; - return true; - } - break; - case 2473: - if ('f' == current) { - state = 2474; - return true; - } - break; - case 2474: - // Ropf; - if (';' == current) { - match = "\u211D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2475: - if ('n' == current) { - state = 2476; - return true; - } - break; - case 2476: - if ('d' == current) { - state = 2477; - return true; - } - break; - case 2477: - if ('I' == current) { - state = 2478; - return true; - } - break; - case 2478: - if ('m' == current) { - state = 2479; - return true; - } - break; - case 2479: - if ('p' == current) { - state = 2480; - return true; - } - break; - case 2480: - if ('l' == current) { - state = 2481; - return true; - } - break; - case 2481: - if ('i' == current) { - state = 2482; - return true; - } - break; - case 2482: - if ('e' == current) { - state = 2483; - return true; - } - break; - case 2483: - if ('s' == current) { - state = 2484; - return true; - } - break; - case 2484: - // RoundImplies; - if (';' == current) { - match = "\u2970"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2485: - if ('i' == current) { - state = 2486; - return true; - } - break; - case 2486: - if ('g' == current) { - state = 2487; - return true; - } - break; - case 2487: - if ('h' == current) { - state = 2488; - return true; - } - break; - case 2488: - if ('t' == current) { - state = 2489; - return true; - } - break; - case 2489: - if ('a' == current) { - state = 2490; - return true; - } - break; - case 2490: - if ('r' == current) { - state = 2491; - return true; - } - break; - case 2491: - if ('r' == current) { - state = 2492; - return true; - } - break; - case 2492: - if ('o' == current) { - state = 2493; - return true; - } - break; - case 2493: - if ('w' == current) { - state = 2494; - return true; - } - break; - case 2494: - // Rrightarrow; - if (';' == current) { - match = "\u21DB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2495: - if ('c' == current) { - state = 2496; - return true; - } - else if ('h' == current) { - state = 2498; - return true; - } - break; - case 2496: - if ('r' == current) { - state = 2497; - return true; - } - break; - case 2497: - // Rscr; - if (';' == current) { - match = "\u211B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2498: - // Rsh; - if (';' == current) { - match = "\u21B1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2499: - if ('l' == current) { - state = 2500; - return true; - } - break; - case 2500: - if ('e' == current) { - state = 2501; - return true; - } - break; - case 2501: - if ('D' == current) { - state = 2502; - return true; - } - break; - case 2502: - if ('e' == current) { - state = 2503; - return true; - } - break; - case 2503: - if ('l' == current) { - state = 2504; - return true; - } - break; - case 2504: - if ('a' == current) { - state = 2505; - return true; - } - break; - case 2505: - if ('y' == current) { - state = 2506; - return true; - } - break; - case 2506: - if ('e' == current) { - state = 2507; - return true; - } - break; - case 2507: - if ('d' == current) { - state = 2508; - return true; - } - break; - case 2508: - // RuleDelayed; - if (';' == current) { - match = "\u29F4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2509: - switch (current) { - case 'H': - state = 2510; - return true; - case 'O': - state = 2517; - return true; - case 'a': - state = 2522; - return true; - case 'c': - state = 2527; - return true; - case 'f': - state = 2540; - return true; - case 'h': - state = 2542; - return true; - case 'i': - state = 2581; - return true; - case 'm': - state = 2585; - return true; - case 'o': - state = 2595; - return true; - case 'q': - state = 2598; - return true; - case 's': - state = 2644; - return true; - case 't': - state = 2647; - return true; - case 'u': - state = 2650; - return true; - } - break; - case 2510: - if ('C' == current) { - state = 2511; - return true; - } - else if ('c' == current) { - state = 2515; - return true; - } - break; - case 2511: - if ('H' == current) { - state = 2512; - return true; - } - break; - case 2512: - if ('c' == current) { - state = 2513; - return true; - } - break; - case 2513: - if ('y' == current) { - state = 2514; - return true; - } - break; - case 2514: - // SHCHcy; - if (';' == current) { - match = "\u0429"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2515: - if ('y' == current) { - state = 2516; - return true; - } - break; - case 2516: - // SHcy; - if (';' == current) { - match = "\u0428"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2517: - if ('F' == current) { - state = 2518; - return true; - } - break; - case 2518: - if ('T' == current) { - state = 2519; - return true; - } - break; - case 2519: - if ('c' == current) { - state = 2520; - return true; - } - break; - case 2520: - if ('y' == current) { - state = 2521; - return true; - } - break; - case 2521: - // SOFTcy; - if (';' == current) { - match = "\u042C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2522: - if ('c' == current) { - state = 2523; - return true; - } - break; - case 2523: - if ('u' == current) { - state = 2524; - return true; - } - break; - case 2524: - if ('t' == current) { - state = 2525; - return true; - } - break; - case 2525: - if ('e' == current) { - state = 2526; - return true; - } - break; - case 2526: - // Sacute; - if (';' == current) { - match = "\u015A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2527: - switch (current) { - case ';': // Sc; - match = "\u2ABC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'a': - state = 2528; - return true; - case 'e': - state = 2532; - return true; - case 'i': - state = 2536; - return true; - case 'y': - state = 2539; - return true; - } - break; - case 2528: - if ('r' == current) { - state = 2529; - return true; - } - break; - case 2529: - if ('o' == current) { - state = 2530; - return true; - } - break; - case 2530: - if ('n' == current) { - state = 2531; - return true; - } - break; - case 2531: - // Scaron; - if (';' == current) { - match = "\u0160"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2532: - if ('d' == current) { - state = 2533; - return true; - } - break; - case 2533: - if ('i' == current) { - state = 2534; - return true; - } - break; - case 2534: - if ('l' == current) { - state = 2535; - return true; - } - break; - case 2535: - // Scedil; - if (';' == current) { - match = "\u015E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2536: - if ('r' == current) { - state = 2537; - return true; - } - break; - case 2537: - if ('c' == current) { - state = 2538; - return true; - } - break; - case 2538: - // Scirc; - if (';' == current) { - match = "\u015C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2539: - // Scy; - if (';' == current) { - match = "\u0421"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2540: - if ('r' == current) { - state = 2541; - return true; - } - break; - case 2541: - // Sfr; - if (';' == current) { - match = "\uD835\uDD16"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2542: - if ('o' == current) { - state = 2543; - return true; - } - break; - case 2543: - if ('r' == current) { - state = 2544; - return true; - } - break; - case 2544: - if ('t' == current) { - state = 2545; - return true; - } - break; - case 2545: - switch (current) { - case 'D': - state = 2546; - return true; - case 'L': - state = 2555; - return true; - case 'R': - state = 2564; - return true; - case 'U': - state = 2574; - return true; - } - break; - case 2546: - if ('o' == current) { - state = 2547; - return true; - } - break; - case 2547: - if ('w' == current) { - state = 2548; - return true; - } - break; - case 2548: - if ('n' == current) { - state = 2549; - return true; - } - break; - case 2549: - if ('A' == current) { - state = 2550; - return true; - } - break; - case 2550: - if ('r' == current) { - state = 2551; - return true; - } - break; - case 2551: - if ('r' == current) { - state = 2552; - return true; - } - break; - case 2552: - if ('o' == current) { - state = 2553; - return true; - } - break; - case 2553: - if ('w' == current) { - state = 2554; - return true; - } - break; - case 2554: - // ShortDownArrow; - if (';' == current) { - match = "\u2193"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2555: - if ('e' == current) { - state = 2556; - return true; - } - break; - case 2556: - if ('f' == current) { - state = 2557; - return true; - } - break; - case 2557: - if ('t' == current) { - state = 2558; - return true; - } - break; - case 2558: - if ('A' == current) { - state = 2559; - return true; - } - break; - case 2559: - if ('r' == current) { - state = 2560; - return true; - } - break; - case 2560: - if ('r' == current) { - state = 2561; - return true; - } - break; - case 2561: - if ('o' == current) { - state = 2562; - return true; - } - break; - case 2562: - if ('w' == current) { - state = 2563; - return true; - } - break; - case 2563: - // ShortLeftArrow; - if (';' == current) { - match = "\u2190"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2564: - if ('i' == current) { - state = 2565; - return true; - } - break; - case 2565: - if ('g' == current) { - state = 2566; - return true; - } - break; - case 2566: - if ('h' == current) { - state = 2567; - return true; - } - break; - case 2567: - if ('t' == current) { - state = 2568; - return true; - } - break; - case 2568: - if ('A' == current) { - state = 2569; - return true; - } - break; - case 2569: - if ('r' == current) { - state = 2570; - return true; - } - break; - case 2570: - if ('r' == current) { - state = 2571; - return true; - } - break; - case 2571: - if ('o' == current) { - state = 2572; - return true; - } - break; - case 2572: - if ('w' == current) { - state = 2573; - return true; - } - break; - case 2573: - // ShortRightArrow; - if (';' == current) { - match = "\u2192"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2574: - if ('p' == current) { - state = 2575; - return true; - } - break; - case 2575: - if ('A' == current) { - state = 2576; - return true; - } - break; - case 2576: - if ('r' == current) { - state = 2577; - return true; - } - break; - case 2577: - if ('r' == current) { - state = 2578; - return true; - } - break; - case 2578: - if ('o' == current) { - state = 2579; - return true; - } - break; - case 2579: - if ('w' == current) { - state = 2580; - return true; - } - break; - case 2580: - // ShortUpArrow; - if (';' == current) { - match = "\u2191"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2581: - if ('g' == current) { - state = 2582; - return true; - } - break; - case 2582: - if ('m' == current) { - state = 2583; - return true; - } - break; - case 2583: - if ('a' == current) { - state = 2584; - return true; - } - break; - case 2584: - // Sigma; - if (';' == current) { - match = "\u03A3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2585: - if ('a' == current) { - state = 2586; - return true; - } - break; - case 2586: - if ('l' == current) { - state = 2587; - return true; - } - break; - case 2587: - if ('l' == current) { - state = 2588; - return true; - } - break; - case 2588: - if ('C' == current) { - state = 2589; - return true; - } - break; - case 2589: - if ('i' == current) { - state = 2590; - return true; - } - break; - case 2590: - if ('r' == current) { - state = 2591; - return true; - } - break; - case 2591: - if ('c' == current) { - state = 2592; - return true; - } - break; - case 2592: - if ('l' == current) { - state = 2593; - return true; - } - break; - case 2593: - if ('e' == current) { - state = 2594; - return true; - } - break; - case 2594: - // SmallCircle; - if (';' == current) { - match = "\u2218"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2595: - if ('p' == current) { - state = 2596; - return true; - } - break; - case 2596: - if ('f' == current) { - state = 2597; - return true; - } - break; - case 2597: - // Sopf; - if (';' == current) { - match = "\uD835\uDD4A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2598: - if ('r' == current) { - state = 2599; - return true; - } - else if ('u' == current) { - state = 2601; - return true; - } - break; - case 2599: - if ('t' == current) { - state = 2600; - return true; - } - break; - case 2600: - // Sqrt; - if (';' == current) { - match = "\u221A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2601: - if ('a' == current) { - state = 2602; - return true; - } - break; - case 2602: - if ('r' == current) { - state = 2603; - return true; - } - break; - case 2603: - if ('e' == current) { - state = 2604; - return true; - } - break; - case 2604: - switch (current) { - case ';': // Square; - match = "\u25A1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'I': - state = 2605; - return true; - case 'S': - state = 2617; - return true; - case 'U': - state = 2639; - return true; - } - break; - case 2605: - if ('n' == current) { - state = 2606; - return true; - } - break; - case 2606: - if ('t' == current) { - state = 2607; - return true; - } - break; - case 2607: - if ('e' == current) { - state = 2608; - return true; - } - break; - case 2608: - if ('r' == current) { - state = 2609; - return true; - } - break; - case 2609: - if ('s' == current) { - state = 2610; - return true; - } - break; - case 2610: - if ('e' == current) { - state = 2611; - return true; - } - break; - case 2611: - if ('c' == current) { - state = 2612; - return true; - } - break; - case 2612: - if ('t' == current) { - state = 2613; - return true; - } - break; - case 2613: - if ('i' == current) { - state = 2614; - return true; - } - break; - case 2614: - if ('o' == current) { - state = 2615; - return true; - } - break; - case 2615: - if ('n' == current) { - state = 2616; - return true; - } - break; - case 2616: - // SquareIntersection; - if (';' == current) { - match = "\u2293"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2617: - if ('u' == current) { - state = 2618; - return true; - } - break; - case 2618: - if ('b' == current) { - state = 2619; - return true; - } - else if ('p' == current) { - state = 2628; - return true; - } - break; - case 2619: - if ('s' == current) { - state = 2620; - return true; - } - break; - case 2620: - if ('e' == current) { - state = 2621; - return true; - } - break; - case 2621: - if ('t' == current) { - state = 2622; - return true; - } - break; - case 2622: - // SquareSubset; - if (';' == current) { - match = "\u228F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('E' == current) { - state = 2623; - return true; - } - break; - case 2623: - if ('q' == current) { - state = 2624; - return true; - } - break; - case 2624: - if ('u' == current) { - state = 2625; - return true; - } - break; - case 2625: - if ('a' == current) { - state = 2626; - return true; - } - break; - case 2626: - if ('l' == current) { - state = 2627; - return true; - } - break; - case 2627: - // SquareSubsetEqual; - if (';' == current) { - match = "\u2291"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2628: - if ('e' == current) { - state = 2629; - return true; - } - break; - case 2629: - if ('r' == current) { - state = 2630; - return true; - } - break; - case 2630: - if ('s' == current) { - state = 2631; - return true; - } - break; - case 2631: - if ('e' == current) { - state = 2632; - return true; - } - break; - case 2632: - if ('t' == current) { - state = 2633; - return true; - } - break; - case 2633: - // SquareSuperset; - if (';' == current) { - match = "\u2290"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('E' == current) { - state = 2634; - return true; - } - break; - case 2634: - if ('q' == current) { - state = 2635; - return true; - } - break; - case 2635: - if ('u' == current) { - state = 2636; - return true; - } - break; - case 2636: - if ('a' == current) { - state = 2637; - return true; - } - break; - case 2637: - if ('l' == current) { - state = 2638; - return true; - } - break; - case 2638: - // SquareSupersetEqual; - if (';' == current) { - match = "\u2292"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2639: - if ('n' == current) { - state = 2640; - return true; - } - break; - case 2640: - if ('i' == current) { - state = 2641; - return true; - } - break; - case 2641: - if ('o' == current) { - state = 2642; - return true; - } - break; - case 2642: - if ('n' == current) { - state = 2643; - return true; - } - break; - case 2643: - // SquareUnion; - if (';' == current) { - match = "\u2294"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2644: - if ('c' == current) { - state = 2645; - return true; - } - break; - case 2645: - if ('r' == current) { - state = 2646; - return true; - } - break; - case 2646: - // Sscr; - if (';' == current) { - match = "\uD835\uDCAE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2647: - if ('a' == current) { - state = 2648; - return true; - } - break; - case 2648: - if ('r' == current) { - state = 2649; - return true; - } - break; - case 2649: - // Star; - if (';' == current) { - match = "\u22C6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2650: - switch (current) { - case 'b': - state = 2651; - return true; - case 'c': - state = 2660; - return true; - case 'm': - state = 2691; - return true; - case 'p': - state = 2692; - return true; - } - break; - case 2651: - // Sub; - if (';' == current) { - match = "\u22D0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('s' == current) { - state = 2652; - return true; - } - break; - case 2652: - if ('e' == current) { - state = 2653; - return true; - } - break; - case 2653: - if ('t' == current) { - state = 2654; - return true; - } - break; - case 2654: - // Subset; - if (';' == current) { - match = "\u22D0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('E' == current) { - state = 2655; - return true; - } - break; - case 2655: - if ('q' == current) { - state = 2656; - return true; - } - break; - case 2656: - if ('u' == current) { - state = 2657; - return true; - } - break; - case 2657: - if ('a' == current) { - state = 2658; - return true; - } - break; - case 2658: - if ('l' == current) { - state = 2659; - return true; - } - break; - case 2659: - // SubsetEqual; - if (';' == current) { - match = "\u2286"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2660: - if ('c' == current) { - state = 2661; - return true; - } - else if ('h' == current) { - state = 2686; - return true; - } - break; - case 2661: - if ('e' == current) { - state = 2662; - return true; - } - break; - case 2662: - if ('e' == current) { - state = 2663; - return true; - } - break; - case 2663: - if ('d' == current) { - state = 2664; - return true; - } - break; - case 2664: - if ('s' == current) { - state = 2665; - return true; - } - break; - case 2665: - switch (current) { - case ';': // Succeeds; - match = "\u227B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 2666; - return true; - case 'S': - state = 2671; - return true; - case 'T': - state = 2681; - return true; - } - break; - case 2666: - if ('q' == current) { - state = 2667; - return true; - } - break; - case 2667: - if ('u' == current) { - state = 2668; - return true; - } - break; - case 2668: - if ('a' == current) { - state = 2669; - return true; - } - break; - case 2669: - if ('l' == current) { - state = 2670; - return true; - } - break; - case 2670: - // SucceedsEqual; - if (';' == current) { - match = "\u2AB0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2671: - if ('l' == current) { - state = 2672; - return true; - } - break; - case 2672: - if ('a' == current) { - state = 2673; - return true; - } - break; - case 2673: - if ('n' == current) { - state = 2674; - return true; - } - break; - case 2674: - if ('t' == current) { - state = 2675; - return true; - } - break; - case 2675: - if ('E' == current) { - state = 2676; - return true; - } - break; - case 2676: - if ('q' == current) { - state = 2677; - return true; - } - break; - case 2677: - if ('u' == current) { - state = 2678; - return true; - } - break; - case 2678: - if ('a' == current) { - state = 2679; - return true; - } - break; - case 2679: - if ('l' == current) { - state = 2680; - return true; - } - break; - case 2680: - // SucceedsSlantEqual; - if (';' == current) { - match = "\u227D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2681: - if ('i' == current) { - state = 2682; - return true; - } - break; - case 2682: - if ('l' == current) { - state = 2683; - return true; - } - break; - case 2683: - if ('d' == current) { - state = 2684; - return true; - } - break; - case 2684: - if ('e' == current) { - state = 2685; - return true; - } - break; - case 2685: - // SucceedsTilde; - if (';' == current) { - match = "\u227F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2686: - if ('T' == current) { - state = 2687; - return true; - } - break; - case 2687: - if ('h' == current) { - state = 2688; - return true; - } - break; - case 2688: - if ('a' == current) { - state = 2689; - return true; - } - break; - case 2689: - if ('t' == current) { - state = 2690; - return true; - } - break; - case 2690: - // SuchThat; - if (';' == current) { - match = "\u220B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2691: - // Sum; - if (';' == current) { - match = "\u2211"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2692: - switch (current) { - case ';': // Sup; - match = "\u22D1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'e': - state = 2693; - return true; - case 's': - state = 2703; - return true; - } - break; - case 2693: - if ('r' == current) { - state = 2694; - return true; - } - break; - case 2694: - if ('s' == current) { - state = 2695; - return true; - } - break; - case 2695: - if ('e' == current) { - state = 2696; - return true; - } - break; - case 2696: - if ('t' == current) { - state = 2697; - return true; - } - break; - case 2697: - // Superset; - if (';' == current) { - match = "\u2283"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('E' == current) { - state = 2698; - return true; - } - break; - case 2698: - if ('q' == current) { - state = 2699; - return true; - } - break; - case 2699: - if ('u' == current) { - state = 2700; - return true; - } - break; - case 2700: - if ('a' == current) { - state = 2701; - return true; - } - break; - case 2701: - if ('l' == current) { - state = 2702; - return true; - } - break; - case 2702: - // SupersetEqual; - if (';' == current) { - match = "\u2287"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2703: - if ('e' == current) { - state = 2704; - return true; - } - break; - case 2704: - if ('t' == current) { - state = 2705; - return true; - } - break; - case 2705: - // Supset; - if (';' == current) { - match = "\u22D1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2706: - switch (current) { - case 'H': - state = 2707; - return true; - case 'R': - state = 2711; - return true; - case 'S': - state = 2715; - return true; - case 'a': - state = 2721; - return true; - case 'c': - state = 2724; - return true; - case 'f': - state = 2734; - return true; - case 'h': - state = 2736; - return true; - case 'i': - state = 2760; - return true; - case 'o': - state = 2783; - return true; - case 'r': - state = 2786; - return true; - case 's': - state = 2794; - return true; - } - break; - case 2707: - if ('O' == current) { - state = 2708; - return true; - } - break; - case 2708: - if ('R' == current) { - state = 2709; - return true; - } - break; - case 2709: - // THORN - if ('N' == current) { - match = "\u00DE"; - matchLength = consumedCount; - state = 2710; - return true; - } - break; - case 2710: - // THORN; - if (';' == current) { - match = "\u00DE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2711: - if ('A' == current) { - state = 2712; - return true; - } - break; - case 2712: - if ('D' == current) { - state = 2713; - return true; - } - break; - case 2713: - if ('E' == current) { - state = 2714; - return true; - } - break; - case 2714: - // TRADE; - if (';' == current) { - match = "\u2122"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2715: - if ('H' == current) { - state = 2716; - return true; - } - else if ('c' == current) { - state = 2719; - return true; - } - break; - case 2716: - if ('c' == current) { - state = 2717; - return true; - } - break; - case 2717: - if ('y' == current) { - state = 2718; - return true; - } - break; - case 2718: - // TSHcy; - if (';' == current) { - match = "\u040B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2719: - if ('y' == current) { - state = 2720; - return true; - } - break; - case 2720: - // TScy; - if (';' == current) { - match = "\u0426"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2721: - if ('b' == current) { - state = 2722; - return true; - } - else if ('u' == current) { - state = 2723; - return true; - } - break; - case 2722: - // Tab; - if (';' == current) { - match = "\u0009"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2723: - // Tau; - if (';' == current) { - match = "\u03A4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2724: - switch (current) { - case 'a': - state = 2725; - return true; - case 'e': - state = 2729; - return true; - case 'y': - state = 2733; - return true; - } - break; - case 2725: - if ('r' == current) { - state = 2726; - return true; - } - break; - case 2726: - if ('o' == current) { - state = 2727; - return true; - } - break; - case 2727: - if ('n' == current) { - state = 2728; - return true; - } - break; - case 2728: - // Tcaron; - if (';' == current) { - match = "\u0164"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2729: - if ('d' == current) { - state = 2730; - return true; - } - break; - case 2730: - if ('i' == current) { - state = 2731; - return true; - } - break; - case 2731: - if ('l' == current) { - state = 2732; - return true; - } - break; - case 2732: - // Tcedil; - if (';' == current) { - match = "\u0162"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2733: - // Tcy; - if (';' == current) { - match = "\u0422"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2734: - if ('r' == current) { - state = 2735; - return true; - } - break; - case 2735: - // Tfr; - if (';' == current) { - match = "\uD835\uDD17"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2736: - if ('e' == current) { - state = 2737; - return true; - } - else if ('i' == current) { - state = 2746; - return true; - } - break; - case 2737: - if ('r' == current) { - state = 2738; - return true; - } - else if ('t' == current) { - state = 2744; - return true; - } - break; - case 2738: - if ('e' == current) { - state = 2739; - return true; - } - break; - case 2739: - if ('f' == current) { - state = 2740; - return true; - } - break; - case 2740: - if ('o' == current) { - state = 2741; - return true; - } - break; - case 2741: - if ('r' == current) { - state = 2742; - return true; - } - break; - case 2742: - if ('e' == current) { - state = 2743; - return true; - } - break; - case 2743: - // Therefore; - if (';' == current) { - match = "\u2234"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2744: - if ('a' == current) { - state = 2745; - return true; - } - break; - case 2745: - // Theta; - if (';' == current) { - match = "\u0398"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2746: - if ('c' == current) { - state = 2747; - return true; - } - else if ('n' == current) { - state = 2754; - return true; - } - break; - case 2747: - if ('k' == current) { - state = 2748; - return true; - } - break; - case 2748: - if ('S' == current) { - state = 2749; - return true; - } - break; - case 2749: - if ('p' == current) { - state = 2750; - return true; - } - break; - case 2750: - if ('a' == current) { - state = 2751; - return true; - } - break; - case 2751: - if ('c' == current) { - state = 2752; - return true; - } - break; - case 2752: - if ('e' == current) { - state = 2753; - return true; - } - break; - case 2753: - // ThickSpace; - if (';' == current) { - match = "\u205F\u200A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2754: - if ('S' == current) { - state = 2755; - return true; - } - break; - case 2755: - if ('p' == current) { - state = 2756; - return true; - } - break; - case 2756: - if ('a' == current) { - state = 2757; - return true; - } - break; - case 2757: - if ('c' == current) { - state = 2758; - return true; - } - break; - case 2758: - if ('e' == current) { - state = 2759; - return true; - } - break; - case 2759: - // ThinSpace; - if (';' == current) { - match = "\u2009"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2760: - if ('l' == current) { - state = 2761; - return true; - } - break; - case 2761: - if ('d' == current) { - state = 2762; - return true; - } - break; - case 2762: - if ('e' == current) { - state = 2763; - return true; - } - break; - case 2763: - switch (current) { - case ';': // Tilde; - match = "\u223C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 2764; - return true; - case 'F': - state = 2769; - return true; - case 'T': - state = 2778; - return true; - } - break; - case 2764: - if ('q' == current) { - state = 2765; - return true; - } - break; - case 2765: - if ('u' == current) { - state = 2766; - return true; - } - break; - case 2766: - if ('a' == current) { - state = 2767; - return true; - } - break; - case 2767: - if ('l' == current) { - state = 2768; - return true; - } - break; - case 2768: - // TildeEqual; - if (';' == current) { - match = "\u2243"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2769: - if ('u' == current) { - state = 2770; - return true; - } - break; - case 2770: - if ('l' == current) { - state = 2771; - return true; - } - break; - case 2771: - if ('l' == current) { - state = 2772; - return true; - } - break; - case 2772: - if ('E' == current) { - state = 2773; - return true; - } - break; - case 2773: - if ('q' == current) { - state = 2774; - return true; - } - break; - case 2774: - if ('u' == current) { - state = 2775; - return true; - } - break; - case 2775: - if ('a' == current) { - state = 2776; - return true; - } - break; - case 2776: - if ('l' == current) { - state = 2777; - return true; - } - break; - case 2777: - // TildeFullEqual; - if (';' == current) { - match = "\u2245"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2778: - if ('i' == current) { - state = 2779; - return true; - } - break; - case 2779: - if ('l' == current) { - state = 2780; - return true; - } - break; - case 2780: - if ('d' == current) { - state = 2781; - return true; - } - break; - case 2781: - if ('e' == current) { - state = 2782; - return true; - } - break; - case 2782: - // TildeTilde; - if (';' == current) { - match = "\u2248"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2783: - if ('p' == current) { - state = 2784; - return true; - } - break; - case 2784: - if ('f' == current) { - state = 2785; - return true; - } - break; - case 2785: - // Topf; - if (';' == current) { - match = "\uD835\uDD4B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2786: - if ('i' == current) { - state = 2787; - return true; - } - break; - case 2787: - if ('p' == current) { - state = 2788; - return true; - } - break; - case 2788: - if ('l' == current) { - state = 2789; - return true; - } - break; - case 2789: - if ('e' == current) { - state = 2790; - return true; - } - break; - case 2790: - if ('D' == current) { - state = 2791; - return true; - } - break; - case 2791: - if ('o' == current) { - state = 2792; - return true; - } - break; - case 2792: - if ('t' == current) { - state = 2793; - return true; - } - break; - case 2793: - // TripleDot; - if (';' == current) { - match = "\u20DB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2794: - if ('c' == current) { - state = 2795; - return true; - } - else if ('t' == current) { - state = 2797; - return true; - } - break; - case 2795: - if ('r' == current) { - state = 2796; - return true; - } - break; - case 2796: - // Tscr; - if (';' == current) { - match = "\uD835\uDCAF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2797: - if ('r' == current) { - state = 2798; - return true; - } - break; - case 2798: - if ('o' == current) { - state = 2799; - return true; - } - break; - case 2799: - if ('k' == current) { - state = 2800; - return true; - } - break; - case 2800: - // Tstrok; - if (';' == current) { - match = "\u0166"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2801: - switch (current) { - case 'a': - state = 2802; - return true; - case 'b': - state = 2813; - return true; - case 'c': - state = 2820; - return true; - case 'd': - state = 2825; - return true; - case 'f': - state = 2830; - return true; - case 'g': - state = 2832; - return true; - case 'm': - state = 2837; - return true; - case 'n': - state = 2841; - return true; - case 'o': - state = 2873; - return true; - case 'p': - state = 2879; - return true; - case 'r': - state = 2966; - return true; - case 's': - state = 2970; - return true; - case 't': - state = 2973; - return true; - case 'u': - state = 2978; - return true; - } - break; - case 2802: - if ('c' == current) { - state = 2803; - return true; - } - else if ('r' == current) { - state = 2807; - return true; - } - break; - case 2803: - if ('u' == current) { - state = 2804; - return true; - } - break; - case 2804: - if ('t' == current) { - state = 2805; - return true; - } - break; - case 2805: - // Uacute - if ('e' == current) { - match = "\u00DA"; - matchLength = consumedCount; - state = 2806; - return true; - } - break; - case 2806: - // Uacute; - if (';' == current) { - match = "\u00DA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2807: - if ('r' == current) { - state = 2808; - return true; - } - break; - case 2808: - // Uarr; - if (';' == current) { - match = "\u219F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('o' == current) { - state = 2809; - return true; - } - break; - case 2809: - if ('c' == current) { - state = 2810; - return true; - } - break; - case 2810: - if ('i' == current) { - state = 2811; - return true; - } - break; - case 2811: - if ('r' == current) { - state = 2812; - return true; - } - break; - case 2812: - // Uarrocir; - if (';' == current) { - match = "\u2949"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2813: - if ('r' == current) { - state = 2814; - return true; - } - break; - case 2814: - if ('c' == current) { - state = 2815; - return true; - } - else if ('e' == current) { - state = 2817; - return true; - } - break; - case 2815: - if ('y' == current) { - state = 2816; - return true; - } - break; - case 2816: - // Ubrcy; - if (';' == current) { - match = "\u040E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2817: - if ('v' == current) { - state = 2818; - return true; - } - break; - case 2818: - if ('e' == current) { - state = 2819; - return true; - } - break; - case 2819: - // Ubreve; - if (';' == current) { - match = "\u016C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2820: - if ('i' == current) { - state = 2821; - return true; - } - else if ('y' == current) { - state = 2824; - return true; - } - break; - case 2821: - if ('r' == current) { - state = 2822; - return true; - } - break; - case 2822: - // Ucirc - if ('c' == current) { - match = "\u00DB"; - matchLength = consumedCount; - state = 2823; - return true; - } - break; - case 2823: - // Ucirc; - if (';' == current) { - match = "\u00DB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2824: - // Ucy; - if (';' == current) { - match = "\u0423"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2825: - if ('b' == current) { - state = 2826; - return true; - } - break; - case 2826: - if ('l' == current) { - state = 2827; - return true; - } - break; - case 2827: - if ('a' == current) { - state = 2828; - return true; - } - break; - case 2828: - if ('c' == current) { - state = 2829; - return true; - } - break; - case 2829: - // Udblac; - if (';' == current) { - match = "\u0170"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2830: - if ('r' == current) { - state = 2831; - return true; - } - break; - case 2831: - // Ufr; - if (';' == current) { - match = "\uD835\uDD18"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2832: - if ('r' == current) { - state = 2833; - return true; - } - break; - case 2833: - if ('a' == current) { - state = 2834; - return true; - } - break; - case 2834: - if ('v' == current) { - state = 2835; - return true; - } - break; - case 2835: - // Ugrave - if ('e' == current) { - match = "\u00D9"; - matchLength = consumedCount; - state = 2836; - return true; - } - break; - case 2836: - // Ugrave; - if (';' == current) { - match = "\u00D9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2837: - if ('a' == current) { - state = 2838; - return true; - } - break; - case 2838: - if ('c' == current) { - state = 2839; - return true; - } - break; - case 2839: - if ('r' == current) { - state = 2840; - return true; - } - break; - case 2840: - // Umacr; - if (';' == current) { - match = "\u016A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2841: - if ('d' == current) { - state = 2842; - return true; - } - else if ('i' == current) { - state = 2866; - return true; - } - break; - case 2842: - if ('e' == current) { - state = 2843; - return true; - } - break; - case 2843: - if ('r' == current) { - state = 2844; - return true; - } - break; - case 2844: - if ('B' == current) { - state = 2845; - return true; - } - else if ('P' == current) { - state = 2855; - return true; - } - break; - case 2845: - if ('a' == current) { - state = 2846; - return true; - } - else if ('r' == current) { - state = 2848; - return true; - } - break; - case 2846: - if ('r' == current) { - state = 2847; - return true; - } - break; - case 2847: - // UnderBar; - if (';' == current) { - match = "_"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2848: - if ('a' == current) { - state = 2849; - return true; - } - break; - case 2849: - if ('c' == current) { - state = 2850; - return true; - } - break; - case 2850: - if ('e' == current) { - state = 2851; - return true; - } - else if ('k' == current) { - state = 2852; - return true; - } - break; - case 2851: - // UnderBrace; - if (';' == current) { - match = "\u23DF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2852: - if ('e' == current) { - state = 2853; - return true; - } - break; - case 2853: - if ('t' == current) { - state = 2854; - return true; - } - break; - case 2854: - // UnderBracket; - if (';' == current) { - match = "\u23B5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2855: - if ('a' == current) { - state = 2856; - return true; - } - break; - case 2856: - if ('r' == current) { - state = 2857; - return true; - } - break; - case 2857: - if ('e' == current) { - state = 2858; - return true; - } - break; - case 2858: - if ('n' == current) { - state = 2859; - return true; - } - break; - case 2859: - if ('t' == current) { - state = 2860; - return true; - } - break; - case 2860: - if ('h' == current) { - state = 2861; - return true; - } - break; - case 2861: - if ('e' == current) { - state = 2862; - return true; - } - break; - case 2862: - if ('s' == current) { - state = 2863; - return true; - } - break; - case 2863: - if ('i' == current) { - state = 2864; - return true; - } - break; - case 2864: - if ('s' == current) { - state = 2865; - return true; - } - break; - case 2865: - // UnderParenthesis; - if (';' == current) { - match = "\u23DD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2866: - if ('o' == current) { - state = 2867; - return true; - } - break; - case 2867: - if ('n' == current) { - state = 2868; - return true; - } - break; - case 2868: - // Union; - if (';' == current) { - match = "\u22C3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('P' == current) { - state = 2869; - return true; - } - break; - case 2869: - if ('l' == current) { - state = 2870; - return true; - } - break; - case 2870: - if ('u' == current) { - state = 2871; - return true; - } - break; - case 2871: - if ('s' == current) { - state = 2872; - return true; - } - break; - case 2872: - // UnionPlus; - if (';' == current) { - match = "\u228E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2873: - if ('g' == current) { - state = 2874; - return true; - } - else if ('p' == current) { - state = 2877; - return true; - } - break; - case 2874: - if ('o' == current) { - state = 2875; - return true; - } - break; - case 2875: - if ('n' == current) { - state = 2876; - return true; - } - break; - case 2876: - // Uogon; - if (';' == current) { - match = "\u0172"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2877: - if ('f' == current) { - state = 2878; - return true; - } - break; - case 2878: - // Uopf; - if (';' == current) { - match = "\uD835\uDD4C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2879: - switch (current) { - case 'A': - state = 2880; - return true; - case 'D': - state = 2897; - return true; - case 'E': - state = 2906; - return true; - case 'T': - state = 2917; - return true; - case 'a': - state = 2925; - return true; - case 'd': - state = 2930; - return true; - case 'p': - state = 2939; - return true; - case 's': - state = 2961; - return true; - } - break; - case 2880: - if ('r' == current) { - state = 2881; - return true; - } - break; - case 2881: - if ('r' == current) { - state = 2882; - return true; - } - break; - case 2882: - if ('o' == current) { - state = 2883; - return true; - } - break; - case 2883: - if ('w' == current) { - state = 2884; - return true; - } - break; - case 2884: - switch (current) { - case ';': // UpArrow; - match = "\u2191"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'B': - state = 2885; - return true; - case 'D': - state = 2888; - return true; - } - break; - case 2885: - if ('a' == current) { - state = 2886; - return true; - } - break; - case 2886: - if ('r' == current) { - state = 2887; - return true; - } - break; - case 2887: - // UpArrowBar; - if (';' == current) { - match = "\u2912"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2888: - if ('o' == current) { - state = 2889; - return true; - } - break; - case 2889: - if ('w' == current) { - state = 2890; - return true; - } - break; - case 2890: - if ('n' == current) { - state = 2891; - return true; - } - break; - case 2891: - if ('A' == current) { - state = 2892; - return true; - } - break; - case 2892: - if ('r' == current) { - state = 2893; - return true; - } - break; - case 2893: - if ('r' == current) { - state = 2894; - return true; - } - break; - case 2894: - if ('o' == current) { - state = 2895; - return true; - } - break; - case 2895: - if ('w' == current) { - state = 2896; - return true; - } - break; - case 2896: - // UpArrowDownArrow; - if (';' == current) { - match = "\u21C5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2897: - if ('o' == current) { - state = 2898; - return true; - } - break; - case 2898: - if ('w' == current) { - state = 2899; - return true; - } - break; - case 2899: - if ('n' == current) { - state = 2900; - return true; - } - break; - case 2900: - if ('A' == current) { - state = 2901; - return true; - } - break; - case 2901: - if ('r' == current) { - state = 2902; - return true; - } - break; - case 2902: - if ('r' == current) { - state = 2903; - return true; - } - break; - case 2903: - if ('o' == current) { - state = 2904; - return true; - } - break; - case 2904: - if ('w' == current) { - state = 2905; - return true; - } - break; - case 2905: - // UpDownArrow; - if (';' == current) { - match = "\u2195"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2906: - if ('q' == current) { - state = 2907; - return true; - } - break; - case 2907: - if ('u' == current) { - state = 2908; - return true; - } - break; - case 2908: - if ('i' == current) { - state = 2909; - return true; - } - break; - case 2909: - if ('l' == current) { - state = 2910; - return true; - } - break; - case 2910: - if ('i' == current) { - state = 2911; - return true; - } - break; - case 2911: - if ('b' == current) { - state = 2912; - return true; - } - break; - case 2912: - if ('r' == current) { - state = 2913; - return true; - } - break; - case 2913: - if ('i' == current) { - state = 2914; - return true; - } - break; - case 2914: - if ('u' == current) { - state = 2915; - return true; - } - break; - case 2915: - if ('m' == current) { - state = 2916; - return true; - } - break; - case 2916: - // UpEquilibrium; - if (';' == current) { - match = "\u296E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2917: - if ('e' == current) { - state = 2918; - return true; - } - break; - case 2918: - if ('e' == current) { - state = 2919; - return true; - } - break; - case 2919: - // UpTee; - if (';' == current) { - match = "\u22A5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('A' == current) { - state = 2920; - return true; - } - break; - case 2920: - if ('r' == current) { - state = 2921; - return true; - } - break; - case 2921: - if ('r' == current) { - state = 2922; - return true; - } - break; - case 2922: - if ('o' == current) { - state = 2923; - return true; - } - break; - case 2923: - if ('w' == current) { - state = 2924; - return true; - } - break; - case 2924: - // UpTeeArrow; - if (';' == current) { - match = "\u21A5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2925: - if ('r' == current) { - state = 2926; - return true; - } - break; - case 2926: - if ('r' == current) { - state = 2927; - return true; - } - break; - case 2927: - if ('o' == current) { - state = 2928; - return true; - } - break; - case 2928: - if ('w' == current) { - state = 2929; - return true; - } - break; - case 2929: - // Uparrow; - if (';' == current) { - match = "\u21D1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2930: - if ('o' == current) { - state = 2931; - return true; - } - break; - case 2931: - if ('w' == current) { - state = 2932; - return true; - } - break; - case 2932: - if ('n' == current) { - state = 2933; - return true; - } - break; - case 2933: - if ('a' == current) { - state = 2934; - return true; - } - break; - case 2934: - if ('r' == current) { - state = 2935; - return true; - } - break; - case 2935: - if ('r' == current) { - state = 2936; - return true; - } - break; - case 2936: - if ('o' == current) { - state = 2937; - return true; - } - break; - case 2937: - if ('w' == current) { - state = 2938; - return true; - } - break; - case 2938: - // Updownarrow; - if (';' == current) { - match = "\u21D5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2939: - if ('e' == current) { - state = 2940; - return true; - } - break; - case 2940: - if ('r' == current) { - state = 2941; - return true; - } - break; - case 2941: - if ('L' == current) { - state = 2942; - return true; - } - else if ('R' == current) { - state = 2951; - return true; - } - break; - case 2942: - if ('e' == current) { - state = 2943; - return true; - } - break; - case 2943: - if ('f' == current) { - state = 2944; - return true; - } - break; - case 2944: - if ('t' == current) { - state = 2945; - return true; - } - break; - case 2945: - if ('A' == current) { - state = 2946; - return true; - } - break; - case 2946: - if ('r' == current) { - state = 2947; - return true; - } - break; - case 2947: - if ('r' == current) { - state = 2948; - return true; - } - break; - case 2948: - if ('o' == current) { - state = 2949; - return true; - } - break; - case 2949: - if ('w' == current) { - state = 2950; - return true; - } - break; - case 2950: - // UpperLeftArrow; - if (';' == current) { - match = "\u2196"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2951: - if ('i' == current) { - state = 2952; - return true; - } - break; - case 2952: - if ('g' == current) { - state = 2953; - return true; - } - break; - case 2953: - if ('h' == current) { - state = 2954; - return true; - } - break; - case 2954: - if ('t' == current) { - state = 2955; - return true; - } - break; - case 2955: - if ('A' == current) { - state = 2956; - return true; - } - break; - case 2956: - if ('r' == current) { - state = 2957; - return true; - } - break; - case 2957: - if ('r' == current) { - state = 2958; - return true; - } - break; - case 2958: - if ('o' == current) { - state = 2959; - return true; - } - break; - case 2959: - if ('w' == current) { - state = 2960; - return true; - } - break; - case 2960: - // UpperRightArrow; - if (';' == current) { - match = "\u2197"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2961: - if ('i' == current) { - state = 2962; - return true; - } - break; - case 2962: - // Upsi; - if (';' == current) { - match = "\u03D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('l' == current) { - state = 2963; - return true; - } - break; - case 2963: - if ('o' == current) { - state = 2964; - return true; - } - break; - case 2964: - if ('n' == current) { - state = 2965; - return true; - } - break; - case 2965: - // Upsilon; - if (';' == current) { - match = "\u03A5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2966: - if ('i' == current) { - state = 2967; - return true; - } - break; - case 2967: - if ('n' == current) { - state = 2968; - return true; - } - break; - case 2968: - if ('g' == current) { - state = 2969; - return true; - } - break; - case 2969: - // Uring; - if (';' == current) { - match = "\u016E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2970: - if ('c' == current) { - state = 2971; - return true; - } - break; - case 2971: - if ('r' == current) { - state = 2972; - return true; - } - break; - case 2972: - // Uscr; - if (';' == current) { - match = "\uD835\uDCB0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2973: - if ('i' == current) { - state = 2974; - return true; - } - break; - case 2974: - if ('l' == current) { - state = 2975; - return true; - } - break; - case 2975: - if ('d' == current) { - state = 2976; - return true; - } - break; - case 2976: - if ('e' == current) { - state = 2977; - return true; - } - break; - case 2977: - // Utilde; - if (';' == current) { - match = "\u0168"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2978: - if ('m' == current) { - state = 2979; - return true; - } - break; - case 2979: - // Uuml - if ('l' == current) { - match = "\u00DC"; - matchLength = consumedCount; - state = 2980; - return true; - } - break; - case 2980: - // Uuml; - if (';' == current) { - match = "\u00DC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2981: - switch (current) { - case 'D': - state = 2982; - return true; - case 'b': - state = 2986; - return true; - case 'c': - state = 2989; - return true; - case 'd': - state = 2991; - return true; - case 'e': - state = 2996; - return true; - case 'f': - state = 3038; - return true; - case 'o': - state = 3040; - return true; - case 's': - state = 3043; - return true; - case 'v': - state = 3046; - return true; - } - break; - case 2982: - if ('a' == current) { - state = 2983; - return true; - } - break; - case 2983: - if ('s' == current) { - state = 2984; - return true; - } - break; - case 2984: - if ('h' == current) { - state = 2985; - return true; - } - break; - case 2985: - // VDash; - if (';' == current) { - match = "\u22AB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2986: - if ('a' == current) { - state = 2987; - return true; - } - break; - case 2987: - if ('r' == current) { - state = 2988; - return true; - } - break; - case 2988: - // Vbar; - if (';' == current) { - match = "\u2AEB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2989: - if ('y' == current) { - state = 2990; - return true; - } - break; - case 2990: - // Vcy; - if (';' == current) { - match = "\u0412"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2991: - if ('a' == current) { - state = 2992; - return true; - } - break; - case 2992: - if ('s' == current) { - state = 2993; - return true; - } - break; - case 2993: - if ('h' == current) { - state = 2994; - return true; - } - break; - case 2994: - // Vdash; - if (';' == current) { - match = "\u22A9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('l' == current) { - state = 2995; - return true; - } - break; - case 2995: - // Vdashl; - if (';' == current) { - match = "\u2AE6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2996: - if ('e' == current) { - state = 2997; - return true; - } - else if ('r' == current) { - state = 2998; - return true; - } - break; - case 2997: - // Vee; - if (';' == current) { - match = "\u22C1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 2998: - switch (current) { - case 'b': - state = 2999; - return true; - case 't': - state = 3002; - return true; - case 'y': - state = 3028; - return true; - } - break; - case 2999: - if ('a' == current) { - state = 3000; - return true; - } - break; - } - return false; - } - - private boolean parse4(final int current) { - consumedCount++; - switch (state) { - case 3000: - if ('r' == current) { - state = 3001; - return true; - } - break; - case 3001: - // Verbar; - if (';' == current) { - match = "\u2016"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3002: - // Vert; - if (';' == current) { - match = "\u2016"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('i' == current) { - state = 3003; - return true; - } - break; - case 3003: - if ('c' == current) { - state = 3004; - return true; - } - break; - case 3004: - if ('a' == current) { - state = 3005; - return true; - } - break; - case 3005: - if ('l' == current) { - state = 3006; - return true; - } - break; - case 3006: - switch (current) { - case 'B': - state = 3007; - return true; - case 'L': - state = 3010; - return true; - case 'S': - state = 3014; - return true; - case 'T': - state = 3023; - return true; - } - break; - case 3007: - if ('a' == current) { - state = 3008; - return true; - } - break; - case 3008: - if ('r' == current) { - state = 3009; - return true; - } - break; - case 3009: - // VerticalBar; - if (';' == current) { - match = "\u2223"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3010: - if ('i' == current) { - state = 3011; - return true; - } - break; - case 3011: - if ('n' == current) { - state = 3012; - return true; - } - break; - case 3012: - if ('e' == current) { - state = 3013; - return true; - } - break; - case 3013: - // VerticalLine; - if (';' == current) { - match = "|"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3014: - if ('e' == current) { - state = 3015; - return true; - } - break; - case 3015: - if ('p' == current) { - state = 3016; - return true; - } - break; - case 3016: - if ('a' == current) { - state = 3017; - return true; - } - break; - case 3017: - if ('r' == current) { - state = 3018; - return true; - } - break; - case 3018: - if ('a' == current) { - state = 3019; - return true; - } - break; - case 3019: - if ('t' == current) { - state = 3020; - return true; - } - break; - case 3020: - if ('o' == current) { - state = 3021; - return true; - } - break; - case 3021: - if ('r' == current) { - state = 3022; - return true; - } - break; - case 3022: - // VerticalSeparator; - if (';' == current) { - match = "\u2758"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3023: - if ('i' == current) { - state = 3024; - return true; - } - break; - case 3024: - if ('l' == current) { - state = 3025; - return true; - } - break; - case 3025: - if ('d' == current) { - state = 3026; - return true; - } - break; - case 3026: - if ('e' == current) { - state = 3027; - return true; - } - break; - case 3027: - // VerticalTilde; - if (';' == current) { - match = "\u2240"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3028: - if ('T' == current) { - state = 3029; - return true; - } - break; - case 3029: - if ('h' == current) { - state = 3030; - return true; - } - break; - case 3030: - if ('i' == current) { - state = 3031; - return true; - } - break; - case 3031: - if ('n' == current) { - state = 3032; - return true; - } - break; - case 3032: - if ('S' == current) { - state = 3033; - return true; - } - break; - case 3033: - if ('p' == current) { - state = 3034; - return true; - } - break; - case 3034: - if ('a' == current) { - state = 3035; - return true; - } - break; - case 3035: - if ('c' == current) { - state = 3036; - return true; - } - break; - case 3036: - if ('e' == current) { - state = 3037; - return true; - } - break; - case 3037: - // VeryThinSpace; - if (';' == current) { - match = "\u200A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3038: - if ('r' == current) { - state = 3039; - return true; - } - break; - case 3039: - // Vfr; - if (';' == current) { - match = "\uD835\uDD19"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3040: - if ('p' == current) { - state = 3041; - return true; - } - break; - case 3041: - if ('f' == current) { - state = 3042; - return true; - } - break; - case 3042: - // Vopf; - if (';' == current) { - match = "\uD835\uDD4D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3043: - if ('c' == current) { - state = 3044; - return true; - } - break; - case 3044: - if ('r' == current) { - state = 3045; - return true; - } - break; - case 3045: - // Vscr; - if (';' == current) { - match = "\uD835\uDCB1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3046: - if ('d' == current) { - state = 3047; - return true; - } - break; - case 3047: - if ('a' == current) { - state = 3048; - return true; - } - break; - case 3048: - if ('s' == current) { - state = 3049; - return true; - } - break; - case 3049: - if ('h' == current) { - state = 3050; - return true; - } - break; - case 3050: - // Vvdash; - if (';' == current) { - match = "\u22AA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3051: - switch (current) { - case 'c': - state = 3052; - return true; - case 'e': - state = 3056; - return true; - case 'f': - state = 3060; - return true; - case 'o': - state = 3062; - return true; - case 's': - state = 3065; - return true; - } - break; - case 3052: - if ('i' == current) { - state = 3053; - return true; - } - break; - case 3053: - if ('r' == current) { - state = 3054; - return true; - } - break; - case 3054: - if ('c' == current) { - state = 3055; - return true; - } - break; - case 3055: - // Wcirc; - if (';' == current) { - match = "\u0174"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3056: - if ('d' == current) { - state = 3057; - return true; - } - break; - case 3057: - if ('g' == current) { - state = 3058; - return true; - } - break; - case 3058: - if ('e' == current) { - state = 3059; - return true; - } - break; - case 3059: - // Wedge; - if (';' == current) { - match = "\u22C0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3060: - if ('r' == current) { - state = 3061; - return true; - } - break; - case 3061: - // Wfr; - if (';' == current) { - match = "\uD835\uDD1A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3062: - if ('p' == current) { - state = 3063; - return true; - } - break; - case 3063: - if ('f' == current) { - state = 3064; - return true; - } - break; - case 3064: - // Wopf; - if (';' == current) { - match = "\uD835\uDD4E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3065: - if ('c' == current) { - state = 3066; - return true; - } - break; - case 3066: - if ('r' == current) { - state = 3067; - return true; - } - break; - case 3067: - // Wscr; - if (';' == current) { - match = "\uD835\uDCB2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3068: - switch (current) { - case 'f': - state = 3069; - return true; - case 'i': - state = 3071; - return true; - case 'o': - state = 3072; - return true; - case 's': - state = 3075; - return true; - } - break; - case 3069: - if ('r' == current) { - state = 3070; - return true; - } - break; - case 3070: - // Xfr; - if (';' == current) { - match = "\uD835\uDD1B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3071: - // Xi; - if (';' == current) { - match = "\u039E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3072: - if ('p' == current) { - state = 3073; - return true; - } - break; - case 3073: - if ('f' == current) { - state = 3074; - return true; - } - break; - case 3074: - // Xopf; - if (';' == current) { - match = "\uD835\uDD4F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3075: - if ('c' == current) { - state = 3076; - return true; - } - break; - case 3076: - if ('r' == current) { - state = 3077; - return true; - } - break; - case 3077: - // Xscr; - if (';' == current) { - match = "\uD835\uDCB3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3078: - switch (current) { - case 'A': - state = 3079; - return true; - case 'I': - state = 3082; - return true; - case 'U': - state = 3085; - return true; - case 'a': - state = 3088; - return true; - case 'c': - state = 3093; - return true; - case 'f': - state = 3098; - return true; - case 'o': - state = 3100; - return true; - case 's': - state = 3103; - return true; - case 'u': - state = 3106; - return true; - } - break; - case 3079: - if ('c' == current) { - state = 3080; - return true; - } - break; - case 3080: - if ('y' == current) { - state = 3081; - return true; - } - break; - case 3081: - // YAcy; - if (';' == current) { - match = "\u042F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3082: - if ('c' == current) { - state = 3083; - return true; - } - break; - case 3083: - if ('y' == current) { - state = 3084; - return true; - } - break; - case 3084: - // YIcy; - if (';' == current) { - match = "\u0407"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3085: - if ('c' == current) { - state = 3086; - return true; - } - break; - case 3086: - if ('y' == current) { - state = 3087; - return true; - } - break; - case 3087: - // YUcy; - if (';' == current) { - match = "\u042E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3088: - if ('c' == current) { - state = 3089; - return true; - } - break; - case 3089: - if ('u' == current) { - state = 3090; - return true; - } - break; - case 3090: - if ('t' == current) { - state = 3091; - return true; - } - break; - case 3091: - // Yacute - if ('e' == current) { - match = "\u00DD"; - matchLength = consumedCount; - state = 3092; - return true; - } - break; - case 3092: - // Yacute; - if (';' == current) { - match = "\u00DD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3093: - if ('i' == current) { - state = 3094; - return true; - } - else if ('y' == current) { - state = 3097; - return true; - } - break; - case 3094: - if ('r' == current) { - state = 3095; - return true; - } - break; - case 3095: - if ('c' == current) { - state = 3096; - return true; - } - break; - case 3096: - // Ycirc; - if (';' == current) { - match = "\u0176"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3097: - // Ycy; - if (';' == current) { - match = "\u042B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3098: - if ('r' == current) { - state = 3099; - return true; - } - break; - case 3099: - // Yfr; - if (';' == current) { - match = "\uD835\uDD1C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3100: - if ('p' == current) { - state = 3101; - return true; - } - break; - case 3101: - if ('f' == current) { - state = 3102; - return true; - } - break; - case 3102: - // Yopf; - if (';' == current) { - match = "\uD835\uDD50"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3103: - if ('c' == current) { - state = 3104; - return true; - } - break; - case 3104: - if ('r' == current) { - state = 3105; - return true; - } - break; - case 3105: - // Yscr; - if (';' == current) { - match = "\uD835\uDCB4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3106: - if ('m' == current) { - state = 3107; - return true; - } - break; - case 3107: - if ('l' == current) { - state = 3108; - return true; - } - break; - case 3108: - // Yuml; - if (';' == current) { - match = "\u0178"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3109: - switch (current) { - case 'H': - state = 3110; - return true; - case 'a': - state = 3113; - return true; - case 'c': - state = 3118; - return true; - case 'd': - state = 3124; - return true; - case 'e': - state = 3127; - return true; - case 'f': - state = 3142; - return true; - case 'o': - state = 3144; - return true; - case 's': - state = 3147; - return true; - } - break; - case 3110: - if ('c' == current) { - state = 3111; - return true; - } - break; - case 3111: - if ('y' == current) { - state = 3112; - return true; - } - break; - case 3112: - // ZHcy; - if (';' == current) { - match = "\u0416"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3113: - if ('c' == current) { - state = 3114; - return true; - } - break; - case 3114: - if ('u' == current) { - state = 3115; - return true; - } - break; - case 3115: - if ('t' == current) { - state = 3116; - return true; - } - break; - case 3116: - if ('e' == current) { - state = 3117; - return true; - } - break; - case 3117: - // Zacute; - if (';' == current) { - match = "\u0179"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3118: - if ('a' == current) { - state = 3119; - return true; - } - else if ('y' == current) { - state = 3123; - return true; - } - break; - case 3119: - if ('r' == current) { - state = 3120; - return true; - } - break; - case 3120: - if ('o' == current) { - state = 3121; - return true; - } - break; - case 3121: - if ('n' == current) { - state = 3122; - return true; - } - break; - case 3122: - // Zcaron; - if (';' == current) { - match = "\u017D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3123: - // Zcy; - if (';' == current) { - match = "\u0417"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3124: - if ('o' == current) { - state = 3125; - return true; - } - break; - case 3125: - if ('t' == current) { - state = 3126; - return true; - } - break; - case 3126: - // Zdot; - if (';' == current) { - match = "\u017B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3127: - if ('r' == current) { - state = 3128; - return true; - } - else if ('t' == current) { - state = 3140; - return true; - } - break; - case 3128: - if ('o' == current) { - state = 3129; - return true; - } - break; - case 3129: - if ('W' == current) { - state = 3130; - return true; - } - break; - case 3130: - if ('i' == current) { - state = 3131; - return true; - } - break; - case 3131: - if ('d' == current) { - state = 3132; - return true; - } - break; - case 3132: - if ('t' == current) { - state = 3133; - return true; - } - break; - case 3133: - if ('h' == current) { - state = 3134; - return true; - } - break; - case 3134: - if ('S' == current) { - state = 3135; - return true; - } - break; - case 3135: - if ('p' == current) { - state = 3136; - return true; - } - break; - case 3136: - if ('a' == current) { - state = 3137; - return true; - } - break; - case 3137: - if ('c' == current) { - state = 3138; - return true; - } - break; - case 3138: - if ('e' == current) { - state = 3139; - return true; - } - break; - case 3139: - // ZeroWidthSpace; - if (';' == current) { - match = "\u200B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3140: - if ('a' == current) { - state = 3141; - return true; - } - break; - case 3141: - // Zeta; - if (';' == current) { - match = "\u0396"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3142: - if ('r' == current) { - state = 3143; - return true; - } - break; - case 3143: - // Zfr; - if (';' == current) { - match = "\u2128"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3144: - if ('p' == current) { - state = 3145; - return true; - } - break; - case 3145: - if ('f' == current) { - state = 3146; - return true; - } - break; - case 3146: - // Zopf; - if (';' == current) { - match = "\u2124"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3147: - if ('c' == current) { - state = 3148; - return true; - } - break; - case 3148: - if ('r' == current) { - state = 3149; - return true; - } - break; - case 3149: - // Zscr; - if (';' == current) { - match = "\uD835\uDCB5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3150: - switch (current) { - case 'a': - state = 3151; - return true; - case 'b': - state = 3156; - return true; - case 'c': - state = 3161; - return true; - case 'e': - state = 3171; - return true; - case 'f': - state = 3175; - return true; - case 'g': - state = 3177; - return true; - case 'l': - state = 3182; - return true; - case 'm': - state = 3193; - return true; - case 'n': - state = 3200; - return true; - case 'o': - state = 3241; - return true; - case 'p': - state = 3247; - return true; - case 'r': - state = 3264; - return true; - case 's': - state = 3268; - return true; - case 't': - state = 3277; - return true; - case 'u': - state = 3282; - return true; - case 'w': - state = 3285; - return true; - } - break; - case 3151: - if ('c' == current) { - state = 3152; - return true; - } - break; - case 3152: - if ('u' == current) { - state = 3153; - return true; - } - break; - case 3153: - if ('t' == current) { - state = 3154; - return true; - } - break; - case 3154: - // aacute - if ('e' == current) { - match = "\u00E1"; - matchLength = consumedCount; - state = 3155; - return true; - } - break; - case 3155: - // aacute; - if (';' == current) { - match = "\u00E1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3156: - if ('r' == current) { - state = 3157; - return true; - } - break; - case 3157: - if ('e' == current) { - state = 3158; - return true; - } - break; - case 3158: - if ('v' == current) { - state = 3159; - return true; - } - break; - case 3159: - if ('e' == current) { - state = 3160; - return true; - } - break; - case 3160: - // abreve; - if (';' == current) { - match = "\u0103"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3161: - switch (current) { - case ';': // ac; - match = "\u223E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 3162; - return true; - case 'd': - state = 3163; - return true; - case 'i': - state = 3164; - return true; - case 'u': - state = 3167; - return true; - case 'y': - state = 3170; - return true; - } - break; - case 3162: - // acE; - if (';' == current) { - match = "\u223E\u0333"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3163: - // acd; - if (';' == current) { - match = "\u223F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3164: - if ('r' == current) { - state = 3165; - return true; - } - break; - case 3165: - // acirc - if ('c' == current) { - match = "\u00E2"; - matchLength = consumedCount; - state = 3166; - return true; - } - break; - case 3166: - // acirc; - if (';' == current) { - match = "\u00E2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3167: - if ('t' == current) { - state = 3168; - return true; - } - break; - case 3168: - // acute - if ('e' == current) { - match = "\u00B4"; - matchLength = consumedCount; - state = 3169; - return true; - } - break; - case 3169: - // acute; - if (';' == current) { - match = "\u00B4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3170: - // acy; - if (';' == current) { - match = "\u0430"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3171: - if ('l' == current) { - state = 3172; - return true; - } - break; - case 3172: - if ('i' == current) { - state = 3173; - return true; - } - break; - case 3173: - // aelig - if ('g' == current) { - match = "\u00E6"; - matchLength = consumedCount; - state = 3174; - return true; - } - break; - case 3174: - // aelig; - if (';' == current) { - match = "\u00E6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3175: - // af; - if (';' == current) { - match = "\u2061"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('r' == current) { - state = 3176; - return true; - } - break; - case 3176: - // afr; - if (';' == current) { - match = "\uD835\uDD1E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3177: - if ('r' == current) { - state = 3178; - return true; - } - break; - case 3178: - if ('a' == current) { - state = 3179; - return true; - } - break; - case 3179: - if ('v' == current) { - state = 3180; - return true; - } - break; - case 3180: - // agrave - if ('e' == current) { - match = "\u00E0"; - matchLength = consumedCount; - state = 3181; - return true; - } - break; - case 3181: - // agrave; - if (';' == current) { - match = "\u00E0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3182: - if ('e' == current) { - state = 3183; - return true; - } - else if ('p' == current) { - state = 3190; - return true; - } - break; - case 3183: - if ('f' == current) { - state = 3184; - return true; - } - else if ('p' == current) { - state = 3188; - return true; - } - break; - case 3184: - if ('s' == current) { - state = 3185; - return true; - } - break; - case 3185: - if ('y' == current) { - state = 3186; - return true; - } - break; - case 3186: - if ('m' == current) { - state = 3187; - return true; - } - break; - case 3187: - // alefsym; - if (';' == current) { - match = "\u2135"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3188: - if ('h' == current) { - state = 3189; - return true; - } - break; - case 3189: - // aleph; - if (';' == current) { - match = "\u2135"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3190: - if ('h' == current) { - state = 3191; - return true; - } - break; - case 3191: - if ('a' == current) { - state = 3192; - return true; - } - break; - case 3192: - // alpha; - if (';' == current) { - match = "\u03B1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3193: - if ('a' == current) { - state = 3194; - return true; - } - // amp - else if ('p' == current) { - match = "&"; - matchLength = consumedCount; - state = 3199; - return true; - } - break; - case 3194: - if ('c' == current) { - state = 3195; - return true; - } - else if ('l' == current) { - state = 3197; - return true; - } - break; - case 3195: - if ('r' == current) { - state = 3196; - return true; - } - break; - case 3196: - // amacr; - if (';' == current) { - match = "\u0101"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3197: - if ('g' == current) { - state = 3198; - return true; - } - break; - case 3198: - // amalg; - if (';' == current) { - match = "\u2A3F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3199: - // amp; - if (';' == current) { - match = "&"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3200: - if ('d' == current) { - state = 3201; - return true; - } - else if ('g' == current) { - state = 3212; - return true; - } - break; - case 3201: - switch (current) { - case ';': // and; - match = "\u2227"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'a': - state = 3202; - return true; - case 'd': - state = 3205; - return true; - case 's': - state = 3206; - return true; - case 'v': - state = 3211; - return true; - } - break; - case 3202: - if ('n' == current) { - state = 3203; - return true; - } - break; - case 3203: - if ('d' == current) { - state = 3204; - return true; - } - break; - case 3204: - // andand; - if (';' == current) { - match = "\u2A55"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3205: - // andd; - if (';' == current) { - match = "\u2A5C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3206: - if ('l' == current) { - state = 3207; - return true; - } - break; - case 3207: - if ('o' == current) { - state = 3208; - return true; - } - break; - case 3208: - if ('p' == current) { - state = 3209; - return true; - } - break; - case 3209: - if ('e' == current) { - state = 3210; - return true; - } - break; - case 3210: - // andslope; - if (';' == current) { - match = "\u2A58"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3211: - // andv; - if (';' == current) { - match = "\u2A5A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3212: - switch (current) { - case ';': // ang; - match = "\u2220"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'e': - state = 3213; - return true; - case 'l': - state = 3214; - return true; - case 'm': - state = 3216; - return true; - case 'r': - state = 3228; - return true; - case 's': - state = 3233; - return true; - case 'z': - state = 3237; - return true; - } - break; - case 3213: - // ange; - if (';' == current) { - match = "\u29A4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3214: - if ('e' == current) { - state = 3215; - return true; - } - break; - case 3215: - // angle; - if (';' == current) { - match = "\u2220"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3216: - if ('s' == current) { - state = 3217; - return true; - } - break; - case 3217: - if ('d' == current) { - state = 3218; - return true; - } - break; - case 3218: - // angmsd; - if (';' == current) { - match = "\u2221"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('a' == current) { - state = 3219; - return true; - } - break; - case 3219: - switch (current) { - case 'a': - state = 3220; - return true; - case 'b': - state = 3221; - return true; - case 'c': - state = 3222; - return true; - case 'd': - state = 3223; - return true; - case 'e': - state = 3224; - return true; - case 'f': - state = 3225; - return true; - case 'g': - state = 3226; - return true; - case 'h': - state = 3227; - return true; - } - break; - case 3220: - // angmsdaa; - if (';' == current) { - match = "\u29A8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3221: - // angmsdab; - if (';' == current) { - match = "\u29A9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3222: - // angmsdac; - if (';' == current) { - match = "\u29AA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3223: - // angmsdad; - if (';' == current) { - match = "\u29AB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3224: - // angmsdae; - if (';' == current) { - match = "\u29AC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3225: - // angmsdaf; - if (';' == current) { - match = "\u29AD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3226: - // angmsdag; - if (';' == current) { - match = "\u29AE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3227: - // angmsdah; - if (';' == current) { - match = "\u29AF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3228: - if ('t' == current) { - state = 3229; - return true; - } - break; - case 3229: - // angrt; - if (';' == current) { - match = "\u221F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('v' == current) { - state = 3230; - return true; - } - break; - case 3230: - if ('b' == current) { - state = 3231; - return true; - } - break; - case 3231: - // angrtvb; - if (';' == current) { - match = "\u22BE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('d' == current) { - state = 3232; - return true; - } - break; - case 3232: - // angrtvbd; - if (';' == current) { - match = "\u299D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3233: - if ('p' == current) { - state = 3234; - return true; - } - else if ('t' == current) { - state = 3236; - return true; - } - break; - case 3234: - if ('h' == current) { - state = 3235; - return true; - } - break; - case 3235: - // angsph; - if (';' == current) { - match = "\u2222"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3236: - // angst; - if (';' == current) { - match = "\u00C5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3237: - if ('a' == current) { - state = 3238; - return true; - } - break; - case 3238: - if ('r' == current) { - state = 3239; - return true; - } - break; - case 3239: - if ('r' == current) { - state = 3240; - return true; - } - break; - case 3240: - // angzarr; - if (';' == current) { - match = "\u237C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3241: - if ('g' == current) { - state = 3242; - return true; - } - else if ('p' == current) { - state = 3245; - return true; - } - break; - case 3242: - if ('o' == current) { - state = 3243; - return true; - } - break; - case 3243: - if ('n' == current) { - state = 3244; - return true; - } - break; - case 3244: - // aogon; - if (';' == current) { - match = "\u0105"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3245: - if ('f' == current) { - state = 3246; - return true; - } - break; - case 3246: - // aopf; - if (';' == current) { - match = "\uD835\uDD52"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3247: - switch (current) { - case ';': // ap; - match = "\u2248"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 3248; - return true; - case 'a': - state = 3249; - return true; - case 'e': - state = 3253; - return true; - case 'i': - state = 3254; - return true; - case 'o': - state = 3256; - return true; - case 'p': - state = 3258; - return true; - } - break; - case 3248: - // apE; - if (';' == current) { - match = "\u2A70"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3249: - if ('c' == current) { - state = 3250; - return true; - } - break; - case 3250: - if ('i' == current) { - state = 3251; - return true; - } - break; - case 3251: - if ('r' == current) { - state = 3252; - return true; - } - break; - case 3252: - // apacir; - if (';' == current) { - match = "\u2A6F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3253: - // ape; - if (';' == current) { - match = "\u224A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3254: - if ('d' == current) { - state = 3255; - return true; - } - break; - case 3255: - // apid; - if (';' == current) { - match = "\u224B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3256: - if ('s' == current) { - state = 3257; - return true; - } - break; - case 3257: - // apos; - if (';' == current) { - match = "'"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3258: - if ('r' == current) { - state = 3259; - return true; - } - break; - case 3259: - if ('o' == current) { - state = 3260; - return true; - } - break; - case 3260: - if ('x' == current) { - state = 3261; - return true; - } - break; - case 3261: - // approx; - if (';' == current) { - match = "\u2248"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 3262; - return true; - } - break; - case 3262: - if ('q' == current) { - state = 3263; - return true; - } - break; - case 3263: - // approxeq; - if (';' == current) { - match = "\u224A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3264: - if ('i' == current) { - state = 3265; - return true; - } - break; - case 3265: - if ('n' == current) { - state = 3266; - return true; - } - break; - case 3266: - // aring - if ('g' == current) { - match = "\u00E5"; - matchLength = consumedCount; - state = 3267; - return true; - } - break; - case 3267: - // aring; - if (';' == current) { - match = "\u00E5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3268: - switch (current) { - case 'c': - state = 3269; - return true; - case 't': - state = 3271; - return true; - case 'y': - state = 3272; - return true; - } - break; - case 3269: - if ('r' == current) { - state = 3270; - return true; - } - break; - case 3270: - // ascr; - if (';' == current) { - match = "\uD835\uDCB6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3271: - // ast; - if (';' == current) { - match = "*"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3272: - if ('m' == current) { - state = 3273; - return true; - } - break; - case 3273: - if ('p' == current) { - state = 3274; - return true; - } - break; - case 3274: - // asymp; - if (';' == current) { - match = "\u2248"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 3275; - return true; - } - break; - case 3275: - if ('q' == current) { - state = 3276; - return true; - } - break; - case 3276: - // asympeq; - if (';' == current) { - match = "\u224D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3277: - if ('i' == current) { - state = 3278; - return true; - } - break; - case 3278: - if ('l' == current) { - state = 3279; - return true; - } - break; - case 3279: - if ('d' == current) { - state = 3280; - return true; - } - break; - case 3280: - // atilde - if ('e' == current) { - match = "\u00E3"; - matchLength = consumedCount; - state = 3281; - return true; - } - break; - case 3281: - // atilde; - if (';' == current) { - match = "\u00E3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3282: - if ('m' == current) { - state = 3283; - return true; - } - break; - case 3283: - // auml - if ('l' == current) { - match = "\u00E4"; - matchLength = consumedCount; - state = 3284; - return true; - } - break; - case 3284: - // auml; - if (';' == current) { - match = "\u00E4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3285: - if ('c' == current) { - state = 3286; - return true; - } - else if ('i' == current) { - state = 3292; - return true; - } - break; - case 3286: - if ('o' == current) { - state = 3287; - return true; - } - break; - case 3287: - if ('n' == current) { - state = 3288; - return true; - } - break; - case 3288: - if ('i' == current) { - state = 3289; - return true; - } - break; - case 3289: - if ('n' == current) { - state = 3290; - return true; - } - break; - case 3290: - if ('t' == current) { - state = 3291; - return true; - } - break; - case 3291: - // awconint; - if (';' == current) { - match = "\u2233"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3292: - if ('n' == current) { - state = 3293; - return true; - } - break; - case 3293: - if ('t' == current) { - state = 3294; - return true; - } - break; - case 3294: - // awint; - if (';' == current) { - match = "\u2A11"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3295: - switch (current) { - case 'N': - state = 3296; - return true; - case 'a': - state = 3299; - return true; - case 'b': - state = 3332; - return true; - case 'c': - state = 3339; - return true; - case 'd': - state = 3344; - return true; - case 'e': - state = 3348; - return true; - case 'f': - state = 3373; - return true; - case 'i': - state = 3375; - return true; - case 'k': - state = 3433; - return true; - case 'l': - state = 3438; - return true; - case 'n': - state = 3487; - return true; - case 'o': - state = 3495; - return true; - case 'p': - state = 3568; - return true; - case 'r': - state = 3573; - return true; - case 's': - state = 3581; - return true; - case 'u': - state = 3597; - return true; - } - break; - case 3296: - if ('o' == current) { - state = 3297; - return true; - } - break; - case 3297: - if ('t' == current) { - state = 3298; - return true; - } - break; - case 3298: - // bNot; - if (';' == current) { - match = "\u2AED"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3299: - if ('c' == current) { - state = 3300; - return true; - } - else if ('r' == current) { - state = 3323; - return true; - } - break; - case 3300: - if ('k' == current) { - state = 3301; - return true; - } - break; - case 3301: - switch (current) { - case 'c': - state = 3302; - return true; - case 'e': - state = 3306; - return true; - case 'p': - state = 3313; - return true; - case 's': - state = 3318; - return true; - } - break; - case 3302: - if ('o' == current) { - state = 3303; - return true; - } - break; - case 3303: - if ('n' == current) { - state = 3304; - return true; - } - break; - case 3304: - if ('g' == current) { - state = 3305; - return true; - } - break; - case 3305: - // backcong; - if (';' == current) { - match = "\u224C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3306: - if ('p' == current) { - state = 3307; - return true; - } - break; - case 3307: - if ('s' == current) { - state = 3308; - return true; - } - break; - case 3308: - if ('i' == current) { - state = 3309; - return true; - } - break; - case 3309: - if ('l' == current) { - state = 3310; - return true; - } - break; - case 3310: - if ('o' == current) { - state = 3311; - return true; - } - break; - case 3311: - if ('n' == current) { - state = 3312; - return true; - } - break; - case 3312: - // backepsilon; - if (';' == current) { - match = "\u03F6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3313: - if ('r' == current) { - state = 3314; - return true; - } - break; - case 3314: - if ('i' == current) { - state = 3315; - return true; - } - break; - case 3315: - if ('m' == current) { - state = 3316; - return true; - } - break; - case 3316: - if ('e' == current) { - state = 3317; - return true; - } - break; - case 3317: - // backprime; - if (';' == current) { - match = "\u2035"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3318: - if ('i' == current) { - state = 3319; - return true; - } - break; - case 3319: - if ('m' == current) { - state = 3320; - return true; - } - break; - case 3320: - // backsim; - if (';' == current) { - match = "\u223D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 3321; - return true; - } - break; - case 3321: - if ('q' == current) { - state = 3322; - return true; - } - break; - case 3322: - // backsimeq; - if (';' == current) { - match = "\u22CD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3323: - if ('v' == current) { - state = 3324; - return true; - } - else if ('w' == current) { - state = 3327; - return true; - } - break; - case 3324: - if ('e' == current) { - state = 3325; - return true; - } - break; - case 3325: - if ('e' == current) { - state = 3326; - return true; - } - break; - case 3326: - // barvee; - if (';' == current) { - match = "\u22BD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3327: - if ('e' == current) { - state = 3328; - return true; - } - break; - case 3328: - if ('d' == current) { - state = 3329; - return true; - } - break; - case 3329: - // barwed; - if (';' == current) { - match = "\u2305"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('g' == current) { - state = 3330; - return true; - } - break; - case 3330: - if ('e' == current) { - state = 3331; - return true; - } - break; - case 3331: - // barwedge; - if (';' == current) { - match = "\u2305"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3332: - if ('r' == current) { - state = 3333; - return true; - } - break; - case 3333: - if ('k' == current) { - state = 3334; - return true; - } - break; - case 3334: - // bbrk; - if (';' == current) { - match = "\u23B5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('t' == current) { - state = 3335; - return true; - } - break; - case 3335: - if ('b' == current) { - state = 3336; - return true; - } - break; - case 3336: - if ('r' == current) { - state = 3337; - return true; - } - break; - case 3337: - if ('k' == current) { - state = 3338; - return true; - } - break; - case 3338: - // bbrktbrk; - if (';' == current) { - match = "\u23B6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3339: - if ('o' == current) { - state = 3340; - return true; - } - else if ('y' == current) { - state = 3343; - return true; - } - break; - case 3340: - if ('n' == current) { - state = 3341; - return true; - } - break; - case 3341: - if ('g' == current) { - state = 3342; - return true; - } - break; - case 3342: - // bcong; - if (';' == current) { - match = "\u224C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3343: - // bcy; - if (';' == current) { - match = "\u0431"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3344: - if ('q' == current) { - state = 3345; - return true; - } - break; - case 3345: - if ('u' == current) { - state = 3346; - return true; - } - break; - case 3346: - if ('o' == current) { - state = 3347; - return true; - } - break; - case 3347: - // bdquo; - if (';' == current) { - match = "\u201E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3348: - switch (current) { - case 'c': - state = 3349; - return true; - case 'm': - state = 3354; - return true; - case 'p': - state = 3359; - return true; - case 'r': - state = 3362; - return true; - case 't': - state = 3366; - return true; - } - break; - case 3349: - if ('a' == current) { - state = 3350; - return true; - } - break; - case 3350: - if ('u' == current) { - state = 3351; - return true; - } - break; - case 3351: - if ('s' == current) { - state = 3352; - return true; - } - break; - case 3352: - // becaus; - if (';' == current) { - match = "\u2235"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 3353; - return true; - } - break; - case 3353: - // because; - if (';' == current) { - match = "\u2235"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3354: - if ('p' == current) { - state = 3355; - return true; - } - break; - case 3355: - if ('t' == current) { - state = 3356; - return true; - } - break; - case 3356: - if ('y' == current) { - state = 3357; - return true; - } - break; - case 3357: - if ('v' == current) { - state = 3358; - return true; - } - break; - case 3358: - // bemptyv; - if (';' == current) { - match = "\u29B0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3359: - if ('s' == current) { - state = 3360; - return true; - } - break; - case 3360: - if ('i' == current) { - state = 3361; - return true; - } - break; - case 3361: - // bepsi; - if (';' == current) { - match = "\u03F6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3362: - if ('n' == current) { - state = 3363; - return true; - } - break; - case 3363: - if ('o' == current) { - state = 3364; - return true; - } - break; - case 3364: - if ('u' == current) { - state = 3365; - return true; - } - break; - case 3365: - // bernou; - if (';' == current) { - match = "\u212C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3366: - switch (current) { - case 'a': - state = 3367; - return true; - case 'h': - state = 3368; - return true; - case 'w': - state = 3369; - return true; - } - break; - case 3367: - // beta; - if (';' == current) { - match = "\u03B2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3368: - // beth; - if (';' == current) { - match = "\u2136"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3369: - if ('e' == current) { - state = 3370; - return true; - } - break; - case 3370: - if ('e' == current) { - state = 3371; - return true; - } - break; - case 3371: - if ('n' == current) { - state = 3372; - return true; - } - break; - case 3372: - // between; - if (';' == current) { - match = "\u226C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3373: - if ('r' == current) { - state = 3374; - return true; - } - break; - case 3374: - // bfr; - if (';' == current) { - match = "\uD835\uDD1F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3375: - if ('g' == current) { - state = 3376; - return true; - } - break; - case 3376: - switch (current) { - case 'c': - state = 3377; - return true; - case 'o': - state = 3385; - return true; - case 's': - state = 3398; - return true; - case 't': - state = 3406; - return true; - case 'u': - state = 3420; - return true; - case 'v': - state = 3425; - return true; - case 'w': - state = 3428; - return true; - } - break; - case 3377: - switch (current) { - case 'a': - state = 3378; - return true; - case 'i': - state = 3380; - return true; - case 'u': - state = 3383; - return true; - } - break; - case 3378: - if ('p' == current) { - state = 3379; - return true; - } - break; - case 3379: - // bigcap; - if (';' == current) { - match = "\u22C2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3380: - if ('r' == current) { - state = 3381; - return true; - } - break; - case 3381: - if ('c' == current) { - state = 3382; - return true; - } - break; - case 3382: - // bigcirc; - if (';' == current) { - match = "\u25EF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3383: - if ('p' == current) { - state = 3384; - return true; - } - break; - case 3384: - // bigcup; - if (';' == current) { - match = "\u22C3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3385: - switch (current) { - case 'd': - state = 3386; - return true; - case 'p': - state = 3389; - return true; - case 't': - state = 3393; - return true; - } - break; - case 3386: - if ('o' == current) { - state = 3387; - return true; - } - break; - case 3387: - if ('t' == current) { - state = 3388; - return true; - } - break; - case 3388: - // bigodot; - if (';' == current) { - match = "\u2A00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3389: - if ('l' == current) { - state = 3390; - return true; - } - break; - case 3390: - if ('u' == current) { - state = 3391; - return true; - } - break; - case 3391: - if ('s' == current) { - state = 3392; - return true; - } - break; - case 3392: - // bigoplus; - if (';' == current) { - match = "\u2A01"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3393: - if ('i' == current) { - state = 3394; - return true; - } - break; - case 3394: - if ('m' == current) { - state = 3395; - return true; - } - break; - case 3395: - if ('e' == current) { - state = 3396; - return true; - } - break; - case 3396: - if ('s' == current) { - state = 3397; - return true; - } - break; - case 3397: - // bigotimes; - if (';' == current) { - match = "\u2A02"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3398: - if ('q' == current) { - state = 3399; - return true; - } - else if ('t' == current) { - state = 3403; - return true; - } - break; - case 3399: - if ('c' == current) { - state = 3400; - return true; - } - break; - case 3400: - if ('u' == current) { - state = 3401; - return true; - } - break; - case 3401: - if ('p' == current) { - state = 3402; - return true; - } - break; - case 3402: - // bigsqcup; - if (';' == current) { - match = "\u2A06"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3403: - if ('a' == current) { - state = 3404; - return true; - } - break; - case 3404: - if ('r' == current) { - state = 3405; - return true; - } - break; - case 3405: - // bigstar; - if (';' == current) { - match = "\u2605"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3406: - if ('r' == current) { - state = 3407; - return true; - } - break; - case 3407: - if ('i' == current) { - state = 3408; - return true; - } - break; - case 3408: - if ('a' == current) { - state = 3409; - return true; - } - break; - case 3409: - if ('n' == current) { - state = 3410; - return true; - } - break; - case 3410: - if ('g' == current) { - state = 3411; - return true; - } - break; - case 3411: - if ('l' == current) { - state = 3412; - return true; - } - break; - case 3412: - if ('e' == current) { - state = 3413; - return true; - } - break; - case 3413: - if ('d' == current) { - state = 3414; - return true; - } - else if ('u' == current) { - state = 3418; - return true; - } - break; - case 3414: - if ('o' == current) { - state = 3415; - return true; - } - break; - case 3415: - if ('w' == current) { - state = 3416; - return true; - } - break; - case 3416: - if ('n' == current) { - state = 3417; - return true; - } - break; - case 3417: - // bigtriangledown; - if (';' == current) { - match = "\u25BD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3418: - if ('p' == current) { - state = 3419; - return true; - } - break; - case 3419: - // bigtriangleup; - if (';' == current) { - match = "\u25B3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3420: - if ('p' == current) { - state = 3421; - return true; - } - break; - case 3421: - if ('l' == current) { - state = 3422; - return true; - } - break; - case 3422: - if ('u' == current) { - state = 3423; - return true; - } - break; - case 3423: - if ('s' == current) { - state = 3424; - return true; - } - break; - case 3424: - // biguplus; - if (';' == current) { - match = "\u2A04"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3425: - if ('e' == current) { - state = 3426; - return true; - } - break; - case 3426: - if ('e' == current) { - state = 3427; - return true; - } - break; - case 3427: - // bigvee; - if (';' == current) { - match = "\u22C1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3428: - if ('e' == current) { - state = 3429; - return true; - } - break; - case 3429: - if ('d' == current) { - state = 3430; - return true; - } - break; - case 3430: - if ('g' == current) { - state = 3431; - return true; - } - break; - case 3431: - if ('e' == current) { - state = 3432; - return true; - } - break; - case 3432: - // bigwedge; - if (';' == current) { - match = "\u22C0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3433: - if ('a' == current) { - state = 3434; - return true; - } - break; - case 3434: - if ('r' == current) { - state = 3435; - return true; - } - break; - case 3435: - if ('o' == current) { - state = 3436; - return true; - } - break; - case 3436: - if ('w' == current) { - state = 3437; - return true; - } - break; - case 3437: - // bkarow; - if (';' == current) { - match = "\u290D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3438: - switch (current) { - case 'a': - state = 3439; - return true; - case 'k': - state = 3478; - return true; - case 'o': - state = 3484; - return true; - } - break; - case 3439: - if ('c' == current) { - state = 3440; - return true; - } - else if ('n' == current) { - state = 3476; - return true; - } - break; - case 3440: - if ('k' == current) { - state = 3441; - return true; - } - break; - case 3441: - switch (current) { - case 'l': - state = 3442; - return true; - case 's': - state = 3449; - return true; - case 't': - state = 3455; - return true; - } - break; - case 3442: - if ('o' == current) { - state = 3443; - return true; - } - break; - case 3443: - if ('z' == current) { - state = 3444; - return true; - } - break; - case 3444: - if ('e' == current) { - state = 3445; - return true; - } - break; - case 3445: - if ('n' == current) { - state = 3446; - return true; - } - break; - case 3446: - if ('g' == current) { - state = 3447; - return true; - } - break; - case 3447: - if ('e' == current) { - state = 3448; - return true; - } - break; - case 3448: - // blacklozenge; - if (';' == current) { - match = "\u29EB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3449: - if ('q' == current) { - state = 3450; - return true; - } - break; - case 3450: - if ('u' == current) { - state = 3451; - return true; - } - break; - case 3451: - if ('a' == current) { - state = 3452; - return true; - } - break; - case 3452: - if ('r' == current) { - state = 3453; - return true; - } - break; - case 3453: - if ('e' == current) { - state = 3454; - return true; - } - break; - case 3454: - // blacksquare; - if (';' == current) { - match = "\u25AA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3455: - if ('r' == current) { - state = 3456; - return true; - } - break; - case 3456: - if ('i' == current) { - state = 3457; - return true; - } - break; - case 3457: - if ('a' == current) { - state = 3458; - return true; - } - break; - case 3458: - if ('n' == current) { - state = 3459; - return true; - } - break; - case 3459: - if ('g' == current) { - state = 3460; - return true; - } - break; - case 3460: - if ('l' == current) { - state = 3461; - return true; - } - break; - case 3461: - if ('e' == current) { - state = 3462; - return true; - } - break; - case 3462: - switch (current) { - case ';': // blacktriangle; - match = "\u25B4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'd': - state = 3463; - return true; - case 'l': - state = 3467; - return true; - case 'r': - state = 3471; - return true; - } - break; - case 3463: - if ('o' == current) { - state = 3464; - return true; - } - break; - case 3464: - if ('w' == current) { - state = 3465; - return true; - } - break; - case 3465: - if ('n' == current) { - state = 3466; - return true; - } - break; - case 3466: - // blacktriangledown; - if (';' == current) { - match = "\u25BE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3467: - if ('e' == current) { - state = 3468; - return true; - } - break; - case 3468: - if ('f' == current) { - state = 3469; - return true; - } - break; - case 3469: - if ('t' == current) { - state = 3470; - return true; - } - break; - case 3470: - // blacktriangleleft; - if (';' == current) { - match = "\u25C2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3471: - if ('i' == current) { - state = 3472; - return true; - } - break; - case 3472: - if ('g' == current) { - state = 3473; - return true; - } - break; - case 3473: - if ('h' == current) { - state = 3474; - return true; - } - break; - case 3474: - if ('t' == current) { - state = 3475; - return true; - } - break; - case 3475: - // blacktriangleright; - if (';' == current) { - match = "\u25B8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3476: - if ('k' == current) { - state = 3477; - return true; - } - break; - case 3477: - // blank; - if (';' == current) { - match = "\u2423"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3478: - if ('1' == current) { - state = 3479; - return true; - } - else if ('3' == current) { - state = 3482; - return true; - } - break; - case 3479: - if ('2' == current) { - state = 3480; - return true; - } - else if ('4' == current) { - state = 3481; - return true; - } - break; - case 3480: - // blk12; - if (';' == current) { - match = "\u2592"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3481: - // blk14; - if (';' == current) { - match = "\u2591"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3482: - if ('4' == current) { - state = 3483; - return true; - } - break; - case 3483: - // blk34; - if (';' == current) { - match = "\u2593"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3484: - if ('c' == current) { - state = 3485; - return true; - } - break; - case 3485: - if ('k' == current) { - state = 3486; - return true; - } - break; - case 3486: - // block; - if (';' == current) { - match = "\u2588"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3487: - if ('e' == current) { - state = 3488; - return true; - } - else if ('o' == current) { - state = 3493; - return true; - } - break; - case 3488: - // bne; - if (';' == current) { - match = "=\u20E5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('q' == current) { - state = 3489; - return true; - } - break; - case 3489: - if ('u' == current) { - state = 3490; - return true; - } - break; - case 3490: - if ('i' == current) { - state = 3491; - return true; - } - break; - case 3491: - if ('v' == current) { - state = 3492; - return true; - } - break; - case 3492: - // bnequiv; - if (';' == current) { - match = "\u2261\u20E5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3493: - if ('t' == current) { - state = 3494; - return true; - } - break; - case 3494: - // bnot; - if (';' == current) { - match = "\u2310"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3495: - switch (current) { - case 'p': - state = 3496; - return true; - case 't': - state = 3498; - return true; - case 'w': - state = 3502; - return true; - case 'x': - state = 3506; - return true; - } - break; - case 3496: - if ('f' == current) { - state = 3497; - return true; - } - break; - case 3497: - // bopf; - if (';' == current) { - match = "\uD835\uDD53"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3498: - // bot; - if (';' == current) { - match = "\u22A5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('t' == current) { - state = 3499; - return true; - } - break; - case 3499: - if ('o' == current) { - state = 3500; - return true; - } - break; - case 3500: - if ('m' == current) { - state = 3501; - return true; - } - break; - case 3501: - // bottom; - if (';' == current) { - match = "\u22A5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3502: - if ('t' == current) { - state = 3503; - return true; - } - break; - case 3503: - if ('i' == current) { - state = 3504; - return true; - } - break; - case 3504: - if ('e' == current) { - state = 3505; - return true; - } - break; - case 3505: - // bowtie; - if (';' == current) { - match = "\u22C8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3506: - switch (current) { - case 'D': - state = 3507; - return true; - case 'H': - state = 3512; - return true; - case 'U': - state = 3517; - return true; - case 'V': - state = 3522; - return true; - case 'b': - state = 3529; - return true; - case 'd': - state = 3532; - return true; - case 'h': - state = 3537; - return true; - case 'm': - state = 3542; - return true; - case 'p': - state = 3547; - return true; - case 't': - state = 3551; - return true; - case 'u': - state = 3556; - return true; - case 'v': - state = 3561; - return true; - } - break; - case 3507: - switch (current) { - case 'L': - state = 3508; - return true; - case 'R': - state = 3509; - return true; - case 'l': - state = 3510; - return true; - case 'r': - state = 3511; - return true; - } - break; - case 3508: - // boxDL; - if (';' == current) { - match = "\u2557"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3509: - // boxDR; - if (';' == current) { - match = "\u2554"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3510: - // boxDl; - if (';' == current) { - match = "\u2556"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3511: - // boxDr; - if (';' == current) { - match = "\u2553"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3512: - switch (current) { - case ';': // boxH; - match = "\u2550"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'D': - state = 3513; - return true; - case 'U': - state = 3514; - return true; - case 'd': - state = 3515; - return true; - case 'u': - state = 3516; - return true; - } - break; - case 3513: - // boxHD; - if (';' == current) { - match = "\u2566"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3514: - // boxHU; - if (';' == current) { - match = "\u2569"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3515: - // boxHd; - if (';' == current) { - match = "\u2564"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3516: - // boxHu; - if (';' == current) { - match = "\u2567"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3517: - switch (current) { - case 'L': - state = 3518; - return true; - case 'R': - state = 3519; - return true; - case 'l': - state = 3520; - return true; - case 'r': - state = 3521; - return true; - } - break; - case 3518: - // boxUL; - if (';' == current) { - match = "\u255D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3519: - // boxUR; - if (';' == current) { - match = "\u255A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3520: - // boxUl; - if (';' == current) { - match = "\u255C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3521: - // boxUr; - if (';' == current) { - match = "\u2559"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3522: - switch (current) { - case ';': // boxV; - match = "\u2551"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'H': - state = 3523; - return true; - case 'L': - state = 3524; - return true; - case 'R': - state = 3525; - return true; - case 'h': - state = 3526; - return true; - case 'l': - state = 3527; - return true; - case 'r': - state = 3528; - return true; - } - break; - case 3523: - // boxVH; - if (';' == current) { - match = "\u256C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3524: - // boxVL; - if (';' == current) { - match = "\u2563"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3525: - // boxVR; - if (';' == current) { - match = "\u2560"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3526: - // boxVh; - if (';' == current) { - match = "\u256B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3527: - // boxVl; - if (';' == current) { - match = "\u2562"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3528: - // boxVr; - if (';' == current) { - match = "\u255F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3529: - if ('o' == current) { - state = 3530; - return true; - } - break; - case 3530: - if ('x' == current) { - state = 3531; - return true; - } - break; - case 3531: - // boxbox; - if (';' == current) { - match = "\u29C9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3532: - switch (current) { - case 'L': - state = 3533; - return true; - case 'R': - state = 3534; - return true; - case 'l': - state = 3535; - return true; - case 'r': - state = 3536; - return true; - } - break; - case 3533: - // boxdL; - if (';' == current) { - match = "\u2555"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3534: - // boxdR; - if (';' == current) { - match = "\u2552"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3535: - // boxdl; - if (';' == current) { - match = "\u2510"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3536: - // boxdr; - if (';' == current) { - match = "\u250C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3537: - switch (current) { - case ';': // boxh; - match = "\u2500"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'D': - state = 3538; - return true; - case 'U': - state = 3539; - return true; - case 'd': - state = 3540; - return true; - case 'u': - state = 3541; - return true; - } - break; - case 3538: - // boxhD; - if (';' == current) { - match = "\u2565"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3539: - // boxhU; - if (';' == current) { - match = "\u2568"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3540: - // boxhd; - if (';' == current) { - match = "\u252C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3541: - // boxhu; - if (';' == current) { - match = "\u2534"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3542: - if ('i' == current) { - state = 3543; - return true; - } - break; - case 3543: - if ('n' == current) { - state = 3544; - return true; - } - break; - case 3544: - if ('u' == current) { - state = 3545; - return true; - } - break; - case 3545: - if ('s' == current) { - state = 3546; - return true; - } - break; - case 3546: - // boxminus; - if (';' == current) { - match = "\u229F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3547: - if ('l' == current) { - state = 3548; - return true; - } - break; - case 3548: - if ('u' == current) { - state = 3549; - return true; - } - break; - case 3549: - if ('s' == current) { - state = 3550; - return true; - } - break; - case 3550: - // boxplus; - if (';' == current) { - match = "\u229E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3551: - if ('i' == current) { - state = 3552; - return true; - } - break; - case 3552: - if ('m' == current) { - state = 3553; - return true; - } - break; - case 3553: - if ('e' == current) { - state = 3554; - return true; - } - break; - case 3554: - if ('s' == current) { - state = 3555; - return true; - } - break; - case 3555: - // boxtimes; - if (';' == current) { - match = "\u22A0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3556: - switch (current) { - case 'L': - state = 3557; - return true; - case 'R': - state = 3558; - return true; - case 'l': - state = 3559; - return true; - case 'r': - state = 3560; - return true; - } - break; - case 3557: - // boxuL; - if (';' == current) { - match = "\u255B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3558: - // boxuR; - if (';' == current) { - match = "\u2558"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3559: - // boxul; - if (';' == current) { - match = "\u2518"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3560: - // boxur; - if (';' == current) { - match = "\u2514"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3561: - switch (current) { - case ';': // boxv; - match = "\u2502"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'H': - state = 3562; - return true; - case 'L': - state = 3563; - return true; - case 'R': - state = 3564; - return true; - case 'h': - state = 3565; - return true; - case 'l': - state = 3566; - return true; - case 'r': - state = 3567; - return true; - } - break; - case 3562: - // boxvH; - if (';' == current) { - match = "\u256A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3563: - // boxvL; - if (';' == current) { - match = "\u2561"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3564: - // boxvR; - if (';' == current) { - match = "\u255E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3565: - // boxvh; - if (';' == current) { - match = "\u253C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3566: - // boxvl; - if (';' == current) { - match = "\u2524"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3567: - // boxvr; - if (';' == current) { - match = "\u251C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3568: - if ('r' == current) { - state = 3569; - return true; - } - break; - case 3569: - if ('i' == current) { - state = 3570; - return true; - } - break; - case 3570: - if ('m' == current) { - state = 3571; - return true; - } - break; - case 3571: - if ('e' == current) { - state = 3572; - return true; - } - break; - case 3572: - // bprime; - if (';' == current) { - match = "\u2035"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3573: - if ('e' == current) { - state = 3574; - return true; - } - else if ('v' == current) { - state = 3577; - return true; - } - break; - case 3574: - if ('v' == current) { - state = 3575; - return true; - } - break; - case 3575: - if ('e' == current) { - state = 3576; - return true; - } - break; - case 3576: - // breve; - if (';' == current) { - match = "\u02D8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3577: - if ('b' == current) { - state = 3578; - return true; - } - break; - case 3578: - if ('a' == current) { - state = 3579; - return true; - } - break; - case 3579: - // brvbar - if ('r' == current) { - match = "\u00A6"; - matchLength = consumedCount; - state = 3580; - return true; - } - break; - case 3580: - // brvbar; - if (';' == current) { - match = "\u00A6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3581: - switch (current) { - case 'c': - state = 3582; - return true; - case 'e': - state = 3584; - return true; - case 'i': - state = 3587; - return true; - case 'o': - state = 3590; - return true; - } - break; - case 3582: - if ('r' == current) { - state = 3583; - return true; - } - break; - case 3583: - // bscr; - if (';' == current) { - match = "\uD835\uDCB7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3584: - if ('m' == current) { - state = 3585; - return true; - } - break; - case 3585: - if ('i' == current) { - state = 3586; - return true; - } - break; - case 3586: - // bsemi; - if (';' == current) { - match = "\u204F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3587: - if ('m' == current) { - state = 3588; - return true; - } - break; - case 3588: - // bsim; - if (';' == current) { - match = "\u223D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 3589; - return true; - } - break; - case 3589: - // bsime; - if (';' == current) { - match = "\u22CD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3590: - if ('l' == current) { - state = 3591; - return true; - } - break; - case 3591: - switch (current) { - case ';': // bsol; - match = "\\"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'b': - state = 3592; - return true; - case 'h': - state = 3593; - return true; - } - break; - case 3592: - // bsolb; - if (';' == current) { - match = "\u29C5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3593: - if ('s' == current) { - state = 3594; - return true; - } - break; - case 3594: - if ('u' == current) { - state = 3595; - return true; - } - break; - case 3595: - if ('b' == current) { - state = 3596; - return true; - } - break; - case 3596: - // bsolhsub; - if (';' == current) { - match = "\u27C8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3597: - if ('l' == current) { - state = 3598; - return true; - } - else if ('m' == current) { - state = 3602; - return true; - } - break; - case 3598: - if ('l' == current) { - state = 3599; - return true; - } - break; - case 3599: - // bull; - if (';' == current) { - match = "\u2022"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 3600; - return true; - } - break; - case 3600: - if ('t' == current) { - state = 3601; - return true; - } - break; - case 3601: - // bullet; - if (';' == current) { - match = "\u2022"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3602: - if ('p' == current) { - state = 3603; - return true; - } - break; - case 3603: - switch (current) { - case ';': // bump; - match = "\u224E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 3604; - return true; - case 'e': - state = 3605; - return true; - } - break; - case 3604: - // bumpE; - if (';' == current) { - match = "\u2AAE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3605: - // bumpe; - if (';' == current) { - match = "\u224F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('q' == current) { - state = 3606; - return true; - } - break; - case 3606: - // bumpeq; - if (';' == current) { - match = "\u224F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3607: - switch (current) { - case 'a': - state = 3608; - return true; - case 'c': - state = 3636; - return true; - case 'd': - state = 3655; - return true; - case 'e': - state = 3658; - return true; - case 'f': - state = 3674; - return true; - case 'h': - state = 3676; - return true; - case 'i': - state = 3687; - return true; - case 'l': - state = 3736; - return true; - case 'o': - state = 3743; - return true; - case 'r': - state = 3781; - return true; - case 's': - state = 3788; - return true; - case 't': - state = 3796; - return true; - case 'u': - state = 3800; - return true; - case 'w': - state = 3884; - return true; - case 'y': - state = 3894; - return true; - } - break; - case 3608: - switch (current) { - case 'c': - state = 3609; - return true; - case 'p': - state = 3613; - return true; - case 'r': - state = 3631; - return true; - } - break; - case 3609: - if ('u' == current) { - state = 3610; - return true; - } - break; - case 3610: - if ('t' == current) { - state = 3611; - return true; - } - break; - case 3611: - if ('e' == current) { - state = 3612; - return true; - } - break; - case 3612: - // cacute; - if (';' == current) { - match = "\u0107"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3613: - switch (current) { - case ';': // cap; - match = "\u2229"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'a': - state = 3614; - return true; - case 'b': - state = 3617; - return true; - case 'c': - state = 3622; - return true; - case 'd': - state = 3627; - return true; - case 's': - state = 3630; - return true; - } - break; - case 3614: - if ('n' == current) { - state = 3615; - return true; - } - break; - case 3615: - if ('d' == current) { - state = 3616; - return true; - } - break; - case 3616: - // capand; - if (';' == current) { - match = "\u2A44"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3617: - if ('r' == current) { - state = 3618; - return true; - } - break; - case 3618: - if ('c' == current) { - state = 3619; - return true; - } - break; - case 3619: - if ('u' == current) { - state = 3620; - return true; - } - break; - case 3620: - if ('p' == current) { - state = 3621; - return true; - } - break; - case 3621: - // capbrcup; - if (';' == current) { - match = "\u2A49"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3622: - if ('a' == current) { - state = 3623; - return true; - } - else if ('u' == current) { - state = 3625; - return true; - } - break; - case 3623: - if ('p' == current) { - state = 3624; - return true; - } - break; - case 3624: - // capcap; - if (';' == current) { - match = "\u2A4B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3625: - if ('p' == current) { - state = 3626; - return true; - } - break; - case 3626: - // capcup; - if (';' == current) { - match = "\u2A47"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3627: - if ('o' == current) { - state = 3628; - return true; - } - break; - case 3628: - if ('t' == current) { - state = 3629; - return true; - } - break; - case 3629: - // capdot; - if (';' == current) { - match = "\u2A40"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3630: - // caps; - if (';' == current) { - match = "\u2229\uFE00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3631: - if ('e' == current) { - state = 3632; - return true; - } - else if ('o' == current) { - state = 3634; - return true; - } - break; - case 3632: - if ('t' == current) { - state = 3633; - return true; - } - break; - case 3633: - // caret; - if (';' == current) { - match = "\u2041"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3634: - if ('n' == current) { - state = 3635; - return true; - } - break; - case 3635: - // caron; - if (';' == current) { - match = "\u02C7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3636: - switch (current) { - case 'a': - state = 3637; - return true; - case 'e': - state = 3643; - return true; - case 'i': - state = 3647; - return true; - case 'u': - state = 3650; - return true; - } - break; - case 3637: - if ('p' == current) { - state = 3638; - return true; - } - else if ('r' == current) { - state = 3640; - return true; - } - break; - case 3638: - if ('s' == current) { - state = 3639; - return true; - } - break; - case 3639: - // ccaps; - if (';' == current) { - match = "\u2A4D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3640: - if ('o' == current) { - state = 3641; - return true; - } - break; - case 3641: - if ('n' == current) { - state = 3642; - return true; - } - break; - case 3642: - // ccaron; - if (';' == current) { - match = "\u010D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3643: - if ('d' == current) { - state = 3644; - return true; - } - break; - case 3644: - if ('i' == current) { - state = 3645; - return true; - } - break; - case 3645: - // ccedil - if ('l' == current) { - match = "\u00E7"; - matchLength = consumedCount; - state = 3646; - return true; - } - break; - case 3646: - // ccedil; - if (';' == current) { - match = "\u00E7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3647: - if ('r' == current) { - state = 3648; - return true; - } - break; - case 3648: - if ('c' == current) { - state = 3649; - return true; - } - break; - case 3649: - // ccirc; - if (';' == current) { - match = "\u0109"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3650: - if ('p' == current) { - state = 3651; - return true; - } - break; - case 3651: - if ('s' == current) { - state = 3652; - return true; - } - break; - case 3652: - // ccups; - if (';' == current) { - match = "\u2A4C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('s' == current) { - state = 3653; - return true; - } - break; - case 3653: - if ('m' == current) { - state = 3654; - return true; - } - break; - case 3654: - // ccupssm; - if (';' == current) { - match = "\u2A50"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3655: - if ('o' == current) { - state = 3656; - return true; - } - break; - case 3656: - if ('t' == current) { - state = 3657; - return true; - } - break; - case 3657: - // cdot; - if (';' == current) { - match = "\u010B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3658: - switch (current) { - case 'd': - state = 3659; - return true; - case 'm': - state = 3662; - return true; - case 'n': - state = 3667; - return true; - } - break; - case 3659: - if ('i' == current) { - state = 3660; - return true; - } - break; - case 3660: - // cedil - if ('l' == current) { - match = "\u00B8"; - matchLength = consumedCount; - state = 3661; - return true; - } - break; - case 3661: - // cedil; - if (';' == current) { - match = "\u00B8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3662: - if ('p' == current) { - state = 3663; - return true; - } - break; - case 3663: - if ('t' == current) { - state = 3664; - return true; - } - break; - case 3664: - if ('y' == current) { - state = 3665; - return true; - } - break; - case 3665: - if ('v' == current) { - state = 3666; - return true; - } - break; - case 3666: - // cemptyv; - if (';' == current) { - match = "\u29B2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3667: - // cent - if ('t' == current) { - match = "\u00A2"; - matchLength = consumedCount; - state = 3668; - return true; - } - break; - case 3668: - // cent; - if (';' == current) { - match = "\u00A2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 3669; - return true; - } - break; - case 3669: - if ('r' == current) { - state = 3670; - return true; - } - break; - case 3670: - if ('d' == current) { - state = 3671; - return true; - } - break; - case 3671: - if ('o' == current) { - state = 3672; - return true; - } - break; - case 3672: - if ('t' == current) { - state = 3673; - return true; - } - break; - case 3673: - // centerdot; - if (';' == current) { - match = "\u00B7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3674: - if ('r' == current) { - state = 3675; - return true; - } - break; - case 3675: - // cfr; - if (';' == current) { - match = "\uD835\uDD20"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3676: - switch (current) { - case 'c': - state = 3677; - return true; - case 'e': - state = 3679; - return true; - case 'i': - state = 3686; - return true; - } - break; - case 3677: - if ('y' == current) { - state = 3678; - return true; - } - break; - case 3678: - // chcy; - if (';' == current) { - match = "\u0447"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3679: - if ('c' == current) { - state = 3680; - return true; - } - break; - case 3680: - if ('k' == current) { - state = 3681; - return true; - } - break; - case 3681: - // check; - if (';' == current) { - match = "\u2713"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('m' == current) { - state = 3682; - return true; - } - break; - case 3682: - if ('a' == current) { - state = 3683; - return true; - } - break; - case 3683: - if ('r' == current) { - state = 3684; - return true; - } - break; - case 3684: - if ('k' == current) { - state = 3685; - return true; - } - break; - case 3685: - // checkmark; - if (';' == current) { - match = "\u2713"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3686: - // chi; - if (';' == current) { - match = "\u03C7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3687: - if ('r' == current) { - state = 3688; - return true; - } - break; - case 3688: - switch (current) { - case ';': // cir; - match = "\u25CB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 3689; - return true; - case 'c': - state = 3690; - return true; - case 'e': - state = 3723; - return true; - case 'f': - state = 3724; - return true; - case 'm': - state = 3729; - return true; - case 's': - state = 3732; - return true; - } - break; - case 3689: - // cirE; - if (';' == current) { - match = "\u29C3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3690: - switch (current) { - case ';': // circ; - match = "\u02C6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'e': - state = 3691; - return true; - case 'l': - state = 3693; - return true; - } - break; - case 3691: - if ('q' == current) { - state = 3692; - return true; - } - break; - case 3692: - // circeq; - if (';' == current) { - match = "\u2257"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3693: - if ('e' == current) { - state = 3694; - return true; - } - break; - case 3694: - if ('a' == current) { - state = 3695; - return true; - } - else if ('d' == current) { - state = 3709; - return true; - } - break; - case 3695: - if ('r' == current) { - state = 3696; - return true; - } - break; - case 3696: - if ('r' == current) { - state = 3697; - return true; - } - break; - case 3697: - if ('o' == current) { - state = 3698; - return true; - } - break; - case 3698: - if ('w' == current) { - state = 3699; - return true; - } - break; - case 3699: - if ('l' == current) { - state = 3700; - return true; - } - else if ('r' == current) { - state = 3704; - return true; - } - break; - case 3700: - if ('e' == current) { - state = 3701; - return true; - } - break; - case 3701: - if ('f' == current) { - state = 3702; - return true; - } - break; - case 3702: - if ('t' == current) { - state = 3703; - return true; - } - break; - case 3703: - // circlearrowleft; - if (';' == current) { - match = "\u21BA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3704: - if ('i' == current) { - state = 3705; - return true; - } - break; - case 3705: - if ('g' == current) { - state = 3706; - return true; - } - break; - case 3706: - if ('h' == current) { - state = 3707; - return true; - } - break; - case 3707: - if ('t' == current) { - state = 3708; - return true; - } - break; - case 3708: - // circlearrowright; - if (';' == current) { - match = "\u21BB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3709: - switch (current) { - case 'R': - state = 3710; - return true; - case 'S': - state = 3711; - return true; - case 'a': - state = 3712; - return true; - case 'c': - state = 3715; - return true; - case 'd': - state = 3719; - return true; - } - break; - case 3710: - // circledR; - if (';' == current) { - match = "\u00AE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3711: - // circledS; - if (';' == current) { - match = "\u24C8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3712: - if ('s' == current) { - state = 3713; - return true; - } - break; - case 3713: - if ('t' == current) { - state = 3714; - return true; - } - break; - case 3714: - // circledast; - if (';' == current) { - match = "\u229B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3715: - if ('i' == current) { - state = 3716; - return true; - } - break; - case 3716: - if ('r' == current) { - state = 3717; - return true; - } - break; - case 3717: - if ('c' == current) { - state = 3718; - return true; - } - break; - case 3718: - // circledcirc; - if (';' == current) { - match = "\u229A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3719: - if ('a' == current) { - state = 3720; - return true; - } - break; - case 3720: - if ('s' == current) { - state = 3721; - return true; - } - break; - case 3721: - if ('h' == current) { - state = 3722; - return true; - } - break; - case 3722: - // circleddash; - if (';' == current) { - match = "\u229D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3723: - // cire; - if (';' == current) { - match = "\u2257"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3724: - if ('n' == current) { - state = 3725; - return true; - } - break; - case 3725: - if ('i' == current) { - state = 3726; - return true; - } - break; - case 3726: - if ('n' == current) { - state = 3727; - return true; - } - break; - case 3727: - if ('t' == current) { - state = 3728; - return true; - } - break; - case 3728: - // cirfnint; - if (';' == current) { - match = "\u2A10"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3729: - if ('i' == current) { - state = 3730; - return true; - } - break; - case 3730: - if ('d' == current) { - state = 3731; - return true; - } - break; - case 3731: - // cirmid; - if (';' == current) { - match = "\u2AEF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3732: - if ('c' == current) { - state = 3733; - return true; - } - break; - case 3733: - if ('i' == current) { - state = 3734; - return true; - } - break; - case 3734: - if ('r' == current) { - state = 3735; - return true; - } - break; - case 3735: - // cirscir; - if (';' == current) { - match = "\u29C2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3736: - if ('u' == current) { - state = 3737; - return true; - } - break; - case 3737: - if ('b' == current) { - state = 3738; - return true; - } - break; - case 3738: - if ('s' == current) { - state = 3739; - return true; - } - break; - case 3739: - // clubs; - if (';' == current) { - match = "\u2663"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('u' == current) { - state = 3740; - return true; - } - break; - case 3740: - if ('i' == current) { - state = 3741; - return true; - } - break; - case 3741: - if ('t' == current) { - state = 3742; - return true; - } - break; - case 3742: - // clubsuit; - if (';' == current) { - match = "\u2663"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3743: - switch (current) { - case 'l': - state = 3744; - return true; - case 'm': - state = 3749; - return true; - case 'n': - state = 3765; - return true; - case 'p': - state = 3773; - return true; - } - break; - case 3744: - if ('o' == current) { - state = 3745; - return true; - } - break; - case 3745: - if ('n' == current) { - state = 3746; - return true; - } - break; - case 3746: - // colon; - if (';' == current) { - match = ":"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 3747; - return true; - } - break; - case 3747: - // colone; - if (';' == current) { - match = "\u2254"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('q' == current) { - state = 3748; - return true; - } - break; - case 3748: - // coloneq; - if (';' == current) { - match = "\u2254"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3749: - if ('m' == current) { - state = 3750; - return true; - } - else if ('p' == current) { - state = 3753; - return true; - } - break; - case 3750: - if ('a' == current) { - state = 3751; - return true; - } - break; - case 3751: - // comma; - if (';' == current) { - match = ","; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('t' == current) { - state = 3752; - return true; - } - break; - case 3752: - // commat; - if (';' == current) { - match = "@"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3753: - switch (current) { - case ';': // comp; - match = "\u2201"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'f': - state = 3754; - return true; - case 'l': - state = 3756; - return true; - } - break; - case 3754: - if ('n' == current) { - state = 3755; - return true; - } - break; - case 3755: - // compfn; - if (';' == current) { - match = "\u2218"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3756: - if ('e' == current) { - state = 3757; - return true; - } - break; - case 3757: - if ('m' == current) { - state = 3758; - return true; - } - else if ('x' == current) { - state = 3762; - return true; - } - break; - case 3758: - if ('e' == current) { - state = 3759; - return true; - } - break; - case 3759: - if ('n' == current) { - state = 3760; - return true; - } - break; - case 3760: - if ('t' == current) { - state = 3761; - return true; - } - break; - case 3761: - // complement; - if (';' == current) { - match = "\u2201"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3762: - if ('e' == current) { - state = 3763; - return true; - } - break; - case 3763: - if ('s' == current) { - state = 3764; - return true; - } - break; - case 3764: - // complexes; - if (';' == current) { - match = "\u2102"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3765: - if ('g' == current) { - state = 3766; - return true; - } - else if ('i' == current) { - state = 3770; - return true; - } - break; - case 3766: - // cong; - if (';' == current) { - match = "\u2245"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('d' == current) { - state = 3767; - return true; - } - break; - case 3767: - if ('o' == current) { - state = 3768; - return true; - } - break; - case 3768: - if ('t' == current) { - state = 3769; - return true; - } - break; - case 3769: - // congdot; - if (';' == current) { - match = "\u2A6D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3770: - if ('n' == current) { - state = 3771; - return true; - } - break; - case 3771: - if ('t' == current) { - state = 3772; - return true; - } - break; - case 3772: - // conint; - if (';' == current) { - match = "\u222E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3773: - switch (current) { - case 'f': - state = 3774; - return true; - case 'r': - state = 3775; - return true; - case 'y': // copy - match = "\u00A9"; - matchLength = consumedCount; - state = 3778; - return true; - } - break; - case 3774: - // copf; - if (';' == current) { - match = "\uD835\uDD54"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3775: - if ('o' == current) { - state = 3776; - return true; - } - break; - case 3776: - if ('d' == current) { - state = 3777; - return true; - } - break; - case 3777: - // coprod; - if (';' == current) { - match = "\u2210"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3778: - // copy; - if (';' == current) { - match = "\u00A9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('s' == current) { - state = 3779; - return true; - } - break; - case 3779: - if ('r' == current) { - state = 3780; - return true; - } - break; - case 3780: - // copysr; - if (';' == current) { - match = "\u2117"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3781: - if ('a' == current) { - state = 3782; - return true; - } - else if ('o' == current) { - state = 3785; - return true; - } - break; - case 3782: - if ('r' == current) { - state = 3783; - return true; - } - break; - case 3783: - if ('r' == current) { - state = 3784; - return true; - } - break; - case 3784: - // crarr; - if (';' == current) { - match = "\u21B5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3785: - if ('s' == current) { - state = 3786; - return true; - } - break; - case 3786: - if ('s' == current) { - state = 3787; - return true; - } - break; - case 3787: - // cross; - if (';' == current) { - match = "\u2717"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3788: - if ('c' == current) { - state = 3789; - return true; - } - else if ('u' == current) { - state = 3791; - return true; - } - break; - case 3789: - if ('r' == current) { - state = 3790; - return true; - } - break; - case 3790: - // cscr; - if (';' == current) { - match = "\uD835\uDCB8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3791: - if ('b' == current) { - state = 3792; - return true; - } - else if ('p' == current) { - state = 3794; - return true; - } - break; - case 3792: - // csub; - if (';' == current) { - match = "\u2ACF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 3793; - return true; - } - break; - case 3793: - // csube; - if (';' == current) { - match = "\u2AD1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3794: - // csup; - if (';' == current) { - match = "\u2AD0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 3795; - return true; - } - break; - case 3795: - // csupe; - if (';' == current) { - match = "\u2AD2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3796: - if ('d' == current) { - state = 3797; - return true; - } - break; - case 3797: - if ('o' == current) { - state = 3798; - return true; - } - break; - case 3798: - if ('t' == current) { - state = 3799; - return true; - } - break; - case 3799: - // ctdot; - if (';' == current) { - match = "\u22EF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3800: - switch (current) { - case 'd': - state = 3801; - return true; - case 'e': - state = 3807; - return true; - case 'l': - state = 3812; - return true; - case 'p': - state = 3817; - return true; - case 'r': - state = 3834; - return true; - case 'v': - state = 3878; - return true; - case 'w': - state = 3881; - return true; - } - break; - case 3801: - if ('a' == current) { - state = 3802; - return true; - } - break; - case 3802: - if ('r' == current) { - state = 3803; - return true; - } - break; - case 3803: - if ('r' == current) { - state = 3804; - return true; - } - break; - case 3804: - if ('l' == current) { - state = 3805; - return true; - } - else if ('r' == current) { - state = 3806; - return true; - } - break; - case 3805: - // cudarrl; - if (';' == current) { - match = "\u2938"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3806: - // cudarrr; - if (';' == current) { - match = "\u2935"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3807: - if ('p' == current) { - state = 3808; - return true; - } - else if ('s' == current) { - state = 3810; - return true; - } - break; - case 3808: - if ('r' == current) { - state = 3809; - return true; - } - break; - case 3809: - // cuepr; - if (';' == current) { - match = "\u22DE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3810: - if ('c' == current) { - state = 3811; - return true; - } - break; - case 3811: - // cuesc; - if (';' == current) { - match = "\u22DF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3812: - if ('a' == current) { - state = 3813; - return true; - } - break; - case 3813: - if ('r' == current) { - state = 3814; - return true; - } - break; - case 3814: - if ('r' == current) { - state = 3815; - return true; - } - break; - case 3815: - // cularr; - if (';' == current) { - match = "\u21B6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('p' == current) { - state = 3816; - return true; - } - break; - case 3816: - // cularrp; - if (';' == current) { - match = "\u293D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3817: - switch (current) { - case ';': // cup; - match = "\u222A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'b': - state = 3818; - return true; - case 'c': - state = 3823; - return true; - case 'd': - state = 3828; - return true; - case 'o': - state = 3831; - return true; - case 's': - state = 3833; - return true; - } - break; - case 3818: - if ('r' == current) { - state = 3819; - return true; - } - break; - case 3819: - if ('c' == current) { - state = 3820; - return true; - } - break; - case 3820: - if ('a' == current) { - state = 3821; - return true; - } - break; - case 3821: - if ('p' == current) { - state = 3822; - return true; - } - break; - case 3822: - // cupbrcap; - if (';' == current) { - match = "\u2A48"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3823: - if ('a' == current) { - state = 3824; - return true; - } - else if ('u' == current) { - state = 3826; - return true; - } - break; - case 3824: - if ('p' == current) { - state = 3825; - return true; - } - break; - case 3825: - // cupcap; - if (';' == current) { - match = "\u2A46"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3826: - if ('p' == current) { - state = 3827; - return true; - } - break; - case 3827: - // cupcup; - if (';' == current) { - match = "\u2A4A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3828: - if ('o' == current) { - state = 3829; - return true; - } - break; - case 3829: - if ('t' == current) { - state = 3830; - return true; - } - break; - case 3830: - // cupdot; - if (';' == current) { - match = "\u228D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3831: - if ('r' == current) { - state = 3832; - return true; - } - break; - case 3832: - // cupor; - if (';' == current) { - match = "\u2A45"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3833: - // cups; - if (';' == current) { - match = "\u222A\uFE00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3834: - switch (current) { - case 'a': - state = 3835; - return true; - case 'l': - state = 3839; - return true; - case 'r': - state = 3859; - return true; - case 'v': - state = 3862; - return true; - } - break; - case 3835: - if ('r' == current) { - state = 3836; - return true; - } - break; - case 3836: - if ('r' == current) { - state = 3837; - return true; - } - break; - case 3837: - // curarr; - if (';' == current) { - match = "\u21B7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('m' == current) { - state = 3838; - return true; - } - break; - case 3838: - // curarrm; - if (';' == current) { - match = "\u293C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3839: - if ('y' == current) { - state = 3840; - return true; - } - break; - case 3840: - switch (current) { - case 'e': - state = 3841; - return true; - case 'v': - state = 3851; - return true; - case 'w': - state = 3854; - return true; - } - break; - case 3841: - if ('q' == current) { - state = 3842; - return true; - } - break; - case 3842: - if ('p' == current) { - state = 3843; - return true; - } - else if ('s' == current) { - state = 3847; - return true; - } - break; - case 3843: - if ('r' == current) { - state = 3844; - return true; - } - break; - case 3844: - if ('e' == current) { - state = 3845; - return true; - } - break; - case 3845: - if ('c' == current) { - state = 3846; - return true; - } - break; - case 3846: - // curlyeqprec; - if (';' == current) { - match = "\u22DE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3847: - if ('u' == current) { - state = 3848; - return true; - } - break; - case 3848: - if ('c' == current) { - state = 3849; - return true; - } - break; - case 3849: - if ('c' == current) { - state = 3850; - return true; - } - break; - case 3850: - // curlyeqsucc; - if (';' == current) { - match = "\u22DF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3851: - if ('e' == current) { - state = 3852; - return true; - } - break; - case 3852: - if ('e' == current) { - state = 3853; - return true; - } - break; - case 3853: - // curlyvee; - if (';' == current) { - match = "\u22CE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3854: - if ('e' == current) { - state = 3855; - return true; - } - break; - case 3855: - if ('d' == current) { - state = 3856; - return true; - } - break; - case 3856: - if ('g' == current) { - state = 3857; - return true; - } - break; - case 3857: - if ('e' == current) { - state = 3858; - return true; - } - break; - case 3858: - // curlywedge; - if (';' == current) { - match = "\u22CF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3859: - if ('e' == current) { - state = 3860; - return true; - } - break; - case 3860: - // curren - if ('n' == current) { - match = "\u00A4"; - matchLength = consumedCount; - state = 3861; - return true; - } - break; - case 3861: - // curren; - if (';' == current) { - match = "\u00A4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3862: - if ('e' == current) { - state = 3863; - return true; - } - break; - case 3863: - if ('a' == current) { - state = 3864; - return true; - } - break; - case 3864: - if ('r' == current) { - state = 3865; - return true; - } - break; - case 3865: - if ('r' == current) { - state = 3866; - return true; - } - break; - case 3866: - if ('o' == current) { - state = 3867; - return true; - } - break; - case 3867: - if ('w' == current) { - state = 3868; - return true; - } - break; - case 3868: - if ('l' == current) { - state = 3869; - return true; - } - else if ('r' == current) { - state = 3873; - return true; - } - break; - case 3869: - if ('e' == current) { - state = 3870; - return true; - } - break; - case 3870: - if ('f' == current) { - state = 3871; - return true; - } - break; - case 3871: - if ('t' == current) { - state = 3872; - return true; - } - break; - case 3872: - // curvearrowleft; - if (';' == current) { - match = "\u21B6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3873: - if ('i' == current) { - state = 3874; - return true; - } - break; - case 3874: - if ('g' == current) { - state = 3875; - return true; - } - break; - case 3875: - if ('h' == current) { - state = 3876; - return true; - } - break; - case 3876: - if ('t' == current) { - state = 3877; - return true; - } - break; - case 3877: - // curvearrowright; - if (';' == current) { - match = "\u21B7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3878: - if ('e' == current) { - state = 3879; - return true; - } - break; - case 3879: - if ('e' == current) { - state = 3880; - return true; - } - break; - case 3880: - // cuvee; - if (';' == current) { - match = "\u22CE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3881: - if ('e' == current) { - state = 3882; - return true; - } - break; - case 3882: - if ('d' == current) { - state = 3883; - return true; - } - break; - case 3883: - // cuwed; - if (';' == current) { - match = "\u22CF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3884: - if ('c' == current) { - state = 3885; - return true; - } - else if ('i' == current) { - state = 3891; - return true; - } - break; - case 3885: - if ('o' == current) { - state = 3886; - return true; - } - break; - case 3886: - if ('n' == current) { - state = 3887; - return true; - } - break; - case 3887: - if ('i' == current) { - state = 3888; - return true; - } - break; - case 3888: - if ('n' == current) { - state = 3889; - return true; - } - break; - case 3889: - if ('t' == current) { - state = 3890; - return true; - } - break; - case 3890: - // cwconint; - if (';' == current) { - match = "\u2232"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3891: - if ('n' == current) { - state = 3892; - return true; - } - break; - case 3892: - if ('t' == current) { - state = 3893; - return true; - } - break; - case 3893: - // cwint; - if (';' == current) { - match = "\u2231"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3894: - if ('l' == current) { - state = 3895; - return true; - } - break; - case 3895: - if ('c' == current) { - state = 3896; - return true; - } - break; - case 3896: - if ('t' == current) { - state = 3897; - return true; - } - break; - case 3897: - if ('y' == current) { - state = 3898; - return true; - } - break; - case 3898: - // cylcty; - if (';' == current) { - match = "\u232D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3899: - switch (current) { - case 'A': - state = 3900; - return true; - case 'H': - state = 3903; - return true; - case 'a': - state = 3906; - return true; - case 'b': - state = 3920; - return true; - case 'c': - state = 3929; - return true; - case 'd': - state = 3935; - return true; - case 'e': - state = 3948; - return true; - case 'f': - state = 3958; - return true; - case 'h': - state = 3964; - return true; - case 'i': - state = 3969; - return true; - case 'j': - state = 4003; - return true; - case 'l': - state = 4006; - return true; - case 'o': - state = 4014; - return true; - case 'r': - state = 4087; - return true; - case 's': - state = 4101; - return true; - case 't': - state = 4111; - return true; - case 'u': - state = 4118; - return true; - case 'w': - state = 4125; - return true; - case 'z': - state = 4131; - return true; - } - break; - case 3900: - if ('r' == current) { - state = 3901; - return true; - } - break; - case 3901: - if ('r' == current) { - state = 3902; - return true; - } - break; - case 3902: - // dArr; - if (';' == current) { - match = "\u21D3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3903: - if ('a' == current) { - state = 3904; - return true; - } - break; - case 3904: - if ('r' == current) { - state = 3905; - return true; - } - break; - case 3905: - // dHar; - if (';' == current) { - match = "\u2965"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3906: - switch (current) { - case 'g': - state = 3907; - return true; - case 'l': - state = 3911; - return true; - case 'r': - state = 3915; - return true; - case 's': - state = 3917; - return true; - } - break; - case 3907: - if ('g' == current) { - state = 3908; - return true; - } - break; - case 3908: - if ('e' == current) { - state = 3909; - return true; - } - break; - case 3909: - if ('r' == current) { - state = 3910; - return true; - } - break; - case 3910: - // dagger; - if (';' == current) { - match = "\u2020"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3911: - if ('e' == current) { - state = 3912; - return true; - } - break; - case 3912: - if ('t' == current) { - state = 3913; - return true; - } - break; - case 3913: - if ('h' == current) { - state = 3914; - return true; - } - break; - case 3914: - // daleth; - if (';' == current) { - match = "\u2138"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3915: - if ('r' == current) { - state = 3916; - return true; - } - break; - case 3916: - // darr; - if (';' == current) { - match = "\u2193"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3917: - if ('h' == current) { - state = 3918; - return true; - } - break; - case 3918: - // dash; - if (';' == current) { - match = "\u2010"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('v' == current) { - state = 3919; - return true; - } - break; - case 3919: - // dashv; - if (';' == current) { - match = "\u22A3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3920: - if ('k' == current) { - state = 3921; - return true; - } - else if ('l' == current) { - state = 3926; - return true; - } - break; - case 3921: - if ('a' == current) { - state = 3922; - return true; - } - break; - case 3922: - if ('r' == current) { - state = 3923; - return true; - } - break; - case 3923: - if ('o' == current) { - state = 3924; - return true; - } - break; - case 3924: - if ('w' == current) { - state = 3925; - return true; - } - break; - case 3925: - // dbkarow; - if (';' == current) { - match = "\u290F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3926: - if ('a' == current) { - state = 3927; - return true; - } - break; - case 3927: - if ('c' == current) { - state = 3928; - return true; - } - break; - case 3928: - // dblac; - if (';' == current) { - match = "\u02DD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3929: - if ('a' == current) { - state = 3930; - return true; - } - else if ('y' == current) { - state = 3934; - return true; - } - break; - case 3930: - if ('r' == current) { - state = 3931; - return true; - } - break; - case 3931: - if ('o' == current) { - state = 3932; - return true; - } - break; - case 3932: - if ('n' == current) { - state = 3933; - return true; - } - break; - case 3933: - // dcaron; - if (';' == current) { - match = "\u010F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3934: - // dcy; - if (';' == current) { - match = "\u0434"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3935: - switch (current) { - case ';': // dd; - match = "\u2146"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'a': - state = 3936; - return true; - case 'o': - state = 3943; - return true; - } - break; - case 3936: - if ('g' == current) { - state = 3937; - return true; - } - else if ('r' == current) { - state = 3941; - return true; - } - break; - case 3937: - if ('g' == current) { - state = 3938; - return true; - } - break; - case 3938: - if ('e' == current) { - state = 3939; - return true; - } - break; - case 3939: - if ('r' == current) { - state = 3940; - return true; - } - break; - case 3940: - // ddagger; - if (';' == current) { - match = "\u2021"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3941: - if ('r' == current) { - state = 3942; - return true; - } - break; - case 3942: - // ddarr; - if (';' == current) { - match = "\u21CA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3943: - if ('t' == current) { - state = 3944; - return true; - } - break; - case 3944: - if ('s' == current) { - state = 3945; - return true; - } - break; - case 3945: - if ('e' == current) { - state = 3946; - return true; - } - break; - case 3946: - if ('q' == current) { - state = 3947; - return true; - } - break; - case 3947: - // ddotseq; - if (';' == current) { - match = "\u2A77"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3948: - switch (current) { - case 'g': // deg - match = "\u00B0"; - matchLength = consumedCount; - state = 3949; - return true; - case 'l': - state = 3950; - return true; - case 'm': - state = 3953; - return true; - } - break; - case 3949: - // deg; - if (';' == current) { - match = "\u00B0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3950: - if ('t' == current) { - state = 3951; - return true; - } - break; - case 3951: - if ('a' == current) { - state = 3952; - return true; - } - break; - case 3952: - // delta; - if (';' == current) { - match = "\u03B4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3953: - if ('p' == current) { - state = 3954; - return true; - } - break; - case 3954: - if ('t' == current) { - state = 3955; - return true; - } - break; - case 3955: - if ('y' == current) { - state = 3956; - return true; - } - break; - case 3956: - if ('v' == current) { - state = 3957; - return true; - } - break; - case 3957: - // demptyv; - if (';' == current) { - match = "\u29B1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3958: - if ('i' == current) { - state = 3959; - return true; - } - else if ('r' == current) { - state = 3963; - return true; - } - break; - case 3959: - if ('s' == current) { - state = 3960; - return true; - } - break; - case 3960: - if ('h' == current) { - state = 3961; - return true; - } - break; - case 3961: - if ('t' == current) { - state = 3962; - return true; - } - break; - case 3962: - // dfisht; - if (';' == current) { - match = "\u297F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3963: - // dfr; - if (';' == current) { - match = "\uD835\uDD21"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3964: - if ('a' == current) { - state = 3965; - return true; - } - break; - case 3965: - if ('r' == current) { - state = 3966; - return true; - } - break; - case 3966: - if ('l' == current) { - state = 3967; - return true; - } - else if ('r' == current) { - state = 3968; - return true; - } - break; - case 3967: - // dharl; - if (';' == current) { - match = "\u21C3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3968: - // dharr; - if (';' == current) { - match = "\u21C2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3969: - switch (current) { - case 'a': - state = 3970; - return true; - case 'e': - state = 3980; - return true; - case 'g': - state = 3981; - return true; - case 's': - state = 3986; - return true; - case 'v': - state = 3989; - return true; - } - break; - case 3970: - if ('m' == current) { - state = 3971; - return true; - } - break; - case 3971: - switch (current) { - case ';': // diam; - match = "\u22C4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'o': - state = 3972; - return true; - case 's': - state = 3979; - return true; - } - break; - case 3972: - if ('n' == current) { - state = 3973; - return true; - } - break; - case 3973: - if ('d' == current) { - state = 3974; - return true; - } - break; - case 3974: - // diamond; - if (';' == current) { - match = "\u22C4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('s' == current) { - state = 3975; - return true; - } - break; - case 3975: - if ('u' == current) { - state = 3976; - return true; - } - break; - case 3976: - if ('i' == current) { - state = 3977; - return true; - } - break; - case 3977: - if ('t' == current) { - state = 3978; - return true; - } - break; - case 3978: - // diamondsuit; - if (';' == current) { - match = "\u2666"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3979: - // diams; - if (';' == current) { - match = "\u2666"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3980: - // die; - if (';' == current) { - match = "\u00A8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3981: - if ('a' == current) { - state = 3982; - return true; - } - break; - case 3982: - if ('m' == current) { - state = 3983; - return true; - } - break; - case 3983: - if ('m' == current) { - state = 3984; - return true; - } - break; - case 3984: - if ('a' == current) { - state = 3985; - return true; - } - break; - case 3985: - // digamma; - if (';' == current) { - match = "\u03DD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3986: - if ('i' == current) { - state = 3987; - return true; - } - break; - case 3987: - if ('n' == current) { - state = 3988; - return true; - } - break; - case 3988: - // disin; - if (';' == current) { - match = "\u22F2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 3989: - switch (current) { - case ';': // div; - match = "\u00F7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'i': - state = 3990; - return true; - case 'o': - state = 4000; - return true; - } - break; - case 3990: - if ('d' == current) { - state = 3991; - return true; - } - break; - case 3991: - // divide - if ('e' == current) { - match = "\u00F7"; - matchLength = consumedCount; - state = 3992; - return true; - } - break; - case 3992: - // divide; - if (';' == current) { - match = "\u00F7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('o' == current) { - state = 3993; - return true; - } - break; - case 3993: - if ('n' == current) { - state = 3994; - return true; - } - break; - case 3994: - if ('t' == current) { - state = 3995; - return true; - } - break; - case 3995: - if ('i' == current) { - state = 3996; - return true; - } - break; - case 3996: - if ('m' == current) { - state = 3997; - return true; - } - break; - case 3997: - if ('e' == current) { - state = 3998; - return true; - } - break; - case 3998: - if ('s' == current) { - state = 3999; - return true; - } - break; - case 3999: - // divideontimes; - if (';' == current) { - match = "\u22C7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - } - return false; - } - - private boolean parse5(final int current) { - consumedCount++; - switch (state) { - case 4000: - if ('n' == current) { - state = 4001; - return true; - } - break; - case 4001: - if ('x' == current) { - state = 4002; - return true; - } - break; - case 4002: - // divonx; - if (';' == current) { - match = "\u22C7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4003: - if ('c' == current) { - state = 4004; - return true; - } - break; - case 4004: - if ('y' == current) { - state = 4005; - return true; - } - break; - case 4005: - // djcy; - if (';' == current) { - match = "\u0452"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4006: - if ('c' == current) { - state = 4007; - return true; - } - break; - case 4007: - if ('o' == current) { - state = 4008; - return true; - } - else if ('r' == current) { - state = 4011; - return true; - } - break; - case 4008: - if ('r' == current) { - state = 4009; - return true; - } - break; - case 4009: - if ('n' == current) { - state = 4010; - return true; - } - break; - case 4010: - // dlcorn; - if (';' == current) { - match = "\u231E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4011: - if ('o' == current) { - state = 4012; - return true; - } - break; - case 4012: - if ('p' == current) { - state = 4013; - return true; - } - break; - case 4013: - // dlcrop; - if (';' == current) { - match = "\u230D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4014: - switch (current) { - case 'l': - state = 4015; - return true; - case 'p': - state = 4019; - return true; - case 't': - state = 4021; - return true; - case 'u': - state = 4042; - return true; - case 'w': - state = 4054; - return true; - } - break; - case 4015: - if ('l' == current) { - state = 4016; - return true; - } - break; - case 4016: - if ('a' == current) { - state = 4017; - return true; - } - break; - case 4017: - if ('r' == current) { - state = 4018; - return true; - } - break; - case 4018: - // dollar; - if (';' == current) { - match = "$"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4019: - if ('f' == current) { - state = 4020; - return true; - } - break; - case 4020: - // dopf; - if (';' == current) { - match = "\uD835\uDD55"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4021: - switch (current) { - case ';': // dot; - match = "\u02D9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'e': - state = 4022; - return true; - case 'm': - state = 4027; - return true; - case 'p': - state = 4032; - return true; - case 's': - state = 4036; - return true; - } - break; - case 4022: - if ('q' == current) { - state = 4023; - return true; - } - break; - case 4023: - // doteq; - if (';' == current) { - match = "\u2250"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('d' == current) { - state = 4024; - return true; - } - break; - case 4024: - if ('o' == current) { - state = 4025; - return true; - } - break; - case 4025: - if ('t' == current) { - state = 4026; - return true; - } - break; - case 4026: - // doteqdot; - if (';' == current) { - match = "\u2251"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4027: - if ('i' == current) { - state = 4028; - return true; - } - break; - case 4028: - if ('n' == current) { - state = 4029; - return true; - } - break; - case 4029: - if ('u' == current) { - state = 4030; - return true; - } - break; - case 4030: - if ('s' == current) { - state = 4031; - return true; - } - break; - case 4031: - // dotminus; - if (';' == current) { - match = "\u2238"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4032: - if ('l' == current) { - state = 4033; - return true; - } - break; - case 4033: - if ('u' == current) { - state = 4034; - return true; - } - break; - case 4034: - if ('s' == current) { - state = 4035; - return true; - } - break; - case 4035: - // dotplus; - if (';' == current) { - match = "\u2214"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4036: - if ('q' == current) { - state = 4037; - return true; - } - break; - case 4037: - if ('u' == current) { - state = 4038; - return true; - } - break; - case 4038: - if ('a' == current) { - state = 4039; - return true; - } - break; - case 4039: - if ('r' == current) { - state = 4040; - return true; - } - break; - case 4040: - if ('e' == current) { - state = 4041; - return true; - } - break; - case 4041: - // dotsquare; - if (';' == current) { - match = "\u22A1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4042: - if ('b' == current) { - state = 4043; - return true; - } - break; - case 4043: - if ('l' == current) { - state = 4044; - return true; - } - break; - case 4044: - if ('e' == current) { - state = 4045; - return true; - } - break; - case 4045: - if ('b' == current) { - state = 4046; - return true; - } - break; - case 4046: - if ('a' == current) { - state = 4047; - return true; - } - break; - case 4047: - if ('r' == current) { - state = 4048; - return true; - } - break; - case 4048: - if ('w' == current) { - state = 4049; - return true; - } - break; - case 4049: - if ('e' == current) { - state = 4050; - return true; - } - break; - case 4050: - if ('d' == current) { - state = 4051; - return true; - } - break; - case 4051: - if ('g' == current) { - state = 4052; - return true; - } - break; - case 4052: - if ('e' == current) { - state = 4053; - return true; - } - break; - case 4053: - // doublebarwedge; - if (';' == current) { - match = "\u2306"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4054: - if ('n' == current) { - state = 4055; - return true; - } - break; - case 4055: - switch (current) { - case 'a': - state = 4056; - return true; - case 'd': - state = 4061; - return true; - case 'h': - state = 4071; - return true; - } - break; - case 4056: - if ('r' == current) { - state = 4057; - return true; - } - break; - case 4057: - if ('r' == current) { - state = 4058; - return true; - } - break; - case 4058: - if ('o' == current) { - state = 4059; - return true; - } - break; - case 4059: - if ('w' == current) { - state = 4060; - return true; - } - break; - case 4060: - // downarrow; - if (';' == current) { - match = "\u2193"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4061: - if ('o' == current) { - state = 4062; - return true; - } - break; - case 4062: - if ('w' == current) { - state = 4063; - return true; - } - break; - case 4063: - if ('n' == current) { - state = 4064; - return true; - } - break; - case 4064: - if ('a' == current) { - state = 4065; - return true; - } - break; - case 4065: - if ('r' == current) { - state = 4066; - return true; - } - break; - case 4066: - if ('r' == current) { - state = 4067; - return true; - } - break; - case 4067: - if ('o' == current) { - state = 4068; - return true; - } - break; - case 4068: - if ('w' == current) { - state = 4069; - return true; - } - break; - case 4069: - if ('s' == current) { - state = 4070; - return true; - } - break; - case 4070: - // downdownarrows; - if (';' == current) { - match = "\u21CA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4071: - if ('a' == current) { - state = 4072; - return true; - } - break; - case 4072: - if ('r' == current) { - state = 4073; - return true; - } - break; - case 4073: - if ('p' == current) { - state = 4074; - return true; - } - break; - case 4074: - if ('o' == current) { - state = 4075; - return true; - } - break; - case 4075: - if ('o' == current) { - state = 4076; - return true; - } - break; - case 4076: - if ('n' == current) { - state = 4077; - return true; - } - break; - case 4077: - if ('l' == current) { - state = 4078; - return true; - } - else if ('r' == current) { - state = 4082; - return true; - } - break; - case 4078: - if ('e' == current) { - state = 4079; - return true; - } - break; - case 4079: - if ('f' == current) { - state = 4080; - return true; - } - break; - case 4080: - if ('t' == current) { - state = 4081; - return true; - } - break; - case 4081: - // downharpoonleft; - if (';' == current) { - match = "\u21C3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4082: - if ('i' == current) { - state = 4083; - return true; - } - break; - case 4083: - if ('g' == current) { - state = 4084; - return true; - } - break; - case 4084: - if ('h' == current) { - state = 4085; - return true; - } - break; - case 4085: - if ('t' == current) { - state = 4086; - return true; - } - break; - case 4086: - // downharpoonright; - if (';' == current) { - match = "\u21C2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4087: - if ('b' == current) { - state = 4088; - return true; - } - else if ('c' == current) { - state = 4094; - return true; - } - break; - case 4088: - if ('k' == current) { - state = 4089; - return true; - } - break; - case 4089: - if ('a' == current) { - state = 4090; - return true; - } - break; - case 4090: - if ('r' == current) { - state = 4091; - return true; - } - break; - case 4091: - if ('o' == current) { - state = 4092; - return true; - } - break; - case 4092: - if ('w' == current) { - state = 4093; - return true; - } - break; - case 4093: - // drbkarow; - if (';' == current) { - match = "\u2910"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4094: - if ('o' == current) { - state = 4095; - return true; - } - else if ('r' == current) { - state = 4098; - return true; - } - break; - case 4095: - if ('r' == current) { - state = 4096; - return true; - } - break; - case 4096: - if ('n' == current) { - state = 4097; - return true; - } - break; - case 4097: - // drcorn; - if (';' == current) { - match = "\u231F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4098: - if ('o' == current) { - state = 4099; - return true; - } - break; - case 4099: - if ('p' == current) { - state = 4100; - return true; - } - break; - case 4100: - // drcrop; - if (';' == current) { - match = "\u230C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4101: - switch (current) { - case 'c': - state = 4102; - return true; - case 'o': - state = 4105; - return true; - case 't': - state = 4107; - return true; - } - break; - case 4102: - if ('r' == current) { - state = 4103; - return true; - } - else if ('y' == current) { - state = 4104; - return true; - } - break; - case 4103: - // dscr; - if (';' == current) { - match = "\uD835\uDCB9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4104: - // dscy; - if (';' == current) { - match = "\u0455"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4105: - if ('l' == current) { - state = 4106; - return true; - } - break; - case 4106: - // dsol; - if (';' == current) { - match = "\u29F6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4107: - if ('r' == current) { - state = 4108; - return true; - } - break; - case 4108: - if ('o' == current) { - state = 4109; - return true; - } - break; - case 4109: - if ('k' == current) { - state = 4110; - return true; - } - break; - case 4110: - // dstrok; - if (';' == current) { - match = "\u0111"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4111: - if ('d' == current) { - state = 4112; - return true; - } - else if ('r' == current) { - state = 4115; - return true; - } - break; - case 4112: - if ('o' == current) { - state = 4113; - return true; - } - break; - case 4113: - if ('t' == current) { - state = 4114; - return true; - } - break; - case 4114: - // dtdot; - if (';' == current) { - match = "\u22F1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4115: - if ('i' == current) { - state = 4116; - return true; - } - break; - case 4116: - // dtri; - if (';' == current) { - match = "\u25BF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('f' == current) { - state = 4117; - return true; - } - break; - case 4117: - // dtrif; - if (';' == current) { - match = "\u25BE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4118: - if ('a' == current) { - state = 4119; - return true; - } - else if ('h' == current) { - state = 4122; - return true; - } - break; - case 4119: - if ('r' == current) { - state = 4120; - return true; - } - break; - case 4120: - if ('r' == current) { - state = 4121; - return true; - } - break; - case 4121: - // duarr; - if (';' == current) { - match = "\u21F5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4122: - if ('a' == current) { - state = 4123; - return true; - } - break; - case 4123: - if ('r' == current) { - state = 4124; - return true; - } - break; - case 4124: - // duhar; - if (';' == current) { - match = "\u296F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4125: - if ('a' == current) { - state = 4126; - return true; - } - break; - case 4126: - if ('n' == current) { - state = 4127; - return true; - } - break; - case 4127: - if ('g' == current) { - state = 4128; - return true; - } - break; - case 4128: - if ('l' == current) { - state = 4129; - return true; - } - break; - case 4129: - if ('e' == current) { - state = 4130; - return true; - } - break; - case 4130: - // dwangle; - if (';' == current) { - match = "\u29A6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4131: - if ('c' == current) { - state = 4132; - return true; - } - else if ('i' == current) { - state = 4134; - return true; - } - break; - case 4132: - if ('y' == current) { - state = 4133; - return true; - } - break; - case 4133: - // dzcy; - if (';' == current) { - match = "\u045F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4134: - if ('g' == current) { - state = 4135; - return true; - } - break; - case 4135: - if ('r' == current) { - state = 4136; - return true; - } - break; - case 4136: - if ('a' == current) { - state = 4137; - return true; - } - break; - case 4137: - if ('r' == current) { - state = 4138; - return true; - } - break; - case 4138: - if ('r' == current) { - state = 4139; - return true; - } - break; - case 4139: - // dzigrarr; - if (';' == current) { - match = "\u27FF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4140: - switch (current) { - case 'D': - state = 4141; - return true; - case 'a': - state = 4147; - return true; - case 'c': - state = 4156; - return true; - case 'd': - state = 4169; - return true; - case 'e': - state = 4172; - return true; - case 'f': - state = 4173; - return true; - case 'g': - state = 4178; - return true; - case 'l': - state = 4187; - return true; - case 'm': - state = 4199; - return true; - case 'n': - state = 4215; - return true; - case 'o': - state = 4219; - return true; - case 'p': - state = 4225; - return true; - case 'q': - state = 4239; - return true; - case 'r': - state = 4279; - return true; - case 's': - state = 4286; - return true; - case 't': - state = 4294; - return true; - case 'u': - state = 4297; - return true; - case 'x': - state = 4302; - return true; - } - break; - case 4141: - if ('D' == current) { - state = 4142; - return true; - } - else if ('o' == current) { - state = 4145; - return true; - } - break; - case 4142: - if ('o' == current) { - state = 4143; - return true; - } - break; - case 4143: - if ('t' == current) { - state = 4144; - return true; - } - break; - case 4144: - // eDDot; - if (';' == current) { - match = "\u2A77"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4145: - if ('t' == current) { - state = 4146; - return true; - } - break; - case 4146: - // eDot; - if (';' == current) { - match = "\u2251"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4147: - if ('c' == current) { - state = 4148; - return true; - } - else if ('s' == current) { - state = 4152; - return true; - } - break; - case 4148: - if ('u' == current) { - state = 4149; - return true; - } - break; - case 4149: - if ('t' == current) { - state = 4150; - return true; - } - break; - case 4150: - // eacute - if ('e' == current) { - match = "\u00E9"; - matchLength = consumedCount; - state = 4151; - return true; - } - break; - case 4151: - // eacute; - if (';' == current) { - match = "\u00E9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4152: - if ('t' == current) { - state = 4153; - return true; - } - break; - case 4153: - if ('e' == current) { - state = 4154; - return true; - } - break; - case 4154: - if ('r' == current) { - state = 4155; - return true; - } - break; - case 4155: - // easter; - if (';' == current) { - match = "\u2A6E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4156: - switch (current) { - case 'a': - state = 4157; - return true; - case 'i': - state = 4161; - return true; - case 'o': - state = 4164; - return true; - case 'y': - state = 4168; - return true; - } - break; - case 4157: - if ('r' == current) { - state = 4158; - return true; - } - break; - case 4158: - if ('o' == current) { - state = 4159; - return true; - } - break; - case 4159: - if ('n' == current) { - state = 4160; - return true; - } - break; - case 4160: - // ecaron; - if (';' == current) { - match = "\u011B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4161: - if ('r' == current) { - state = 4162; - return true; - } - break; - case 4162: - // ecir; - if (';' == current) { - match = "\u2256"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - // ecirc - else if ('c' == current) { - match = "\u00EA"; - matchLength = consumedCount; - state = 4163; - return true; - } - break; - case 4163: - // ecirc; - if (';' == current) { - match = "\u00EA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4164: - if ('l' == current) { - state = 4165; - return true; - } - break; - case 4165: - if ('o' == current) { - state = 4166; - return true; - } - break; - case 4166: - if ('n' == current) { - state = 4167; - return true; - } - break; - case 4167: - // ecolon; - if (';' == current) { - match = "\u2255"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4168: - // ecy; - if (';' == current) { - match = "\u044D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4169: - if ('o' == current) { - state = 4170; - return true; - } - break; - case 4170: - if ('t' == current) { - state = 4171; - return true; - } - break; - case 4171: - // edot; - if (';' == current) { - match = "\u0117"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4172: - // ee; - if (';' == current) { - match = "\u2147"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4173: - if ('D' == current) { - state = 4174; - return true; - } - else if ('r' == current) { - state = 4177; - return true; - } - break; - case 4174: - if ('o' == current) { - state = 4175; - return true; - } - break; - case 4175: - if ('t' == current) { - state = 4176; - return true; - } - break; - case 4176: - // efDot; - if (';' == current) { - match = "\u2252"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4177: - // efr; - if (';' == current) { - match = "\uD835\uDD22"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4178: - switch (current) { - case ';': // eg; - match = "\u2A9A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'r': - state = 4179; - return true; - case 's': - state = 4183; - return true; - } - break; - case 4179: - if ('a' == current) { - state = 4180; - return true; - } - break; - case 4180: - if ('v' == current) { - state = 4181; - return true; - } - break; - case 4181: - // egrave - if ('e' == current) { - match = "\u00E8"; - matchLength = consumedCount; - state = 4182; - return true; - } - break; - case 4182: - // egrave; - if (';' == current) { - match = "\u00E8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4183: - // egs; - if (';' == current) { - match = "\u2A96"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('d' == current) { - state = 4184; - return true; - } - break; - case 4184: - if ('o' == current) { - state = 4185; - return true; - } - break; - case 4185: - if ('t' == current) { - state = 4186; - return true; - } - break; - case 4186: - // egsdot; - if (';' == current) { - match = "\u2A98"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4187: - switch (current) { - case ';': // el; - match = "\u2A99"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'i': - state = 4188; - return true; - case 'l': - state = 4194; - return true; - case 's': - state = 4195; - return true; - } - break; - case 4188: - if ('n' == current) { - state = 4189; - return true; - } - break; - case 4189: - if ('t' == current) { - state = 4190; - return true; - } - break; - case 4190: - if ('e' == current) { - state = 4191; - return true; - } - break; - case 4191: - if ('r' == current) { - state = 4192; - return true; - } - break; - case 4192: - if ('s' == current) { - state = 4193; - return true; - } - break; - case 4193: - // elinters; - if (';' == current) { - match = "\u23E7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4194: - // ell; - if (';' == current) { - match = "\u2113"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4195: - // els; - if (';' == current) { - match = "\u2A95"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('d' == current) { - state = 4196; - return true; - } - break; - case 4196: - if ('o' == current) { - state = 4197; - return true; - } - break; - case 4197: - if ('t' == current) { - state = 4198; - return true; - } - break; - case 4198: - // elsdot; - if (';' == current) { - match = "\u2A97"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4199: - switch (current) { - case 'a': - state = 4200; - return true; - case 'p': - state = 4203; - return true; - case 's': - state = 4210; - return true; - } - break; - case 4200: - if ('c' == current) { - state = 4201; - return true; - } - break; - case 4201: - if ('r' == current) { - state = 4202; - return true; - } - break; - case 4202: - // emacr; - if (';' == current) { - match = "\u0113"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4203: - if ('t' == current) { - state = 4204; - return true; - } - break; - case 4204: - if ('y' == current) { - state = 4205; - return true; - } - break; - case 4205: - switch (current) { - case ';': // empty; - match = "\u2205"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 's': - state = 4206; - return true; - case 'v': - state = 4209; - return true; - } - break; - case 4206: - if ('e' == current) { - state = 4207; - return true; - } - break; - case 4207: - if ('t' == current) { - state = 4208; - return true; - } - break; - case 4208: - // emptyset; - if (';' == current) { - match = "\u2205"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4209: - // emptyv; - if (';' == current) { - match = "\u2205"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4210: - if ('p' == current) { - state = 4211; - return true; - } - break; - case 4211: - if ('1' == current) { - state = 4212; - return true; - } - // emsp; - else if (';' == current) { - match = "\u2003"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4212: - if ('3' == current) { - state = 4213; - return true; - } - else if ('4' == current) { - state = 4214; - return true; - } - break; - case 4213: - // emsp13; - if (';' == current) { - match = "\u2004"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4214: - // emsp14; - if (';' == current) { - match = "\u2005"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4215: - if ('g' == current) { - state = 4216; - return true; - } - else if ('s' == current) { - state = 4217; - return true; - } - break; - case 4216: - // eng; - if (';' == current) { - match = "\u014B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4217: - if ('p' == current) { - state = 4218; - return true; - } - break; - case 4218: - // ensp; - if (';' == current) { - match = "\u2002"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4219: - if ('g' == current) { - state = 4220; - return true; - } - else if ('p' == current) { - state = 4223; - return true; - } - break; - case 4220: - if ('o' == current) { - state = 4221; - return true; - } - break; - case 4221: - if ('n' == current) { - state = 4222; - return true; - } - break; - case 4222: - // eogon; - if (';' == current) { - match = "\u0119"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4223: - if ('f' == current) { - state = 4224; - return true; - } - break; - case 4224: - // eopf; - if (';' == current) { - match = "\uD835\uDD56"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4225: - switch (current) { - case 'a': - state = 4226; - return true; - case 'l': - state = 4230; - return true; - case 's': - state = 4233; - return true; - } - break; - case 4226: - if ('r' == current) { - state = 4227; - return true; - } - break; - case 4227: - // epar; - if (';' == current) { - match = "\u22D5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('s' == current) { - state = 4228; - return true; - } - break; - case 4228: - if ('l' == current) { - state = 4229; - return true; - } - break; - case 4229: - // eparsl; - if (';' == current) { - match = "\u29E3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4230: - if ('u' == current) { - state = 4231; - return true; - } - break; - case 4231: - if ('s' == current) { - state = 4232; - return true; - } - break; - case 4232: - // eplus; - if (';' == current) { - match = "\u2A71"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4233: - if ('i' == current) { - state = 4234; - return true; - } - break; - case 4234: - switch (current) { - case ';': // epsi; - match = "\u03B5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'l': - state = 4235; - return true; - case 'v': - state = 4238; - return true; - } - break; - case 4235: - if ('o' == current) { - state = 4236; - return true; - } - break; - case 4236: - if ('n' == current) { - state = 4237; - return true; - } - break; - case 4237: - // epsilon; - if (';' == current) { - match = "\u03B5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4238: - // epsiv; - if (';' == current) { - match = "\u03F5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4239: - switch (current) { - case 'c': - state = 4240; - return true; - case 's': - state = 4248; - return true; - case 'u': - state = 4262; - return true; - case 'v': - state = 4273; - return true; - } - break; - case 4240: - if ('i' == current) { - state = 4241; - return true; - } - else if ('o' == current) { - state = 4244; - return true; - } - break; - case 4241: - if ('r' == current) { - state = 4242; - return true; - } - break; - case 4242: - if ('c' == current) { - state = 4243; - return true; - } - break; - case 4243: - // eqcirc; - if (';' == current) { - match = "\u2256"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4244: - if ('l' == current) { - state = 4245; - return true; - } - break; - case 4245: - if ('o' == current) { - state = 4246; - return true; - } - break; - case 4246: - if ('n' == current) { - state = 4247; - return true; - } - break; - case 4247: - // eqcolon; - if (';' == current) { - match = "\u2255"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4248: - if ('i' == current) { - state = 4249; - return true; - } - else if ('l' == current) { - state = 4251; - return true; - } - break; - case 4249: - if ('m' == current) { - state = 4250; - return true; - } - break; - case 4250: - // eqsim; - if (';' == current) { - match = "\u2242"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4251: - if ('a' == current) { - state = 4252; - return true; - } - break; - case 4252: - if ('n' == current) { - state = 4253; - return true; - } - break; - case 4253: - if ('t' == current) { - state = 4254; - return true; - } - break; - case 4254: - if ('g' == current) { - state = 4255; - return true; - } - else if ('l' == current) { - state = 4258; - return true; - } - break; - case 4255: - if ('t' == current) { - state = 4256; - return true; - } - break; - case 4256: - if ('r' == current) { - state = 4257; - return true; - } - break; - case 4257: - // eqslantgtr; - if (';' == current) { - match = "\u2A96"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4258: - if ('e' == current) { - state = 4259; - return true; - } - break; - case 4259: - if ('s' == current) { - state = 4260; - return true; - } - break; - case 4260: - if ('s' == current) { - state = 4261; - return true; - } - break; - case 4261: - // eqslantless; - if (';' == current) { - match = "\u2A95"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4262: - switch (current) { - case 'a': - state = 4263; - return true; - case 'e': - state = 4266; - return true; - case 'i': - state = 4269; - return true; - } - break; - case 4263: - if ('l' == current) { - state = 4264; - return true; - } - break; - case 4264: - if ('s' == current) { - state = 4265; - return true; - } - break; - case 4265: - // equals; - if (';' == current) { - match = "="; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4266: - if ('s' == current) { - state = 4267; - return true; - } - break; - case 4267: - if ('t' == current) { - state = 4268; - return true; - } - break; - case 4268: - // equest; - if (';' == current) { - match = "\u225F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4269: - if ('v' == current) { - state = 4270; - return true; - } - break; - case 4270: - // equiv; - if (';' == current) { - match = "\u2261"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('D' == current) { - state = 4271; - return true; - } - break; - case 4271: - if ('D' == current) { - state = 4272; - return true; - } - break; - case 4272: - // equivDD; - if (';' == current) { - match = "\u2A78"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4273: - if ('p' == current) { - state = 4274; - return true; - } - break; - case 4274: - if ('a' == current) { - state = 4275; - return true; - } - break; - case 4275: - if ('r' == current) { - state = 4276; - return true; - } - break; - case 4276: - if ('s' == current) { - state = 4277; - return true; - } - break; - case 4277: - if ('l' == current) { - state = 4278; - return true; - } - break; - case 4278: - // eqvparsl; - if (';' == current) { - match = "\u29E5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4279: - if ('D' == current) { - state = 4280; - return true; - } - else if ('a' == current) { - state = 4283; - return true; - } - break; - case 4280: - if ('o' == current) { - state = 4281; - return true; - } - break; - case 4281: - if ('t' == current) { - state = 4282; - return true; - } - break; - case 4282: - // erDot; - if (';' == current) { - match = "\u2253"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4283: - if ('r' == current) { - state = 4284; - return true; - } - break; - case 4284: - if ('r' == current) { - state = 4285; - return true; - } - break; - case 4285: - // erarr; - if (';' == current) { - match = "\u2971"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4286: - switch (current) { - case 'c': - state = 4287; - return true; - case 'd': - state = 4289; - return true; - case 'i': - state = 4292; - return true; - } - break; - case 4287: - if ('r' == current) { - state = 4288; - return true; - } - break; - case 4288: - // escr; - if (';' == current) { - match = "\u212F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4289: - if ('o' == current) { - state = 4290; - return true; - } - break; - case 4290: - if ('t' == current) { - state = 4291; - return true; - } - break; - case 4291: - // esdot; - if (';' == current) { - match = "\u2250"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4292: - if ('m' == current) { - state = 4293; - return true; - } - break; - case 4293: - // esim; - if (';' == current) { - match = "\u2242"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4294: - if ('a' == current) { - state = 4295; - return true; - } - // eth - else if ('h' == current) { - match = "\u00F0"; - matchLength = consumedCount; - state = 4296; - return true; - } - break; - case 4295: - // eta; - if (';' == current) { - match = "\u03B7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4296: - // eth; - if (';' == current) { - match = "\u00F0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4297: - if ('m' == current) { - state = 4298; - return true; - } - else if ('r' == current) { - state = 4300; - return true; - } - break; - case 4298: - // euml - if ('l' == current) { - match = "\u00EB"; - matchLength = consumedCount; - state = 4299; - return true; - } - break; - case 4299: - // euml; - if (';' == current) { - match = "\u00EB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4300: - if ('o' == current) { - state = 4301; - return true; - } - break; - case 4301: - // euro; - if (';' == current) { - match = "\u20AC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4302: - switch (current) { - case 'c': - state = 4303; - return true; - case 'i': - state = 4305; - return true; - case 'p': - state = 4308; - return true; - } - break; - case 4303: - if ('l' == current) { - state = 4304; - return true; - } - break; - case 4304: - // excl; - if (';' == current) { - match = "!"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4305: - if ('s' == current) { - state = 4306; - return true; - } - break; - case 4306: - if ('t' == current) { - state = 4307; - return true; - } - break; - case 4307: - // exist; - if (';' == current) { - match = "\u2203"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4308: - if ('e' == current) { - state = 4309; - return true; - } - else if ('o' == current) { - state = 4317; - return true; - } - break; - case 4309: - if ('c' == current) { - state = 4310; - return true; - } - break; - case 4310: - if ('t' == current) { - state = 4311; - return true; - } - break; - case 4311: - if ('a' == current) { - state = 4312; - return true; - } - break; - case 4312: - if ('t' == current) { - state = 4313; - return true; - } - break; - case 4313: - if ('i' == current) { - state = 4314; - return true; - } - break; - case 4314: - if ('o' == current) { - state = 4315; - return true; - } - break; - case 4315: - if ('n' == current) { - state = 4316; - return true; - } - break; - case 4316: - // expectation; - if (';' == current) { - match = "\u2130"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4317: - if ('n' == current) { - state = 4318; - return true; - } - break; - case 4318: - if ('e' == current) { - state = 4319; - return true; - } - break; - case 4319: - if ('n' == current) { - state = 4320; - return true; - } - break; - case 4320: - if ('t' == current) { - state = 4321; - return true; - } - break; - case 4321: - if ('i' == current) { - state = 4322; - return true; - } - break; - case 4322: - if ('a' == current) { - state = 4323; - return true; - } - break; - case 4323: - if ('l' == current) { - state = 4324; - return true; - } - break; - case 4324: - if ('e' == current) { - state = 4325; - return true; - } - break; - case 4325: - // exponentiale; - if (';' == current) { - match = "\u2147"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4326: - switch (current) { - case 'a': - state = 4327; - return true; - case 'c': - state = 4339; - return true; - case 'e': - state = 4341; - return true; - case 'f': - state = 4346; - return true; - case 'i': - state = 4358; - return true; - case 'j': - state = 4362; - return true; - case 'l': - state = 4366; - return true; - case 'n': - state = 4375; - return true; - case 'o': - state = 4378; - return true; - case 'p': - state = 4387; - return true; - case 'r': - state = 4394; - return true; - case 's': - state = 4423; - return true; - } - break; - case 4327: - if ('l' == current) { - state = 4328; - return true; - } - break; - case 4328: - if ('l' == current) { - state = 4329; - return true; - } - break; - case 4329: - if ('i' == current) { - state = 4330; - return true; - } - break; - case 4330: - if ('n' == current) { - state = 4331; - return true; - } - break; - case 4331: - if ('g' == current) { - state = 4332; - return true; - } - break; - case 4332: - if ('d' == current) { - state = 4333; - return true; - } - break; - case 4333: - if ('o' == current) { - state = 4334; - return true; - } - break; - case 4334: - if ('t' == current) { - state = 4335; - return true; - } - break; - case 4335: - if ('s' == current) { - state = 4336; - return true; - } - break; - case 4336: - if ('e' == current) { - state = 4337; - return true; - } - break; - case 4337: - if ('q' == current) { - state = 4338; - return true; - } - break; - case 4338: - // fallingdotseq; - if (';' == current) { - match = "\u2252"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4339: - if ('y' == current) { - state = 4340; - return true; - } - break; - case 4340: - // fcy; - if (';' == current) { - match = "\u0444"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4341: - if ('m' == current) { - state = 4342; - return true; - } - break; - case 4342: - if ('a' == current) { - state = 4343; - return true; - } - break; - case 4343: - if ('l' == current) { - state = 4344; - return true; - } - break; - case 4344: - if ('e' == current) { - state = 4345; - return true; - } - break; - case 4345: - // female; - if (';' == current) { - match = "\u2640"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4346: - switch (current) { - case 'i': - state = 4347; - return true; - case 'l': - state = 4351; - return true; - case 'r': - state = 4357; - return true; - } - break; - case 4347: - if ('l' == current) { - state = 4348; - return true; - } - break; - case 4348: - if ('i' == current) { - state = 4349; - return true; - } - break; - case 4349: - if ('g' == current) { - state = 4350; - return true; - } - break; - case 4350: - // ffilig; - if (';' == current) { - match = "\uFB03"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4351: - if ('i' == current) { - state = 4352; - return true; - } - else if ('l' == current) { - state = 4354; - return true; - } - break; - case 4352: - if ('g' == current) { - state = 4353; - return true; - } - break; - case 4353: - // fflig; - if (';' == current) { - match = "\uFB00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4354: - if ('i' == current) { - state = 4355; - return true; - } - break; - case 4355: - if ('g' == current) { - state = 4356; - return true; - } - break; - case 4356: - // ffllig; - if (';' == current) { - match = "\uFB04"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4357: - // ffr; - if (';' == current) { - match = "\uD835\uDD23"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4358: - if ('l' == current) { - state = 4359; - return true; - } - break; - case 4359: - if ('i' == current) { - state = 4360; - return true; - } - break; - case 4360: - if ('g' == current) { - state = 4361; - return true; - } - break; - case 4361: - // filig; - if (';' == current) { - match = "\uFB01"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4362: - if ('l' == current) { - state = 4363; - return true; - } - break; - case 4363: - if ('i' == current) { - state = 4364; - return true; - } - break; - case 4364: - if ('g' == current) { - state = 4365; - return true; - } - break; - case 4365: - // fjlig; - if (';' == current) { - match = "fj"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4366: - switch (current) { - case 'a': - state = 4367; - return true; - case 'l': - state = 4369; - return true; - case 't': - state = 4372; - return true; - } - break; - case 4367: - if ('t' == current) { - state = 4368; - return true; - } - break; - case 4368: - // flat; - if (';' == current) { - match = "\u266D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4369: - if ('i' == current) { - state = 4370; - return true; - } - break; - case 4370: - if ('g' == current) { - state = 4371; - return true; - } - break; - case 4371: - // fllig; - if (';' == current) { - match = "\uFB02"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4372: - if ('n' == current) { - state = 4373; - return true; - } - break; - case 4373: - if ('s' == current) { - state = 4374; - return true; - } - break; - case 4374: - // fltns; - if (';' == current) { - match = "\u25B1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4375: - if ('o' == current) { - state = 4376; - return true; - } - break; - case 4376: - if ('f' == current) { - state = 4377; - return true; - } - break; - case 4377: - // fnof; - if (';' == current) { - match = "\u0192"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4378: - if ('p' == current) { - state = 4379; - return true; - } - else if ('r' == current) { - state = 4381; - return true; - } - break; - case 4379: - if ('f' == current) { - state = 4380; - return true; - } - break; - case 4380: - // fopf; - if (';' == current) { - match = "\uD835\uDD57"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4381: - if ('a' == current) { - state = 4382; - return true; - } - else if ('k' == current) { - state = 4385; - return true; - } - break; - case 4382: - if ('l' == current) { - state = 4383; - return true; - } - break; - case 4383: - if ('l' == current) { - state = 4384; - return true; - } - break; - case 4384: - // forall; - if (';' == current) { - match = "\u2200"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4385: - // fork; - if (';' == current) { - match = "\u22D4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('v' == current) { - state = 4386; - return true; - } - break; - case 4386: - // forkv; - if (';' == current) { - match = "\u2AD9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4387: - if ('a' == current) { - state = 4388; - return true; - } - break; - case 4388: - if ('r' == current) { - state = 4389; - return true; - } - break; - case 4389: - if ('t' == current) { - state = 4390; - return true; - } - break; - case 4390: - if ('i' == current) { - state = 4391; - return true; - } - break; - case 4391: - if ('n' == current) { - state = 4392; - return true; - } - break; - case 4392: - if ('t' == current) { - state = 4393; - return true; - } - break; - case 4393: - // fpartint; - if (';' == current) { - match = "\u2A0D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4394: - if ('a' == current) { - state = 4395; - return true; - } - else if ('o' == current) { - state = 4420; - return true; - } - break; - case 4395: - if ('c' == current) { - state = 4396; - return true; - } - else if ('s' == current) { - state = 4418; - return true; - } - break; - case 4396: - switch (current) { - case '1': - state = 4397; - return true; - case '2': - state = 4404; - return true; - case '3': - state = 4407; - return true; - case '4': - state = 4411; - return true; - case '5': - state = 4413; - return true; - case '7': - state = 4416; - return true; - } - break; - case 4397: - switch (current) { - case '2': // frac12 - match = "\u00BD"; - matchLength = consumedCount; - state = 4398; - return true; - case '3': - state = 4399; - return true; - case '4': // frac14 - match = "\u00BC"; - matchLength = consumedCount; - state = 4400; - return true; - case '5': - state = 4401; - return true; - case '6': - state = 4402; - return true; - case '8': - state = 4403; - return true; - } - break; - case 4398: - // frac12; - if (';' == current) { - match = "\u00BD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4399: - // frac13; - if (';' == current) { - match = "\u2153"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4400: - // frac14; - if (';' == current) { - match = "\u00BC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4401: - // frac15; - if (';' == current) { - match = "\u2155"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4402: - // frac16; - if (';' == current) { - match = "\u2159"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4403: - // frac18; - if (';' == current) { - match = "\u215B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4404: - if ('3' == current) { - state = 4405; - return true; - } - else if ('5' == current) { - state = 4406; - return true; - } - break; - case 4405: - // frac23; - if (';' == current) { - match = "\u2154"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4406: - // frac25; - if (';' == current) { - match = "\u2156"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4407: - switch (current) { - case '4': // frac34 - match = "\u00BE"; - matchLength = consumedCount; - state = 4408; - return true; - case '5': - state = 4409; - return true; - case '8': - state = 4410; - return true; - } - break; - case 4408: - // frac34; - if (';' == current) { - match = "\u00BE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4409: - // frac35; - if (';' == current) { - match = "\u2157"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4410: - // frac38; - if (';' == current) { - match = "\u215C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4411: - if ('5' == current) { - state = 4412; - return true; - } - break; - case 4412: - // frac45; - if (';' == current) { - match = "\u2158"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4413: - if ('6' == current) { - state = 4414; - return true; - } - else if ('8' == current) { - state = 4415; - return true; - } - break; - case 4414: - // frac56; - if (';' == current) { - match = "\u215A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4415: - // frac58; - if (';' == current) { - match = "\u215D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4416: - if ('8' == current) { - state = 4417; - return true; - } - break; - case 4417: - // frac78; - if (';' == current) { - match = "\u215E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4418: - if ('l' == current) { - state = 4419; - return true; - } - break; - case 4419: - // frasl; - if (';' == current) { - match = "\u2044"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4420: - if ('w' == current) { - state = 4421; - return true; - } - break; - case 4421: - if ('n' == current) { - state = 4422; - return true; - } - break; - case 4422: - // frown; - if (';' == current) { - match = "\u2322"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4423: - if ('c' == current) { - state = 4424; - return true; - } - break; - case 4424: - if ('r' == current) { - state = 4425; - return true; - } - break; - case 4425: - // fscr; - if (';' == current) { - match = "\uD835\uDCBB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4426: - switch (current) { - case 'E': - state = 4427; - return true; - case 'a': - state = 4429; - return true; - case 'b': - state = 4439; - return true; - case 'c': - state = 4444; - return true; - case 'd': - state = 4449; - return true; - case 'e': - state = 4452; - return true; - case 'f': - state = 4472; - return true; - case 'g': - state = 4474; - return true; - case 'i': - state = 4476; - return true; - case 'j': - state = 4480; - return true; - case 'l': - state = 4483; - return true; - case 'n': - state = 4487; - return true; - case 'o': - state = 4501; - return true; - case 'r': - state = 4504; - return true; - case 's': - state = 4508; - return true; - case 't': // gt - match = ">"; - matchLength = consumedCount; - state = 4515; - return true; - case 'v': - state = 4562; - return true; - } - break; - case 4427: - // gE; - if (';' == current) { - match = "\u2267"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('l' == current) { - state = 4428; - return true; - } - break; - case 4428: - // gEl; - if (';' == current) { - match = "\u2A8C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4429: - switch (current) { - case 'c': - state = 4430; - return true; - case 'm': - state = 4434; - return true; - case 'p': - state = 4438; - return true; - } - break; - case 4430: - if ('u' == current) { - state = 4431; - return true; - } - break; - case 4431: - if ('t' == current) { - state = 4432; - return true; - } - break; - case 4432: - if ('e' == current) { - state = 4433; - return true; - } - break; - case 4433: - // gacute; - if (';' == current) { - match = "\u01F5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4434: - if ('m' == current) { - state = 4435; - return true; - } - break; - case 4435: - if ('a' == current) { - state = 4436; - return true; - } - break; - case 4436: - // gamma; - if (';' == current) { - match = "\u03B3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('d' == current) { - state = 4437; - return true; - } - break; - case 4437: - // gammad; - if (';' == current) { - match = "\u03DD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4438: - // gap; - if (';' == current) { - match = "\u2A86"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4439: - if ('r' == current) { - state = 4440; - return true; - } - break; - case 4440: - if ('e' == current) { - state = 4441; - return true; - } - break; - case 4441: - if ('v' == current) { - state = 4442; - return true; - } - break; - case 4442: - if ('e' == current) { - state = 4443; - return true; - } - break; - case 4443: - // gbreve; - if (';' == current) { - match = "\u011F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4444: - if ('i' == current) { - state = 4445; - return true; - } - else if ('y' == current) { - state = 4448; - return true; - } - break; - case 4445: - if ('r' == current) { - state = 4446; - return true; - } - break; - case 4446: - if ('c' == current) { - state = 4447; - return true; - } - break; - case 4447: - // gcirc; - if (';' == current) { - match = "\u011D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4448: - // gcy; - if (';' == current) { - match = "\u0433"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4449: - if ('o' == current) { - state = 4450; - return true; - } - break; - case 4450: - if ('t' == current) { - state = 4451; - return true; - } - break; - case 4451: - // gdot; - if (';' == current) { - match = "\u0121"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4452: - switch (current) { - case ';': // ge; - match = "\u2265"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'l': - state = 4453; - return true; - case 'q': - state = 4454; - return true; - case 's': - state = 4461; - return true; - } - break; - case 4453: - // gel; - if (';' == current) { - match = "\u22DB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4454: - switch (current) { - case ';': // geq; - match = "\u2265"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'q': - state = 4455; - return true; - case 's': - state = 4456; - return true; - } - break; - case 4455: - // geqq; - if (';' == current) { - match = "\u2267"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4456: - if ('l' == current) { - state = 4457; - return true; - } - break; - case 4457: - if ('a' == current) { - state = 4458; - return true; - } - break; - case 4458: - if ('n' == current) { - state = 4459; - return true; - } - break; - case 4459: - if ('t' == current) { - state = 4460; - return true; - } - break; - case 4460: - // geqslant; - if (';' == current) { - match = "\u2A7E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4461: - switch (current) { - case ';': // ges; - match = "\u2A7E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'c': - state = 4462; - return true; - case 'd': - state = 4464; - return true; - case 'l': - state = 4469; - return true; - } - break; - case 4462: - if ('c' == current) { - state = 4463; - return true; - } - break; - case 4463: - // gescc; - if (';' == current) { - match = "\u2AA9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4464: - if ('o' == current) { - state = 4465; - return true; - } - break; - case 4465: - if ('t' == current) { - state = 4466; - return true; - } - break; - case 4466: - // gesdot; - if (';' == current) { - match = "\u2A80"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('o' == current) { - state = 4467; - return true; - } - break; - case 4467: - // gesdoto; - if (';' == current) { - match = "\u2A82"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('l' == current) { - state = 4468; - return true; - } - break; - case 4468: - // gesdotol; - if (';' == current) { - match = "\u2A84"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4469: - // gesl; - if (';' == current) { - match = "\u22DB\uFE00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 4470; - return true; - } - break; - case 4470: - if ('s' == current) { - state = 4471; - return true; - } - break; - case 4471: - // gesles; - if (';' == current) { - match = "\u2A94"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4472: - if ('r' == current) { - state = 4473; - return true; - } - break; - case 4473: - // gfr; - if (';' == current) { - match = "\uD835\uDD24"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4474: - // gg; - if (';' == current) { - match = "\u226B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('g' == current) { - state = 4475; - return true; - } - break; - case 4475: - // ggg; - if (';' == current) { - match = "\u22D9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4476: - if ('m' == current) { - state = 4477; - return true; - } - break; - case 4477: - if ('e' == current) { - state = 4478; - return true; - } - break; - case 4478: - if ('l' == current) { - state = 4479; - return true; - } - break; - case 4479: - // gimel; - if (';' == current) { - match = "\u2137"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4480: - if ('c' == current) { - state = 4481; - return true; - } - break; - case 4481: - if ('y' == current) { - state = 4482; - return true; - } - break; - case 4482: - // gjcy; - if (';' == current) { - match = "\u0453"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4483: - switch (current) { - case ';': // gl; - match = "\u2277"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 4484; - return true; - case 'a': - state = 4485; - return true; - case 'j': - state = 4486; - return true; - } - break; - case 4484: - // glE; - if (';' == current) { - match = "\u2A92"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4485: - // gla; - if (';' == current) { - match = "\u2AA5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4486: - // glj; - if (';' == current) { - match = "\u2AA4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4487: - switch (current) { - case 'E': - state = 4488; - return true; - case 'a': - state = 4489; - return true; - case 'e': - state = 4495; - return true; - case 's': - state = 4498; - return true; - } - break; - case 4488: - // gnE; - if (';' == current) { - match = "\u2269"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4489: - if ('p' == current) { - state = 4490; - return true; - } - break; - case 4490: - // gnap; - if (';' == current) { - match = "\u2A8A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('p' == current) { - state = 4491; - return true; - } - break; - case 4491: - if ('r' == current) { - state = 4492; - return true; - } - break; - case 4492: - if ('o' == current) { - state = 4493; - return true; - } - break; - case 4493: - if ('x' == current) { - state = 4494; - return true; - } - break; - case 4494: - // gnapprox; - if (';' == current) { - match = "\u2A8A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4495: - // gne; - if (';' == current) { - match = "\u2A88"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('q' == current) { - state = 4496; - return true; - } - break; - case 4496: - // gneq; - if (';' == current) { - match = "\u2A88"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('q' == current) { - state = 4497; - return true; - } - break; - case 4497: - // gneqq; - if (';' == current) { - match = "\u2269"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4498: - if ('i' == current) { - state = 4499; - return true; - } - break; - case 4499: - if ('m' == current) { - state = 4500; - return true; - } - break; - case 4500: - // gnsim; - if (';' == current) { - match = "\u22E7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4501: - if ('p' == current) { - state = 4502; - return true; - } - break; - case 4502: - if ('f' == current) { - state = 4503; - return true; - } - break; - case 4503: - // gopf; - if (';' == current) { - match = "\uD835\uDD58"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4504: - if ('a' == current) { - state = 4505; - return true; - } - break; - case 4505: - if ('v' == current) { - state = 4506; - return true; - } - break; - case 4506: - if ('e' == current) { - state = 4507; - return true; - } - break; - case 4507: - // grave; - if (';' == current) { - match = "`"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4508: - if ('c' == current) { - state = 4509; - return true; - } - else if ('i' == current) { - state = 4511; - return true; - } - break; - case 4509: - if ('r' == current) { - state = 4510; - return true; - } - break; - case 4510: - // gscr; - if (';' == current) { - match = "\u210A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4511: - if ('m' == current) { - state = 4512; - return true; - } - break; - case 4512: - switch (current) { - case ';': // gsim; - match = "\u2273"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'e': - state = 4513; - return true; - case 'l': - state = 4514; - return true; - } - break; - case 4513: - // gsime; - if (';' == current) { - match = "\u2A8E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4514: - // gsiml; - if (';' == current) { - match = "\u2A90"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4515: - switch (current) { - case ';': // gt; - match = ">"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'c': - state = 4516; - return true; - case 'd': - state = 4520; - return true; - case 'l': - state = 4523; - return true; - case 'q': - state = 4527; - return true; - case 'r': - state = 4532; - return true; - } - break; - case 4516: - if ('c' == current) { - state = 4517; - return true; - } - else if ('i' == current) { - state = 4518; - return true; - } - break; - case 4517: - // gtcc; - if (';' == current) { - match = "\u2AA7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4518: - if ('r' == current) { - state = 4519; - return true; - } - break; - case 4519: - // gtcir; - if (';' == current) { - match = "\u2A7A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4520: - if ('o' == current) { - state = 4521; - return true; - } - break; - case 4521: - if ('t' == current) { - state = 4522; - return true; - } - break; - case 4522: - // gtdot; - if (';' == current) { - match = "\u22D7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4523: - if ('P' == current) { - state = 4524; - return true; - } - break; - case 4524: - if ('a' == current) { - state = 4525; - return true; - } - break; - case 4525: - if ('r' == current) { - state = 4526; - return true; - } - break; - case 4526: - // gtlPar; - if (';' == current) { - match = "\u2995"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4527: - if ('u' == current) { - state = 4528; - return true; - } - break; - case 4528: - if ('e' == current) { - state = 4529; - return true; - } - break; - case 4529: - if ('s' == current) { - state = 4530; - return true; - } - break; - case 4530: - if ('t' == current) { - state = 4531; - return true; - } - break; - case 4531: - // gtquest; - if (';' == current) { - match = "\u2A7C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4532: - switch (current) { - case 'a': - state = 4533; - return true; - case 'd': - state = 4541; - return true; - case 'e': - state = 4544; - return true; - case 'l': - state = 4555; - return true; - case 's': - state = 4559; - return true; - } - break; - case 4533: - if ('p' == current) { - state = 4534; - return true; - } - else if ('r' == current) { - state = 4539; - return true; - } - break; - case 4534: - if ('p' == current) { - state = 4535; - return true; - } - break; - case 4535: - if ('r' == current) { - state = 4536; - return true; - } - break; - case 4536: - if ('o' == current) { - state = 4537; - return true; - } - break; - case 4537: - if ('x' == current) { - state = 4538; - return true; - } - break; - case 4538: - // gtrapprox; - if (';' == current) { - match = "\u2A86"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4539: - if ('r' == current) { - state = 4540; - return true; - } - break; - case 4540: - // gtrarr; - if (';' == current) { - match = "\u2978"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4541: - if ('o' == current) { - state = 4542; - return true; - } - break; - case 4542: - if ('t' == current) { - state = 4543; - return true; - } - break; - case 4543: - // gtrdot; - if (';' == current) { - match = "\u22D7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4544: - if ('q' == current) { - state = 4545; - return true; - } - break; - case 4545: - if ('l' == current) { - state = 4546; - return true; - } - else if ('q' == current) { - state = 4550; - return true; - } - break; - case 4546: - if ('e' == current) { - state = 4547; - return true; - } - break; - case 4547: - if ('s' == current) { - state = 4548; - return true; - } - break; - case 4548: - if ('s' == current) { - state = 4549; - return true; - } - break; - case 4549: - // gtreqless; - if (';' == current) { - match = "\u22DB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4550: - if ('l' == current) { - state = 4551; - return true; - } - break; - case 4551: - if ('e' == current) { - state = 4552; - return true; - } - break; - case 4552: - if ('s' == current) { - state = 4553; - return true; - } - break; - case 4553: - if ('s' == current) { - state = 4554; - return true; - } - break; - case 4554: - // gtreqqless; - if (';' == current) { - match = "\u2A8C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4555: - if ('e' == current) { - state = 4556; - return true; - } - break; - case 4556: - if ('s' == current) { - state = 4557; - return true; - } - break; - case 4557: - if ('s' == current) { - state = 4558; - return true; - } - break; - case 4558: - // gtrless; - if (';' == current) { - match = "\u2277"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4559: - if ('i' == current) { - state = 4560; - return true; - } - break; - case 4560: - if ('m' == current) { - state = 4561; - return true; - } - break; - case 4561: - // gtrsim; - if (';' == current) { - match = "\u2273"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4562: - if ('e' == current) { - state = 4563; - return true; - } - else if ('n' == current) { - state = 4570; - return true; - } - break; - case 4563: - if ('r' == current) { - state = 4564; - return true; - } - break; - case 4564: - if ('t' == current) { - state = 4565; - return true; - } - break; - case 4565: - if ('n' == current) { - state = 4566; - return true; - } - break; - case 4566: - if ('e' == current) { - state = 4567; - return true; - } - break; - case 4567: - if ('q' == current) { - state = 4568; - return true; - } - break; - case 4568: - if ('q' == current) { - state = 4569; - return true; - } - break; - case 4569: - // gvertneqq; - if (';' == current) { - match = "\u2269\uFE00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4570: - if ('E' == current) { - state = 4571; - return true; - } - break; - case 4571: - // gvnE; - if (';' == current) { - match = "\u2269\uFE00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4572: - switch (current) { - case 'A': - state = 4573; - return true; - case 'a': - state = 4576; - return true; - case 'b': - state = 4596; - return true; - case 'c': - state = 4599; - return true; - case 'e': - state = 4603; - return true; - case 'f': - state = 4619; - return true; - case 'k': - state = 4621; - return true; - case 'o': - state = 4633; - return true; - case 's': - state = 4668; - return true; - case 'y': - state = 4679; - return true; - } - break; - case 4573: - if ('r' == current) { - state = 4574; - return true; - } - break; - case 4574: - if ('r' == current) { - state = 4575; - return true; - } - break; - case 4575: - // hArr; - if (';' == current) { - match = "\u21D4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4576: - switch (current) { - case 'i': - state = 4577; - return true; - case 'l': - state = 4581; - return true; - case 'm': - state = 4583; - return true; - case 'r': - state = 4587; - return true; - } - break; - case 4577: - if ('r' == current) { - state = 4578; - return true; - } - break; - case 4578: - if ('s' == current) { - state = 4579; - return true; - } - break; - case 4579: - if ('p' == current) { - state = 4580; - return true; - } - break; - case 4580: - // hairsp; - if (';' == current) { - match = "\u200A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4581: - if ('f' == current) { - state = 4582; - return true; - } - break; - case 4582: - // half; - if (';' == current) { - match = "\u00BD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4583: - if ('i' == current) { - state = 4584; - return true; - } - break; - case 4584: - if ('l' == current) { - state = 4585; - return true; - } - break; - case 4585: - if ('t' == current) { - state = 4586; - return true; - } - break; - case 4586: - // hamilt; - if (';' == current) { - match = "\u210B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4587: - if ('d' == current) { - state = 4588; - return true; - } - else if ('r' == current) { - state = 4591; - return true; - } - break; - case 4588: - if ('c' == current) { - state = 4589; - return true; - } - break; - case 4589: - if ('y' == current) { - state = 4590; - return true; - } - break; - case 4590: - // hardcy; - if (';' == current) { - match = "\u044A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4591: - switch (current) { - case ';': // harr; - match = "\u2194"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'c': - state = 4592; - return true; - case 'w': - state = 4595; - return true; - } - break; - case 4592: - if ('i' == current) { - state = 4593; - return true; - } - break; - case 4593: - if ('r' == current) { - state = 4594; - return true; - } - break; - case 4594: - // harrcir; - if (';' == current) { - match = "\u2948"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4595: - // harrw; - if (';' == current) { - match = "\u21AD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4596: - if ('a' == current) { - state = 4597; - return true; - } - break; - case 4597: - if ('r' == current) { - state = 4598; - return true; - } - break; - case 4598: - // hbar; - if (';' == current) { - match = "\u210F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4599: - if ('i' == current) { - state = 4600; - return true; - } - break; - case 4600: - if ('r' == current) { - state = 4601; - return true; - } - break; - case 4601: - if ('c' == current) { - state = 4602; - return true; - } - break; - case 4602: - // hcirc; - if (';' == current) { - match = "\u0125"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4603: - switch (current) { - case 'a': - state = 4604; - return true; - case 'l': - state = 4611; - return true; - case 'r': - state = 4615; - return true; - } - break; - case 4604: - if ('r' == current) { - state = 4605; - return true; - } - break; - case 4605: - if ('t' == current) { - state = 4606; - return true; - } - break; - case 4606: - if ('s' == current) { - state = 4607; - return true; - } - break; - case 4607: - // hearts; - if (';' == current) { - match = "\u2665"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('u' == current) { - state = 4608; - return true; - } - break; - case 4608: - if ('i' == current) { - state = 4609; - return true; - } - break; - case 4609: - if ('t' == current) { - state = 4610; - return true; - } - break; - case 4610: - // heartsuit; - if (';' == current) { - match = "\u2665"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4611: - if ('l' == current) { - state = 4612; - return true; - } - break; - case 4612: - if ('i' == current) { - state = 4613; - return true; - } - break; - case 4613: - if ('p' == current) { - state = 4614; - return true; - } - break; - case 4614: - // hellip; - if (';' == current) { - match = "\u2026"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4615: - if ('c' == current) { - state = 4616; - return true; - } - break; - case 4616: - if ('o' == current) { - state = 4617; - return true; - } - break; - case 4617: - if ('n' == current) { - state = 4618; - return true; - } - break; - case 4618: - // hercon; - if (';' == current) { - match = "\u22B9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4619: - if ('r' == current) { - state = 4620; - return true; - } - break; - case 4620: - // hfr; - if (';' == current) { - match = "\uD835\uDD25"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4621: - if ('s' == current) { - state = 4622; - return true; - } - break; - case 4622: - if ('e' == current) { - state = 4623; - return true; - } - else if ('w' == current) { - state = 4628; - return true; - } - break; - case 4623: - if ('a' == current) { - state = 4624; - return true; - } - break; - case 4624: - if ('r' == current) { - state = 4625; - return true; - } - break; - case 4625: - if ('o' == current) { - state = 4626; - return true; - } - break; - case 4626: - if ('w' == current) { - state = 4627; - return true; - } - break; - case 4627: - // hksearow; - if (';' == current) { - match = "\u2925"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4628: - if ('a' == current) { - state = 4629; - return true; - } - break; - case 4629: - if ('r' == current) { - state = 4630; - return true; - } - break; - case 4630: - if ('o' == current) { - state = 4631; - return true; - } - break; - case 4631: - if ('w' == current) { - state = 4632; - return true; - } - break; - case 4632: - // hkswarow; - if (';' == current) { - match = "\u2926"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4633: - switch (current) { - case 'a': - state = 4634; - return true; - case 'm': - state = 4637; - return true; - case 'o': - state = 4641; - return true; - case 'p': - state = 4662; - return true; - case 'r': - state = 4664; - return true; - } - break; - case 4634: - if ('r' == current) { - state = 4635; - return true; - } - break; - case 4635: - if ('r' == current) { - state = 4636; - return true; - } - break; - case 4636: - // hoarr; - if (';' == current) { - match = "\u21FF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4637: - if ('t' == current) { - state = 4638; - return true; - } - break; - case 4638: - if ('h' == current) { - state = 4639; - return true; - } - break; - case 4639: - if ('t' == current) { - state = 4640; - return true; - } - break; - case 4640: - // homtht; - if (';' == current) { - match = "\u223B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4641: - if ('k' == current) { - state = 4642; - return true; - } - break; - case 4642: - if ('l' == current) { - state = 4643; - return true; - } - else if ('r' == current) { - state = 4652; - return true; - } - break; - case 4643: - if ('e' == current) { - state = 4644; - return true; - } - break; - case 4644: - if ('f' == current) { - state = 4645; - return true; - } - break; - case 4645: - if ('t' == current) { - state = 4646; - return true; - } - break; - case 4646: - if ('a' == current) { - state = 4647; - return true; - } - break; - case 4647: - if ('r' == current) { - state = 4648; - return true; - } - break; - case 4648: - if ('r' == current) { - state = 4649; - return true; - } - break; - case 4649: - if ('o' == current) { - state = 4650; - return true; - } - break; - case 4650: - if ('w' == current) { - state = 4651; - return true; - } - break; - case 4651: - // hookleftarrow; - if (';' == current) { - match = "\u21A9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4652: - if ('i' == current) { - state = 4653; - return true; - } - break; - case 4653: - if ('g' == current) { - state = 4654; - return true; - } - break; - case 4654: - if ('h' == current) { - state = 4655; - return true; - } - break; - case 4655: - if ('t' == current) { - state = 4656; - return true; - } - break; - case 4656: - if ('a' == current) { - state = 4657; - return true; - } - break; - case 4657: - if ('r' == current) { - state = 4658; - return true; - } - break; - case 4658: - if ('r' == current) { - state = 4659; - return true; - } - break; - case 4659: - if ('o' == current) { - state = 4660; - return true; - } - break; - case 4660: - if ('w' == current) { - state = 4661; - return true; - } - break; - case 4661: - // hookrightarrow; - if (';' == current) { - match = "\u21AA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4662: - if ('f' == current) { - state = 4663; - return true; - } - break; - case 4663: - // hopf; - if (';' == current) { - match = "\uD835\uDD59"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4664: - if ('b' == current) { - state = 4665; - return true; - } - break; - case 4665: - if ('a' == current) { - state = 4666; - return true; - } - break; - case 4666: - if ('r' == current) { - state = 4667; - return true; - } - break; - case 4667: - // horbar; - if (';' == current) { - match = "\u2015"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4668: - switch (current) { - case 'c': - state = 4669; - return true; - case 'l': - state = 4671; - return true; - case 't': - state = 4675; - return true; - } - break; - case 4669: - if ('r' == current) { - state = 4670; - return true; - } - break; - case 4670: - // hscr; - if (';' == current) { - match = "\uD835\uDCBD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4671: - if ('a' == current) { - state = 4672; - return true; - } - break; - case 4672: - if ('s' == current) { - state = 4673; - return true; - } - break; - case 4673: - if ('h' == current) { - state = 4674; - return true; - } - break; - case 4674: - // hslash; - if (';' == current) { - match = "\u210F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4675: - if ('r' == current) { - state = 4676; - return true; - } - break; - case 4676: - if ('o' == current) { - state = 4677; - return true; - } - break; - case 4677: - if ('k' == current) { - state = 4678; - return true; - } - break; - case 4678: - // hstrok; - if (';' == current) { - match = "\u0127"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4679: - if ('b' == current) { - state = 4680; - return true; - } - else if ('p' == current) { - state = 4684; - return true; - } - break; - case 4680: - if ('u' == current) { - state = 4681; - return true; - } - break; - case 4681: - if ('l' == current) { - state = 4682; - return true; - } - break; - case 4682: - if ('l' == current) { - state = 4683; - return true; - } - break; - case 4683: - // hybull; - if (';' == current) { - match = "\u2043"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4684: - if ('h' == current) { - state = 4685; - return true; - } - break; - case 4685: - if ('e' == current) { - state = 4686; - return true; - } - break; - case 4686: - if ('n' == current) { - state = 4687; - return true; - } - break; - case 4687: - // hyphen; - if (';' == current) { - match = "\u2010"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4688: - switch (current) { - case 'a': - state = 4689; - return true; - case 'c': - state = 4694; - return true; - case 'e': - state = 4699; - return true; - case 'f': - state = 4705; - return true; - case 'g': - state = 4708; - return true; - case 'i': - state = 4713; - return true; - case 'j': - state = 4727; - return true; - case 'm': - state = 4731; - return true; - case 'n': - state = 4752; - return true; - case 'o': - state = 4789; - return true; - case 'p': - state = 4799; - return true; - case 'q': - state = 4803; - return true; - case 's': - state = 4808; - return true; - case 't': - state = 4820; - return true; - case 'u': - state = 4825; - return true; - } - break; - case 4689: - if ('c' == current) { - state = 4690; - return true; - } - break; - case 4690: - if ('u' == current) { - state = 4691; - return true; - } - break; - case 4691: - if ('t' == current) { - state = 4692; - return true; - } - break; - case 4692: - // iacute - if ('e' == current) { - match = "\u00ED"; - matchLength = consumedCount; - state = 4693; - return true; - } - break; - case 4693: - // iacute; - if (';' == current) { - match = "\u00ED"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4694: - switch (current) { - case ';': // ic; - match = "\u2063"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'i': - state = 4695; - return true; - case 'y': - state = 4698; - return true; - } - break; - case 4695: - if ('r' == current) { - state = 4696; - return true; - } - break; - case 4696: - // icirc - if ('c' == current) { - match = "\u00EE"; - matchLength = consumedCount; - state = 4697; - return true; - } - break; - case 4697: - // icirc; - if (';' == current) { - match = "\u00EE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4698: - // icy; - if (';' == current) { - match = "\u0438"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4699: - if ('c' == current) { - state = 4700; - return true; - } - else if ('x' == current) { - state = 4702; - return true; - } - break; - case 4700: - if ('y' == current) { - state = 4701; - return true; - } - break; - case 4701: - // iecy; - if (';' == current) { - match = "\u0435"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4702: - if ('c' == current) { - state = 4703; - return true; - } - break; - case 4703: - // iexcl - if ('l' == current) { - match = "\u00A1"; - matchLength = consumedCount; - state = 4704; - return true; - } - break; - case 4704: - // iexcl; - if (';' == current) { - match = "\u00A1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4705: - if ('f' == current) { - state = 4706; - return true; - } - else if ('r' == current) { - state = 4707; - return true; - } - break; - case 4706: - // iff; - if (';' == current) { - match = "\u21D4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4707: - // ifr; - if (';' == current) { - match = "\uD835\uDD26"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4708: - if ('r' == current) { - state = 4709; - return true; - } - break; - case 4709: - if ('a' == current) { - state = 4710; - return true; - } - break; - case 4710: - if ('v' == current) { - state = 4711; - return true; - } - break; - case 4711: - // igrave - if ('e' == current) { - match = "\u00EC"; - matchLength = consumedCount; - state = 4712; - return true; - } - break; - case 4712: - // igrave; - if (';' == current) { - match = "\u00EC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4713: - switch (current) { - case ';': // ii; - match = "\u2148"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'i': - state = 4714; - return true; - case 'n': - state = 4720; - return true; - case 'o': - state = 4724; - return true; - } - break; - case 4714: - if ('i' == current) { - state = 4715; - return true; - } - else if ('n' == current) { - state = 4718; - return true; - } - break; - case 4715: - if ('n' == current) { - state = 4716; - return true; - } - break; - case 4716: - if ('t' == current) { - state = 4717; - return true; - } - break; - case 4717: - // iiiint; - if (';' == current) { - match = "\u2A0C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4718: - if ('t' == current) { - state = 4719; - return true; - } - break; - case 4719: - // iiint; - if (';' == current) { - match = "\u222D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4720: - if ('f' == current) { - state = 4721; - return true; - } - break; - case 4721: - if ('i' == current) { - state = 4722; - return true; - } - break; - case 4722: - if ('n' == current) { - state = 4723; - return true; - } - break; - case 4723: - // iinfin; - if (';' == current) { - match = "\u29DC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4724: - if ('t' == current) { - state = 4725; - return true; - } - break; - case 4725: - if ('a' == current) { - state = 4726; - return true; - } - break; - case 4726: - // iiota; - if (';' == current) { - match = "\u2129"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4727: - if ('l' == current) { - state = 4728; - return true; - } - break; - case 4728: - if ('i' == current) { - state = 4729; - return true; - } - break; - case 4729: - if ('g' == current) { - state = 4730; - return true; - } - break; - case 4730: - // ijlig; - if (';' == current) { - match = "\u0133"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4731: - switch (current) { - case 'a': - state = 4732; - return true; - case 'o': - state = 4747; - return true; - case 'p': - state = 4749; - return true; - } - break; - case 4732: - switch (current) { - case 'c': - state = 4733; - return true; - case 'g': - state = 4735; - return true; - case 't': - state = 4745; - return true; - } - break; - case 4733: - if ('r' == current) { - state = 4734; - return true; - } - break; - case 4734: - // imacr; - if (';' == current) { - match = "\u012B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4735: - switch (current) { - case 'e': - state = 4736; - return true; - case 'l': - state = 4737; - return true; - case 'p': - state = 4741; - return true; - } - break; - case 4736: - // image; - if (';' == current) { - match = "\u2111"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4737: - if ('i' == current) { - state = 4738; - return true; - } - break; - case 4738: - if ('n' == current) { - state = 4739; - return true; - } - break; - case 4739: - if ('e' == current) { - state = 4740; - return true; - } - break; - case 4740: - // imagline; - if (';' == current) { - match = "\u2110"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4741: - if ('a' == current) { - state = 4742; - return true; - } - break; - case 4742: - if ('r' == current) { - state = 4743; - return true; - } - break; - case 4743: - if ('t' == current) { - state = 4744; - return true; - } - break; - case 4744: - // imagpart; - if (';' == current) { - match = "\u2111"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4745: - if ('h' == current) { - state = 4746; - return true; - } - break; - case 4746: - // imath; - if (';' == current) { - match = "\u0131"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4747: - if ('f' == current) { - state = 4748; - return true; - } - break; - case 4748: - // imof; - if (';' == current) { - match = "\u22B7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4749: - if ('e' == current) { - state = 4750; - return true; - } - break; - case 4750: - if ('d' == current) { - state = 4751; - return true; - } - break; - case 4751: - // imped; - if (';' == current) { - match = "\u01B5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4752: - switch (current) { - case ';': // in; - match = "\u2208"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'c': - state = 4753; - return true; - case 'f': - state = 4757; - return true; - case 'o': - state = 4763; - return true; - case 't': - state = 4767; - return true; - } - break; - case 4753: - if ('a' == current) { - state = 4754; - return true; - } - break; - case 4754: - if ('r' == current) { - state = 4755; - return true; - } - break; - case 4755: - if ('e' == current) { - state = 4756; - return true; - } - break; - case 4756: - // incare; - if (';' == current) { - match = "\u2105"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4757: - if ('i' == current) { - state = 4758; - return true; - } - break; - case 4758: - if ('n' == current) { - state = 4759; - return true; - } - break; - case 4759: - // infin; - if (';' == current) { - match = "\u221E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('t' == current) { - state = 4760; - return true; - } - break; - case 4760: - if ('i' == current) { - state = 4761; - return true; - } - break; - case 4761: - if ('e' == current) { - state = 4762; - return true; - } - break; - case 4762: - // infintie; - if (';' == current) { - match = "\u29DD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4763: - if ('d' == current) { - state = 4764; - return true; - } - break; - case 4764: - if ('o' == current) { - state = 4765; - return true; - } - break; - case 4765: - if ('t' == current) { - state = 4766; - return true; - } - break; - case 4766: - // inodot; - if (';' == current) { - match = "\u0131"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4767: - switch (current) { - case ';': // int; - match = "\u222B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'c': - state = 4768; - return true; - case 'e': - state = 4771; - return true; - case 'l': - state = 4780; - return true; - case 'p': - state = 4785; - return true; - } - break; - case 4768: - if ('a' == current) { - state = 4769; - return true; - } - break; - case 4769: - if ('l' == current) { - state = 4770; - return true; - } - break; - case 4770: - // intcal; - if (';' == current) { - match = "\u22BA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4771: - if ('g' == current) { - state = 4772; - return true; - } - else if ('r' == current) { - state = 4776; - return true; - } - break; - case 4772: - if ('e' == current) { - state = 4773; - return true; - } - break; - case 4773: - if ('r' == current) { - state = 4774; - return true; - } - break; - case 4774: - if ('s' == current) { - state = 4775; - return true; - } - break; - case 4775: - // integers; - if (';' == current) { - match = "\u2124"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4776: - if ('c' == current) { - state = 4777; - return true; - } - break; - case 4777: - if ('a' == current) { - state = 4778; - return true; - } - break; - case 4778: - if ('l' == current) { - state = 4779; - return true; - } - break; - case 4779: - // intercal; - if (';' == current) { - match = "\u22BA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4780: - if ('a' == current) { - state = 4781; - return true; - } - break; - case 4781: - if ('r' == current) { - state = 4782; - return true; - } - break; - case 4782: - if ('h' == current) { - state = 4783; - return true; - } - break; - case 4783: - if ('k' == current) { - state = 4784; - return true; - } - break; - case 4784: - // intlarhk; - if (';' == current) { - match = "\u2A17"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4785: - if ('r' == current) { - state = 4786; - return true; - } - break; - case 4786: - if ('o' == current) { - state = 4787; - return true; - } - break; - case 4787: - if ('d' == current) { - state = 4788; - return true; - } - break; - case 4788: - // intprod; - if (';' == current) { - match = "\u2A3C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4789: - switch (current) { - case 'c': - state = 4790; - return true; - case 'g': - state = 4792; - return true; - case 'p': - state = 4795; - return true; - case 't': - state = 4797; - return true; - } - break; - case 4790: - if ('y' == current) { - state = 4791; - return true; - } - break; - case 4791: - // iocy; - if (';' == current) { - match = "\u0451"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4792: - if ('o' == current) { - state = 4793; - return true; - } - break; - case 4793: - if ('n' == current) { - state = 4794; - return true; - } - break; - case 4794: - // iogon; - if (';' == current) { - match = "\u012F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4795: - if ('f' == current) { - state = 4796; - return true; - } - break; - case 4796: - // iopf; - if (';' == current) { - match = "\uD835\uDD5A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4797: - if ('a' == current) { - state = 4798; - return true; - } - break; - case 4798: - // iota; - if (';' == current) { - match = "\u03B9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4799: - if ('r' == current) { - state = 4800; - return true; - } - break; - case 4800: - if ('o' == current) { - state = 4801; - return true; - } - break; - case 4801: - if ('d' == current) { - state = 4802; - return true; - } - break; - case 4802: - // iprod; - if (';' == current) { - match = "\u2A3C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4803: - if ('u' == current) { - state = 4804; - return true; - } - break; - case 4804: - if ('e' == current) { - state = 4805; - return true; - } - break; - case 4805: - if ('s' == current) { - state = 4806; - return true; - } - break; - case 4806: - // iquest - if ('t' == current) { - match = "\u00BF"; - matchLength = consumedCount; - state = 4807; - return true; - } - break; - case 4807: - // iquest; - if (';' == current) { - match = "\u00BF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4808: - if ('c' == current) { - state = 4809; - return true; - } - else if ('i' == current) { - state = 4811; - return true; - } - break; - case 4809: - if ('r' == current) { - state = 4810; - return true; - } - break; - case 4810: - // iscr; - if (';' == current) { - match = "\uD835\uDCBE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4811: - if ('n' == current) { - state = 4812; - return true; - } - break; - case 4812: - switch (current) { - case ';': // isin; - match = "\u2208"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 4813; - return true; - case 'd': - state = 4814; - return true; - case 's': - state = 4817; - return true; - case 'v': - state = 4819; - return true; - } - break; - case 4813: - // isinE; - if (';' == current) { - match = "\u22F9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4814: - if ('o' == current) { - state = 4815; - return true; - } - break; - case 4815: - if ('t' == current) { - state = 4816; - return true; - } - break; - case 4816: - // isindot; - if (';' == current) { - match = "\u22F5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4817: - // isins; - if (';' == current) { - match = "\u22F4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('v' == current) { - state = 4818; - return true; - } - break; - case 4818: - // isinsv; - if (';' == current) { - match = "\u22F3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4819: - // isinv; - if (';' == current) { - match = "\u2208"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4820: - // it; - if (';' == current) { - match = "\u2062"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('i' == current) { - state = 4821; - return true; - } - break; - case 4821: - if ('l' == current) { - state = 4822; - return true; - } - break; - case 4822: - if ('d' == current) { - state = 4823; - return true; - } - break; - case 4823: - if ('e' == current) { - state = 4824; - return true; - } - break; - case 4824: - // itilde; - if (';' == current) { - match = "\u0129"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4825: - if ('k' == current) { - state = 4826; - return true; - } - else if ('m' == current) { - state = 4829; - return true; - } - break; - case 4826: - if ('c' == current) { - state = 4827; - return true; - } - break; - case 4827: - if ('y' == current) { - state = 4828; - return true; - } - break; - case 4828: - // iukcy; - if (';' == current) { - match = "\u0456"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4829: - // iuml - if ('l' == current) { - match = "\u00EF"; - matchLength = consumedCount; - state = 4830; - return true; - } - break; - case 4830: - // iuml; - if (';' == current) { - match = "\u00EF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4831: - switch (current) { - case 'c': - state = 4832; - return true; - case 'f': - state = 4837; - return true; - case 'm': - state = 4839; - return true; - case 'o': - state = 4843; - return true; - case 's': - state = 4846; - return true; - case 'u': - state = 4853; - return true; - } - break; - case 4832: - if ('i' == current) { - state = 4833; - return true; - } - else if ('y' == current) { - state = 4836; - return true; - } - break; - case 4833: - if ('r' == current) { - state = 4834; - return true; - } - break; - case 4834: - if ('c' == current) { - state = 4835; - return true; - } - break; - case 4835: - // jcirc; - if (';' == current) { - match = "\u0135"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4836: - // jcy; - if (';' == current) { - match = "\u0439"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4837: - if ('r' == current) { - state = 4838; - return true; - } - break; - case 4838: - // jfr; - if (';' == current) { - match = "\uD835\uDD27"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4839: - if ('a' == current) { - state = 4840; - return true; - } - break; - case 4840: - if ('t' == current) { - state = 4841; - return true; - } - break; - case 4841: - if ('h' == current) { - state = 4842; - return true; - } - break; - case 4842: - // jmath; - if (';' == current) { - match = "\u0237"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4843: - if ('p' == current) { - state = 4844; - return true; - } - break; - case 4844: - if ('f' == current) { - state = 4845; - return true; - } - break; - case 4845: - // jopf; - if (';' == current) { - match = "\uD835\uDD5B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4846: - if ('c' == current) { - state = 4847; - return true; - } - else if ('e' == current) { - state = 4849; - return true; - } - break; - case 4847: - if ('r' == current) { - state = 4848; - return true; - } - break; - case 4848: - // jscr; - if (';' == current) { - match = "\uD835\uDCBF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4849: - if ('r' == current) { - state = 4850; - return true; - } - break; - case 4850: - if ('c' == current) { - state = 4851; - return true; - } - break; - case 4851: - if ('y' == current) { - state = 4852; - return true; - } - break; - case 4852: - // jsercy; - if (';' == current) { - match = "\u0458"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4853: - if ('k' == current) { - state = 4854; - return true; - } - break; - case 4854: - if ('c' == current) { - state = 4855; - return true; - } - break; - case 4855: - if ('y' == current) { - state = 4856; - return true; - } - break; - case 4856: - // jukcy; - if (';' == current) { - match = "\u0454"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4857: - switch (current) { - case 'a': - state = 4858; - return true; - case 'c': - state = 4863; - return true; - case 'f': - state = 4869; - return true; - case 'g': - state = 4871; - return true; - case 'h': - state = 4876; - return true; - case 'j': - state = 4879; - return true; - case 'o': - state = 4882; - return true; - case 's': - state = 4885; - return true; - } - break; - case 4858: - if ('p' == current) { - state = 4859; - return true; - } - break; - case 4859: - if ('p' == current) { - state = 4860; - return true; - } - break; - case 4860: - if ('a' == current) { - state = 4861; - return true; - } - break; - case 4861: - // kappa; - if (';' == current) { - match = "\u03BA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('v' == current) { - state = 4862; - return true; - } - break; - case 4862: - // kappav; - if (';' == current) { - match = "\u03F0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4863: - if ('e' == current) { - state = 4864; - return true; - } - else if ('y' == current) { - state = 4868; - return true; - } - break; - case 4864: - if ('d' == current) { - state = 4865; - return true; - } - break; - case 4865: - if ('i' == current) { - state = 4866; - return true; - } - break; - case 4866: - if ('l' == current) { - state = 4867; - return true; - } - break; - case 4867: - // kcedil; - if (';' == current) { - match = "\u0137"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4868: - // kcy; - if (';' == current) { - match = "\u043A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4869: - if ('r' == current) { - state = 4870; - return true; - } - break; - case 4870: - // kfr; - if (';' == current) { - match = "\uD835\uDD28"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4871: - if ('r' == current) { - state = 4872; - return true; - } - break; - case 4872: - if ('e' == current) { - state = 4873; - return true; - } - break; - case 4873: - if ('e' == current) { - state = 4874; - return true; - } - break; - case 4874: - if ('n' == current) { - state = 4875; - return true; - } - break; - case 4875: - // kgreen; - if (';' == current) { - match = "\u0138"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4876: - if ('c' == current) { - state = 4877; - return true; - } - break; - case 4877: - if ('y' == current) { - state = 4878; - return true; - } - break; - case 4878: - // khcy; - if (';' == current) { - match = "\u0445"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4879: - if ('c' == current) { - state = 4880; - return true; - } - break; - case 4880: - if ('y' == current) { - state = 4881; - return true; - } - break; - case 4881: - // kjcy; - if (';' == current) { - match = "\u045C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4882: - if ('p' == current) { - state = 4883; - return true; - } - break; - case 4883: - if ('f' == current) { - state = 4884; - return true; - } - break; - case 4884: - // kopf; - if (';' == current) { - match = "\uD835\uDD5C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4885: - if ('c' == current) { - state = 4886; - return true; - } - break; - case 4886: - if ('r' == current) { - state = 4887; - return true; - } - break; - case 4887: - // kscr; - if (';' == current) { - match = "\uD835\uDCC0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4888: - switch (current) { - case 'A': - state = 4889; - return true; - case 'B': - state = 4899; - return true; - case 'E': - state = 4903; - return true; - case 'H': - state = 4905; - return true; - case 'a': - state = 4908; - return true; - case 'b': - state = 4960; - return true; - case 'c': - state = 4978; - return true; - case 'd': - state = 4992; - return true; - case 'e': - state = 5011; - return true; - case 'f': - state = 5129; - return true; - case 'g': - state = 5139; - return true; - case 'h': - state = 5141; - return true; - case 'j': - state = 5150; - return true; - case 'l': - state = 5153; - return true; - case 'm': - state = 5170; - return true; - case 'n': - state = 5183; - return true; - case 'o': - state = 5197; - return true; - case 'p': - state = 5284; - return true; - case 'r': - state = 5289; - return true; - case 's': - state = 5307; - return true; - case 't': // lt - match = "<"; - matchLength = consumedCount; - state = 5328; - return true; - case 'u': - state = 5360; - return true; - case 'v': - state = 5371; - return true; - } - break; - case 4889: - switch (current) { - case 'a': - state = 4890; - return true; - case 'r': - state = 4893; - return true; - case 't': - state = 4895; - return true; - } - break; - case 4890: - if ('r' == current) { - state = 4891; - return true; - } - break; - case 4891: - if ('r' == current) { - state = 4892; - return true; - } - break; - case 4892: - // lAarr; - if (';' == current) { - match = "\u21DA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4893: - if ('r' == current) { - state = 4894; - return true; - } - break; - case 4894: - // lArr; - if (';' == current) { - match = "\u21D0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4895: - if ('a' == current) { - state = 4896; - return true; - } - break; - case 4896: - if ('i' == current) { - state = 4897; - return true; - } - break; - case 4897: - if ('l' == current) { - state = 4898; - return true; - } - break; - case 4898: - // lAtail; - if (';' == current) { - match = "\u291B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4899: - if ('a' == current) { - state = 4900; - return true; - } - break; - case 4900: - if ('r' == current) { - state = 4901; - return true; - } - break; - case 4901: - if ('r' == current) { - state = 4902; - return true; - } - break; - case 4902: - // lBarr; - if (';' == current) { - match = "\u290E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4903: - // lE; - if (';' == current) { - match = "\u2266"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('g' == current) { - state = 4904; - return true; - } - break; - case 4904: - // lEg; - if (';' == current) { - match = "\u2A8B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4905: - if ('a' == current) { - state = 4906; - return true; - } - break; - case 4906: - if ('r' == current) { - state = 4907; - return true; - } - break; - case 4907: - // lHar; - if (';' == current) { - match = "\u2962"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4908: - switch (current) { - case 'c': - state = 4909; - return true; - case 'e': - state = 4913; - return true; - case 'g': - state = 4919; - return true; - case 'm': - state = 4923; - return true; - case 'n': - state = 4927; - return true; - case 'p': - state = 4932; - return true; - case 'q': - state = 4933; - return true; - case 'r': - state = 4936; - return true; - case 't': - state = 4954; - return true; - } - break; - case 4909: - if ('u' == current) { - state = 4910; - return true; - } - break; - case 4910: - if ('t' == current) { - state = 4911; - return true; - } - break; - case 4911: - if ('e' == current) { - state = 4912; - return true; - } - break; - case 4912: - // lacute; - if (';' == current) { - match = "\u013A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4913: - if ('m' == current) { - state = 4914; - return true; - } - break; - case 4914: - if ('p' == current) { - state = 4915; - return true; - } - break; - case 4915: - if ('t' == current) { - state = 4916; - return true; - } - break; - case 4916: - if ('y' == current) { - state = 4917; - return true; - } - break; - case 4917: - if ('v' == current) { - state = 4918; - return true; - } - break; - case 4918: - // laemptyv; - if (';' == current) { - match = "\u29B4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4919: - if ('r' == current) { - state = 4920; - return true; - } - break; - case 4920: - if ('a' == current) { - state = 4921; - return true; - } - break; - case 4921: - if ('n' == current) { - state = 4922; - return true; - } - break; - case 4922: - // lagran; - if (';' == current) { - match = "\u2112"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4923: - if ('b' == current) { - state = 4924; - return true; - } - break; - case 4924: - if ('d' == current) { - state = 4925; - return true; - } - break; - case 4925: - if ('a' == current) { - state = 4926; - return true; - } - break; - case 4926: - // lambda; - if (';' == current) { - match = "\u03BB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4927: - if ('g' == current) { - state = 4928; - return true; - } - break; - case 4928: - switch (current) { - case ';': // lang; - match = "\u27E8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'd': - state = 4929; - return true; - case 'l': - state = 4930; - return true; - } - break; - case 4929: - // langd; - if (';' == current) { - match = "\u2991"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4930: - if ('e' == current) { - state = 4931; - return true; - } - break; - case 4931: - // langle; - if (';' == current) { - match = "\u27E8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4932: - // lap; - if (';' == current) { - match = "\u2A85"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4933: - if ('u' == current) { - state = 4934; - return true; - } - break; - case 4934: - // laquo - if ('o' == current) { - match = "\u00AB"; - matchLength = consumedCount; - state = 4935; - return true; - } - break; - case 4935: - // laquo; - if (';' == current) { - match = "\u00AB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4936: - if ('r' == current) { - state = 4937; - return true; - } - break; - case 4937: - switch (current) { - case ';': // larr; - match = "\u2190"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'b': - state = 4938; - return true; - case 'f': - state = 4941; - return true; - case 'h': - state = 4943; - return true; - case 'l': - state = 4945; - return true; - case 'p': - state = 4947; - return true; - case 's': - state = 4949; - return true; - case 't': - state = 4952; - return true; - } - break; - case 4938: - // larrb; - if (';' == current) { - match = "\u21E4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('f' == current) { - state = 4939; - return true; - } - break; - case 4939: - if ('s' == current) { - state = 4940; - return true; - } - break; - case 4940: - // larrbfs; - if (';' == current) { - match = "\u291F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4941: - if ('s' == current) { - state = 4942; - return true; - } - break; - case 4942: - // larrfs; - if (';' == current) { - match = "\u291D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4943: - if ('k' == current) { - state = 4944; - return true; - } - break; - case 4944: - // larrhk; - if (';' == current) { - match = "\u21A9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4945: - if ('p' == current) { - state = 4946; - return true; - } - break; - case 4946: - // larrlp; - if (';' == current) { - match = "\u21AB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4947: - if ('l' == current) { - state = 4948; - return true; - } - break; - case 4948: - // larrpl; - if (';' == current) { - match = "\u2939"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4949: - if ('i' == current) { - state = 4950; - return true; - } - break; - case 4950: - if ('m' == current) { - state = 4951; - return true; - } - break; - case 4951: - // larrsim; - if (';' == current) { - match = "\u2973"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4952: - if ('l' == current) { - state = 4953; - return true; - } - break; - case 4953: - // larrtl; - if (';' == current) { - match = "\u21A2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4954: - switch (current) { - case ';': // lat; - match = "\u2AAB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'a': - state = 4955; - return true; - case 'e': - state = 4958; - return true; - } - break; - case 4955: - if ('i' == current) { - state = 4956; - return true; - } - break; - case 4956: - if ('l' == current) { - state = 4957; - return true; - } - break; - case 4957: - // latail; - if (';' == current) { - match = "\u2919"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4958: - // late; - if (';' == current) { - match = "\u2AAD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('s' == current) { - state = 4959; - return true; - } - break; - case 4959: - // lates; - if (';' == current) { - match = "\u2AAD\uFE00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4960: - switch (current) { - case 'a': - state = 4961; - return true; - case 'b': - state = 4964; - return true; - case 'r': - state = 4967; - return true; - } - break; - case 4961: - if ('r' == current) { - state = 4962; - return true; - } - break; - case 4962: - if ('r' == current) { - state = 4963; - return true; - } - break; - case 4963: - // lbarr; - if (';' == current) { - match = "\u290C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4964: - if ('r' == current) { - state = 4965; - return true; - } - break; - case 4965: - if ('k' == current) { - state = 4966; - return true; - } - break; - case 4966: - // lbbrk; - if (';' == current) { - match = "\u2772"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4967: - if ('a' == current) { - state = 4968; - return true; - } - else if ('k' == current) { - state = 4972; - return true; - } - break; - case 4968: - if ('c' == current) { - state = 4969; - return true; - } - break; - case 4969: - if ('e' == current) { - state = 4970; - return true; - } - else if ('k' == current) { - state = 4971; - return true; - } - break; - case 4970: - // lbrace; - if (';' == current) { - match = "{"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4971: - // lbrack; - if (';' == current) { - match = "["; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4972: - if ('e' == current) { - state = 4973; - return true; - } - else if ('s' == current) { - state = 4974; - return true; - } - break; - case 4973: - // lbrke; - if (';' == current) { - match = "\u298B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4974: - if ('l' == current) { - state = 4975; - return true; - } - break; - case 4975: - if ('d' == current) { - state = 4976; - return true; - } - else if ('u' == current) { - state = 4977; - return true; - } - break; - case 4976: - // lbrksld; - if (';' == current) { - match = "\u298F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4977: - // lbrkslu; - if (';' == current) { - match = "\u298D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4978: - switch (current) { - case 'a': - state = 4979; - return true; - case 'e': - state = 4983; - return true; - case 'u': - state = 4989; - return true; - case 'y': - state = 4991; - return true; - } - break; - case 4979: - if ('r' == current) { - state = 4980; - return true; - } - break; - case 4980: - if ('o' == current) { - state = 4981; - return true; - } - break; - case 4981: - if ('n' == current) { - state = 4982; - return true; - } - break; - case 4982: - // lcaron; - if (';' == current) { - match = "\u013E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4983: - if ('d' == current) { - state = 4984; - return true; - } - else if ('i' == current) { - state = 4987; - return true; - } - break; - case 4984: - if ('i' == current) { - state = 4985; - return true; - } - break; - case 4985: - if ('l' == current) { - state = 4986; - return true; - } - break; - case 4986: - // lcedil; - if (';' == current) { - match = "\u013C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4987: - if ('l' == current) { - state = 4988; - return true; - } - break; - case 4988: - // lceil; - if (';' == current) { - match = "\u2308"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4989: - if ('b' == current) { - state = 4990; - return true; - } - break; - case 4990: - // lcub; - if (';' == current) { - match = "{"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4991: - // lcy; - if (';' == current) { - match = "\u043B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4992: - switch (current) { - case 'c': - state = 4993; - return true; - case 'q': - state = 4995; - return true; - case 'r': - state = 4999; - return true; - case 's': - state = 5009; - return true; - } - break; - case 4993: - if ('a' == current) { - state = 4994; - return true; - } - break; - case 4994: - // ldca; - if (';' == current) { - match = "\u2936"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4995: - if ('u' == current) { - state = 4996; - return true; - } - break; - case 4996: - if ('o' == current) { - state = 4997; - return true; - } - break; - case 4997: - // ldquo; - if (';' == current) { - match = "\u201C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('r' == current) { - state = 4998; - return true; - } - break; - case 4998: - // ldquor; - if (';' == current) { - match = "\u201E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 4999: - if ('d' == current) { - state = 5000; - return true; - } - else if ('u' == current) { - state = 5004; - return true; - } - break; - } - return false; - } - - private boolean parse6(final int current) { - consumedCount++; - switch (state) { - case 5000: - if ('h' == current) { - state = 5001; - return true; - } - break; - case 5001: - if ('a' == current) { - state = 5002; - return true; - } - break; - case 5002: - if ('r' == current) { - state = 5003; - return true; - } - break; - case 5003: - // ldrdhar; - if (';' == current) { - match = "\u2967"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5004: - if ('s' == current) { - state = 5005; - return true; - } - break; - case 5005: - if ('h' == current) { - state = 5006; - return true; - } - break; - case 5006: - if ('a' == current) { - state = 5007; - return true; - } - break; - case 5007: - if ('r' == current) { - state = 5008; - return true; - } - break; - case 5008: - // ldrushar; - if (';' == current) { - match = "\u294B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5009: - if ('h' == current) { - state = 5010; - return true; - } - break; - case 5010: - // ldsh; - if (';' == current) { - match = "\u21B2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5011: - switch (current) { - case ';': // le; - match = "\u2264"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'f': - state = 5012; - return true; - case 'g': - state = 5085; - return true; - case 'q': - state = 5086; - return true; - case 's': - state = 5093; - return true; - } - break; - case 5012: - if ('t' == current) { - state = 5013; - return true; - } - break; - case 5013: - switch (current) { - case 'a': - state = 5014; - return true; - case 'h': - state = 5023; - return true; - case 'l': - state = 5036; - return true; - case 'r': - state = 5046; - return true; - case 't': - state = 5075; - return true; - } - break; - case 5014: - if ('r' == current) { - state = 5015; - return true; - } - break; - case 5015: - if ('r' == current) { - state = 5016; - return true; - } - break; - case 5016: - if ('o' == current) { - state = 5017; - return true; - } - break; - case 5017: - if ('w' == current) { - state = 5018; - return true; - } - break; - case 5018: - // leftarrow; - if (';' == current) { - match = "\u2190"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('t' == current) { - state = 5019; - return true; - } - break; - case 5019: - if ('a' == current) { - state = 5020; - return true; - } - break; - case 5020: - if ('i' == current) { - state = 5021; - return true; - } - break; - case 5021: - if ('l' == current) { - state = 5022; - return true; - } - break; - case 5022: - // leftarrowtail; - if (';' == current) { - match = "\u21A2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5023: - if ('a' == current) { - state = 5024; - return true; - } - break; - case 5024: - if ('r' == current) { - state = 5025; - return true; - } - break; - case 5025: - if ('p' == current) { - state = 5026; - return true; - } - break; - case 5026: - if ('o' == current) { - state = 5027; - return true; - } - break; - case 5027: - if ('o' == current) { - state = 5028; - return true; - } - break; - case 5028: - if ('n' == current) { - state = 5029; - return true; - } - break; - case 5029: - if ('d' == current) { - state = 5030; - return true; - } - else if ('u' == current) { - state = 5034; - return true; - } - break; - case 5030: - if ('o' == current) { - state = 5031; - return true; - } - break; - case 5031: - if ('w' == current) { - state = 5032; - return true; - } - break; - case 5032: - if ('n' == current) { - state = 5033; - return true; - } - break; - case 5033: - // leftharpoondown; - if (';' == current) { - match = "\u21BD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5034: - if ('p' == current) { - state = 5035; - return true; - } - break; - case 5035: - // leftharpoonup; - if (';' == current) { - match = "\u21BC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5036: - if ('e' == current) { - state = 5037; - return true; - } - break; - case 5037: - if ('f' == current) { - state = 5038; - return true; - } - break; - case 5038: - if ('t' == current) { - state = 5039; - return true; - } - break; - case 5039: - if ('a' == current) { - state = 5040; - return true; - } - break; - case 5040: - if ('r' == current) { - state = 5041; - return true; - } - break; - case 5041: - if ('r' == current) { - state = 5042; - return true; - } - break; - case 5042: - if ('o' == current) { - state = 5043; - return true; - } - break; - case 5043: - if ('w' == current) { - state = 5044; - return true; - } - break; - case 5044: - if ('s' == current) { - state = 5045; - return true; - } - break; - case 5045: - // leftleftarrows; - if (';' == current) { - match = "\u21C7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5046: - if ('i' == current) { - state = 5047; - return true; - } - break; - case 5047: - if ('g' == current) { - state = 5048; - return true; - } - break; - case 5048: - if ('h' == current) { - state = 5049; - return true; - } - break; - case 5049: - if ('t' == current) { - state = 5050; - return true; - } - break; - case 5050: - switch (current) { - case 'a': - state = 5051; - return true; - case 'h': - state = 5057; - return true; - case 's': - state = 5065; - return true; - } - break; - case 5051: - if ('r' == current) { - state = 5052; - return true; - } - break; - case 5052: - if ('r' == current) { - state = 5053; - return true; - } - break; - case 5053: - if ('o' == current) { - state = 5054; - return true; - } - break; - case 5054: - if ('w' == current) { - state = 5055; - return true; - } - break; - case 5055: - // leftrightarrow; - if (';' == current) { - match = "\u2194"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('s' == current) { - state = 5056; - return true; - } - break; - case 5056: - // leftrightarrows; - if (';' == current) { - match = "\u21C6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5057: - if ('a' == current) { - state = 5058; - return true; - } - break; - case 5058: - if ('r' == current) { - state = 5059; - return true; - } - break; - case 5059: - if ('p' == current) { - state = 5060; - return true; - } - break; - case 5060: - if ('o' == current) { - state = 5061; - return true; - } - break; - case 5061: - if ('o' == current) { - state = 5062; - return true; - } - break; - case 5062: - if ('n' == current) { - state = 5063; - return true; - } - break; - case 5063: - if ('s' == current) { - state = 5064; - return true; - } - break; - case 5064: - // leftrightharpoons; - if (';' == current) { - match = "\u21CB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5065: - if ('q' == current) { - state = 5066; - return true; - } - break; - case 5066: - if ('u' == current) { - state = 5067; - return true; - } - break; - case 5067: - if ('i' == current) { - state = 5068; - return true; - } - break; - case 5068: - if ('g' == current) { - state = 5069; - return true; - } - break; - case 5069: - if ('a' == current) { - state = 5070; - return true; - } - break; - case 5070: - if ('r' == current) { - state = 5071; - return true; - } - break; - case 5071: - if ('r' == current) { - state = 5072; - return true; - } - break; - case 5072: - if ('o' == current) { - state = 5073; - return true; - } - break; - case 5073: - if ('w' == current) { - state = 5074; - return true; - } - break; - case 5074: - // leftrightsquigarrow; - if (';' == current) { - match = "\u21AD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5075: - if ('h' == current) { - state = 5076; - return true; - } - break; - case 5076: - if ('r' == current) { - state = 5077; - return true; - } - break; - case 5077: - if ('e' == current) { - state = 5078; - return true; - } - break; - case 5078: - if ('e' == current) { - state = 5079; - return true; - } - break; - case 5079: - if ('t' == current) { - state = 5080; - return true; - } - break; - case 5080: - if ('i' == current) { - state = 5081; - return true; - } - break; - case 5081: - if ('m' == current) { - state = 5082; - return true; - } - break; - case 5082: - if ('e' == current) { - state = 5083; - return true; - } - break; - case 5083: - if ('s' == current) { - state = 5084; - return true; - } - break; - case 5084: - // leftthreetimes; - if (';' == current) { - match = "\u22CB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5085: - // leg; - if (';' == current) { - match = "\u22DA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5086: - switch (current) { - case ';': // leq; - match = "\u2264"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'q': - state = 5087; - return true; - case 's': - state = 5088; - return true; - } - break; - case 5087: - // leqq; - if (';' == current) { - match = "\u2266"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5088: - if ('l' == current) { - state = 5089; - return true; - } - break; - case 5089: - if ('a' == current) { - state = 5090; - return true; - } - break; - case 5090: - if ('n' == current) { - state = 5091; - return true; - } - break; - case 5091: - if ('t' == current) { - state = 5092; - return true; - } - break; - case 5092: - // leqslant; - if (';' == current) { - match = "\u2A7D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5093: - switch (current) { - case ';': // les; - match = "\u2A7D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'c': - state = 5094; - return true; - case 'd': - state = 5096; - return true; - case 'g': - state = 5101; - return true; - case 's': - state = 5104; - return true; - } - break; - case 5094: - if ('c' == current) { - state = 5095; - return true; - } - break; - case 5095: - // lescc; - if (';' == current) { - match = "\u2AA8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5096: - if ('o' == current) { - state = 5097; - return true; - } - break; - case 5097: - if ('t' == current) { - state = 5098; - return true; - } - break; - case 5098: - // lesdot; - if (';' == current) { - match = "\u2A7F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('o' == current) { - state = 5099; - return true; - } - break; - case 5099: - // lesdoto; - if (';' == current) { - match = "\u2A81"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('r' == current) { - state = 5100; - return true; - } - break; - case 5100: - // lesdotor; - if (';' == current) { - match = "\u2A83"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5101: - // lesg; - if (';' == current) { - match = "\u22DA\uFE00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 5102; - return true; - } - break; - case 5102: - if ('s' == current) { - state = 5103; - return true; - } - break; - case 5103: - // lesges; - if (';' == current) { - match = "\u2A93"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5104: - switch (current) { - case 'a': - state = 5105; - return true; - case 'd': - state = 5111; - return true; - case 'e': - state = 5114; - return true; - case 'g': - state = 5123; - return true; - case 's': - state = 5126; - return true; - } - break; - case 5105: - if ('p' == current) { - state = 5106; - return true; - } - break; - case 5106: - if ('p' == current) { - state = 5107; - return true; - } - break; - case 5107: - if ('r' == current) { - state = 5108; - return true; - } - break; - case 5108: - if ('o' == current) { - state = 5109; - return true; - } - break; - case 5109: - if ('x' == current) { - state = 5110; - return true; - } - break; - case 5110: - // lessapprox; - if (';' == current) { - match = "\u2A85"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5111: - if ('o' == current) { - state = 5112; - return true; - } - break; - case 5112: - if ('t' == current) { - state = 5113; - return true; - } - break; - case 5113: - // lessdot; - if (';' == current) { - match = "\u22D6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5114: - if ('q' == current) { - state = 5115; - return true; - } - break; - case 5115: - if ('g' == current) { - state = 5116; - return true; - } - else if ('q' == current) { - state = 5119; - return true; - } - break; - case 5116: - if ('t' == current) { - state = 5117; - return true; - } - break; - case 5117: - if ('r' == current) { - state = 5118; - return true; - } - break; - case 5118: - // lesseqgtr; - if (';' == current) { - match = "\u22DA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5119: - if ('g' == current) { - state = 5120; - return true; - } - break; - case 5120: - if ('t' == current) { - state = 5121; - return true; - } - break; - case 5121: - if ('r' == current) { - state = 5122; - return true; - } - break; - case 5122: - // lesseqqgtr; - if (';' == current) { - match = "\u2A8B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5123: - if ('t' == current) { - state = 5124; - return true; - } - break; - case 5124: - if ('r' == current) { - state = 5125; - return true; - } - break; - case 5125: - // lessgtr; - if (';' == current) { - match = "\u2276"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5126: - if ('i' == current) { - state = 5127; - return true; - } - break; - case 5127: - if ('m' == current) { - state = 5128; - return true; - } - break; - case 5128: - // lesssim; - if (';' == current) { - match = "\u2272"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5129: - switch (current) { - case 'i': - state = 5130; - return true; - case 'l': - state = 5134; - return true; - case 'r': - state = 5138; - return true; - } - break; - case 5130: - if ('s' == current) { - state = 5131; - return true; - } - break; - case 5131: - if ('h' == current) { - state = 5132; - return true; - } - break; - case 5132: - if ('t' == current) { - state = 5133; - return true; - } - break; - case 5133: - // lfisht; - if (';' == current) { - match = "\u297C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5134: - if ('o' == current) { - state = 5135; - return true; - } - break; - case 5135: - if ('o' == current) { - state = 5136; - return true; - } - break; - case 5136: - if ('r' == current) { - state = 5137; - return true; - } - break; - case 5137: - // lfloor; - if (';' == current) { - match = "\u230A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5138: - // lfr; - if (';' == current) { - match = "\uD835\uDD29"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5139: - // lg; - if (';' == current) { - match = "\u2276"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('E' == current) { - state = 5140; - return true; - } - break; - case 5140: - // lgE; - if (';' == current) { - match = "\u2A91"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5141: - if ('a' == current) { - state = 5142; - return true; - } - else if ('b' == current) { - state = 5147; - return true; - } - break; - case 5142: - if ('r' == current) { - state = 5143; - return true; - } - break; - case 5143: - if ('d' == current) { - state = 5144; - return true; - } - else if ('u' == current) { - state = 5145; - return true; - } - break; - case 5144: - // lhard; - if (';' == current) { - match = "\u21BD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5145: - // lharu; - if (';' == current) { - match = "\u21BC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('l' == current) { - state = 5146; - return true; - } - break; - case 5146: - // lharul; - if (';' == current) { - match = "\u296A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5147: - if ('l' == current) { - state = 5148; - return true; - } - break; - case 5148: - if ('k' == current) { - state = 5149; - return true; - } - break; - case 5149: - // lhblk; - if (';' == current) { - match = "\u2584"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5150: - if ('c' == current) { - state = 5151; - return true; - } - break; - case 5151: - if ('y' == current) { - state = 5152; - return true; - } - break; - case 5152: - // ljcy; - if (';' == current) { - match = "\u0459"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5153: - switch (current) { - case ';': // ll; - match = "\u226A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'a': - state = 5154; - return true; - case 'c': - state = 5157; - return true; - case 'h': - state = 5163; - return true; - case 't': - state = 5167; - return true; - } - break; - case 5154: - if ('r' == current) { - state = 5155; - return true; - } - break; - case 5155: - if ('r' == current) { - state = 5156; - return true; - } - break; - case 5156: - // llarr; - if (';' == current) { - match = "\u21C7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5157: - if ('o' == current) { - state = 5158; - return true; - } - break; - case 5158: - if ('r' == current) { - state = 5159; - return true; - } - break; - case 5159: - if ('n' == current) { - state = 5160; - return true; - } - break; - case 5160: - if ('e' == current) { - state = 5161; - return true; - } - break; - case 5161: - if ('r' == current) { - state = 5162; - return true; - } - break; - case 5162: - // llcorner; - if (';' == current) { - match = "\u231E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5163: - if ('a' == current) { - state = 5164; - return true; - } - break; - case 5164: - if ('r' == current) { - state = 5165; - return true; - } - break; - case 5165: - if ('d' == current) { - state = 5166; - return true; - } - break; - case 5166: - // llhard; - if (';' == current) { - match = "\u296B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5167: - if ('r' == current) { - state = 5168; - return true; - } - break; - case 5168: - if ('i' == current) { - state = 5169; - return true; - } - break; - case 5169: - // lltri; - if (';' == current) { - match = "\u25FA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5170: - if ('i' == current) { - state = 5171; - return true; - } - else if ('o' == current) { - state = 5175; - return true; - } - break; - case 5171: - if ('d' == current) { - state = 5172; - return true; - } - break; - case 5172: - if ('o' == current) { - state = 5173; - return true; - } - break; - case 5173: - if ('t' == current) { - state = 5174; - return true; - } - break; - case 5174: - // lmidot; - if (';' == current) { - match = "\u0140"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5175: - if ('u' == current) { - state = 5176; - return true; - } - break; - case 5176: - if ('s' == current) { - state = 5177; - return true; - } - break; - case 5177: - if ('t' == current) { - state = 5178; - return true; - } - break; - case 5178: - // lmoust; - if (';' == current) { - match = "\u23B0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('a' == current) { - state = 5179; - return true; - } - break; - case 5179: - if ('c' == current) { - state = 5180; - return true; - } - break; - case 5180: - if ('h' == current) { - state = 5181; - return true; - } - break; - case 5181: - if ('e' == current) { - state = 5182; - return true; - } - break; - case 5182: - // lmoustache; - if (';' == current) { - match = "\u23B0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5183: - switch (current) { - case 'E': - state = 5184; - return true; - case 'a': - state = 5185; - return true; - case 'e': - state = 5191; - return true; - case 's': - state = 5194; - return true; - } - break; - case 5184: - // lnE; - if (';' == current) { - match = "\u2268"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5185: - if ('p' == current) { - state = 5186; - return true; - } - break; - case 5186: - // lnap; - if (';' == current) { - match = "\u2A89"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('p' == current) { - state = 5187; - return true; - } - break; - case 5187: - if ('r' == current) { - state = 5188; - return true; - } - break; - case 5188: - if ('o' == current) { - state = 5189; - return true; - } - break; - case 5189: - if ('x' == current) { - state = 5190; - return true; - } - break; - case 5190: - // lnapprox; - if (';' == current) { - match = "\u2A89"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5191: - // lne; - if (';' == current) { - match = "\u2A87"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('q' == current) { - state = 5192; - return true; - } - break; - case 5192: - // lneq; - if (';' == current) { - match = "\u2A87"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('q' == current) { - state = 5193; - return true; - } - break; - case 5193: - // lneqq; - if (';' == current) { - match = "\u2268"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5194: - if ('i' == current) { - state = 5195; - return true; - } - break; - case 5195: - if ('m' == current) { - state = 5196; - return true; - } - break; - case 5196: - // lnsim; - if (';' == current) { - match = "\u22E6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5197: - switch (current) { - case 'a': - state = 5198; - return true; - case 'b': - state = 5203; - return true; - case 'n': - state = 5206; - return true; - case 'o': - state = 5243; - return true; - case 'p': - state = 5259; - return true; - case 't': - state = 5266; - return true; - case 'w': - state = 5271; - return true; - case 'z': - state = 5278; - return true; - } - break; - case 5198: - if ('n' == current) { - state = 5199; - return true; - } - else if ('r' == current) { - state = 5201; - return true; - } - break; - case 5199: - if ('g' == current) { - state = 5200; - return true; - } - break; - case 5200: - // loang; - if (';' == current) { - match = "\u27EC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5201: - if ('r' == current) { - state = 5202; - return true; - } - break; - case 5202: - // loarr; - if (';' == current) { - match = "\u21FD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5203: - if ('r' == current) { - state = 5204; - return true; - } - break; - case 5204: - if ('k' == current) { - state = 5205; - return true; - } - break; - case 5205: - // lobrk; - if (';' == current) { - match = "\u27E6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5206: - if ('g' == current) { - state = 5207; - return true; - } - break; - case 5207: - switch (current) { - case 'l': - state = 5208; - return true; - case 'm': - state = 5227; - return true; - case 'r': - state = 5233; - return true; - } - break; - case 5208: - if ('e' == current) { - state = 5209; - return true; - } - break; - case 5209: - if ('f' == current) { - state = 5210; - return true; - } - break; - case 5210: - if ('t' == current) { - state = 5211; - return true; - } - break; - case 5211: - if ('a' == current) { - state = 5212; - return true; - } - else if ('r' == current) { - state = 5217; - return true; - } - break; - case 5212: - if ('r' == current) { - state = 5213; - return true; - } - break; - case 5213: - if ('r' == current) { - state = 5214; - return true; - } - break; - case 5214: - if ('o' == current) { - state = 5215; - return true; - } - break; - case 5215: - if ('w' == current) { - state = 5216; - return true; - } - break; - case 5216: - // longleftarrow; - if (';' == current) { - match = "\u27F5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5217: - if ('i' == current) { - state = 5218; - return true; - } - break; - case 5218: - if ('g' == current) { - state = 5219; - return true; - } - break; - case 5219: - if ('h' == current) { - state = 5220; - return true; - } - break; - case 5220: - if ('t' == current) { - state = 5221; - return true; - } - break; - case 5221: - if ('a' == current) { - state = 5222; - return true; - } - break; - case 5222: - if ('r' == current) { - state = 5223; - return true; - } - break; - case 5223: - if ('r' == current) { - state = 5224; - return true; - } - break; - case 5224: - if ('o' == current) { - state = 5225; - return true; - } - break; - case 5225: - if ('w' == current) { - state = 5226; - return true; - } - break; - case 5226: - // longleftrightarrow; - if (';' == current) { - match = "\u27F7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5227: - if ('a' == current) { - state = 5228; - return true; - } - break; - case 5228: - if ('p' == current) { - state = 5229; - return true; - } - break; - case 5229: - if ('s' == current) { - state = 5230; - return true; - } - break; - case 5230: - if ('t' == current) { - state = 5231; - return true; - } - break; - case 5231: - if ('o' == current) { - state = 5232; - return true; - } - break; - case 5232: - // longmapsto; - if (';' == current) { - match = "\u27FC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5233: - if ('i' == current) { - state = 5234; - return true; - } - break; - case 5234: - if ('g' == current) { - state = 5235; - return true; - } - break; - case 5235: - if ('h' == current) { - state = 5236; - return true; - } - break; - case 5236: - if ('t' == current) { - state = 5237; - return true; - } - break; - case 5237: - if ('a' == current) { - state = 5238; - return true; - } - break; - case 5238: - if ('r' == current) { - state = 5239; - return true; - } - break; - case 5239: - if ('r' == current) { - state = 5240; - return true; - } - break; - case 5240: - if ('o' == current) { - state = 5241; - return true; - } - break; - case 5241: - if ('w' == current) { - state = 5242; - return true; - } - break; - case 5242: - // longrightarrow; - if (';' == current) { - match = "\u27F6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5243: - if ('p' == current) { - state = 5244; - return true; - } - break; - case 5244: - if ('a' == current) { - state = 5245; - return true; - } - break; - case 5245: - if ('r' == current) { - state = 5246; - return true; - } - break; - case 5246: - if ('r' == current) { - state = 5247; - return true; - } - break; - case 5247: - if ('o' == current) { - state = 5248; - return true; - } - break; - case 5248: - if ('w' == current) { - state = 5249; - return true; - } - break; - case 5249: - if ('l' == current) { - state = 5250; - return true; - } - else if ('r' == current) { - state = 5254; - return true; - } - break; - case 5250: - if ('e' == current) { - state = 5251; - return true; - } - break; - case 5251: - if ('f' == current) { - state = 5252; - return true; - } - break; - case 5252: - if ('t' == current) { - state = 5253; - return true; - } - break; - case 5253: - // looparrowleft; - if (';' == current) { - match = "\u21AB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5254: - if ('i' == current) { - state = 5255; - return true; - } - break; - case 5255: - if ('g' == current) { - state = 5256; - return true; - } - break; - case 5256: - if ('h' == current) { - state = 5257; - return true; - } - break; - case 5257: - if ('t' == current) { - state = 5258; - return true; - } - break; - case 5258: - // looparrowright; - if (';' == current) { - match = "\u21AC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5259: - switch (current) { - case 'a': - state = 5260; - return true; - case 'f': - state = 5262; - return true; - case 'l': - state = 5263; - return true; - } - break; - case 5260: - if ('r' == current) { - state = 5261; - return true; - } - break; - case 5261: - // lopar; - if (';' == current) { - match = "\u2985"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5262: - // lopf; - if (';' == current) { - match = "\uD835\uDD5D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5263: - if ('u' == current) { - state = 5264; - return true; - } - break; - case 5264: - if ('s' == current) { - state = 5265; - return true; - } - break; - case 5265: - // loplus; - if (';' == current) { - match = "\u2A2D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5266: - if ('i' == current) { - state = 5267; - return true; - } - break; - case 5267: - if ('m' == current) { - state = 5268; - return true; - } - break; - case 5268: - if ('e' == current) { - state = 5269; - return true; - } - break; - case 5269: - if ('s' == current) { - state = 5270; - return true; - } - break; - case 5270: - // lotimes; - if (';' == current) { - match = "\u2A34"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5271: - if ('a' == current) { - state = 5272; - return true; - } - else if ('b' == current) { - state = 5275; - return true; - } - break; - case 5272: - if ('s' == current) { - state = 5273; - return true; - } - break; - case 5273: - if ('t' == current) { - state = 5274; - return true; - } - break; - case 5274: - // lowast; - if (';' == current) { - match = "\u2217"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5275: - if ('a' == current) { - state = 5276; - return true; - } - break; - case 5276: - if ('r' == current) { - state = 5277; - return true; - } - break; - case 5277: - // lowbar; - if (';' == current) { - match = "_"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5278: - switch (current) { - case ';': // loz; - match = "\u25CA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'e': - state = 5279; - return true; - case 'f': - state = 5283; - return true; - } - break; - case 5279: - if ('n' == current) { - state = 5280; - return true; - } - break; - case 5280: - if ('g' == current) { - state = 5281; - return true; - } - break; - case 5281: - if ('e' == current) { - state = 5282; - return true; - } - break; - case 5282: - // lozenge; - if (';' == current) { - match = "\u25CA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5283: - // lozf; - if (';' == current) { - match = "\u29EB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5284: - if ('a' == current) { - state = 5285; - return true; - } - break; - case 5285: - if ('r' == current) { - state = 5286; - return true; - } - break; - case 5286: - // lpar; - if (';' == current) { - match = "("; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('l' == current) { - state = 5287; - return true; - } - break; - case 5287: - if ('t' == current) { - state = 5288; - return true; - } - break; - case 5288: - // lparlt; - if (';' == current) { - match = "\u2993"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5289: - switch (current) { - case 'a': - state = 5290; - return true; - case 'c': - state = 5293; - return true; - case 'h': - state = 5299; - return true; - case 'm': - state = 5303; - return true; - case 't': - state = 5304; - return true; - } - break; - case 5290: - if ('r' == current) { - state = 5291; - return true; - } - break; - case 5291: - if ('r' == current) { - state = 5292; - return true; - } - break; - case 5292: - // lrarr; - if (';' == current) { - match = "\u21C6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5293: - if ('o' == current) { - state = 5294; - return true; - } - break; - case 5294: - if ('r' == current) { - state = 5295; - return true; - } - break; - case 5295: - if ('n' == current) { - state = 5296; - return true; - } - break; - case 5296: - if ('e' == current) { - state = 5297; - return true; - } - break; - case 5297: - if ('r' == current) { - state = 5298; - return true; - } - break; - case 5298: - // lrcorner; - if (';' == current) { - match = "\u231F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5299: - if ('a' == current) { - state = 5300; - return true; - } - break; - case 5300: - if ('r' == current) { - state = 5301; - return true; - } - break; - case 5301: - // lrhar; - if (';' == current) { - match = "\u21CB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('d' == current) { - state = 5302; - return true; - } - break; - case 5302: - // lrhard; - if (';' == current) { - match = "\u296D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5303: - // lrm; - if (';' == current) { - match = "\u200E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5304: - if ('r' == current) { - state = 5305; - return true; - } - break; - case 5305: - if ('i' == current) { - state = 5306; - return true; - } - break; - case 5306: - // lrtri; - if (';' == current) { - match = "\u22BF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5307: - switch (current) { - case 'a': - state = 5308; - return true; - case 'c': - state = 5312; - return true; - case 'h': - state = 5314; - return true; - case 'i': - state = 5315; - return true; - case 'q': - state = 5319; - return true; - case 't': - state = 5324; - return true; - } - break; - case 5308: - if ('q' == current) { - state = 5309; - return true; - } - break; - case 5309: - if ('u' == current) { - state = 5310; - return true; - } - break; - case 5310: - if ('o' == current) { - state = 5311; - return true; - } - break; - case 5311: - // lsaquo; - if (';' == current) { - match = "\u2039"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5312: - if ('r' == current) { - state = 5313; - return true; - } - break; - case 5313: - // lscr; - if (';' == current) { - match = "\uD835\uDCC1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5314: - // lsh; - if (';' == current) { - match = "\u21B0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5315: - if ('m' == current) { - state = 5316; - return true; - } - break; - case 5316: - switch (current) { - case ';': // lsim; - match = "\u2272"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'e': - state = 5317; - return true; - case 'g': - state = 5318; - return true; - } - break; - case 5317: - // lsime; - if (';' == current) { - match = "\u2A8D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5318: - // lsimg; - if (';' == current) { - match = "\u2A8F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5319: - if ('b' == current) { - state = 5320; - return true; - } - else if ('u' == current) { - state = 5321; - return true; - } - break; - case 5320: - // lsqb; - if (';' == current) { - match = "["; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5321: - if ('o' == current) { - state = 5322; - return true; - } - break; - case 5322: - // lsquo; - if (';' == current) { - match = "\u2018"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('r' == current) { - state = 5323; - return true; - } - break; - case 5323: - // lsquor; - if (';' == current) { - match = "\u201A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5324: - if ('r' == current) { - state = 5325; - return true; - } - break; - case 5325: - if ('o' == current) { - state = 5326; - return true; - } - break; - case 5326: - if ('k' == current) { - state = 5327; - return true; - } - break; - case 5327: - // lstrok; - if (';' == current) { - match = "\u0142"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5328: - switch (current) { - case ';': // lt; - match = "<"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'c': - state = 5329; - return true; - case 'd': - state = 5333; - return true; - case 'h': - state = 5336; - return true; - case 'i': - state = 5340; - return true; - case 'l': - state = 5344; - return true; - case 'q': - state = 5348; - return true; - case 'r': - state = 5353; - return true; - } - break; - case 5329: - if ('c' == current) { - state = 5330; - return true; - } - else if ('i' == current) { - state = 5331; - return true; - } - break; - case 5330: - // ltcc; - if (';' == current) { - match = "\u2AA6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5331: - if ('r' == current) { - state = 5332; - return true; - } - break; - case 5332: - // ltcir; - if (';' == current) { - match = "\u2A79"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5333: - if ('o' == current) { - state = 5334; - return true; - } - break; - case 5334: - if ('t' == current) { - state = 5335; - return true; - } - break; - case 5335: - // ltdot; - if (';' == current) { - match = "\u22D6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5336: - if ('r' == current) { - state = 5337; - return true; - } - break; - case 5337: - if ('e' == current) { - state = 5338; - return true; - } - break; - case 5338: - if ('e' == current) { - state = 5339; - return true; - } - break; - case 5339: - // lthree; - if (';' == current) { - match = "\u22CB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5340: - if ('m' == current) { - state = 5341; - return true; - } - break; - case 5341: - if ('e' == current) { - state = 5342; - return true; - } - break; - case 5342: - if ('s' == current) { - state = 5343; - return true; - } - break; - case 5343: - // ltimes; - if (';' == current) { - match = "\u22C9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5344: - if ('a' == current) { - state = 5345; - return true; - } - break; - case 5345: - if ('r' == current) { - state = 5346; - return true; - } - break; - case 5346: - if ('r' == current) { - state = 5347; - return true; - } - break; - case 5347: - // ltlarr; - if (';' == current) { - match = "\u2976"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5348: - if ('u' == current) { - state = 5349; - return true; - } - break; - case 5349: - if ('e' == current) { - state = 5350; - return true; - } - break; - case 5350: - if ('s' == current) { - state = 5351; - return true; - } - break; - case 5351: - if ('t' == current) { - state = 5352; - return true; - } - break; - case 5352: - // ltquest; - if (';' == current) { - match = "\u2A7B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5353: - if ('P' == current) { - state = 5354; - return true; - } - else if ('i' == current) { - state = 5357; - return true; - } - break; - case 5354: - if ('a' == current) { - state = 5355; - return true; - } - break; - case 5355: - if ('r' == current) { - state = 5356; - return true; - } - break; - case 5356: - // ltrPar; - if (';' == current) { - match = "\u2996"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5357: - switch (current) { - case ';': // ltri; - match = "\u25C3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'e': - state = 5358; - return true; - case 'f': - state = 5359; - return true; - } - break; - case 5358: - // ltrie; - if (';' == current) { - match = "\u22B4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5359: - // ltrif; - if (';' == current) { - match = "\u25C2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5360: - if ('r' == current) { - state = 5361; - return true; - } - break; - case 5361: - if ('d' == current) { - state = 5362; - return true; - } - else if ('u' == current) { - state = 5367; - return true; - } - break; - case 5362: - if ('s' == current) { - state = 5363; - return true; - } - break; - case 5363: - if ('h' == current) { - state = 5364; - return true; - } - break; - case 5364: - if ('a' == current) { - state = 5365; - return true; - } - break; - case 5365: - if ('r' == current) { - state = 5366; - return true; - } - break; - case 5366: - // lurdshar; - if (';' == current) { - match = "\u294A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5367: - if ('h' == current) { - state = 5368; - return true; - } - break; - case 5368: - if ('a' == current) { - state = 5369; - return true; - } - break; - case 5369: - if ('r' == current) { - state = 5370; - return true; - } - break; - case 5370: - // luruhar; - if (';' == current) { - match = "\u2966"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5371: - if ('e' == current) { - state = 5372; - return true; - } - else if ('n' == current) { - state = 5379; - return true; - } - break; - case 5372: - if ('r' == current) { - state = 5373; - return true; - } - break; - case 5373: - if ('t' == current) { - state = 5374; - return true; - } - break; - case 5374: - if ('n' == current) { - state = 5375; - return true; - } - break; - case 5375: - if ('e' == current) { - state = 5376; - return true; - } - break; - case 5376: - if ('q' == current) { - state = 5377; - return true; - } - break; - case 5377: - if ('q' == current) { - state = 5378; - return true; - } - break; - case 5378: - // lvertneqq; - if (';' == current) { - match = "\u2268\uFE00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5379: - if ('E' == current) { - state = 5380; - return true; - } - break; - case 5380: - // lvnE; - if (';' == current) { - match = "\u2268\uFE00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5381: - switch (current) { - case 'D': - state = 5382; - return true; - case 'a': - state = 5386; - return true; - case 'c': - state = 5413; - return true; - case 'd': - state = 5419; - return true; - case 'e': - state = 5423; - return true; - case 'f': - state = 5435; - return true; - case 'h': - state = 5437; - return true; - case 'i': - state = 5439; - return true; - case 'l': - state = 5459; - return true; - case 'n': - state = 5464; - return true; - case 'o': - state = 5469; - return true; - case 'p': - state = 5476; - return true; - case 's': - state = 5477; - return true; - case 'u': - state = 5484; - return true; - } - break; - case 5382: - if ('D' == current) { - state = 5383; - return true; - } - break; - case 5383: - if ('o' == current) { - state = 5384; - return true; - } - break; - case 5384: - if ('t' == current) { - state = 5385; - return true; - } - break; - case 5385: - // mDDot; - if (';' == current) { - match = "\u223A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5386: - switch (current) { - case 'c': - state = 5387; - return true; - case 'l': - state = 5389; - return true; - case 'p': - state = 5395; - return true; - case 'r': - state = 5409; - return true; - } - break; - case 5387: - // macr - if ('r' == current) { - match = "\u00AF"; - matchLength = consumedCount; - state = 5388; - return true; - } - break; - case 5388: - // macr; - if (';' == current) { - match = "\u00AF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5389: - if ('e' == current) { - state = 5390; - return true; - } - else if ('t' == current) { - state = 5391; - return true; - } - break; - case 5390: - // male; - if (';' == current) { - match = "\u2642"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5391: - // malt; - if (';' == current) { - match = "\u2720"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 5392; - return true; - } - break; - case 5392: - if ('s' == current) { - state = 5393; - return true; - } - break; - case 5393: - if ('e' == current) { - state = 5394; - return true; - } - break; - case 5394: - // maltese; - if (';' == current) { - match = "\u2720"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5395: - // map; - if (';' == current) { - match = "\u21A6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('s' == current) { - state = 5396; - return true; - } - break; - case 5396: - if ('t' == current) { - state = 5397; - return true; - } - break; - case 5397: - if ('o' == current) { - state = 5398; - return true; - } - break; - case 5398: - switch (current) { - case ';': // mapsto; - match = "\u21A6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'd': - state = 5399; - return true; - case 'l': - state = 5403; - return true; - case 'u': - state = 5407; - return true; - } - break; - case 5399: - if ('o' == current) { - state = 5400; - return true; - } - break; - case 5400: - if ('w' == current) { - state = 5401; - return true; - } - break; - case 5401: - if ('n' == current) { - state = 5402; - return true; - } - break; - case 5402: - // mapstodown; - if (';' == current) { - match = "\u21A7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5403: - if ('e' == current) { - state = 5404; - return true; - } - break; - case 5404: - if ('f' == current) { - state = 5405; - return true; - } - break; - case 5405: - if ('t' == current) { - state = 5406; - return true; - } - break; - case 5406: - // mapstoleft; - if (';' == current) { - match = "\u21A4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5407: - if ('p' == current) { - state = 5408; - return true; - } - break; - case 5408: - // mapstoup; - if (';' == current) { - match = "\u21A5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5409: - if ('k' == current) { - state = 5410; - return true; - } - break; - case 5410: - if ('e' == current) { - state = 5411; - return true; - } - break; - case 5411: - if ('r' == current) { - state = 5412; - return true; - } - break; - case 5412: - // marker; - if (';' == current) { - match = "\u25AE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5413: - if ('o' == current) { - state = 5414; - return true; - } - else if ('y' == current) { - state = 5418; - return true; - } - break; - case 5414: - if ('m' == current) { - state = 5415; - return true; - } - break; - case 5415: - if ('m' == current) { - state = 5416; - return true; - } - break; - case 5416: - if ('a' == current) { - state = 5417; - return true; - } - break; - case 5417: - // mcomma; - if (';' == current) { - match = "\u2A29"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5418: - // mcy; - if (';' == current) { - match = "\u043C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5419: - if ('a' == current) { - state = 5420; - return true; - } - break; - case 5420: - if ('s' == current) { - state = 5421; - return true; - } - break; - case 5421: - if ('h' == current) { - state = 5422; - return true; - } - break; - case 5422: - // mdash; - if (';' == current) { - match = "\u2014"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5423: - if ('a' == current) { - state = 5424; - return true; - } - break; - case 5424: - if ('s' == current) { - state = 5425; - return true; - } - break; - case 5425: - if ('u' == current) { - state = 5426; - return true; - } - break; - case 5426: - if ('r' == current) { - state = 5427; - return true; - } - break; - case 5427: - if ('e' == current) { - state = 5428; - return true; - } - break; - case 5428: - if ('d' == current) { - state = 5429; - return true; - } - break; - case 5429: - if ('a' == current) { - state = 5430; - return true; - } - break; - case 5430: - if ('n' == current) { - state = 5431; - return true; - } - break; - case 5431: - if ('g' == current) { - state = 5432; - return true; - } - break; - case 5432: - if ('l' == current) { - state = 5433; - return true; - } - break; - case 5433: - if ('e' == current) { - state = 5434; - return true; - } - break; - case 5434: - // measuredangle; - if (';' == current) { - match = "\u2221"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5435: - if ('r' == current) { - state = 5436; - return true; - } - break; - case 5436: - // mfr; - if (';' == current) { - match = "\uD835\uDD2A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5437: - if ('o' == current) { - state = 5438; - return true; - } - break; - case 5438: - // mho; - if (';' == current) { - match = "\u2127"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5439: - switch (current) { - case 'c': - state = 5440; - return true; - case 'd': - state = 5443; - return true; - case 'n': - state = 5453; - return true; - } - break; - case 5440: - if ('r' == current) { - state = 5441; - return true; - } - break; - case 5441: - // micro - if ('o' == current) { - match = "\u00B5"; - matchLength = consumedCount; - state = 5442; - return true; - } - break; - case 5442: - // micro; - if (';' == current) { - match = "\u00B5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5443: - switch (current) { - case ';': // mid; - match = "\u2223"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'a': - state = 5444; - return true; - case 'c': - state = 5447; - return true; - case 'd': - state = 5450; - return true; - } - break; - case 5444: - if ('s' == current) { - state = 5445; - return true; - } - break; - case 5445: - if ('t' == current) { - state = 5446; - return true; - } - break; - case 5446: - // midast; - if (';' == current) { - match = "*"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5447: - if ('i' == current) { - state = 5448; - return true; - } - break; - case 5448: - if ('r' == current) { - state = 5449; - return true; - } - break; - case 5449: - // midcir; - if (';' == current) { - match = "\u2AF0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5450: - if ('o' == current) { - state = 5451; - return true; - } - break; - case 5451: - // middot - if ('t' == current) { - match = "\u00B7"; - matchLength = consumedCount; - state = 5452; - return true; - } - break; - case 5452: - // middot; - if (';' == current) { - match = "\u00B7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5453: - if ('u' == current) { - state = 5454; - return true; - } - break; - case 5454: - if ('s' == current) { - state = 5455; - return true; - } - break; - case 5455: - switch (current) { - case ';': // minus; - match = "\u2212"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'b': - state = 5456; - return true; - case 'd': - state = 5457; - return true; - } - break; - case 5456: - // minusb; - if (';' == current) { - match = "\u229F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5457: - // minusd; - if (';' == current) { - match = "\u2238"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('u' == current) { - state = 5458; - return true; - } - break; - case 5458: - // minusdu; - if (';' == current) { - match = "\u2A2A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5459: - if ('c' == current) { - state = 5460; - return true; - } - else if ('d' == current) { - state = 5462; - return true; - } - break; - case 5460: - if ('p' == current) { - state = 5461; - return true; - } - break; - case 5461: - // mlcp; - if (';' == current) { - match = "\u2ADB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5462: - if ('r' == current) { - state = 5463; - return true; - } - break; - case 5463: - // mldr; - if (';' == current) { - match = "\u2026"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5464: - if ('p' == current) { - state = 5465; - return true; - } - break; - case 5465: - if ('l' == current) { - state = 5466; - return true; - } - break; - case 5466: - if ('u' == current) { - state = 5467; - return true; - } - break; - case 5467: - if ('s' == current) { - state = 5468; - return true; - } - break; - case 5468: - // mnplus; - if (';' == current) { - match = "\u2213"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5469: - if ('d' == current) { - state = 5470; - return true; - } - else if ('p' == current) { - state = 5474; - return true; - } - break; - case 5470: - if ('e' == current) { - state = 5471; - return true; - } - break; - case 5471: - if ('l' == current) { - state = 5472; - return true; - } - break; - case 5472: - if ('s' == current) { - state = 5473; - return true; - } - break; - case 5473: - // models; - if (';' == current) { - match = "\u22A7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5474: - if ('f' == current) { - state = 5475; - return true; - } - break; - case 5475: - // mopf; - if (';' == current) { - match = "\uD835\uDD5E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5476: - // mp; - if (';' == current) { - match = "\u2213"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5477: - if ('c' == current) { - state = 5478; - return true; - } - else if ('t' == current) { - state = 5480; - return true; - } - break; - case 5478: - if ('r' == current) { - state = 5479; - return true; - } - break; - case 5479: - // mscr; - if (';' == current) { - match = "\uD835\uDCC2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5480: - if ('p' == current) { - state = 5481; - return true; - } - break; - case 5481: - if ('o' == current) { - state = 5482; - return true; - } - break; - case 5482: - if ('s' == current) { - state = 5483; - return true; - } - break; - case 5483: - // mstpos; - if (';' == current) { - match = "\u223E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5484: - switch (current) { - case ';': // mu; - match = "\u03BC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'l': - state = 5485; - return true; - case 'm': - state = 5491; - return true; - } - break; - case 5485: - if ('t' == current) { - state = 5486; - return true; - } - break; - case 5486: - if ('i' == current) { - state = 5487; - return true; - } - break; - case 5487: - if ('m' == current) { - state = 5488; - return true; - } - break; - case 5488: - if ('a' == current) { - state = 5489; - return true; - } - break; - case 5489: - if ('p' == current) { - state = 5490; - return true; - } - break; - case 5490: - // multimap; - if (';' == current) { - match = "\u22B8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5491: - if ('a' == current) { - state = 5492; - return true; - } - break; - case 5492: - if ('p' == current) { - state = 5493; - return true; - } - break; - case 5493: - // mumap; - if (';' == current) { - match = "\u22B8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5494: - switch (current) { - case 'G': - state = 5495; - return true; - case 'L': - state = 5499; - return true; - case 'R': - state = 5521; - return true; - case 'V': - state = 5531; - return true; - case 'a': - state = 5540; - return true; - case 'b': - state = 5566; - return true; - case 'c': - state = 5573; - return true; - case 'd': - state = 5592; - return true; - case 'e': - state = 5596; - return true; - case 'f': - state = 5625; - return true; - case 'g': - state = 5627; - return true; - case 'h': - state = 5643; - return true; - case 'i': - state = 5653; - return true; - case 'j': - state = 5657; - return true; - case 'l': - state = 5660; - return true; - case 'm': - state = 5704; - return true; - case 'o': - state = 5707; - return true; - case 'p': - state = 5727; - return true; - case 'r': - state = 5751; - return true; - case 's': - state = 5773; - return true; - case 't': - state = 5835; - return true; - case 'u': - state = 5864; - return true; - case 'v': - state = 5871; - return true; - case 'w': - state = 5914; - return true; - } - break; - case 5495: - if ('g' == current) { - state = 5496; - return true; - } - else if ('t' == current) { - state = 5497; - return true; - } - break; - case 5496: - // nGg; - if (';' == current) { - match = "\u22D9\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5497: - // nGt; - if (';' == current) { - match = "\u226B\u20D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('v' == current) { - state = 5498; - return true; - } - break; - case 5498: - // nGtv; - if (';' == current) { - match = "\u226B\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5499: - switch (current) { - case 'e': - state = 5500; - return true; - case 'l': - state = 5518; - return true; - case 't': - state = 5519; - return true; - } - break; - case 5500: - if ('f' == current) { - state = 5501; - return true; - } - break; - case 5501: - if ('t' == current) { - state = 5502; - return true; - } - break; - case 5502: - if ('a' == current) { - state = 5503; - return true; - } - else if ('r' == current) { - state = 5508; - return true; - } - break; - case 5503: - if ('r' == current) { - state = 5504; - return true; - } - break; - case 5504: - if ('r' == current) { - state = 5505; - return true; - } - break; - case 5505: - if ('o' == current) { - state = 5506; - return true; - } - break; - case 5506: - if ('w' == current) { - state = 5507; - return true; - } - break; - case 5507: - // nLeftarrow; - if (';' == current) { - match = "\u21CD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5508: - if ('i' == current) { - state = 5509; - return true; - } - break; - case 5509: - if ('g' == current) { - state = 5510; - return true; - } - break; - case 5510: - if ('h' == current) { - state = 5511; - return true; - } - break; - case 5511: - if ('t' == current) { - state = 5512; - return true; - } - break; - case 5512: - if ('a' == current) { - state = 5513; - return true; - } - break; - case 5513: - if ('r' == current) { - state = 5514; - return true; - } - break; - case 5514: - if ('r' == current) { - state = 5515; - return true; - } - break; - case 5515: - if ('o' == current) { - state = 5516; - return true; - } - break; - case 5516: - if ('w' == current) { - state = 5517; - return true; - } - break; - case 5517: - // nLeftrightarrow; - if (';' == current) { - match = "\u21CE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5518: - // nLl; - if (';' == current) { - match = "\u22D8\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5519: - // nLt; - if (';' == current) { - match = "\u226A\u20D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('v' == current) { - state = 5520; - return true; - } - break; - case 5520: - // nLtv; - if (';' == current) { - match = "\u226A\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5521: - if ('i' == current) { - state = 5522; - return true; - } - break; - case 5522: - if ('g' == current) { - state = 5523; - return true; - } - break; - case 5523: - if ('h' == current) { - state = 5524; - return true; - } - break; - case 5524: - if ('t' == current) { - state = 5525; - return true; - } - break; - case 5525: - if ('a' == current) { - state = 5526; - return true; - } - break; - case 5526: - if ('r' == current) { - state = 5527; - return true; - } - break; - case 5527: - if ('r' == current) { - state = 5528; - return true; - } - break; - case 5528: - if ('o' == current) { - state = 5529; - return true; - } - break; - case 5529: - if ('w' == current) { - state = 5530; - return true; - } - break; - case 5530: - // nRightarrow; - if (';' == current) { - match = "\u21CF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5531: - if ('D' == current) { - state = 5532; - return true; - } - else if ('d' == current) { - state = 5536; - return true; - } - break; - case 5532: - if ('a' == current) { - state = 5533; - return true; - } - break; - case 5533: - if ('s' == current) { - state = 5534; - return true; - } - break; - case 5534: - if ('h' == current) { - state = 5535; - return true; - } - break; - case 5535: - // nVDash; - if (';' == current) { - match = "\u22AF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5536: - if ('a' == current) { - state = 5537; - return true; - } - break; - case 5537: - if ('s' == current) { - state = 5538; - return true; - } - break; - case 5538: - if ('h' == current) { - state = 5539; - return true; - } - break; - case 5539: - // nVdash; - if (';' == current) { - match = "\u22AE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5540: - switch (current) { - case 'b': - state = 5541; - return true; - case 'c': - state = 5544; - return true; - case 'n': - state = 5548; - return true; - case 'p': - state = 5550; - return true; - case 't': - state = 5560; - return true; - } - break; - case 5541: - if ('l' == current) { - state = 5542; - return true; - } - break; - case 5542: - if ('a' == current) { - state = 5543; - return true; - } - break; - case 5543: - // nabla; - if (';' == current) { - match = "\u2207"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5544: - if ('u' == current) { - state = 5545; - return true; - } - break; - case 5545: - if ('t' == current) { - state = 5546; - return true; - } - break; - case 5546: - if ('e' == current) { - state = 5547; - return true; - } - break; - case 5547: - // nacute; - if (';' == current) { - match = "\u0144"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5548: - if ('g' == current) { - state = 5549; - return true; - } - break; - case 5549: - // nang; - if (';' == current) { - match = "\u2220\u20D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5550: - switch (current) { - case ';': // nap; - match = "\u2249"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 5551; - return true; - case 'i': - state = 5552; - return true; - case 'o': - state = 5554; - return true; - case 'p': - state = 5556; - return true; - } - break; - case 5551: - // napE; - if (';' == current) { - match = "\u2A70\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5552: - if ('d' == current) { - state = 5553; - return true; - } - break; - case 5553: - // napid; - if (';' == current) { - match = "\u224B\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5554: - if ('s' == current) { - state = 5555; - return true; - } - break; - case 5555: - // napos; - if (';' == current) { - match = "\u0149"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5556: - if ('r' == current) { - state = 5557; - return true; - } - break; - case 5557: - if ('o' == current) { - state = 5558; - return true; - } - break; - case 5558: - if ('x' == current) { - state = 5559; - return true; - } - break; - case 5559: - // napprox; - if (';' == current) { - match = "\u2249"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5560: - if ('u' == current) { - state = 5561; - return true; - } - break; - case 5561: - if ('r' == current) { - state = 5562; - return true; - } - break; - case 5562: - // natur; - if (';' == current) { - match = "\u266E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('a' == current) { - state = 5563; - return true; - } - break; - case 5563: - if ('l' == current) { - state = 5564; - return true; - } - break; - case 5564: - // natural; - if (';' == current) { - match = "\u266E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('s' == current) { - state = 5565; - return true; - } - break; - case 5565: - // naturals; - if (';' == current) { - match = "\u2115"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5566: - if ('s' == current) { - state = 5567; - return true; - } - else if ('u' == current) { - state = 5569; - return true; - } - break; - case 5567: - // nbsp - if ('p' == current) { - match = "\u00A0"; - matchLength = consumedCount; - state = 5568; - return true; - } - break; - case 5568: - // nbsp; - if (';' == current) { - match = "\u00A0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5569: - if ('m' == current) { - state = 5570; - return true; - } - break; - case 5570: - if ('p' == current) { - state = 5571; - return true; - } - break; - case 5571: - // nbump; - if (';' == current) { - match = "\u224E\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 5572; - return true; - } - break; - case 5572: - // nbumpe; - if (';' == current) { - match = "\u224F\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5573: - switch (current) { - case 'a': - state = 5574; - return true; - case 'e': - state = 5579; - return true; - case 'o': - state = 5583; - return true; - case 'u': - state = 5589; - return true; - case 'y': - state = 5591; - return true; - } - break; - case 5574: - if ('p' == current) { - state = 5575; - return true; - } - else if ('r' == current) { - state = 5576; - return true; - } - break; - case 5575: - // ncap; - if (';' == current) { - match = "\u2A43"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5576: - if ('o' == current) { - state = 5577; - return true; - } - break; - case 5577: - if ('n' == current) { - state = 5578; - return true; - } - break; - case 5578: - // ncaron; - if (';' == current) { - match = "\u0148"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5579: - if ('d' == current) { - state = 5580; - return true; - } - break; - case 5580: - if ('i' == current) { - state = 5581; - return true; - } - break; - case 5581: - if ('l' == current) { - state = 5582; - return true; - } - break; - case 5582: - // ncedil; - if (';' == current) { - match = "\u0146"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5583: - if ('n' == current) { - state = 5584; - return true; - } - break; - case 5584: - if ('g' == current) { - state = 5585; - return true; - } - break; - case 5585: - // ncong; - if (';' == current) { - match = "\u2247"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('d' == current) { - state = 5586; - return true; - } - break; - case 5586: - if ('o' == current) { - state = 5587; - return true; - } - break; - case 5587: - if ('t' == current) { - state = 5588; - return true; - } - break; - case 5588: - // ncongdot; - if (';' == current) { - match = "\u2A6D\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5589: - if ('p' == current) { - state = 5590; - return true; - } - break; - case 5590: - // ncup; - if (';' == current) { - match = "\u2A42"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5591: - // ncy; - if (';' == current) { - match = "\u043D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5592: - if ('a' == current) { - state = 5593; - return true; - } - break; - case 5593: - if ('s' == current) { - state = 5594; - return true; - } - break; - case 5594: - if ('h' == current) { - state = 5595; - return true; - } - break; - case 5595: - // ndash; - if (';' == current) { - match = "\u2013"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5596: - switch (current) { - case ';': // ne; - match = "\u2260"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'A': - state = 5597; - return true; - case 'a': - state = 5600; - return true; - case 'd': - state = 5607; - return true; - case 'q': - state = 5610; - return true; - case 's': - state = 5614; - return true; - case 'x': - state = 5620; - return true; - } - break; - case 5597: - if ('r' == current) { - state = 5598; - return true; - } - break; - case 5598: - if ('r' == current) { - state = 5599; - return true; - } - break; - case 5599: - // neArr; - if (';' == current) { - match = "\u21D7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5600: - if ('r' == current) { - state = 5601; - return true; - } - break; - case 5601: - if ('h' == current) { - state = 5602; - return true; - } - else if ('r' == current) { - state = 5604; - return true; - } - break; - case 5602: - if ('k' == current) { - state = 5603; - return true; - } - break; - case 5603: - // nearhk; - if (';' == current) { - match = "\u2924"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5604: - // nearr; - if (';' == current) { - match = "\u2197"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('o' == current) { - state = 5605; - return true; - } - break; - case 5605: - if ('w' == current) { - state = 5606; - return true; - } - break; - case 5606: - // nearrow; - if (';' == current) { - match = "\u2197"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5607: - if ('o' == current) { - state = 5608; - return true; - } - break; - case 5608: - if ('t' == current) { - state = 5609; - return true; - } - break; - case 5609: - // nedot; - if (';' == current) { - match = "\u2250\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5610: - if ('u' == current) { - state = 5611; - return true; - } - break; - case 5611: - if ('i' == current) { - state = 5612; - return true; - } - break; - case 5612: - if ('v' == current) { - state = 5613; - return true; - } - break; - case 5613: - // nequiv; - if (';' == current) { - match = "\u2262"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5614: - if ('e' == current) { - state = 5615; - return true; - } - else if ('i' == current) { - state = 5618; - return true; - } - break; - case 5615: - if ('a' == current) { - state = 5616; - return true; - } - break; - case 5616: - if ('r' == current) { - state = 5617; - return true; - } - break; - case 5617: - // nesear; - if (';' == current) { - match = "\u2928"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5618: - if ('m' == current) { - state = 5619; - return true; - } - break; - case 5619: - // nesim; - if (';' == current) { - match = "\u2242\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5620: - if ('i' == current) { - state = 5621; - return true; - } - break; - case 5621: - if ('s' == current) { - state = 5622; - return true; - } - break; - case 5622: - if ('t' == current) { - state = 5623; - return true; - } - break; - case 5623: - // nexist; - if (';' == current) { - match = "\u2204"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('s' == current) { - state = 5624; - return true; - } - break; - case 5624: - // nexists; - if (';' == current) { - match = "\u2204"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5625: - if ('r' == current) { - state = 5626; - return true; - } - break; - case 5626: - // nfr; - if (';' == current) { - match = "\uD835\uDD2B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5627: - switch (current) { - case 'E': - state = 5628; - return true; - case 'e': - state = 5629; - return true; - case 's': - state = 5638; - return true; - case 't': - state = 5641; - return true; - } - break; - case 5628: - // ngE; - if (';' == current) { - match = "\u2267\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5629: - switch (current) { - case ';': // nge; - match = "\u2271"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'q': - state = 5630; - return true; - case 's': - state = 5637; - return true; - } - break; - case 5630: - switch (current) { - case ';': // ngeq; - match = "\u2271"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'q': - state = 5631; - return true; - case 's': - state = 5632; - return true; - } - break; - case 5631: - // ngeqq; - if (';' == current) { - match = "\u2267\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5632: - if ('l' == current) { - state = 5633; - return true; - } - break; - case 5633: - if ('a' == current) { - state = 5634; - return true; - } - break; - case 5634: - if ('n' == current) { - state = 5635; - return true; - } - break; - case 5635: - if ('t' == current) { - state = 5636; - return true; - } - break; - case 5636: - // ngeqslant; - if (';' == current) { - match = "\u2A7E\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5637: - // nges; - if (';' == current) { - match = "\u2A7E\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5638: - if ('i' == current) { - state = 5639; - return true; - } - break; - case 5639: - if ('m' == current) { - state = 5640; - return true; - } - break; - case 5640: - // ngsim; - if (';' == current) { - match = "\u2275"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5641: - // ngt; - if (';' == current) { - match = "\u226F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('r' == current) { - state = 5642; - return true; - } - break; - case 5642: - // ngtr; - if (';' == current) { - match = "\u226F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5643: - switch (current) { - case 'A': - state = 5644; - return true; - case 'a': - state = 5647; - return true; - case 'p': - state = 5650; - return true; - } - break; - case 5644: - if ('r' == current) { - state = 5645; - return true; - } - break; - case 5645: - if ('r' == current) { - state = 5646; - return true; - } - break; - case 5646: - // nhArr; - if (';' == current) { - match = "\u21CE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5647: - if ('r' == current) { - state = 5648; - return true; - } - break; - case 5648: - if ('r' == current) { - state = 5649; - return true; - } - break; - case 5649: - // nharr; - if (';' == current) { - match = "\u21AE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5650: - if ('a' == current) { - state = 5651; - return true; - } - break; - case 5651: - if ('r' == current) { - state = 5652; - return true; - } - break; - case 5652: - // nhpar; - if (';' == current) { - match = "\u2AF2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5653: - switch (current) { - case ';': // ni; - match = "\u220B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 's': - state = 5654; - return true; - case 'v': - state = 5656; - return true; - } - break; - case 5654: - // nis; - if (';' == current) { - match = "\u22FC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('d' == current) { - state = 5655; - return true; - } - break; - case 5655: - // nisd; - if (';' == current) { - match = "\u22FA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5656: - // niv; - if (';' == current) { - match = "\u220B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5657: - if ('c' == current) { - state = 5658; - return true; - } - break; - case 5658: - if ('y' == current) { - state = 5659; - return true; - } - break; - case 5659: - // njcy; - if (';' == current) { - match = "\u045A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5660: - switch (current) { - case 'A': - state = 5661; - return true; - case 'E': - state = 5664; - return true; - case 'a': - state = 5665; - return true; - case 'd': - state = 5668; - return true; - case 'e': - state = 5670; - return true; - case 's': - state = 5697; - return true; - case 't': - state = 5700; - return true; - } - break; - case 5661: - if ('r' == current) { - state = 5662; - return true; - } - break; - case 5662: - if ('r' == current) { - state = 5663; - return true; - } - break; - case 5663: - // nlArr; - if (';' == current) { - match = "\u21CD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5664: - // nlE; - if (';' == current) { - match = "\u2266\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5665: - if ('r' == current) { - state = 5666; - return true; - } - break; - case 5666: - if ('r' == current) { - state = 5667; - return true; - } - break; - case 5667: - // nlarr; - if (';' == current) { - match = "\u219A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5668: - if ('r' == current) { - state = 5669; - return true; - } - break; - case 5669: - // nldr; - if (';' == current) { - match = "\u2025"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5670: - switch (current) { - case ';': // nle; - match = "\u2270"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'f': - state = 5671; - return true; - case 'q': - state = 5688; - return true; - case 's': - state = 5695; - return true; - } - break; - case 5671: - if ('t' == current) { - state = 5672; - return true; - } - break; - case 5672: - if ('a' == current) { - state = 5673; - return true; - } - else if ('r' == current) { - state = 5678; - return true; - } - break; - case 5673: - if ('r' == current) { - state = 5674; - return true; - } - break; - case 5674: - if ('r' == current) { - state = 5675; - return true; - } - break; - case 5675: - if ('o' == current) { - state = 5676; - return true; - } - break; - case 5676: - if ('w' == current) { - state = 5677; - return true; - } - break; - case 5677: - // nleftarrow; - if (';' == current) { - match = "\u219A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5678: - if ('i' == current) { - state = 5679; - return true; - } - break; - case 5679: - if ('g' == current) { - state = 5680; - return true; - } - break; - case 5680: - if ('h' == current) { - state = 5681; - return true; - } - break; - case 5681: - if ('t' == current) { - state = 5682; - return true; - } - break; - case 5682: - if ('a' == current) { - state = 5683; - return true; - } - break; - case 5683: - if ('r' == current) { - state = 5684; - return true; - } - break; - case 5684: - if ('r' == current) { - state = 5685; - return true; - } - break; - case 5685: - if ('o' == current) { - state = 5686; - return true; - } - break; - case 5686: - if ('w' == current) { - state = 5687; - return true; - } - break; - case 5687: - // nleftrightarrow; - if (';' == current) { - match = "\u21AE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5688: - switch (current) { - case ';': // nleq; - match = "\u2270"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'q': - state = 5689; - return true; - case 's': - state = 5690; - return true; - } - break; - case 5689: - // nleqq; - if (';' == current) { - match = "\u2266\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5690: - if ('l' == current) { - state = 5691; - return true; - } - break; - case 5691: - if ('a' == current) { - state = 5692; - return true; - } - break; - case 5692: - if ('n' == current) { - state = 5693; - return true; - } - break; - case 5693: - if ('t' == current) { - state = 5694; - return true; - } - break; - case 5694: - // nleqslant; - if (';' == current) { - match = "\u2A7D\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5695: - // nles; - if (';' == current) { - match = "\u2A7D\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('s' == current) { - state = 5696; - return true; - } - break; - case 5696: - // nless; - if (';' == current) { - match = "\u226E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5697: - if ('i' == current) { - state = 5698; - return true; - } - break; - case 5698: - if ('m' == current) { - state = 5699; - return true; - } - break; - case 5699: - // nlsim; - if (';' == current) { - match = "\u2274"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5700: - // nlt; - if (';' == current) { - match = "\u226E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('r' == current) { - state = 5701; - return true; - } - break; - case 5701: - if ('i' == current) { - state = 5702; - return true; - } - break; - case 5702: - // nltri; - if (';' == current) { - match = "\u22EA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 5703; - return true; - } - break; - case 5703: - // nltrie; - if (';' == current) { - match = "\u22EC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5704: - if ('i' == current) { - state = 5705; - return true; - } - break; - case 5705: - if ('d' == current) { - state = 5706; - return true; - } - break; - case 5706: - // nmid; - if (';' == current) { - match = "\u2224"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5707: - if ('p' == current) { - state = 5708; - return true; - } - // not - else if ('t' == current) { - match = "\u00AC"; - matchLength = consumedCount; - state = 5710; - return true; - } - break; - case 5708: - if ('f' == current) { - state = 5709; - return true; - } - break; - case 5709: - // nopf; - if (';' == current) { - match = "\uD835\uDD5F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5710: - switch (current) { - case ';': // not; - match = "\u00AC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'i': - state = 5711; - return true; - case 'n': - state = 5721; - return true; - } - break; - case 5711: - if ('n' == current) { - state = 5712; - return true; - } - break; - case 5712: - switch (current) { - case ';': // notin; - match = "\u2209"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 5713; - return true; - case 'd': - state = 5714; - return true; - case 'v': - state = 5717; - return true; - } - break; - case 5713: - // notinE; - if (';' == current) { - match = "\u22F9\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5714: - if ('o' == current) { - state = 5715; - return true; - } - break; - case 5715: - if ('t' == current) { - state = 5716; - return true; - } - break; - case 5716: - // notindot; - if (';' == current) { - match = "\u22F5\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5717: - switch (current) { - case 'a': - state = 5718; - return true; - case 'b': - state = 5719; - return true; - case 'c': - state = 5720; - return true; - } - break; - case 5718: - // notinva; - if (';' == current) { - match = "\u2209"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5719: - // notinvb; - if (';' == current) { - match = "\u22F7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5720: - // notinvc; - if (';' == current) { - match = "\u22F6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5721: - if ('i' == current) { - state = 5722; - return true; - } - break; - case 5722: - // notni; - if (';' == current) { - match = "\u220C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('v' == current) { - state = 5723; - return true; - } - break; - case 5723: - switch (current) { - case 'a': - state = 5724; - return true; - case 'b': - state = 5725; - return true; - case 'c': - state = 5726; - return true; - } - break; - case 5724: - // notniva; - if (';' == current) { - match = "\u220C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5725: - // notnivb; - if (';' == current) { - match = "\u22FE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5726: - // notnivc; - if (';' == current) { - match = "\u22FD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5727: - switch (current) { - case 'a': - state = 5728; - return true; - case 'o': - state = 5738; - return true; - case 'r': - state = 5743; - return true; - } - break; - case 5728: - if ('r' == current) { - state = 5729; - return true; - } - break; - case 5729: - switch (current) { - case ';': // npar; - match = "\u2226"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'a': - state = 5730; - return true; - case 's': - state = 5735; - return true; - case 't': - state = 5737; - return true; - } - break; - case 5730: - if ('l' == current) { - state = 5731; - return true; - } - break; - case 5731: - if ('l' == current) { - state = 5732; - return true; - } - break; - case 5732: - if ('e' == current) { - state = 5733; - return true; - } - break; - case 5733: - if ('l' == current) { - state = 5734; - return true; - } - break; - case 5734: - // nparallel; - if (';' == current) { - match = "\u2226"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5735: - if ('l' == current) { - state = 5736; - return true; - } - break; - case 5736: - // nparsl; - if (';' == current) { - match = "\u2AFD\u20E5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5737: - // npart; - if (';' == current) { - match = "\u2202\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5738: - if ('l' == current) { - state = 5739; - return true; - } - break; - case 5739: - if ('i' == current) { - state = 5740; - return true; - } - break; - case 5740: - if ('n' == current) { - state = 5741; - return true; - } - break; - case 5741: - if ('t' == current) { - state = 5742; - return true; - } - break; - case 5742: - // npolint; - if (';' == current) { - match = "\u2A14"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5743: - switch (current) { - case ';': // npr; - match = "\u2280"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'c': - state = 5744; - return true; - case 'e': - state = 5747; - return true; - } - break; - case 5744: - if ('u' == current) { - state = 5745; - return true; - } - break; - case 5745: - if ('e' == current) { - state = 5746; - return true; - } - break; - case 5746: - // nprcue; - if (';' == current) { - match = "\u22E0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5747: - // npre; - if (';' == current) { - match = "\u2AAF\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('c' == current) { - state = 5748; - return true; - } - break; - case 5748: - // nprec; - if (';' == current) { - match = "\u2280"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 5749; - return true; - } - break; - case 5749: - if ('q' == current) { - state = 5750; - return true; - } - break; - case 5750: - // npreceq; - if (';' == current) { - match = "\u2AAF\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5751: - switch (current) { - case 'A': - state = 5752; - return true; - case 'a': - state = 5755; - return true; - case 'i': - state = 5760; - return true; - case 't': - state = 5769; - return true; - } - break; - case 5752: - if ('r' == current) { - state = 5753; - return true; - } - break; - case 5753: - if ('r' == current) { - state = 5754; - return true; - } - break; - case 5754: - // nrArr; - if (';' == current) { - match = "\u21CF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5755: - if ('r' == current) { - state = 5756; - return true; - } - break; - case 5756: - if ('r' == current) { - state = 5757; - return true; - } - break; - case 5757: - switch (current) { - case ';': // nrarr; - match = "\u219B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'c': - state = 5758; - return true; - case 'w': - state = 5759; - return true; - } - break; - case 5758: - // nrarrc; - if (';' == current) { - match = "\u2933\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5759: - // nrarrw; - if (';' == current) { - match = "\u219D\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5760: - if ('g' == current) { - state = 5761; - return true; - } - break; - case 5761: - if ('h' == current) { - state = 5762; - return true; - } - break; - case 5762: - if ('t' == current) { - state = 5763; - return true; - } - break; - case 5763: - if ('a' == current) { - state = 5764; - return true; - } - break; - case 5764: - if ('r' == current) { - state = 5765; - return true; - } - break; - case 5765: - if ('r' == current) { - state = 5766; - return true; - } - break; - case 5766: - if ('o' == current) { - state = 5767; - return true; - } - break; - case 5767: - if ('w' == current) { - state = 5768; - return true; - } - break; - case 5768: - // nrightarrow; - if (';' == current) { - match = "\u219B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5769: - if ('r' == current) { - state = 5770; - return true; - } - break; - case 5770: - if ('i' == current) { - state = 5771; - return true; - } - break; - case 5771: - // nrtri; - if (';' == current) { - match = "\u22EB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 5772; - return true; - } - break; - case 5772: - // nrtrie; - if (';' == current) { - match = "\u22ED"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5773: - switch (current) { - case 'c': - state = 5774; - return true; - case 'h': - state = 5780; - return true; - case 'i': - state = 5795; - return true; - case 'm': - state = 5799; - return true; - case 'p': - state = 5802; - return true; - case 'q': - state = 5805; - return true; - case 'u': - state = 5812; - return true; - } - break; - case 5774: - switch (current) { - case ';': // nsc; - match = "\u2281"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'c': - state = 5775; - return true; - case 'e': - state = 5778; - return true; - case 'r': - state = 5779; - return true; - } - break; - case 5775: - if ('u' == current) { - state = 5776; - return true; - } - break; - case 5776: - if ('e' == current) { - state = 5777; - return true; - } - break; - case 5777: - // nsccue; - if (';' == current) { - match = "\u22E1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5778: - // nsce; - if (';' == current) { - match = "\u2AB0\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5779: - // nscr; - if (';' == current) { - match = "\uD835\uDCC3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5780: - if ('o' == current) { - state = 5781; - return true; - } - break; - case 5781: - if ('r' == current) { - state = 5782; - return true; - } - break; - case 5782: - if ('t' == current) { - state = 5783; - return true; - } - break; - case 5783: - if ('m' == current) { - state = 5784; - return true; - } - else if ('p' == current) { - state = 5787; - return true; - } - break; - case 5784: - if ('i' == current) { - state = 5785; - return true; - } - break; - case 5785: - if ('d' == current) { - state = 5786; - return true; - } - break; - case 5786: - // nshortmid; - if (';' == current) { - match = "\u2224"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5787: - if ('a' == current) { - state = 5788; - return true; - } - break; - case 5788: - if ('r' == current) { - state = 5789; - return true; - } - break; - case 5789: - if ('a' == current) { - state = 5790; - return true; - } - break; - case 5790: - if ('l' == current) { - state = 5791; - return true; - } - break; - case 5791: - if ('l' == current) { - state = 5792; - return true; - } - break; - case 5792: - if ('e' == current) { - state = 5793; - return true; - } - break; - case 5793: - if ('l' == current) { - state = 5794; - return true; - } - break; - case 5794: - // nshortparallel; - if (';' == current) { - match = "\u2226"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5795: - if ('m' == current) { - state = 5796; - return true; - } - break; - case 5796: - // nsim; - if (';' == current) { - match = "\u2241"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 5797; - return true; - } - break; - case 5797: - // nsime; - if (';' == current) { - match = "\u2244"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('q' == current) { - state = 5798; - return true; - } - break; - case 5798: - // nsimeq; - if (';' == current) { - match = "\u2244"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5799: - if ('i' == current) { - state = 5800; - return true; - } - break; - case 5800: - if ('d' == current) { - state = 5801; - return true; - } - break; - case 5801: - // nsmid; - if (';' == current) { - match = "\u2224"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5802: - if ('a' == current) { - state = 5803; - return true; - } - break; - case 5803: - if ('r' == current) { - state = 5804; - return true; - } - break; - case 5804: - // nspar; - if (';' == current) { - match = "\u2226"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5805: - if ('s' == current) { - state = 5806; - return true; - } - break; - case 5806: - if ('u' == current) { - state = 5807; - return true; - } - break; - case 5807: - if ('b' == current) { - state = 5808; - return true; - } - else if ('p' == current) { - state = 5810; - return true; - } - break; - case 5808: - if ('e' == current) { - state = 5809; - return true; - } - break; - case 5809: - // nsqsube; - if (';' == current) { - match = "\u22E2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5810: - if ('e' == current) { - state = 5811; - return true; - } - break; - case 5811: - // nsqsupe; - if (';' == current) { - match = "\u22E3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5812: - switch (current) { - case 'b': - state = 5813; - return true; - case 'c': - state = 5822; - return true; - case 'p': - state = 5826; - return true; - } - break; - case 5813: - switch (current) { - case ';': // nsub; - match = "\u2284"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 5814; - return true; - case 'e': - state = 5815; - return true; - case 's': - state = 5816; - return true; - } - break; - case 5814: - // nsubE; - if (';' == current) { - match = "\u2AC5\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5815: - // nsube; - if (';' == current) { - match = "\u2288"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5816: - if ('e' == current) { - state = 5817; - return true; - } - break; - case 5817: - if ('t' == current) { - state = 5818; - return true; - } - break; - case 5818: - // nsubset; - if (';' == current) { - match = "\u2282\u20D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 5819; - return true; - } - break; - case 5819: - if ('q' == current) { - state = 5820; - return true; - } - break; - case 5820: - // nsubseteq; - if (';' == current) { - match = "\u2288"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('q' == current) { - state = 5821; - return true; - } - break; - case 5821: - // nsubseteqq; - if (';' == current) { - match = "\u2AC5\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5822: - if ('c' == current) { - state = 5823; - return true; - } - break; - case 5823: - // nsucc; - if (';' == current) { - match = "\u2281"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 5824; - return true; - } - break; - case 5824: - if ('q' == current) { - state = 5825; - return true; - } - break; - case 5825: - // nsucceq; - if (';' == current) { - match = "\u2AB0\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5826: - switch (current) { - case ';': // nsup; - match = "\u2285"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 5827; - return true; - case 'e': - state = 5828; - return true; - case 's': - state = 5829; - return true; - } - break; - case 5827: - // nsupE; - if (';' == current) { - match = "\u2AC6\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5828: - // nsupe; - if (';' == current) { - match = "\u2289"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5829: - if ('e' == current) { - state = 5830; - return true; - } - break; - case 5830: - if ('t' == current) { - state = 5831; - return true; - } - break; - case 5831: - // nsupset; - if (';' == current) { - match = "\u2283\u20D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 5832; - return true; - } - break; - case 5832: - if ('q' == current) { - state = 5833; - return true; - } - break; - case 5833: - // nsupseteq; - if (';' == current) { - match = "\u2289"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('q' == current) { - state = 5834; - return true; - } - break; - case 5834: - // nsupseteqq; - if (';' == current) { - match = "\u2AC6\u0338"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5835: - switch (current) { - case 'g': - state = 5836; - return true; - case 'i': - state = 5838; - return true; - case 'l': - state = 5842; - return true; - case 'r': - state = 5844; - return true; - } - break; - case 5836: - if ('l' == current) { - state = 5837; - return true; - } - break; - case 5837: - // ntgl; - if (';' == current) { - match = "\u2279"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5838: - if ('l' == current) { - state = 5839; - return true; - } - break; - case 5839: - if ('d' == current) { - state = 5840; - return true; - } - break; - case 5840: - // ntilde - if ('e' == current) { - match = "\u00F1"; - matchLength = consumedCount; - state = 5841; - return true; - } - break; - case 5841: - // ntilde; - if (';' == current) { - match = "\u00F1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5842: - if ('g' == current) { - state = 5843; - return true; - } - break; - case 5843: - // ntlg; - if (';' == current) { - match = "\u2278"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5844: - if ('i' == current) { - state = 5845; - return true; - } - break; - case 5845: - if ('a' == current) { - state = 5846; - return true; - } - break; - case 5846: - if ('n' == current) { - state = 5847; - return true; - } - break; - case 5847: - if ('g' == current) { - state = 5848; - return true; - } - break; - case 5848: - if ('l' == current) { - state = 5849; - return true; - } - break; - case 5849: - if ('e' == current) { - state = 5850; - return true; - } - break; - case 5850: - if ('l' == current) { - state = 5851; - return true; - } - else if ('r' == current) { - state = 5857; - return true; - } - break; - case 5851: - if ('e' == current) { - state = 5852; - return true; - } - break; - case 5852: - if ('f' == current) { - state = 5853; - return true; - } - break; - case 5853: - if ('t' == current) { - state = 5854; - return true; - } - break; - case 5854: - // ntriangleleft; - if (';' == current) { - match = "\u22EA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 5855; - return true; - } - break; - case 5855: - if ('q' == current) { - state = 5856; - return true; - } - break; - case 5856: - // ntrianglelefteq; - if (';' == current) { - match = "\u22EC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5857: - if ('i' == current) { - state = 5858; - return true; - } - break; - case 5858: - if ('g' == current) { - state = 5859; - return true; - } - break; - case 5859: - if ('h' == current) { - state = 5860; - return true; - } - break; - case 5860: - if ('t' == current) { - state = 5861; - return true; - } - break; - case 5861: - // ntriangleright; - if (';' == current) { - match = "\u22EB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 5862; - return true; - } - break; - case 5862: - if ('q' == current) { - state = 5863; - return true; - } - break; - case 5863: - // ntrianglerighteq; - if (';' == current) { - match = "\u22ED"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5864: - // nu; - if (';' == current) { - match = "\u03BD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('m' == current) { - state = 5865; - return true; - } - break; - case 5865: - switch (current) { - case ';': // num; - match = "#"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'e': - state = 5866; - return true; - case 's': - state = 5869; - return true; - } - break; - case 5866: - if ('r' == current) { - state = 5867; - return true; - } - break; - case 5867: - if ('o' == current) { - state = 5868; - return true; - } - break; - case 5868: - // numero; - if (';' == current) { - match = "\u2116"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5869: - if ('p' == current) { - state = 5870; - return true; - } - break; - case 5870: - // numsp; - if (';' == current) { - match = "\u2007"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5871: - switch (current) { - case 'D': - state = 5872; - return true; - case 'H': - state = 5876; - return true; - case 'a': - state = 5880; - return true; - case 'd': - state = 5882; - return true; - case 'g': - state = 5886; - return true; - case 'i': - state = 5889; - return true; - case 'l': - state = 5894; - return true; - case 'r': - state = 5903; - return true; - case 's': - state = 5911; - return true; - } - break; - case 5872: - if ('a' == current) { - state = 5873; - return true; - } - break; - case 5873: - if ('s' == current) { - state = 5874; - return true; - } - break; - case 5874: - if ('h' == current) { - state = 5875; - return true; - } - break; - case 5875: - // nvDash; - if (';' == current) { - match = "\u22AD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5876: - if ('a' == current) { - state = 5877; - return true; - } - break; - case 5877: - if ('r' == current) { - state = 5878; - return true; - } - break; - case 5878: - if ('r' == current) { - state = 5879; - return true; - } - break; - case 5879: - // nvHarr; - if (';' == current) { - match = "\u2904"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5880: - if ('p' == current) { - state = 5881; - return true; - } - break; - case 5881: - // nvap; - if (';' == current) { - match = "\u224D\u20D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5882: - if ('a' == current) { - state = 5883; - return true; - } - break; - case 5883: - if ('s' == current) { - state = 5884; - return true; - } - break; - case 5884: - if ('h' == current) { - state = 5885; - return true; - } - break; - case 5885: - // nvdash; - if (';' == current) { - match = "\u22AC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5886: - if ('e' == current) { - state = 5887; - return true; - } - else if ('t' == current) { - state = 5888; - return true; - } - break; - case 5887: - // nvge; - if (';' == current) { - match = "\u2265\u20D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5888: - // nvgt; - if (';' == current) { - match = ">\u20D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5889: - if ('n' == current) { - state = 5890; - return true; - } - break; - case 5890: - if ('f' == current) { - state = 5891; - return true; - } - break; - case 5891: - if ('i' == current) { - state = 5892; - return true; - } - break; - case 5892: - if ('n' == current) { - state = 5893; - return true; - } - break; - case 5893: - // nvinfin; - if (';' == current) { - match = "\u29DE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5894: - switch (current) { - case 'A': - state = 5895; - return true; - case 'e': - state = 5898; - return true; - case 't': - state = 5899; - return true; - } - break; - case 5895: - if ('r' == current) { - state = 5896; - return true; - } - break; - case 5896: - if ('r' == current) { - state = 5897; - return true; - } - break; - case 5897: - // nvlArr; - if (';' == current) { - match = "\u2902"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5898: - // nvle; - if (';' == current) { - match = "\u2264\u20D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5899: - // nvlt; - if (';' == current) { - match = "<\u20D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('r' == current) { - state = 5900; - return true; - } - break; - case 5900: - if ('i' == current) { - state = 5901; - return true; - } - break; - case 5901: - if ('e' == current) { - state = 5902; - return true; - } - break; - case 5902: - // nvltrie; - if (';' == current) { - match = "\u22B4\u20D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5903: - if ('A' == current) { - state = 5904; - return true; - } - else if ('t' == current) { - state = 5907; - return true; - } - break; - case 5904: - if ('r' == current) { - state = 5905; - return true; - } - break; - case 5905: - if ('r' == current) { - state = 5906; - return true; - } - break; - case 5906: - // nvrArr; - if (';' == current) { - match = "\u2903"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5907: - if ('r' == current) { - state = 5908; - return true; - } - break; - case 5908: - if ('i' == current) { - state = 5909; - return true; - } - break; - case 5909: - if ('e' == current) { - state = 5910; - return true; - } - break; - case 5910: - // nvrtrie; - if (';' == current) { - match = "\u22B5\u20D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5911: - if ('i' == current) { - state = 5912; - return true; - } - break; - case 5912: - if ('m' == current) { - state = 5913; - return true; - } - break; - case 5913: - // nvsim; - if (';' == current) { - match = "\u223C\u20D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5914: - switch (current) { - case 'A': - state = 5915; - return true; - case 'a': - state = 5918; - return true; - case 'n': - state = 5925; - return true; - } - break; - case 5915: - if ('r' == current) { - state = 5916; - return true; - } - break; - case 5916: - if ('r' == current) { - state = 5917; - return true; - } - break; - case 5917: - // nwArr; - if (';' == current) { - match = "\u21D6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5918: - if ('r' == current) { - state = 5919; - return true; - } - break; - case 5919: - if ('h' == current) { - state = 5920; - return true; - } - else if ('r' == current) { - state = 5922; - return true; - } - break; - case 5920: - if ('k' == current) { - state = 5921; - return true; - } - break; - case 5921: - // nwarhk; - if (';' == current) { - match = "\u2923"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5922: - // nwarr; - if (';' == current) { - match = "\u2196"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('o' == current) { - state = 5923; - return true; - } - break; - case 5923: - if ('w' == current) { - state = 5924; - return true; - } - break; - case 5924: - // nwarrow; - if (';' == current) { - match = "\u2196"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5925: - if ('e' == current) { - state = 5926; - return true; - } - break; - case 5926: - if ('a' == current) { - state = 5927; - return true; - } - break; - case 5927: - if ('r' == current) { - state = 5928; - return true; - } - break; - case 5928: - // nwnear; - if (';' == current) { - match = "\u2927"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5929: - switch (current) { - case 'S': - state = 5930; - return true; - case 'a': - state = 5931; - return true; - case 'c': - state = 5938; - return true; - case 'd': - state = 5943; - return true; - case 'e': - state = 5959; - return true; - case 'f': - state = 5963; - return true; - case 'g': - state = 5968; - return true; - case 'h': - state = 5976; - return true; - case 'i': - state = 5981; - return true; - case 'l': - state = 5984; - return true; - case 'm': - state = 5999; - return true; - case 'o': - state = 6015; - return true; - case 'p': - state = 6018; - return true; - case 'r': - state = 6027; - return true; - case 's': - state = 6050; - return true; - case 't': - state = 6059; - return true; - case 'u': - state = 6069; - return true; - case 'v': - state = 6072; - return true; - } - break; - case 5930: - // oS; - if (';' == current) { - match = "\u24C8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5931: - if ('c' == current) { - state = 5932; - return true; - } - else if ('s' == current) { - state = 5936; - return true; - } - break; - case 5932: - if ('u' == current) { - state = 5933; - return true; - } - break; - case 5933: - if ('t' == current) { - state = 5934; - return true; - } - break; - case 5934: - // oacute - if ('e' == current) { - match = "\u00F3"; - matchLength = consumedCount; - state = 5935; - return true; - } - break; - case 5935: - // oacute; - if (';' == current) { - match = "\u00F3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5936: - if ('t' == current) { - state = 5937; - return true; - } - break; - case 5937: - // oast; - if (';' == current) { - match = "\u229B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5938: - if ('i' == current) { - state = 5939; - return true; - } - else if ('y' == current) { - state = 5942; - return true; - } - break; - case 5939: - if ('r' == current) { - state = 5940; - return true; - } - break; - case 5940: - // ocir; - if (';' == current) { - match = "\u229A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - // ocirc - else if ('c' == current) { - match = "\u00F4"; - matchLength = consumedCount; - state = 5941; - return true; - } - break; - case 5941: - // ocirc; - if (';' == current) { - match = "\u00F4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5942: - // ocy; - if (';' == current) { - match = "\u043E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5943: - switch (current) { - case 'a': - state = 5944; - return true; - case 'b': - state = 5947; - return true; - case 'i': - state = 5951; - return true; - case 'o': - state = 5953; - return true; - case 's': - state = 5955; - return true; - } - break; - case 5944: - if ('s' == current) { - state = 5945; - return true; - } - break; - case 5945: - if ('h' == current) { - state = 5946; - return true; - } - break; - case 5946: - // odash; - if (';' == current) { - match = "\u229D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5947: - if ('l' == current) { - state = 5948; - return true; - } - break; - case 5948: - if ('a' == current) { - state = 5949; - return true; - } - break; - case 5949: - if ('c' == current) { - state = 5950; - return true; - } - break; - case 5950: - // odblac; - if (';' == current) { - match = "\u0151"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5951: - if ('v' == current) { - state = 5952; - return true; - } - break; - case 5952: - // odiv; - if (';' == current) { - match = "\u2A38"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5953: - if ('t' == current) { - state = 5954; - return true; - } - break; - case 5954: - // odot; - if (';' == current) { - match = "\u2299"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5955: - if ('o' == current) { - state = 5956; - return true; - } - break; - case 5956: - if ('l' == current) { - state = 5957; - return true; - } - break; - case 5957: - if ('d' == current) { - state = 5958; - return true; - } - break; - case 5958: - // odsold; - if (';' == current) { - match = "\u29BC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5959: - if ('l' == current) { - state = 5960; - return true; - } - break; - case 5960: - if ('i' == current) { - state = 5961; - return true; - } - break; - case 5961: - if ('g' == current) { - state = 5962; - return true; - } - break; - case 5962: - // oelig; - if (';' == current) { - match = "\u0153"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5963: - if ('c' == current) { - state = 5964; - return true; - } - else if ('r' == current) { - state = 5967; - return true; - } - break; - case 5964: - if ('i' == current) { - state = 5965; - return true; - } - break; - case 5965: - if ('r' == current) { - state = 5966; - return true; - } - break; - case 5966: - // ofcir; - if (';' == current) { - match = "\u29BF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5967: - // ofr; - if (';' == current) { - match = "\uD835\uDD2C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5968: - switch (current) { - case 'o': - state = 5969; - return true; - case 'r': - state = 5971; - return true; - case 't': - state = 5975; - return true; - } - break; - case 5969: - if ('n' == current) { - state = 5970; - return true; - } - break; - case 5970: - // ogon; - if (';' == current) { - match = "\u02DB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5971: - if ('a' == current) { - state = 5972; - return true; - } - break; - case 5972: - if ('v' == current) { - state = 5973; - return true; - } - break; - case 5973: - // ograve - if ('e' == current) { - match = "\u00F2"; - matchLength = consumedCount; - state = 5974; - return true; - } - break; - case 5974: - // ograve; - if (';' == current) { - match = "\u00F2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5975: - // ogt; - if (';' == current) { - match = "\u29C1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5976: - if ('b' == current) { - state = 5977; - return true; - } - else if ('m' == current) { - state = 5980; - return true; - } - break; - case 5977: - if ('a' == current) { - state = 5978; - return true; - } - break; - case 5978: - if ('r' == current) { - state = 5979; - return true; - } - break; - case 5979: - // ohbar; - if (';' == current) { - match = "\u29B5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5980: - // ohm; - if (';' == current) { - match = "\u03A9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5981: - if ('n' == current) { - state = 5982; - return true; - } - break; - case 5982: - if ('t' == current) { - state = 5983; - return true; - } - break; - case 5983: - // oint; - if (';' == current) { - match = "\u222E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5984: - switch (current) { - case 'a': - state = 5985; - return true; - case 'c': - state = 5988; - return true; - case 'i': - state = 5995; - return true; - case 't': - state = 5998; - return true; - } - break; - case 5985: - if ('r' == current) { - state = 5986; - return true; - } - break; - case 5986: - if ('r' == current) { - state = 5987; - return true; - } - break; - case 5987: - // olarr; - if (';' == current) { - match = "\u21BA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5988: - if ('i' == current) { - state = 5989; - return true; - } - else if ('r' == current) { - state = 5991; - return true; - } - break; - case 5989: - if ('r' == current) { - state = 5990; - return true; - } - break; - case 5990: - // olcir; - if (';' == current) { - match = "\u29BE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5991: - if ('o' == current) { - state = 5992; - return true; - } - break; - case 5992: - if ('s' == current) { - state = 5993; - return true; - } - break; - case 5993: - if ('s' == current) { - state = 5994; - return true; - } - break; - case 5994: - // olcross; - if (';' == current) { - match = "\u29BB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5995: - if ('n' == current) { - state = 5996; - return true; - } - break; - case 5996: - if ('e' == current) { - state = 5997; - return true; - } - break; - case 5997: - // oline; - if (';' == current) { - match = "\u203E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5998: - // olt; - if (';' == current) { - match = "\u29C0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 5999: - switch (current) { - case 'a': - state = 6000; - return true; - case 'e': - state = 6003; - return true; - case 'i': - state = 6006; - return true; - } - break; - } - return false; - } - - private boolean parse7(final int current) { - consumedCount++; - switch (state) { - case 6000: - if ('c' == current) { - state = 6001; - return true; - } - break; - case 6001: - if ('r' == current) { - state = 6002; - return true; - } - break; - case 6002: - // omacr; - if (';' == current) { - match = "\u014D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6003: - if ('g' == current) { - state = 6004; - return true; - } - break; - case 6004: - if ('a' == current) { - state = 6005; - return true; - } - break; - case 6005: - // omega; - if (';' == current) { - match = "\u03C9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6006: - switch (current) { - case 'c': - state = 6007; - return true; - case 'd': - state = 6011; - return true; - case 'n': - state = 6012; - return true; - } - break; - case 6007: - if ('r' == current) { - state = 6008; - return true; - } - break; - case 6008: - if ('o' == current) { - state = 6009; - return true; - } - break; - case 6009: - if ('n' == current) { - state = 6010; - return true; - } - break; - case 6010: - // omicron; - if (';' == current) { - match = "\u03BF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6011: - // omid; - if (';' == current) { - match = "\u29B6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6012: - if ('u' == current) { - state = 6013; - return true; - } - break; - case 6013: - if ('s' == current) { - state = 6014; - return true; - } - break; - case 6014: - // ominus; - if (';' == current) { - match = "\u2296"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6015: - if ('p' == current) { - state = 6016; - return true; - } - break; - case 6016: - if ('f' == current) { - state = 6017; - return true; - } - break; - case 6017: - // oopf; - if (';' == current) { - match = "\uD835\uDD60"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6018: - switch (current) { - case 'a': - state = 6019; - return true; - case 'e': - state = 6021; - return true; - case 'l': - state = 6024; - return true; - } - break; - case 6019: - if ('r' == current) { - state = 6020; - return true; - } - break; - case 6020: - // opar; - if (';' == current) { - match = "\u29B7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6021: - if ('r' == current) { - state = 6022; - return true; - } - break; - case 6022: - if ('p' == current) { - state = 6023; - return true; - } - break; - case 6023: - // operp; - if (';' == current) { - match = "\u29B9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6024: - if ('u' == current) { - state = 6025; - return true; - } - break; - case 6025: - if ('s' == current) { - state = 6026; - return true; - } - break; - case 6026: - // oplus; - if (';' == current) { - match = "\u2295"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6027: - switch (current) { - case ';': // or; - match = "\u2228"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'a': - state = 6028; - return true; - case 'd': - state = 6031; - return true; - case 'i': - state = 6038; - return true; - case 'o': - state = 6042; - return true; - case 's': - state = 6044; - return true; - case 'v': - state = 6049; - return true; - } - break; - case 6028: - if ('r' == current) { - state = 6029; - return true; - } - break; - case 6029: - if ('r' == current) { - state = 6030; - return true; - } - break; - case 6030: - // orarr; - if (';' == current) { - match = "\u21BB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6031: - switch (current) { - case ';': // ord; - match = "\u2A5D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'e': - state = 6032; - return true; - case 'f': // ordf - match = "\u00AA"; - matchLength = consumedCount; - state = 6036; - return true; - case 'm': // ordm - match = "\u00BA"; - matchLength = consumedCount; - state = 6037; - return true; - } - break; - case 6032: - if ('r' == current) { - state = 6033; - return true; - } - break; - case 6033: - // order; - if (';' == current) { - match = "\u2134"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('o' == current) { - state = 6034; - return true; - } - break; - case 6034: - if ('f' == current) { - state = 6035; - return true; - } - break; - case 6035: - // orderof; - if (';' == current) { - match = "\u2134"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6036: - // ordf; - if (';' == current) { - match = "\u00AA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6037: - // ordm; - if (';' == current) { - match = "\u00BA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6038: - if ('g' == current) { - state = 6039; - return true; - } - break; - case 6039: - if ('o' == current) { - state = 6040; - return true; - } - break; - case 6040: - if ('f' == current) { - state = 6041; - return true; - } - break; - case 6041: - // origof; - if (';' == current) { - match = "\u22B6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6042: - if ('r' == current) { - state = 6043; - return true; - } - break; - case 6043: - // oror; - if (';' == current) { - match = "\u2A56"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6044: - if ('l' == current) { - state = 6045; - return true; - } - break; - case 6045: - if ('o' == current) { - state = 6046; - return true; - } - break; - case 6046: - if ('p' == current) { - state = 6047; - return true; - } - break; - case 6047: - if ('e' == current) { - state = 6048; - return true; - } - break; - case 6048: - // orslope; - if (';' == current) { - match = "\u2A57"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6049: - // orv; - if (';' == current) { - match = "\u2A5B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6050: - switch (current) { - case 'c': - state = 6051; - return true; - case 'l': - state = 6053; - return true; - case 'o': - state = 6057; - return true; - } - break; - case 6051: - if ('r' == current) { - state = 6052; - return true; - } - break; - case 6052: - // oscr; - if (';' == current) { - match = "\u2134"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6053: - if ('a' == current) { - state = 6054; - return true; - } - break; - case 6054: - if ('s' == current) { - state = 6055; - return true; - } - break; - case 6055: - // oslash - if ('h' == current) { - match = "\u00F8"; - matchLength = consumedCount; - state = 6056; - return true; - } - break; - case 6056: - // oslash; - if (';' == current) { - match = "\u00F8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6057: - if ('l' == current) { - state = 6058; - return true; - } - break; - case 6058: - // osol; - if (';' == current) { - match = "\u2298"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6059: - if ('i' == current) { - state = 6060; - return true; - } - break; - case 6060: - if ('l' == current) { - state = 6061; - return true; - } - else if ('m' == current) { - state = 6064; - return true; - } - break; - case 6061: - if ('d' == current) { - state = 6062; - return true; - } - break; - case 6062: - // otilde - if ('e' == current) { - match = "\u00F5"; - matchLength = consumedCount; - state = 6063; - return true; - } - break; - case 6063: - // otilde; - if (';' == current) { - match = "\u00F5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6064: - if ('e' == current) { - state = 6065; - return true; - } - break; - case 6065: - if ('s' == current) { - state = 6066; - return true; - } - break; - case 6066: - // otimes; - if (';' == current) { - match = "\u2297"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('a' == current) { - state = 6067; - return true; - } - break; - case 6067: - if ('s' == current) { - state = 6068; - return true; - } - break; - case 6068: - // otimesas; - if (';' == current) { - match = "\u2A36"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6069: - if ('m' == current) { - state = 6070; - return true; - } - break; - case 6070: - // ouml - if ('l' == current) { - match = "\u00F6"; - matchLength = consumedCount; - state = 6071; - return true; - } - break; - case 6071: - // ouml; - if (';' == current) { - match = "\u00F6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6072: - if ('b' == current) { - state = 6073; - return true; - } - break; - case 6073: - if ('a' == current) { - state = 6074; - return true; - } - break; - case 6074: - if ('r' == current) { - state = 6075; - return true; - } - break; - case 6075: - // ovbar; - if (';' == current) { - match = "\u233D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6076: - switch (current) { - case 'a': - state = 6077; - return true; - case 'c': - state = 6089; - return true; - case 'e': - state = 6091; - return true; - case 'f': - state = 6107; - return true; - case 'h': - state = 6109; - return true; - case 'i': - state = 6119; - return true; - case 'l': - state = 6128; - return true; - case 'm': - state = 6158; - return true; - case 'o': - state = 6159; - return true; - case 'r': - state = 6171; - return true; - case 's': - state = 6247; - return true; - case 'u': - state = 6251; - return true; - } - break; - case 6077: - if ('r' == current) { - state = 6078; - return true; - } - break; - case 6078: - switch (current) { - case ';': // par; - match = "\u2225"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'a': // para - match = "\u00B6"; - matchLength = consumedCount; - state = 6079; - return true; - case 's': - state = 6084; - return true; - case 't': - state = 6088; - return true; - } - break; - case 6079: - // para; - if (';' == current) { - match = "\u00B6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('l' == current) { - state = 6080; - return true; - } - break; - case 6080: - if ('l' == current) { - state = 6081; - return true; - } - break; - case 6081: - if ('e' == current) { - state = 6082; - return true; - } - break; - case 6082: - if ('l' == current) { - state = 6083; - return true; - } - break; - case 6083: - // parallel; - if (';' == current) { - match = "\u2225"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6084: - if ('i' == current) { - state = 6085; - return true; - } - else if ('l' == current) { - state = 6087; - return true; - } - break; - case 6085: - if ('m' == current) { - state = 6086; - return true; - } - break; - case 6086: - // parsim; - if (';' == current) { - match = "\u2AF3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6087: - // parsl; - if (';' == current) { - match = "\u2AFD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6088: - // part; - if (';' == current) { - match = "\u2202"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6089: - if ('y' == current) { - state = 6090; - return true; - } - break; - case 6090: - // pcy; - if (';' == current) { - match = "\u043F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6091: - if ('r' == current) { - state = 6092; - return true; - } - break; - case 6092: - switch (current) { - case 'c': - state = 6093; - return true; - case 'i': - state = 6096; - return true; - case 'm': - state = 6099; - return true; - case 'p': - state = 6102; - return true; - case 't': - state = 6103; - return true; - } - break; - case 6093: - if ('n' == current) { - state = 6094; - return true; - } - break; - case 6094: - if ('t' == current) { - state = 6095; - return true; - } - break; - case 6095: - // percnt; - if (';' == current) { - match = "%"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6096: - if ('o' == current) { - state = 6097; - return true; - } - break; - case 6097: - if ('d' == current) { - state = 6098; - return true; - } - break; - case 6098: - // period; - if (';' == current) { - match = "."; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6099: - if ('i' == current) { - state = 6100; - return true; - } - break; - case 6100: - if ('l' == current) { - state = 6101; - return true; - } - break; - case 6101: - // permil; - if (';' == current) { - match = "\u2030"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6102: - // perp; - if (';' == current) { - match = "\u22A5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6103: - if ('e' == current) { - state = 6104; - return true; - } - break; - case 6104: - if ('n' == current) { - state = 6105; - return true; - } - break; - case 6105: - if ('k' == current) { - state = 6106; - return true; - } - break; - case 6106: - // pertenk; - if (';' == current) { - match = "\u2031"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6107: - if ('r' == current) { - state = 6108; - return true; - } - break; - case 6108: - // pfr; - if (';' == current) { - match = "\uD835\uDD2D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6109: - switch (current) { - case 'i': - state = 6110; - return true; - case 'm': - state = 6112; - return true; - case 'o': - state = 6116; - return true; - } - break; - case 6110: - // phi; - if (';' == current) { - match = "\u03C6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('v' == current) { - state = 6111; - return true; - } - break; - case 6111: - // phiv; - if (';' == current) { - match = "\u03D5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6112: - if ('m' == current) { - state = 6113; - return true; - } - break; - case 6113: - if ('a' == current) { - state = 6114; - return true; - } - break; - case 6114: - if ('t' == current) { - state = 6115; - return true; - } - break; - case 6115: - // phmmat; - if (';' == current) { - match = "\u2133"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6116: - if ('n' == current) { - state = 6117; - return true; - } - break; - case 6117: - if ('e' == current) { - state = 6118; - return true; - } - break; - case 6118: - // phone; - if (';' == current) { - match = "\u260E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6119: - switch (current) { - case ';': // pi; - match = "\u03C0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 't': - state = 6120; - return true; - case 'v': - state = 6127; - return true; - } - break; - case 6120: - if ('c' == current) { - state = 6121; - return true; - } - break; - case 6121: - if ('h' == current) { - state = 6122; - return true; - } - break; - case 6122: - if ('f' == current) { - state = 6123; - return true; - } - break; - case 6123: - if ('o' == current) { - state = 6124; - return true; - } - break; - case 6124: - if ('r' == current) { - state = 6125; - return true; - } - break; - case 6125: - if ('k' == current) { - state = 6126; - return true; - } - break; - case 6126: - // pitchfork; - if (';' == current) { - match = "\u22D4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6127: - // piv; - if (';' == current) { - match = "\u03D6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6128: - if ('a' == current) { - state = 6129; - return true; - } - else if ('u' == current) { - state = 6136; - return true; - } - break; - case 6129: - if ('n' == current) { - state = 6130; - return true; - } - break; - case 6130: - if ('c' == current) { - state = 6131; - return true; - } - else if ('k' == current) { - state = 6134; - return true; - } - break; - case 6131: - if ('k' == current) { - state = 6132; - return true; - } - break; - case 6132: - // planck; - if (';' == current) { - match = "\u210F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('h' == current) { - state = 6133; - return true; - } - break; - case 6133: - // planckh; - if (';' == current) { - match = "\u210E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6134: - if ('v' == current) { - state = 6135; - return true; - } - break; - case 6135: - // plankv; - if (';' == current) { - match = "\u210F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6136: - if ('s' == current) { - state = 6137; - return true; - } - break; - case 6137: - switch (current) { - case ';': // plus; - match = "+"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'a': - state = 6138; - return true; - case 'b': - state = 6142; - return true; - case 'c': - state = 6143; - return true; - case 'd': - state = 6146; - return true; - case 'e': - state = 6149; - return true; - case 'm': - state = 6150; - return true; - case 's': - state = 6152; - return true; - case 't': - state = 6155; - return true; - } - break; - case 6138: - if ('c' == current) { - state = 6139; - return true; - } - break; - case 6139: - if ('i' == current) { - state = 6140; - return true; - } - break; - case 6140: - if ('r' == current) { - state = 6141; - return true; - } - break; - case 6141: - // plusacir; - if (';' == current) { - match = "\u2A23"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6142: - // plusb; - if (';' == current) { - match = "\u229E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6143: - if ('i' == current) { - state = 6144; - return true; - } - break; - case 6144: - if ('r' == current) { - state = 6145; - return true; - } - break; - case 6145: - // pluscir; - if (';' == current) { - match = "\u2A22"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6146: - if ('o' == current) { - state = 6147; - return true; - } - else if ('u' == current) { - state = 6148; - return true; - } - break; - case 6147: - // plusdo; - if (';' == current) { - match = "\u2214"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6148: - // plusdu; - if (';' == current) { - match = "\u2A25"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6149: - // pluse; - if (';' == current) { - match = "\u2A72"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6150: - // plusmn - if ('n' == current) { - match = "\u00B1"; - matchLength = consumedCount; - state = 6151; - return true; - } - break; - case 6151: - // plusmn; - if (';' == current) { - match = "\u00B1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6152: - if ('i' == current) { - state = 6153; - return true; - } - break; - case 6153: - if ('m' == current) { - state = 6154; - return true; - } - break; - case 6154: - // plussim; - if (';' == current) { - match = "\u2A26"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6155: - if ('w' == current) { - state = 6156; - return true; - } - break; - case 6156: - if ('o' == current) { - state = 6157; - return true; - } - break; - case 6157: - // plustwo; - if (';' == current) { - match = "\u2A27"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6158: - // pm; - if (';' == current) { - match = "\u00B1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6159: - switch (current) { - case 'i': - state = 6160; - return true; - case 'p': - state = 6166; - return true; - case 'u': - state = 6168; - return true; - } - break; - case 6160: - if ('n' == current) { - state = 6161; - return true; - } - break; - case 6161: - if ('t' == current) { - state = 6162; - return true; - } - break; - case 6162: - if ('i' == current) { - state = 6163; - return true; - } - break; - case 6163: - if ('n' == current) { - state = 6164; - return true; - } - break; - case 6164: - if ('t' == current) { - state = 6165; - return true; - } - break; - case 6165: - // pointint; - if (';' == current) { - match = "\u2A15"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6166: - if ('f' == current) { - state = 6167; - return true; - } - break; - case 6167: - // popf; - if (';' == current) { - match = "\uD835\uDD61"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6168: - if ('n' == current) { - state = 6169; - return true; - } - break; - case 6169: - // pound - if ('d' == current) { - match = "\u00A3"; - matchLength = consumedCount; - state = 6170; - return true; - } - break; - case 6170: - // pound; - if (';' == current) { - match = "\u00A3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6171: - switch (current) { - case ';': // pr; - match = "\u227A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 6172; - return true; - case 'a': - state = 6173; - return true; - case 'c': - state = 6175; - return true; - case 'e': - state = 6178; - return true; - case 'i': - state = 6211; - return true; - case 'n': - state = 6215; - return true; - case 'o': - state = 6222; - return true; - case 's': - state = 6240; - return true; - case 'u': - state = 6243; - return true; - } - break; - case 6172: - // prE; - if (';' == current) { - match = "\u2AB3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6173: - if ('p' == current) { - state = 6174; - return true; - } - break; - case 6174: - // prap; - if (';' == current) { - match = "\u2AB7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6175: - if ('u' == current) { - state = 6176; - return true; - } - break; - case 6176: - if ('e' == current) { - state = 6177; - return true; - } - break; - case 6177: - // prcue; - if (';' == current) { - match = "\u227C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6178: - // pre; - if (';' == current) { - match = "\u2AAF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('c' == current) { - state = 6179; - return true; - } - break; - case 6179: - switch (current) { - case ';': // prec; - match = "\u227A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'a': - state = 6180; - return true; - case 'c': - state = 6186; - return true; - case 'e': - state = 6193; - return true; - case 'n': - state = 6195; - return true; - case 's': - state = 6208; - return true; - } - break; - case 6180: - if ('p' == current) { - state = 6181; - return true; - } - break; - case 6181: - if ('p' == current) { - state = 6182; - return true; - } - break; - case 6182: - if ('r' == current) { - state = 6183; - return true; - } - break; - case 6183: - if ('o' == current) { - state = 6184; - return true; - } - break; - case 6184: - if ('x' == current) { - state = 6185; - return true; - } - break; - case 6185: - // precapprox; - if (';' == current) { - match = "\u2AB7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6186: - if ('u' == current) { - state = 6187; - return true; - } - break; - case 6187: - if ('r' == current) { - state = 6188; - return true; - } - break; - case 6188: - if ('l' == current) { - state = 6189; - return true; - } - break; - case 6189: - if ('y' == current) { - state = 6190; - return true; - } - break; - case 6190: - if ('e' == current) { - state = 6191; - return true; - } - break; - case 6191: - if ('q' == current) { - state = 6192; - return true; - } - break; - case 6192: - // preccurlyeq; - if (';' == current) { - match = "\u227C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6193: - if ('q' == current) { - state = 6194; - return true; - } - break; - case 6194: - // preceq; - if (';' == current) { - match = "\u2AAF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6195: - switch (current) { - case 'a': - state = 6196; - return true; - case 'e': - state = 6202; - return true; - case 's': - state = 6205; - return true; - } - break; - case 6196: - if ('p' == current) { - state = 6197; - return true; - } - break; - case 6197: - if ('p' == current) { - state = 6198; - return true; - } - break; - case 6198: - if ('r' == current) { - state = 6199; - return true; - } - break; - case 6199: - if ('o' == current) { - state = 6200; - return true; - } - break; - case 6200: - if ('x' == current) { - state = 6201; - return true; - } - break; - case 6201: - // precnapprox; - if (';' == current) { - match = "\u2AB9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6202: - if ('q' == current) { - state = 6203; - return true; - } - break; - case 6203: - if ('q' == current) { - state = 6204; - return true; - } - break; - case 6204: - // precneqq; - if (';' == current) { - match = "\u2AB5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6205: - if ('i' == current) { - state = 6206; - return true; - } - break; - case 6206: - if ('m' == current) { - state = 6207; - return true; - } - break; - case 6207: - // precnsim; - if (';' == current) { - match = "\u22E8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6208: - if ('i' == current) { - state = 6209; - return true; - } - break; - case 6209: - if ('m' == current) { - state = 6210; - return true; - } - break; - case 6210: - // precsim; - if (';' == current) { - match = "\u227E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6211: - if ('m' == current) { - state = 6212; - return true; - } - break; - case 6212: - if ('e' == current) { - state = 6213; - return true; - } - break; - case 6213: - // prime; - if (';' == current) { - match = "\u2032"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('s' == current) { - state = 6214; - return true; - } - break; - case 6214: - // primes; - if (';' == current) { - match = "\u2119"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6215: - switch (current) { - case 'E': - state = 6216; - return true; - case 'a': - state = 6217; - return true; - case 's': - state = 6219; - return true; - } - break; - case 6216: - // prnE; - if (';' == current) { - match = "\u2AB5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6217: - if ('p' == current) { - state = 6218; - return true; - } - break; - case 6218: - // prnap; - if (';' == current) { - match = "\u2AB9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6219: - if ('i' == current) { - state = 6220; - return true; - } - break; - case 6220: - if ('m' == current) { - state = 6221; - return true; - } - break; - case 6221: - // prnsim; - if (';' == current) { - match = "\u22E8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6222: - switch (current) { - case 'd': - state = 6223; - return true; - case 'f': - state = 6224; - return true; - case 'p': - state = 6237; - return true; - } - break; - case 6223: - // prod; - if (';' == current) { - match = "\u220F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6224: - switch (current) { - case 'a': - state = 6225; - return true; - case 'l': - state = 6229; - return true; - case 's': - state = 6233; - return true; - } - break; - case 6225: - if ('l' == current) { - state = 6226; - return true; - } - break; - case 6226: - if ('a' == current) { - state = 6227; - return true; - } - break; - case 6227: - if ('r' == current) { - state = 6228; - return true; - } - break; - case 6228: - // profalar; - if (';' == current) { - match = "\u232E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6229: - if ('i' == current) { - state = 6230; - return true; - } - break; - case 6230: - if ('n' == current) { - state = 6231; - return true; - } - break; - case 6231: - if ('e' == current) { - state = 6232; - return true; - } - break; - case 6232: - // profline; - if (';' == current) { - match = "\u2312"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6233: - if ('u' == current) { - state = 6234; - return true; - } - break; - case 6234: - if ('r' == current) { - state = 6235; - return true; - } - break; - case 6235: - if ('f' == current) { - state = 6236; - return true; - } - break; - case 6236: - // profsurf; - if (';' == current) { - match = "\u2313"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6237: - // prop; - if (';' == current) { - match = "\u221D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('t' == current) { - state = 6238; - return true; - } - break; - case 6238: - if ('o' == current) { - state = 6239; - return true; - } - break; - case 6239: - // propto; - if (';' == current) { - match = "\u221D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6240: - if ('i' == current) { - state = 6241; - return true; - } - break; - case 6241: - if ('m' == current) { - state = 6242; - return true; - } - break; - case 6242: - // prsim; - if (';' == current) { - match = "\u227E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6243: - if ('r' == current) { - state = 6244; - return true; - } - break; - case 6244: - if ('e' == current) { - state = 6245; - return true; - } - break; - case 6245: - if ('l' == current) { - state = 6246; - return true; - } - break; - case 6246: - // prurel; - if (';' == current) { - match = "\u22B0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6247: - if ('c' == current) { - state = 6248; - return true; - } - else if ('i' == current) { - state = 6250; - return true; - } - break; - case 6248: - if ('r' == current) { - state = 6249; - return true; - } - break; - case 6249: - // pscr; - if (';' == current) { - match = "\uD835\uDCC5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6250: - // psi; - if (';' == current) { - match = "\u03C8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6251: - if ('n' == current) { - state = 6252; - return true; - } - break; - case 6252: - if ('c' == current) { - state = 6253; - return true; - } - break; - case 6253: - if ('s' == current) { - state = 6254; - return true; - } - break; - case 6254: - if ('p' == current) { - state = 6255; - return true; - } - break; - case 6255: - // puncsp; - if (';' == current) { - match = "\u2008"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6256: - switch (current) { - case 'f': - state = 6257; - return true; - case 'i': - state = 6259; - return true; - case 'o': - state = 6262; - return true; - case 'p': - state = 6265; - return true; - case 's': - state = 6270; - return true; - case 'u': - state = 6273; - return true; - } - break; - case 6257: - if ('r' == current) { - state = 6258; - return true; - } - break; - case 6258: - // qfr; - if (';' == current) { - match = "\uD835\uDD2E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6259: - if ('n' == current) { - state = 6260; - return true; - } - break; - case 6260: - if ('t' == current) { - state = 6261; - return true; - } - break; - case 6261: - // qint; - if (';' == current) { - match = "\u2A0C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6262: - if ('p' == current) { - state = 6263; - return true; - } - break; - case 6263: - if ('f' == current) { - state = 6264; - return true; - } - break; - case 6264: - // qopf; - if (';' == current) { - match = "\uD835\uDD62"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6265: - if ('r' == current) { - state = 6266; - return true; - } - break; - case 6266: - if ('i' == current) { - state = 6267; - return true; - } - break; - case 6267: - if ('m' == current) { - state = 6268; - return true; - } - break; - case 6268: - if ('e' == current) { - state = 6269; - return true; - } - break; - case 6269: - // qprime; - if (';' == current) { - match = "\u2057"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6270: - if ('c' == current) { - state = 6271; - return true; - } - break; - case 6271: - if ('r' == current) { - state = 6272; - return true; - } - break; - case 6272: - // qscr; - if (';' == current) { - match = "\uD835\uDCC6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6273: - switch (current) { - case 'a': - state = 6274; - return true; - case 'e': - state = 6286; - return true; - case 'o': - state = 6291; - return true; - } - break; - case 6274: - if ('t' == current) { - state = 6275; - return true; - } - break; - case 6275: - if ('e' == current) { - state = 6276; - return true; - } - else if ('i' == current) { - state = 6283; - return true; - } - break; - case 6276: - if ('r' == current) { - state = 6277; - return true; - } - break; - case 6277: - if ('n' == current) { - state = 6278; - return true; - } - break; - case 6278: - if ('i' == current) { - state = 6279; - return true; - } - break; - case 6279: - if ('o' == current) { - state = 6280; - return true; - } - break; - case 6280: - if ('n' == current) { - state = 6281; - return true; - } - break; - case 6281: - if ('s' == current) { - state = 6282; - return true; - } - break; - case 6282: - // quaternions; - if (';' == current) { - match = "\u210D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6283: - if ('n' == current) { - state = 6284; - return true; - } - break; - case 6284: - if ('t' == current) { - state = 6285; - return true; - } - break; - case 6285: - // quatint; - if (';' == current) { - match = "\u2A16"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6286: - if ('s' == current) { - state = 6287; - return true; - } - break; - case 6287: - if ('t' == current) { - state = 6288; - return true; - } - break; - case 6288: - // quest; - if (';' == current) { - match = "?"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 6289; - return true; - } - break; - case 6289: - if ('q' == current) { - state = 6290; - return true; - } - break; - case 6290: - // questeq; - if (';' == current) { - match = "\u225F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6291: - // quot - if ('t' == current) { - match = "\""; - matchLength = consumedCount; - state = 6292; - return true; - } - break; - case 6292: - // quot; - if (';' == current) { - match = "\""; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6293: - switch (current) { - case 'A': - state = 6294; - return true; - case 'B': - state = 6304; - return true; - case 'H': - state = 6308; - return true; - case 'a': - state = 6311; - return true; - case 'b': - state = 6367; - return true; - case 'c': - state = 6385; - return true; - case 'd': - state = 6399; - return true; - case 'e': - state = 6413; - return true; - case 'f': - state = 6427; - return true; - case 'h': - state = 6437; - return true; - case 'i': - state = 6445; - return true; - case 'l': - state = 6532; - return true; - case 'm': - state = 6540; - return true; - case 'n': - state = 6549; - return true; - case 'o': - state = 6553; - return true; - case 'p': - state = 6574; - return true; - case 'r': - state = 6585; - return true; - case 's': - state = 6589; - return true; - case 't': - state = 6602; - return true; - case 'u': - state = 6619; - return true; - case 'x': - state = 6625; - return true; - } - break; - case 6294: - switch (current) { - case 'a': - state = 6295; - return true; - case 'r': - state = 6298; - return true; - case 't': - state = 6300; - return true; - } - break; - case 6295: - if ('r' == current) { - state = 6296; - return true; - } - break; - case 6296: - if ('r' == current) { - state = 6297; - return true; - } - break; - case 6297: - // rAarr; - if (';' == current) { - match = "\u21DB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6298: - if ('r' == current) { - state = 6299; - return true; - } - break; - case 6299: - // rArr; - if (';' == current) { - match = "\u21D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6300: - if ('a' == current) { - state = 6301; - return true; - } - break; - case 6301: - if ('i' == current) { - state = 6302; - return true; - } - break; - case 6302: - if ('l' == current) { - state = 6303; - return true; - } - break; - case 6303: - // rAtail; - if (';' == current) { - match = "\u291C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6304: - if ('a' == current) { - state = 6305; - return true; - } - break; - case 6305: - if ('r' == current) { - state = 6306; - return true; - } - break; - case 6306: - if ('r' == current) { - state = 6307; - return true; - } - break; - case 6307: - // rBarr; - if (';' == current) { - match = "\u290F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6308: - if ('a' == current) { - state = 6309; - return true; - } - break; - case 6309: - if ('r' == current) { - state = 6310; - return true; - } - break; - case 6310: - // rHar; - if (';' == current) { - match = "\u2964"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6311: - switch (current) { - case 'c': - state = 6312; - return true; - case 'd': - state = 6317; - return true; - case 'e': - state = 6320; - return true; - case 'n': - state = 6326; - return true; - case 'q': - state = 6332; - return true; - case 'r': - state = 6335; - return true; - case 't': - state = 6357; - return true; - } - break; - case 6312: - if ('e' == current) { - state = 6313; - return true; - } - else if ('u' == current) { - state = 6314; - return true; - } - break; - case 6313: - // race; - if (';' == current) { - match = "\u223D\u0331"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6314: - if ('t' == current) { - state = 6315; - return true; - } - break; - case 6315: - if ('e' == current) { - state = 6316; - return true; - } - break; - case 6316: - // racute; - if (';' == current) { - match = "\u0155"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6317: - if ('i' == current) { - state = 6318; - return true; - } - break; - case 6318: - if ('c' == current) { - state = 6319; - return true; - } - break; - case 6319: - // radic; - if (';' == current) { - match = "\u221A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6320: - if ('m' == current) { - state = 6321; - return true; - } - break; - case 6321: - if ('p' == current) { - state = 6322; - return true; - } - break; - case 6322: - if ('t' == current) { - state = 6323; - return true; - } - break; - case 6323: - if ('y' == current) { - state = 6324; - return true; - } - break; - case 6324: - if ('v' == current) { - state = 6325; - return true; - } - break; - case 6325: - // raemptyv; - if (';' == current) { - match = "\u29B3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6326: - if ('g' == current) { - state = 6327; - return true; - } - break; - case 6327: - switch (current) { - case ';': // rang; - match = "\u27E9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'd': - state = 6328; - return true; - case 'e': - state = 6329; - return true; - case 'l': - state = 6330; - return true; - } - break; - case 6328: - // rangd; - if (';' == current) { - match = "\u2992"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6329: - // range; - if (';' == current) { - match = "\u29A5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6330: - if ('e' == current) { - state = 6331; - return true; - } - break; - case 6331: - // rangle; - if (';' == current) { - match = "\u27E9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6332: - if ('u' == current) { - state = 6333; - return true; - } - break; - case 6333: - // raquo - if ('o' == current) { - match = "\u00BB"; - matchLength = consumedCount; - state = 6334; - return true; - } - break; - case 6334: - // raquo; - if (';' == current) { - match = "\u00BB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6335: - if ('r' == current) { - state = 6336; - return true; - } - break; - case 6336: - switch (current) { - case ';': // rarr; - match = "\u2192"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'a': - state = 6337; - return true; - case 'b': - state = 6339; - return true; - case 'c': - state = 6342; - return true; - case 'f': - state = 6343; - return true; - case 'h': - state = 6345; - return true; - case 'l': - state = 6347; - return true; - case 'p': - state = 6349; - return true; - case 's': - state = 6351; - return true; - case 't': - state = 6354; - return true; - case 'w': - state = 6356; - return true; - } - break; - case 6337: - if ('p' == current) { - state = 6338; - return true; - } - break; - case 6338: - // rarrap; - if (';' == current) { - match = "\u2975"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6339: - // rarrb; - if (';' == current) { - match = "\u21E5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('f' == current) { - state = 6340; - return true; - } - break; - case 6340: - if ('s' == current) { - state = 6341; - return true; - } - break; - case 6341: - // rarrbfs; - if (';' == current) { - match = "\u2920"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6342: - // rarrc; - if (';' == current) { - match = "\u2933"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6343: - if ('s' == current) { - state = 6344; - return true; - } - break; - case 6344: - // rarrfs; - if (';' == current) { - match = "\u291E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6345: - if ('k' == current) { - state = 6346; - return true; - } - break; - case 6346: - // rarrhk; - if (';' == current) { - match = "\u21AA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6347: - if ('p' == current) { - state = 6348; - return true; - } - break; - case 6348: - // rarrlp; - if (';' == current) { - match = "\u21AC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6349: - if ('l' == current) { - state = 6350; - return true; - } - break; - case 6350: - // rarrpl; - if (';' == current) { - match = "\u2945"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6351: - if ('i' == current) { - state = 6352; - return true; - } - break; - case 6352: - if ('m' == current) { - state = 6353; - return true; - } - break; - case 6353: - // rarrsim; - if (';' == current) { - match = "\u2974"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6354: - if ('l' == current) { - state = 6355; - return true; - } - break; - case 6355: - // rarrtl; - if (';' == current) { - match = "\u21A3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6356: - // rarrw; - if (';' == current) { - match = "\u219D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6357: - if ('a' == current) { - state = 6358; - return true; - } - else if ('i' == current) { - state = 6361; - return true; - } - break; - case 6358: - if ('i' == current) { - state = 6359; - return true; - } - break; - case 6359: - if ('l' == current) { - state = 6360; - return true; - } - break; - case 6360: - // ratail; - if (';' == current) { - match = "\u291A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6361: - if ('o' == current) { - state = 6362; - return true; - } - break; - case 6362: - // ratio; - if (';' == current) { - match = "\u2236"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('n' == current) { - state = 6363; - return true; - } - break; - case 6363: - if ('a' == current) { - state = 6364; - return true; - } - break; - case 6364: - if ('l' == current) { - state = 6365; - return true; - } - break; - case 6365: - if ('s' == current) { - state = 6366; - return true; - } - break; - case 6366: - // rationals; - if (';' == current) { - match = "\u211A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6367: - switch (current) { - case 'a': - state = 6368; - return true; - case 'b': - state = 6371; - return true; - case 'r': - state = 6374; - return true; - } - break; - case 6368: - if ('r' == current) { - state = 6369; - return true; - } - break; - case 6369: - if ('r' == current) { - state = 6370; - return true; - } - break; - case 6370: - // rbarr; - if (';' == current) { - match = "\u290D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6371: - if ('r' == current) { - state = 6372; - return true; - } - break; - case 6372: - if ('k' == current) { - state = 6373; - return true; - } - break; - case 6373: - // rbbrk; - if (';' == current) { - match = "\u2773"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6374: - if ('a' == current) { - state = 6375; - return true; - } - else if ('k' == current) { - state = 6379; - return true; - } - break; - case 6375: - if ('c' == current) { - state = 6376; - return true; - } - break; - case 6376: - if ('e' == current) { - state = 6377; - return true; - } - else if ('k' == current) { - state = 6378; - return true; - } - break; - case 6377: - // rbrace; - if (';' == current) { - match = "}"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6378: - // rbrack; - if (';' == current) { - match = "]"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6379: - if ('e' == current) { - state = 6380; - return true; - } - else if ('s' == current) { - state = 6381; - return true; - } - break; - case 6380: - // rbrke; - if (';' == current) { - match = "\u298C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6381: - if ('l' == current) { - state = 6382; - return true; - } - break; - case 6382: - if ('d' == current) { - state = 6383; - return true; - } - else if ('u' == current) { - state = 6384; - return true; - } - break; - case 6383: - // rbrksld; - if (';' == current) { - match = "\u298E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6384: - // rbrkslu; - if (';' == current) { - match = "\u2990"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6385: - switch (current) { - case 'a': - state = 6386; - return true; - case 'e': - state = 6390; - return true; - case 'u': - state = 6396; - return true; - case 'y': - state = 6398; - return true; - } - break; - case 6386: - if ('r' == current) { - state = 6387; - return true; - } - break; - case 6387: - if ('o' == current) { - state = 6388; - return true; - } - break; - case 6388: - if ('n' == current) { - state = 6389; - return true; - } - break; - case 6389: - // rcaron; - if (';' == current) { - match = "\u0159"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6390: - if ('d' == current) { - state = 6391; - return true; - } - else if ('i' == current) { - state = 6394; - return true; - } - break; - case 6391: - if ('i' == current) { - state = 6392; - return true; - } - break; - case 6392: - if ('l' == current) { - state = 6393; - return true; - } - break; - case 6393: - // rcedil; - if (';' == current) { - match = "\u0157"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6394: - if ('l' == current) { - state = 6395; - return true; - } - break; - case 6395: - // rceil; - if (';' == current) { - match = "\u2309"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6396: - if ('b' == current) { - state = 6397; - return true; - } - break; - case 6397: - // rcub; - if (';' == current) { - match = "}"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6398: - // rcy; - if (';' == current) { - match = "\u0440"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6399: - switch (current) { - case 'c': - state = 6400; - return true; - case 'l': - state = 6402; - return true; - case 'q': - state = 6407; - return true; - case 's': - state = 6411; - return true; - } - break; - case 6400: - if ('a' == current) { - state = 6401; - return true; - } - break; - case 6401: - // rdca; - if (';' == current) { - match = "\u2937"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6402: - if ('d' == current) { - state = 6403; - return true; - } - break; - case 6403: - if ('h' == current) { - state = 6404; - return true; - } - break; - case 6404: - if ('a' == current) { - state = 6405; - return true; - } - break; - case 6405: - if ('r' == current) { - state = 6406; - return true; - } - break; - case 6406: - // rdldhar; - if (';' == current) { - match = "\u2969"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6407: - if ('u' == current) { - state = 6408; - return true; - } - break; - case 6408: - if ('o' == current) { - state = 6409; - return true; - } - break; - case 6409: - // rdquo; - if (';' == current) { - match = "\u201D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('r' == current) { - state = 6410; - return true; - } - break; - case 6410: - // rdquor; - if (';' == current) { - match = "\u201D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6411: - if ('h' == current) { - state = 6412; - return true; - } - break; - case 6412: - // rdsh; - if (';' == current) { - match = "\u21B3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6413: - switch (current) { - case 'a': - state = 6414; - return true; - case 'c': - state = 6424; - return true; - case 'g': // reg - match = "\u00AE"; - matchLength = consumedCount; - state = 6426; - return true; - } - break; - case 6414: - if ('l' == current) { - state = 6415; - return true; - } - break; - case 6415: - switch (current) { - case ';': // real; - match = "\u211C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'i': - state = 6416; - return true; - case 'p': - state = 6419; - return true; - case 's': - state = 6423; - return true; - } - break; - case 6416: - if ('n' == current) { - state = 6417; - return true; - } - break; - case 6417: - if ('e' == current) { - state = 6418; - return true; - } - break; - case 6418: - // realine; - if (';' == current) { - match = "\u211B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6419: - if ('a' == current) { - state = 6420; - return true; - } - break; - case 6420: - if ('r' == current) { - state = 6421; - return true; - } - break; - case 6421: - if ('t' == current) { - state = 6422; - return true; - } - break; - case 6422: - // realpart; - if (';' == current) { - match = "\u211C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6423: - // reals; - if (';' == current) { - match = "\u211D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6424: - if ('t' == current) { - state = 6425; - return true; - } - break; - case 6425: - // rect; - if (';' == current) { - match = "\u25AD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6426: - // reg; - if (';' == current) { - match = "\u00AE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6427: - switch (current) { - case 'i': - state = 6428; - return true; - case 'l': - state = 6432; - return true; - case 'r': - state = 6436; - return true; - } - break; - case 6428: - if ('s' == current) { - state = 6429; - return true; - } - break; - case 6429: - if ('h' == current) { - state = 6430; - return true; - } - break; - case 6430: - if ('t' == current) { - state = 6431; - return true; - } - break; - case 6431: - // rfisht; - if (';' == current) { - match = "\u297D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6432: - if ('o' == current) { - state = 6433; - return true; - } - break; - case 6433: - if ('o' == current) { - state = 6434; - return true; - } - break; - case 6434: - if ('r' == current) { - state = 6435; - return true; - } - break; - case 6435: - // rfloor; - if (';' == current) { - match = "\u230B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6436: - // rfr; - if (';' == current) { - match = "\uD835\uDD2F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6437: - if ('a' == current) { - state = 6438; - return true; - } - else if ('o' == current) { - state = 6443; - return true; - } - break; - case 6438: - if ('r' == current) { - state = 6439; - return true; - } - break; - case 6439: - if ('d' == current) { - state = 6440; - return true; - } - else if ('u' == current) { - state = 6441; - return true; - } - break; - case 6440: - // rhard; - if (';' == current) { - match = "\u21C1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6441: - // rharu; - if (';' == current) { - match = "\u21C0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('l' == current) { - state = 6442; - return true; - } - break; - case 6442: - // rharul; - if (';' == current) { - match = "\u296C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6443: - // rho; - if (';' == current) { - match = "\u03C1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('v' == current) { - state = 6444; - return true; - } - break; - case 6444: - // rhov; - if (';' == current) { - match = "\u03F1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6445: - switch (current) { - case 'g': - state = 6446; - return true; - case 'n': - state = 6520; - return true; - case 's': - state = 6522; - return true; - } - break; - case 6446: - if ('h' == current) { - state = 6447; - return true; - } - break; - case 6447: - if ('t' == current) { - state = 6448; - return true; - } - break; - case 6448: - switch (current) { - case 'a': - state = 6449; - return true; - case 'h': - state = 6458; - return true; - case 'l': - state = 6471; - return true; - case 'r': - state = 6489; - return true; - case 's': - state = 6500; - return true; - case 't': - state = 6510; - return true; - } - break; - case 6449: - if ('r' == current) { - state = 6450; - return true; - } - break; - case 6450: - if ('r' == current) { - state = 6451; - return true; - } - break; - case 6451: - if ('o' == current) { - state = 6452; - return true; - } - break; - case 6452: - if ('w' == current) { - state = 6453; - return true; - } - break; - case 6453: - // rightarrow; - if (';' == current) { - match = "\u2192"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('t' == current) { - state = 6454; - return true; - } - break; - case 6454: - if ('a' == current) { - state = 6455; - return true; - } - break; - case 6455: - if ('i' == current) { - state = 6456; - return true; - } - break; - case 6456: - if ('l' == current) { - state = 6457; - return true; - } - break; - case 6457: - // rightarrowtail; - if (';' == current) { - match = "\u21A3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6458: - if ('a' == current) { - state = 6459; - return true; - } - break; - case 6459: - if ('r' == current) { - state = 6460; - return true; - } - break; - case 6460: - if ('p' == current) { - state = 6461; - return true; - } - break; - case 6461: - if ('o' == current) { - state = 6462; - return true; - } - break; - case 6462: - if ('o' == current) { - state = 6463; - return true; - } - break; - case 6463: - if ('n' == current) { - state = 6464; - return true; - } - break; - case 6464: - if ('d' == current) { - state = 6465; - return true; - } - else if ('u' == current) { - state = 6469; - return true; - } - break; - case 6465: - if ('o' == current) { - state = 6466; - return true; - } - break; - case 6466: - if ('w' == current) { - state = 6467; - return true; - } - break; - case 6467: - if ('n' == current) { - state = 6468; - return true; - } - break; - case 6468: - // rightharpoondown; - if (';' == current) { - match = "\u21C1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6469: - if ('p' == current) { - state = 6470; - return true; - } - break; - case 6470: - // rightharpoonup; - if (';' == current) { - match = "\u21C0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6471: - if ('e' == current) { - state = 6472; - return true; - } - break; - case 6472: - if ('f' == current) { - state = 6473; - return true; - } - break; - case 6473: - if ('t' == current) { - state = 6474; - return true; - } - break; - case 6474: - if ('a' == current) { - state = 6475; - return true; - } - else if ('h' == current) { - state = 6481; - return true; - } - break; - case 6475: - if ('r' == current) { - state = 6476; - return true; - } - break; - case 6476: - if ('r' == current) { - state = 6477; - return true; - } - break; - case 6477: - if ('o' == current) { - state = 6478; - return true; - } - break; - case 6478: - if ('w' == current) { - state = 6479; - return true; - } - break; - case 6479: - if ('s' == current) { - state = 6480; - return true; - } - break; - case 6480: - // rightleftarrows; - if (';' == current) { - match = "\u21C4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6481: - if ('a' == current) { - state = 6482; - return true; - } - break; - case 6482: - if ('r' == current) { - state = 6483; - return true; - } - break; - case 6483: - if ('p' == current) { - state = 6484; - return true; - } - break; - case 6484: - if ('o' == current) { - state = 6485; - return true; - } - break; - case 6485: - if ('o' == current) { - state = 6486; - return true; - } - break; - case 6486: - if ('n' == current) { - state = 6487; - return true; - } - break; - case 6487: - if ('s' == current) { - state = 6488; - return true; - } - break; - case 6488: - // rightleftharpoons; - if (';' == current) { - match = "\u21CC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6489: - if ('i' == current) { - state = 6490; - return true; - } - break; - case 6490: - if ('g' == current) { - state = 6491; - return true; - } - break; - case 6491: - if ('h' == current) { - state = 6492; - return true; - } - break; - case 6492: - if ('t' == current) { - state = 6493; - return true; - } - break; - case 6493: - if ('a' == current) { - state = 6494; - return true; - } - break; - case 6494: - if ('r' == current) { - state = 6495; - return true; - } - break; - case 6495: - if ('r' == current) { - state = 6496; - return true; - } - break; - case 6496: - if ('o' == current) { - state = 6497; - return true; - } - break; - case 6497: - if ('w' == current) { - state = 6498; - return true; - } - break; - case 6498: - if ('s' == current) { - state = 6499; - return true; - } - break; - case 6499: - // rightrightarrows; - if (';' == current) { - match = "\u21C9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6500: - if ('q' == current) { - state = 6501; - return true; - } - break; - case 6501: - if ('u' == current) { - state = 6502; - return true; - } - break; - case 6502: - if ('i' == current) { - state = 6503; - return true; - } - break; - case 6503: - if ('g' == current) { - state = 6504; - return true; - } - break; - case 6504: - if ('a' == current) { - state = 6505; - return true; - } - break; - case 6505: - if ('r' == current) { - state = 6506; - return true; - } - break; - case 6506: - if ('r' == current) { - state = 6507; - return true; - } - break; - case 6507: - if ('o' == current) { - state = 6508; - return true; - } - break; - case 6508: - if ('w' == current) { - state = 6509; - return true; - } - break; - case 6509: - // rightsquigarrow; - if (';' == current) { - match = "\u219D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6510: - if ('h' == current) { - state = 6511; - return true; - } - break; - case 6511: - if ('r' == current) { - state = 6512; - return true; - } - break; - case 6512: - if ('e' == current) { - state = 6513; - return true; - } - break; - case 6513: - if ('e' == current) { - state = 6514; - return true; - } - break; - case 6514: - if ('t' == current) { - state = 6515; - return true; - } - break; - case 6515: - if ('i' == current) { - state = 6516; - return true; - } - break; - case 6516: - if ('m' == current) { - state = 6517; - return true; - } - break; - case 6517: - if ('e' == current) { - state = 6518; - return true; - } - break; - case 6518: - if ('s' == current) { - state = 6519; - return true; - } - break; - case 6519: - // rightthreetimes; - if (';' == current) { - match = "\u22CC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6520: - if ('g' == current) { - state = 6521; - return true; - } - break; - case 6521: - // ring; - if (';' == current) { - match = "\u02DA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6522: - if ('i' == current) { - state = 6523; - return true; - } - break; - case 6523: - if ('n' == current) { - state = 6524; - return true; - } - break; - case 6524: - if ('g' == current) { - state = 6525; - return true; - } - break; - case 6525: - if ('d' == current) { - state = 6526; - return true; - } - break; - case 6526: - if ('o' == current) { - state = 6527; - return true; - } - break; - case 6527: - if ('t' == current) { - state = 6528; - return true; - } - break; - case 6528: - if ('s' == current) { - state = 6529; - return true; - } - break; - case 6529: - if ('e' == current) { - state = 6530; - return true; - } - break; - case 6530: - if ('q' == current) { - state = 6531; - return true; - } - break; - case 6531: - // risingdotseq; - if (';' == current) { - match = "\u2253"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6532: - switch (current) { - case 'a': - state = 6533; - return true; - case 'h': - state = 6536; - return true; - case 'm': - state = 6539; - return true; - } - break; - case 6533: - if ('r' == current) { - state = 6534; - return true; - } - break; - case 6534: - if ('r' == current) { - state = 6535; - return true; - } - break; - case 6535: - // rlarr; - if (';' == current) { - match = "\u21C4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6536: - if ('a' == current) { - state = 6537; - return true; - } - break; - case 6537: - if ('r' == current) { - state = 6538; - return true; - } - break; - case 6538: - // rlhar; - if (';' == current) { - match = "\u21CC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6539: - // rlm; - if (';' == current) { - match = "\u200F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6540: - if ('o' == current) { - state = 6541; - return true; - } - break; - case 6541: - if ('u' == current) { - state = 6542; - return true; - } - break; - case 6542: - if ('s' == current) { - state = 6543; - return true; - } - break; - case 6543: - if ('t' == current) { - state = 6544; - return true; - } - break; - case 6544: - // rmoust; - if (';' == current) { - match = "\u23B1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('a' == current) { - state = 6545; - return true; - } - break; - case 6545: - if ('c' == current) { - state = 6546; - return true; - } - break; - case 6546: - if ('h' == current) { - state = 6547; - return true; - } - break; - case 6547: - if ('e' == current) { - state = 6548; - return true; - } - break; - case 6548: - // rmoustache; - if (';' == current) { - match = "\u23B1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6549: - if ('m' == current) { - state = 6550; - return true; - } - break; - case 6550: - if ('i' == current) { - state = 6551; - return true; - } - break; - case 6551: - if ('d' == current) { - state = 6552; - return true; - } - break; - case 6552: - // rnmid; - if (';' == current) { - match = "\u2AEE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6553: - switch (current) { - case 'a': - state = 6554; - return true; - case 'b': - state = 6559; - return true; - case 'p': - state = 6562; - return true; - case 't': - state = 6569; - return true; - } - break; - case 6554: - if ('n' == current) { - state = 6555; - return true; - } - else if ('r' == current) { - state = 6557; - return true; - } - break; - case 6555: - if ('g' == current) { - state = 6556; - return true; - } - break; - case 6556: - // roang; - if (';' == current) { - match = "\u27ED"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6557: - if ('r' == current) { - state = 6558; - return true; - } - break; - case 6558: - // roarr; - if (';' == current) { - match = "\u21FE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6559: - if ('r' == current) { - state = 6560; - return true; - } - break; - case 6560: - if ('k' == current) { - state = 6561; - return true; - } - break; - case 6561: - // robrk; - if (';' == current) { - match = "\u27E7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6562: - switch (current) { - case 'a': - state = 6563; - return true; - case 'f': - state = 6565; - return true; - case 'l': - state = 6566; - return true; - } - break; - case 6563: - if ('r' == current) { - state = 6564; - return true; - } - break; - case 6564: - // ropar; - if (';' == current) { - match = "\u2986"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6565: - // ropf; - if (';' == current) { - match = "\uD835\uDD63"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6566: - if ('u' == current) { - state = 6567; - return true; - } - break; - case 6567: - if ('s' == current) { - state = 6568; - return true; - } - break; - case 6568: - // roplus; - if (';' == current) { - match = "\u2A2E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6569: - if ('i' == current) { - state = 6570; - return true; - } - break; - case 6570: - if ('m' == current) { - state = 6571; - return true; - } - break; - case 6571: - if ('e' == current) { - state = 6572; - return true; - } - break; - case 6572: - if ('s' == current) { - state = 6573; - return true; - } - break; - case 6573: - // rotimes; - if (';' == current) { - match = "\u2A35"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6574: - if ('a' == current) { - state = 6575; - return true; - } - else if ('p' == current) { - state = 6579; - return true; - } - break; - case 6575: - if ('r' == current) { - state = 6576; - return true; - } - break; - case 6576: - // rpar; - if (';' == current) { - match = ")"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('g' == current) { - state = 6577; - return true; - } - break; - case 6577: - if ('t' == current) { - state = 6578; - return true; - } - break; - case 6578: - // rpargt; - if (';' == current) { - match = "\u2994"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6579: - if ('o' == current) { - state = 6580; - return true; - } - break; - case 6580: - if ('l' == current) { - state = 6581; - return true; - } - break; - case 6581: - if ('i' == current) { - state = 6582; - return true; - } - break; - case 6582: - if ('n' == current) { - state = 6583; - return true; - } - break; - case 6583: - if ('t' == current) { - state = 6584; - return true; - } - break; - case 6584: - // rppolint; - if (';' == current) { - match = "\u2A12"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6585: - if ('a' == current) { - state = 6586; - return true; - } - break; - case 6586: - if ('r' == current) { - state = 6587; - return true; - } - break; - case 6587: - if ('r' == current) { - state = 6588; - return true; - } - break; - case 6588: - // rrarr; - if (';' == current) { - match = "\u21C9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6589: - switch (current) { - case 'a': - state = 6590; - return true; - case 'c': - state = 6594; - return true; - case 'h': - state = 6596; - return true; - case 'q': - state = 6597; - return true; - } - break; - case 6590: - if ('q' == current) { - state = 6591; - return true; - } - break; - case 6591: - if ('u' == current) { - state = 6592; - return true; - } - break; - case 6592: - if ('o' == current) { - state = 6593; - return true; - } - break; - case 6593: - // rsaquo; - if (';' == current) { - match = "\u203A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6594: - if ('r' == current) { - state = 6595; - return true; - } - break; - case 6595: - // rscr; - if (';' == current) { - match = "\uD835\uDCC7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6596: - // rsh; - if (';' == current) { - match = "\u21B1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6597: - if ('b' == current) { - state = 6598; - return true; - } - else if ('u' == current) { - state = 6599; - return true; - } - break; - case 6598: - // rsqb; - if (';' == current) { - match = "]"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6599: - if ('o' == current) { - state = 6600; - return true; - } - break; - case 6600: - // rsquo; - if (';' == current) { - match = "\u2019"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('r' == current) { - state = 6601; - return true; - } - break; - case 6601: - // rsquor; - if (';' == current) { - match = "\u2019"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6602: - switch (current) { - case 'h': - state = 6603; - return true; - case 'i': - state = 6607; - return true; - case 'r': - state = 6611; - return true; - } - break; - case 6603: - if ('r' == current) { - state = 6604; - return true; - } - break; - case 6604: - if ('e' == current) { - state = 6605; - return true; - } - break; - case 6605: - if ('e' == current) { - state = 6606; - return true; - } - break; - case 6606: - // rthree; - if (';' == current) { - match = "\u22CC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6607: - if ('m' == current) { - state = 6608; - return true; - } - break; - case 6608: - if ('e' == current) { - state = 6609; - return true; - } - break; - case 6609: - if ('s' == current) { - state = 6610; - return true; - } - break; - case 6610: - // rtimes; - if (';' == current) { - match = "\u22CA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6611: - if ('i' == current) { - state = 6612; - return true; - } - break; - case 6612: - switch (current) { - case ';': // rtri; - match = "\u25B9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'e': - state = 6613; - return true; - case 'f': - state = 6614; - return true; - case 'l': - state = 6615; - return true; - } - break; - case 6613: - // rtrie; - if (';' == current) { - match = "\u22B5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6614: - // rtrif; - if (';' == current) { - match = "\u25B8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6615: - if ('t' == current) { - state = 6616; - return true; - } - break; - case 6616: - if ('r' == current) { - state = 6617; - return true; - } - break; - case 6617: - if ('i' == current) { - state = 6618; - return true; - } - break; - case 6618: - // rtriltri; - if (';' == current) { - match = "\u29CE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6619: - if ('l' == current) { - state = 6620; - return true; - } - break; - case 6620: - if ('u' == current) { - state = 6621; - return true; - } - break; - case 6621: - if ('h' == current) { - state = 6622; - return true; - } - break; - case 6622: - if ('a' == current) { - state = 6623; - return true; - } - break; - case 6623: - if ('r' == current) { - state = 6624; - return true; - } - break; - case 6624: - // ruluhar; - if (';' == current) { - match = "\u2968"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6625: - // rx; - if (';' == current) { - match = "\u211E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6626: - switch (current) { - case 'a': - state = 6627; - return true; - case 'b': - state = 6632; - return true; - case 'c': - state = 6636; - return true; - case 'd': - state = 6670; - return true; - case 'e': - state = 6675; - return true; - case 'f': - state = 6703; - return true; - case 'h': - state = 6708; - return true; - case 'i': - state = 6732; - return true; - case 'l': - state = 6758; - return true; - case 'm': - state = 6762; - return true; - case 'o': - state = 6790; - return true; - case 'p': - state = 6801; - return true; - case 'q': - state = 6810; - return true; - case 'r': - state = 6840; - return true; - case 's': - state = 6844; - return true; - case 't': - state = 6859; - return true; - case 'u': - state = 6881; - return true; - case 'w': - state = 7008; - return true; - case 'z': - state = 7023; - return true; - } - break; - case 6627: - if ('c' == current) { - state = 6628; - return true; - } - break; - case 6628: - if ('u' == current) { - state = 6629; - return true; - } - break; - case 6629: - if ('t' == current) { - state = 6630; - return true; - } - break; - case 6630: - if ('e' == current) { - state = 6631; - return true; - } - break; - case 6631: - // sacute; - if (';' == current) { - match = "\u015B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6632: - if ('q' == current) { - state = 6633; - return true; - } - break; - case 6633: - if ('u' == current) { - state = 6634; - return true; - } - break; - case 6634: - if ('o' == current) { - state = 6635; - return true; - } - break; - case 6635: - // sbquo; - if (';' == current) { - match = "\u201A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6636: - switch (current) { - case ';': // sc; - match = "\u227B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 6637; - return true; - case 'a': - state = 6638; - return true; - case 'c': - state = 6643; - return true; - case 'e': - state = 6646; - return true; - case 'i': - state = 6650; - return true; - case 'n': - state = 6653; - return true; - case 'p': - state = 6660; - return true; - case 's': - state = 6666; - return true; - case 'y': - state = 6669; - return true; - } - break; - case 6637: - // scE; - if (';' == current) { - match = "\u2AB4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6638: - if ('p' == current) { - state = 6639; - return true; - } - else if ('r' == current) { - state = 6640; - return true; - } - break; - case 6639: - // scap; - if (';' == current) { - match = "\u2AB8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6640: - if ('o' == current) { - state = 6641; - return true; - } - break; - case 6641: - if ('n' == current) { - state = 6642; - return true; - } - break; - case 6642: - // scaron; - if (';' == current) { - match = "\u0161"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6643: - if ('u' == current) { - state = 6644; - return true; - } - break; - case 6644: - if ('e' == current) { - state = 6645; - return true; - } - break; - case 6645: - // sccue; - if (';' == current) { - match = "\u227D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6646: - // sce; - if (';' == current) { - match = "\u2AB0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('d' == current) { - state = 6647; - return true; - } - break; - case 6647: - if ('i' == current) { - state = 6648; - return true; - } - break; - case 6648: - if ('l' == current) { - state = 6649; - return true; - } - break; - case 6649: - // scedil; - if (';' == current) { - match = "\u015F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6650: - if ('r' == current) { - state = 6651; - return true; - } - break; - case 6651: - if ('c' == current) { - state = 6652; - return true; - } - break; - case 6652: - // scirc; - if (';' == current) { - match = "\u015D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6653: - switch (current) { - case 'E': - state = 6654; - return true; - case 'a': - state = 6655; - return true; - case 's': - state = 6657; - return true; - } - break; - case 6654: - // scnE; - if (';' == current) { - match = "\u2AB6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6655: - if ('p' == current) { - state = 6656; - return true; - } - break; - case 6656: - // scnap; - if (';' == current) { - match = "\u2ABA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6657: - if ('i' == current) { - state = 6658; - return true; - } - break; - case 6658: - if ('m' == current) { - state = 6659; - return true; - } - break; - case 6659: - // scnsim; - if (';' == current) { - match = "\u22E9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6660: - if ('o' == current) { - state = 6661; - return true; - } - break; - case 6661: - if ('l' == current) { - state = 6662; - return true; - } - break; - case 6662: - if ('i' == current) { - state = 6663; - return true; - } - break; - case 6663: - if ('n' == current) { - state = 6664; - return true; - } - break; - case 6664: - if ('t' == current) { - state = 6665; - return true; - } - break; - case 6665: - // scpolint; - if (';' == current) { - match = "\u2A13"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6666: - if ('i' == current) { - state = 6667; - return true; - } - break; - case 6667: - if ('m' == current) { - state = 6668; - return true; - } - break; - case 6668: - // scsim; - if (';' == current) { - match = "\u227F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6669: - // scy; - if (';' == current) { - match = "\u0441"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6670: - if ('o' == current) { - state = 6671; - return true; - } - break; - case 6671: - if ('t' == current) { - state = 6672; - return true; - } - break; - case 6672: - switch (current) { - case ';': // sdot; - match = "\u22C5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'b': - state = 6673; - return true; - case 'e': - state = 6674; - return true; - } - break; - case 6673: - // sdotb; - if (';' == current) { - match = "\u22A1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6674: - // sdote; - if (';' == current) { - match = "\u2A66"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6675: - switch (current) { - case 'A': - state = 6676; - return true; - case 'a': - state = 6679; - return true; - case 'c': - state = 6686; - return true; - case 'm': - state = 6688; - return true; - case 's': - state = 6690; - return true; - case 't': - state = 6694; - return true; - case 'x': - state = 6701; - return true; - } - break; - case 6676: - if ('r' == current) { - state = 6677; - return true; - } - break; - case 6677: - if ('r' == current) { - state = 6678; - return true; - } - break; - case 6678: - // seArr; - if (';' == current) { - match = "\u21D8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6679: - if ('r' == current) { - state = 6680; - return true; - } - break; - case 6680: - if ('h' == current) { - state = 6681; - return true; - } - else if ('r' == current) { - state = 6683; - return true; - } - break; - case 6681: - if ('k' == current) { - state = 6682; - return true; - } - break; - case 6682: - // searhk; - if (';' == current) { - match = "\u2925"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6683: - // searr; - if (';' == current) { - match = "\u2198"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('o' == current) { - state = 6684; - return true; - } - break; - case 6684: - if ('w' == current) { - state = 6685; - return true; - } - break; - case 6685: - // searrow; - if (';' == current) { - match = "\u2198"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6686: - // sect - if ('t' == current) { - match = "\u00A7"; - matchLength = consumedCount; - state = 6687; - return true; - } - break; - case 6687: - // sect; - if (';' == current) { - match = "\u00A7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6688: - if ('i' == current) { - state = 6689; - return true; - } - break; - case 6689: - // semi; - if (';' == current) { - match = ";"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6690: - if ('w' == current) { - state = 6691; - return true; - } - break; - case 6691: - if ('a' == current) { - state = 6692; - return true; - } - break; - case 6692: - if ('r' == current) { - state = 6693; - return true; - } - break; - case 6693: - // seswar; - if (';' == current) { - match = "\u2929"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6694: - if ('m' == current) { - state = 6695; - return true; - } - break; - case 6695: - if ('i' == current) { - state = 6696; - return true; - } - else if ('n' == current) { - state = 6700; - return true; - } - break; - case 6696: - if ('n' == current) { - state = 6697; - return true; - } - break; - case 6697: - if ('u' == current) { - state = 6698; - return true; - } - break; - case 6698: - if ('s' == current) { - state = 6699; - return true; - } - break; - case 6699: - // setminus; - if (';' == current) { - match = "\u2216"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6700: - // setmn; - if (';' == current) { - match = "\u2216"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6701: - if ('t' == current) { - state = 6702; - return true; - } - break; - case 6702: - // sext; - if (';' == current) { - match = "\u2736"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6703: - if ('r' == current) { - state = 6704; - return true; - } - break; - case 6704: - // sfr; - if (';' == current) { - match = "\uD835\uDD30"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('o' == current) { - state = 6705; - return true; - } - break; - case 6705: - if ('w' == current) { - state = 6706; - return true; - } - break; - case 6706: - if ('n' == current) { - state = 6707; - return true; - } - break; - case 6707: - // sfrown; - if (';' == current) { - match = "\u2322"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6708: - switch (current) { - case 'a': - state = 6709; - return true; - case 'c': - state = 6712; - return true; - case 'o': - state = 6717; - return true; - case 'y': // shy - match = "\u00AD"; - matchLength = consumedCount; - state = 6731; - return true; - } - break; - case 6709: - if ('r' == current) { - state = 6710; - return true; - } - break; - case 6710: - if ('p' == current) { - state = 6711; - return true; - } - break; - case 6711: - // sharp; - if (';' == current) { - match = "\u266F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6712: - if ('h' == current) { - state = 6713; - return true; - } - else if ('y' == current) { - state = 6716; - return true; - } - break; - case 6713: - if ('c' == current) { - state = 6714; - return true; - } - break; - case 6714: - if ('y' == current) { - state = 6715; - return true; - } - break; - case 6715: - // shchcy; - if (';' == current) { - match = "\u0449"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6716: - // shcy; - if (';' == current) { - match = "\u0448"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6717: - if ('r' == current) { - state = 6718; - return true; - } - break; - case 6718: - if ('t' == current) { - state = 6719; - return true; - } - break; - case 6719: - if ('m' == current) { - state = 6720; - return true; - } - else if ('p' == current) { - state = 6723; - return true; - } - break; - case 6720: - if ('i' == current) { - state = 6721; - return true; - } - break; - case 6721: - if ('d' == current) { - state = 6722; - return true; - } - break; - case 6722: - // shortmid; - if (';' == current) { - match = "\u2223"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6723: - if ('a' == current) { - state = 6724; - return true; - } - break; - case 6724: - if ('r' == current) { - state = 6725; - return true; - } - break; - case 6725: - if ('a' == current) { - state = 6726; - return true; - } - break; - case 6726: - if ('l' == current) { - state = 6727; - return true; - } - break; - case 6727: - if ('l' == current) { - state = 6728; - return true; - } - break; - case 6728: - if ('e' == current) { - state = 6729; - return true; - } - break; - case 6729: - if ('l' == current) { - state = 6730; - return true; - } - break; - case 6730: - // shortparallel; - if (';' == current) { - match = "\u2225"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6731: - // shy; - if (';' == current) { - match = "\u00AD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6732: - if ('g' == current) { - state = 6733; - return true; - } - else if ('m' == current) { - state = 6738; - return true; - } - break; - case 6733: - if ('m' == current) { - state = 6734; - return true; - } - break; - case 6734: - if ('a' == current) { - state = 6735; - return true; - } - break; - case 6735: - switch (current) { - case ';': // sigma; - match = "\u03C3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'f': - state = 6736; - return true; - case 'v': - state = 6737; - return true; - } - break; - case 6736: - // sigmaf; - if (';' == current) { - match = "\u03C2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6737: - // sigmav; - if (';' == current) { - match = "\u03C2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6738: - switch (current) { - case ';': // sim; - match = "\u223C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'd': - state = 6739; - return true; - case 'e': - state = 6742; - return true; - case 'g': - state = 6744; - return true; - case 'l': - state = 6746; - return true; - case 'n': - state = 6748; - return true; - case 'p': - state = 6750; - return true; - case 'r': - state = 6754; - return true; - } - break; - case 6739: - if ('o' == current) { - state = 6740; - return true; - } - break; - case 6740: - if ('t' == current) { - state = 6741; - return true; - } - break; - case 6741: - // simdot; - if (';' == current) { - match = "\u2A6A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6742: - // sime; - if (';' == current) { - match = "\u2243"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('q' == current) { - state = 6743; - return true; - } - break; - case 6743: - // simeq; - if (';' == current) { - match = "\u2243"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6744: - // simg; - if (';' == current) { - match = "\u2A9E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('E' == current) { - state = 6745; - return true; - } - break; - case 6745: - // simgE; - if (';' == current) { - match = "\u2AA0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6746: - // siml; - if (';' == current) { - match = "\u2A9D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('E' == current) { - state = 6747; - return true; - } - break; - case 6747: - // simlE; - if (';' == current) { - match = "\u2A9F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6748: - if ('e' == current) { - state = 6749; - return true; - } - break; - case 6749: - // simne; - if (';' == current) { - match = "\u2246"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6750: - if ('l' == current) { - state = 6751; - return true; - } - break; - case 6751: - if ('u' == current) { - state = 6752; - return true; - } - break; - case 6752: - if ('s' == current) { - state = 6753; - return true; - } - break; - case 6753: - // simplus; - if (';' == current) { - match = "\u2A24"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6754: - if ('a' == current) { - state = 6755; - return true; - } - break; - case 6755: - if ('r' == current) { - state = 6756; - return true; - } - break; - case 6756: - if ('r' == current) { - state = 6757; - return true; - } - break; - case 6757: - // simrarr; - if (';' == current) { - match = "\u2972"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6758: - if ('a' == current) { - state = 6759; - return true; - } - break; - case 6759: - if ('r' == current) { - state = 6760; - return true; - } - break; - case 6760: - if ('r' == current) { - state = 6761; - return true; - } - break; - case 6761: - // slarr; - if (';' == current) { - match = "\u2190"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6762: - switch (current) { - case 'a': - state = 6763; - return true; - case 'e': - state = 6777; - return true; - case 'i': - state = 6783; - return true; - case 't': - state = 6787; - return true; - } - break; - case 6763: - if ('l' == current) { - state = 6764; - return true; - } - else if ('s' == current) { - state = 6774; - return true; - } - break; - case 6764: - if ('l' == current) { - state = 6765; - return true; - } - break; - case 6765: - if ('s' == current) { - state = 6766; - return true; - } - break; - case 6766: - if ('e' == current) { - state = 6767; - return true; - } - break; - case 6767: - if ('t' == current) { - state = 6768; - return true; - } - break; - case 6768: - if ('m' == current) { - state = 6769; - return true; - } - break; - case 6769: - if ('i' == current) { - state = 6770; - return true; - } - break; - case 6770: - if ('n' == current) { - state = 6771; - return true; - } - break; - case 6771: - if ('u' == current) { - state = 6772; - return true; - } - break; - case 6772: - if ('s' == current) { - state = 6773; - return true; - } - break; - case 6773: - // smallsetminus; - if (';' == current) { - match = "\u2216"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6774: - if ('h' == current) { - state = 6775; - return true; - } - break; - case 6775: - if ('p' == current) { - state = 6776; - return true; - } - break; - case 6776: - // smashp; - if (';' == current) { - match = "\u2A33"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6777: - if ('p' == current) { - state = 6778; - return true; - } - break; - case 6778: - if ('a' == current) { - state = 6779; - return true; - } - break; - case 6779: - if ('r' == current) { - state = 6780; - return true; - } - break; - case 6780: - if ('s' == current) { - state = 6781; - return true; - } - break; - case 6781: - if ('l' == current) { - state = 6782; - return true; - } - break; - case 6782: - // smeparsl; - if (';' == current) { - match = "\u29E4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6783: - if ('d' == current) { - state = 6784; - return true; - } - else if ('l' == current) { - state = 6785; - return true; - } - break; - case 6784: - // smid; - if (';' == current) { - match = "\u2223"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6785: - if ('e' == current) { - state = 6786; - return true; - } - break; - case 6786: - // smile; - if (';' == current) { - match = "\u2323"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6787: - // smt; - if (';' == current) { - match = "\u2AAA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 6788; - return true; - } - break; - case 6788: - // smte; - if (';' == current) { - match = "\u2AAC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('s' == current) { - state = 6789; - return true; - } - break; - case 6789: - // smtes; - if (';' == current) { - match = "\u2AAC\uFE00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6790: - switch (current) { - case 'f': - state = 6791; - return true; - case 'l': - state = 6795; - return true; - case 'p': - state = 6799; - return true; - } - break; - case 6791: - if ('t' == current) { - state = 6792; - return true; - } - break; - case 6792: - if ('c' == current) { - state = 6793; - return true; - } - break; - case 6793: - if ('y' == current) { - state = 6794; - return true; - } - break; - case 6794: - // softcy; - if (';' == current) { - match = "\u044C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6795: - // sol; - if (';' == current) { - match = "/"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('b' == current) { - state = 6796; - return true; - } - break; - case 6796: - // solb; - if (';' == current) { - match = "\u29C4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('a' == current) { - state = 6797; - return true; - } - break; - case 6797: - if ('r' == current) { - state = 6798; - return true; - } - break; - case 6798: - // solbar; - if (';' == current) { - match = "\u233F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6799: - if ('f' == current) { - state = 6800; - return true; - } - break; - case 6800: - // sopf; - if (';' == current) { - match = "\uD835\uDD64"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6801: - if ('a' == current) { - state = 6802; - return true; - } - break; - case 6802: - if ('d' == current) { - state = 6803; - return true; - } - else if ('r' == current) { - state = 6809; - return true; - } - break; - case 6803: - if ('e' == current) { - state = 6804; - return true; - } - break; - case 6804: - if ('s' == current) { - state = 6805; - return true; - } - break; - case 6805: - // spades; - if (';' == current) { - match = "\u2660"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('u' == current) { - state = 6806; - return true; - } - break; - case 6806: - if ('i' == current) { - state = 6807; - return true; - } - break; - case 6807: - if ('t' == current) { - state = 6808; - return true; - } - break; - case 6808: - // spadesuit; - if (';' == current) { - match = "\u2660"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6809: - // spar; - if (';' == current) { - match = "\u2225"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6810: - switch (current) { - case 'c': - state = 6811; - return true; - case 's': - state = 6818; - return true; - case 'u': - state = 6834; - return true; - } - break; - case 6811: - if ('a' == current) { - state = 6812; - return true; - } - else if ('u' == current) { - state = 6815; - return true; - } - break; - case 6812: - if ('p' == current) { - state = 6813; - return true; - } - break; - case 6813: - // sqcap; - if (';' == current) { - match = "\u2293"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('s' == current) { - state = 6814; - return true; - } - break; - case 6814: - // sqcaps; - if (';' == current) { - match = "\u2293\uFE00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6815: - if ('p' == current) { - state = 6816; - return true; - } - break; - case 6816: - // sqcup; - if (';' == current) { - match = "\u2294"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('s' == current) { - state = 6817; - return true; - } - break; - case 6817: - // sqcups; - if (';' == current) { - match = "\u2294\uFE00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6818: - if ('u' == current) { - state = 6819; - return true; - } - break; - case 6819: - if ('b' == current) { - state = 6820; - return true; - } - else if ('p' == current) { - state = 6827; - return true; - } - break; - case 6820: - switch (current) { - case ';': // sqsub; - match = "\u228F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'e': - state = 6821; - return true; - case 's': - state = 6822; - return true; - } - break; - case 6821: - // sqsube; - if (';' == current) { - match = "\u2291"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6822: - if ('e' == current) { - state = 6823; - return true; - } - break; - case 6823: - if ('t' == current) { - state = 6824; - return true; - } - break; - case 6824: - // sqsubset; - if (';' == current) { - match = "\u228F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 6825; - return true; - } - break; - case 6825: - if ('q' == current) { - state = 6826; - return true; - } - break; - case 6826: - // sqsubseteq; - if (';' == current) { - match = "\u2291"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6827: - switch (current) { - case ';': // sqsup; - match = "\u2290"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'e': - state = 6828; - return true; - case 's': - state = 6829; - return true; - } - break; - case 6828: - // sqsupe; - if (';' == current) { - match = "\u2292"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6829: - if ('e' == current) { - state = 6830; - return true; - } - break; - case 6830: - if ('t' == current) { - state = 6831; - return true; - } - break; - case 6831: - // sqsupset; - if (';' == current) { - match = "\u2290"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 6832; - return true; - } - break; - case 6832: - if ('q' == current) { - state = 6833; - return true; - } - break; - case 6833: - // sqsupseteq; - if (';' == current) { - match = "\u2292"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6834: - switch (current) { - case ';': // squ; - match = "\u25A1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'a': - state = 6835; - return true; - case 'f': - state = 6839; - return true; - } - break; - case 6835: - if ('r' == current) { - state = 6836; - return true; - } - break; - case 6836: - if ('e' == current) { - state = 6837; - return true; - } - else if ('f' == current) { - state = 6838; - return true; - } - break; - case 6837: - // square; - if (';' == current) { - match = "\u25A1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6838: - // squarf; - if (';' == current) { - match = "\u25AA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6839: - // squf; - if (';' == current) { - match = "\u25AA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6840: - if ('a' == current) { - state = 6841; - return true; - } - break; - case 6841: - if ('r' == current) { - state = 6842; - return true; - } - break; - case 6842: - if ('r' == current) { - state = 6843; - return true; - } - break; - case 6843: - // srarr; - if (';' == current) { - match = "\u2192"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6844: - switch (current) { - case 'c': - state = 6845; - return true; - case 'e': - state = 6847; - return true; - case 'm': - state = 6851; - return true; - case 't': - state = 6855; - return true; - } - break; - case 6845: - if ('r' == current) { - state = 6846; - return true; - } - break; - case 6846: - // sscr; - if (';' == current) { - match = "\uD835\uDCC8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6847: - if ('t' == current) { - state = 6848; - return true; - } - break; - case 6848: - if ('m' == current) { - state = 6849; - return true; - } - break; - case 6849: - if ('n' == current) { - state = 6850; - return true; - } - break; - case 6850: - // ssetmn; - if (';' == current) { - match = "\u2216"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6851: - if ('i' == current) { - state = 6852; - return true; - } - break; - case 6852: - if ('l' == current) { - state = 6853; - return true; - } - break; - case 6853: - if ('e' == current) { - state = 6854; - return true; - } - break; - case 6854: - // ssmile; - if (';' == current) { - match = "\u2323"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6855: - if ('a' == current) { - state = 6856; - return true; - } - break; - case 6856: - if ('r' == current) { - state = 6857; - return true; - } - break; - case 6857: - if ('f' == current) { - state = 6858; - return true; - } - break; - case 6858: - // sstarf; - if (';' == current) { - match = "\u22C6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6859: - if ('a' == current) { - state = 6860; - return true; - } - else if ('r' == current) { - state = 6863; - return true; - } - break; - case 6860: - if ('r' == current) { - state = 6861; - return true; - } - break; - case 6861: - // star; - if (';' == current) { - match = "\u2606"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('f' == current) { - state = 6862; - return true; - } - break; - case 6862: - // starf; - if (';' == current) { - match = "\u2605"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6863: - if ('a' == current) { - state = 6864; - return true; - } - else if ('n' == current) { - state = 6879; - return true; - } - break; - case 6864: - if ('i' == current) { - state = 6865; - return true; - } - break; - case 6865: - if ('g' == current) { - state = 6866; - return true; - } - break; - case 6866: - if ('h' == current) { - state = 6867; - return true; - } - break; - case 6867: - if ('t' == current) { - state = 6868; - return true; - } - break; - case 6868: - if ('e' == current) { - state = 6869; - return true; - } - else if ('p' == current) { - state = 6876; - return true; - } - break; - case 6869: - if ('p' == current) { - state = 6870; - return true; - } - break; - case 6870: - if ('s' == current) { - state = 6871; - return true; - } - break; - case 6871: - if ('i' == current) { - state = 6872; - return true; - } - break; - case 6872: - if ('l' == current) { - state = 6873; - return true; - } - break; - case 6873: - if ('o' == current) { - state = 6874; - return true; - } - break; - case 6874: - if ('n' == current) { - state = 6875; - return true; - } - break; - case 6875: - // straightepsilon; - if (';' == current) { - match = "\u03F5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6876: - if ('h' == current) { - state = 6877; - return true; - } - break; - case 6877: - if ('i' == current) { - state = 6878; - return true; - } - break; - case 6878: - // straightphi; - if (';' == current) { - match = "\u03D5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6879: - if ('s' == current) { - state = 6880; - return true; - } - break; - case 6880: - // strns; - if (';' == current) { - match = "\u00AF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6881: - switch (current) { - case 'b': - state = 6882; - return true; - case 'c': - state = 6921; - return true; - case 'm': - state = 6954; - return true; - case 'n': - state = 6955; - return true; - case 'p': - state = 6957; - return true; - } - break; - case 6882: - switch (current) { - case ';': // sub; - match = "\u2282"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 6883; - return true; - case 'd': - state = 6884; - return true; - case 'e': - state = 6887; - return true; - case 'm': - state = 6891; - return true; - case 'n': - state = 6895; - return true; - case 'p': - state = 6898; - return true; - case 'r': - state = 6902; - return true; - case 's': - state = 6906; - return true; - } - break; - case 6883: - // subE; - if (';' == current) { - match = "\u2AC5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6884: - if ('o' == current) { - state = 6885; - return true; - } - break; - case 6885: - if ('t' == current) { - state = 6886; - return true; - } - break; - case 6886: - // subdot; - if (';' == current) { - match = "\u2ABD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6887: - // sube; - if (';' == current) { - match = "\u2286"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('d' == current) { - state = 6888; - return true; - } - break; - case 6888: - if ('o' == current) { - state = 6889; - return true; - } - break; - case 6889: - if ('t' == current) { - state = 6890; - return true; - } - break; - case 6890: - // subedot; - if (';' == current) { - match = "\u2AC3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6891: - if ('u' == current) { - state = 6892; - return true; - } - break; - case 6892: - if ('l' == current) { - state = 6893; - return true; - } - break; - case 6893: - if ('t' == current) { - state = 6894; - return true; - } - break; - case 6894: - // submult; - if (';' == current) { - match = "\u2AC1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6895: - if ('E' == current) { - state = 6896; - return true; - } - else if ('e' == current) { - state = 6897; - return true; - } - break; - case 6896: - // subnE; - if (';' == current) { - match = "\u2ACB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6897: - // subne; - if (';' == current) { - match = "\u228A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6898: - if ('l' == current) { - state = 6899; - return true; - } - break; - case 6899: - if ('u' == current) { - state = 6900; - return true; - } - break; - case 6900: - if ('s' == current) { - state = 6901; - return true; - } - break; - case 6901: - // subplus; - if (';' == current) { - match = "\u2ABF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6902: - if ('a' == current) { - state = 6903; - return true; - } - break; - case 6903: - if ('r' == current) { - state = 6904; - return true; - } - break; - case 6904: - if ('r' == current) { - state = 6905; - return true; - } - break; - case 6905: - // subrarr; - if (';' == current) { - match = "\u2979"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6906: - switch (current) { - case 'e': - state = 6907; - return true; - case 'i': - state = 6916; - return true; - case 'u': - state = 6918; - return true; - } - break; - case 6907: - if ('t' == current) { - state = 6908; - return true; - } - break; - case 6908: - switch (current) { - case ';': // subset; - match = "\u2282"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'e': - state = 6909; - return true; - case 'n': - state = 6912; - return true; - } - break; - case 6909: - if ('q' == current) { - state = 6910; - return true; - } - break; - case 6910: - // subseteq; - if (';' == current) { - match = "\u2286"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('q' == current) { - state = 6911; - return true; - } - break; - case 6911: - // subseteqq; - if (';' == current) { - match = "\u2AC5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6912: - if ('e' == current) { - state = 6913; - return true; - } - break; - case 6913: - if ('q' == current) { - state = 6914; - return true; - } - break; - case 6914: - // subsetneq; - if (';' == current) { - match = "\u228A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('q' == current) { - state = 6915; - return true; - } - break; - case 6915: - // subsetneqq; - if (';' == current) { - match = "\u2ACB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6916: - if ('m' == current) { - state = 6917; - return true; - } - break; - case 6917: - // subsim; - if (';' == current) { - match = "\u2AC7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6918: - if ('b' == current) { - state = 6919; - return true; - } - else if ('p' == current) { - state = 6920; - return true; - } - break; - case 6919: - // subsub; - if (';' == current) { - match = "\u2AD5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6920: - // subsup; - if (';' == current) { - match = "\u2AD3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6921: - if ('c' == current) { - state = 6922; - return true; - } - break; - case 6922: - switch (current) { - case ';': // succ; - match = "\u227B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'a': - state = 6923; - return true; - case 'c': - state = 6929; - return true; - case 'e': - state = 6936; - return true; - case 'n': - state = 6938; - return true; - case 's': - state = 6951; - return true; - } - break; - case 6923: - if ('p' == current) { - state = 6924; - return true; - } - break; - case 6924: - if ('p' == current) { - state = 6925; - return true; - } - break; - case 6925: - if ('r' == current) { - state = 6926; - return true; - } - break; - case 6926: - if ('o' == current) { - state = 6927; - return true; - } - break; - case 6927: - if ('x' == current) { - state = 6928; - return true; - } - break; - case 6928: - // succapprox; - if (';' == current) { - match = "\u2AB8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6929: - if ('u' == current) { - state = 6930; - return true; - } - break; - case 6930: - if ('r' == current) { - state = 6931; - return true; - } - break; - case 6931: - if ('l' == current) { - state = 6932; - return true; - } - break; - case 6932: - if ('y' == current) { - state = 6933; - return true; - } - break; - case 6933: - if ('e' == current) { - state = 6934; - return true; - } - break; - case 6934: - if ('q' == current) { - state = 6935; - return true; - } - break; - case 6935: - // succcurlyeq; - if (';' == current) { - match = "\u227D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6936: - if ('q' == current) { - state = 6937; - return true; - } - break; - case 6937: - // succeq; - if (';' == current) { - match = "\u2AB0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6938: - switch (current) { - case 'a': - state = 6939; - return true; - case 'e': - state = 6945; - return true; - case 's': - state = 6948; - return true; - } - break; - case 6939: - if ('p' == current) { - state = 6940; - return true; - } - break; - case 6940: - if ('p' == current) { - state = 6941; - return true; - } - break; - case 6941: - if ('r' == current) { - state = 6942; - return true; - } - break; - case 6942: - if ('o' == current) { - state = 6943; - return true; - } - break; - case 6943: - if ('x' == current) { - state = 6944; - return true; - } - break; - case 6944: - // succnapprox; - if (';' == current) { - match = "\u2ABA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6945: - if ('q' == current) { - state = 6946; - return true; - } - break; - case 6946: - if ('q' == current) { - state = 6947; - return true; - } - break; - case 6947: - // succneqq; - if (';' == current) { - match = "\u2AB6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6948: - if ('i' == current) { - state = 6949; - return true; - } - break; - case 6949: - if ('m' == current) { - state = 6950; - return true; - } - break; - case 6950: - // succnsim; - if (';' == current) { - match = "\u22E9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6951: - if ('i' == current) { - state = 6952; - return true; - } - break; - case 6952: - if ('m' == current) { - state = 6953; - return true; - } - break; - case 6953: - // succsim; - if (';' == current) { - match = "\u227F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6954: - // sum; - if (';' == current) { - match = "\u2211"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6955: - if ('g' == current) { - state = 6956; - return true; - } - break; - case 6956: - // sung; - if (';' == current) { - match = "\u266A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6957: - switch (current) { - case '1': // sup1 - match = "\u00B9"; - matchLength = consumedCount; - state = 6958; - return true; - case '2': // sup2 - match = "\u00B2"; - matchLength = consumedCount; - state = 6959; - return true; - case '3': // sup3 - match = "\u00B3"; - matchLength = consumedCount; - state = 6960; - return true; - case ';': // sup; - match = "\u2283"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'E': - state = 6961; - return true; - case 'd': - state = 6962; - return true; - case 'e': - state = 6968; - return true; - case 'h': - state = 6972; - return true; - case 'l': - state = 6978; - return true; - case 'm': - state = 6982; - return true; - case 'n': - state = 6986; - return true; - case 'p': - state = 6989; - return true; - case 's': - state = 6993; - return true; - } - break; - case 6958: - // sup1; - if (';' == current) { - match = "\u00B9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6959: - // sup2; - if (';' == current) { - match = "\u00B2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6960: - // sup3; - if (';' == current) { - match = "\u00B3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6961: - // supE; - if (';' == current) { - match = "\u2AC6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6962: - if ('o' == current) { - state = 6963; - return true; - } - else if ('s' == current) { - state = 6965; - return true; - } - break; - case 6963: - if ('t' == current) { - state = 6964; - return true; - } - break; - case 6964: - // supdot; - if (';' == current) { - match = "\u2ABE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6965: - if ('u' == current) { - state = 6966; - return true; - } - break; - case 6966: - if ('b' == current) { - state = 6967; - return true; - } - break; - case 6967: - // supdsub; - if (';' == current) { - match = "\u2AD8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6968: - // supe; - if (';' == current) { - match = "\u2287"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('d' == current) { - state = 6969; - return true; - } - break; - case 6969: - if ('o' == current) { - state = 6970; - return true; - } - break; - case 6970: - if ('t' == current) { - state = 6971; - return true; - } - break; - case 6971: - // supedot; - if (';' == current) { - match = "\u2AC4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6972: - if ('s' == current) { - state = 6973; - return true; - } - break; - case 6973: - if ('o' == current) { - state = 6974; - return true; - } - else if ('u' == current) { - state = 6976; - return true; - } - break; - case 6974: - if ('l' == current) { - state = 6975; - return true; - } - break; - case 6975: - // suphsol; - if (';' == current) { - match = "\u27C9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6976: - if ('b' == current) { - state = 6977; - return true; - } - break; - case 6977: - // suphsub; - if (';' == current) { - match = "\u2AD7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6978: - if ('a' == current) { - state = 6979; - return true; - } - break; - case 6979: - if ('r' == current) { - state = 6980; - return true; - } - break; - case 6980: - if ('r' == current) { - state = 6981; - return true; - } - break; - case 6981: - // suplarr; - if (';' == current) { - match = "\u297B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6982: - if ('u' == current) { - state = 6983; - return true; - } - break; - case 6983: - if ('l' == current) { - state = 6984; - return true; - } - break; - case 6984: - if ('t' == current) { - state = 6985; - return true; - } - break; - case 6985: - // supmult; - if (';' == current) { - match = "\u2AC2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6986: - if ('E' == current) { - state = 6987; - return true; - } - else if ('e' == current) { - state = 6988; - return true; - } - break; - case 6987: - // supnE; - if (';' == current) { - match = "\u2ACC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6988: - // supne; - if (';' == current) { - match = "\u228B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6989: - if ('l' == current) { - state = 6990; - return true; - } - break; - case 6990: - if ('u' == current) { - state = 6991; - return true; - } - break; - case 6991: - if ('s' == current) { - state = 6992; - return true; - } - break; - case 6992: - // supplus; - if (';' == current) { - match = "\u2AC0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6993: - switch (current) { - case 'e': - state = 6994; - return true; - case 'i': - state = 7003; - return true; - case 'u': - state = 7005; - return true; - } - break; - case 6994: - if ('t' == current) { - state = 6995; - return true; - } - break; - case 6995: - switch (current) { - case ';': // supset; - match = "\u2283"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'e': - state = 6996; - return true; - case 'n': - state = 6999; - return true; - } - break; - case 6996: - if ('q' == current) { - state = 6997; - return true; - } - break; - case 6997: - // supseteq; - if (';' == current) { - match = "\u2287"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('q' == current) { - state = 6998; - return true; - } - break; - case 6998: - // supseteqq; - if (';' == current) { - match = "\u2AC6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 6999: - if ('e' == current) { - state = 7000; - return true; - } - break; - } - return false; - } - - private boolean parse8(final int current) { - consumedCount++; - switch (state) { - case 7000: - if ('q' == current) { - state = 7001; - return true; - } - break; - case 7001: - // supsetneq; - if (';' == current) { - match = "\u228B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('q' == current) { - state = 7002; - return true; - } - break; - case 7002: - // supsetneqq; - if (';' == current) { - match = "\u2ACC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7003: - if ('m' == current) { - state = 7004; - return true; - } - break; - case 7004: - // supsim; - if (';' == current) { - match = "\u2AC8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7005: - if ('b' == current) { - state = 7006; - return true; - } - else if ('p' == current) { - state = 7007; - return true; - } - break; - case 7006: - // supsub; - if (';' == current) { - match = "\u2AD4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7007: - // supsup; - if (';' == current) { - match = "\u2AD6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7008: - switch (current) { - case 'A': - state = 7009; - return true; - case 'a': - state = 7012; - return true; - case 'n': - state = 7019; - return true; - } - break; - case 7009: - if ('r' == current) { - state = 7010; - return true; - } - break; - case 7010: - if ('r' == current) { - state = 7011; - return true; - } - break; - case 7011: - // swArr; - if (';' == current) { - match = "\u21D9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7012: - if ('r' == current) { - state = 7013; - return true; - } - break; - case 7013: - if ('h' == current) { - state = 7014; - return true; - } - else if ('r' == current) { - state = 7016; - return true; - } - break; - case 7014: - if ('k' == current) { - state = 7015; - return true; - } - break; - case 7015: - // swarhk; - if (';' == current) { - match = "\u2926"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7016: - // swarr; - if (';' == current) { - match = "\u2199"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('o' == current) { - state = 7017; - return true; - } - break; - case 7017: - if ('w' == current) { - state = 7018; - return true; - } - break; - case 7018: - // swarrow; - if (';' == current) { - match = "\u2199"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7019: - if ('w' == current) { - state = 7020; - return true; - } - break; - case 7020: - if ('a' == current) { - state = 7021; - return true; - } - break; - case 7021: - if ('r' == current) { - state = 7022; - return true; - } - break; - case 7022: - // swnwar; - if (';' == current) { - match = "\u292A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7023: - if ('l' == current) { - state = 7024; - return true; - } - break; - case 7024: - if ('i' == current) { - state = 7025; - return true; - } - break; - case 7025: - // szlig - if ('g' == current) { - match = "\u00DF"; - matchLength = consumedCount; - state = 7026; - return true; - } - break; - case 7026: - // szlig; - if (';' == current) { - match = "\u00DF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7027: - switch (current) { - case 'a': - state = 7028; - return true; - case 'b': - state = 7034; - return true; - case 'c': - state = 7037; - return true; - case 'd': - state = 7047; - return true; - case 'e': - state = 7050; - return true; - case 'f': - state = 7055; - return true; - case 'h': - state = 7057; - return true; - case 'i': - state = 7096; - return true; - case 'o': - state = 7109; - return true; - case 'p': - state = 7125; - return true; - case 'r': - state = 7130; - return true; - case 's': - state = 7183; - return true; - case 'w': - state = 7194; - return true; - } - break; - case 7028: - if ('r' == current) { - state = 7029; - return true; - } - else if ('u' == current) { - state = 7033; - return true; - } - break; - case 7029: - if ('g' == current) { - state = 7030; - return true; - } - break; - case 7030: - if ('e' == current) { - state = 7031; - return true; - } - break; - case 7031: - if ('t' == current) { - state = 7032; - return true; - } - break; - case 7032: - // target; - if (';' == current) { - match = "\u2316"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7033: - // tau; - if (';' == current) { - match = "\u03C4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7034: - if ('r' == current) { - state = 7035; - return true; - } - break; - case 7035: - if ('k' == current) { - state = 7036; - return true; - } - break; - case 7036: - // tbrk; - if (';' == current) { - match = "\u23B4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7037: - switch (current) { - case 'a': - state = 7038; - return true; - case 'e': - state = 7042; - return true; - case 'y': - state = 7046; - return true; - } - break; - case 7038: - if ('r' == current) { - state = 7039; - return true; - } - break; - case 7039: - if ('o' == current) { - state = 7040; - return true; - } - break; - case 7040: - if ('n' == current) { - state = 7041; - return true; - } - break; - case 7041: - // tcaron; - if (';' == current) { - match = "\u0165"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7042: - if ('d' == current) { - state = 7043; - return true; - } - break; - case 7043: - if ('i' == current) { - state = 7044; - return true; - } - break; - case 7044: - if ('l' == current) { - state = 7045; - return true; - } - break; - case 7045: - // tcedil; - if (';' == current) { - match = "\u0163"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7046: - // tcy; - if (';' == current) { - match = "\u0442"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7047: - if ('o' == current) { - state = 7048; - return true; - } - break; - case 7048: - if ('t' == current) { - state = 7049; - return true; - } - break; - case 7049: - // tdot; - if (';' == current) { - match = "\u20DB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7050: - if ('l' == current) { - state = 7051; - return true; - } - break; - case 7051: - if ('r' == current) { - state = 7052; - return true; - } - break; - case 7052: - if ('e' == current) { - state = 7053; - return true; - } - break; - case 7053: - if ('c' == current) { - state = 7054; - return true; - } - break; - case 7054: - // telrec; - if (';' == current) { - match = "\u2315"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7055: - if ('r' == current) { - state = 7056; - return true; - } - break; - case 7056: - // tfr; - if (';' == current) { - match = "\uD835\uDD31"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7057: - switch (current) { - case 'e': - state = 7058; - return true; - case 'i': - state = 7072; - return true; - case 'k': - state = 7087; - return true; - case 'o': - state = 7093; - return true; - } - break; - case 7058: - if ('r' == current) { - state = 7059; - return true; - } - else if ('t' == current) { - state = 7066; - return true; - } - break; - case 7059: - if ('e' == current) { - state = 7060; - return true; - } - break; - case 7060: - if ('4' == current) { - state = 7061; - return true; - } - else if ('f' == current) { - state = 7062; - return true; - } - break; - case 7061: - // there4; - if (';' == current) { - match = "\u2234"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7062: - if ('o' == current) { - state = 7063; - return true; - } - break; - case 7063: - if ('r' == current) { - state = 7064; - return true; - } - break; - case 7064: - if ('e' == current) { - state = 7065; - return true; - } - break; - case 7065: - // therefore; - if (';' == current) { - match = "\u2234"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7066: - if ('a' == current) { - state = 7067; - return true; - } - break; - case 7067: - switch (current) { - case ';': // theta; - match = "\u03B8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 's': - state = 7068; - return true; - case 'v': - state = 7071; - return true; - } - break; - case 7068: - if ('y' == current) { - state = 7069; - return true; - } - break; - case 7069: - if ('m' == current) { - state = 7070; - return true; - } - break; - case 7070: - // thetasym; - if (';' == current) { - match = "\u03D1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7071: - // thetav; - if (';' == current) { - match = "\u03D1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7072: - if ('c' == current) { - state = 7073; - return true; - } - else if ('n' == current) { - state = 7084; - return true; - } - break; - case 7073: - if ('k' == current) { - state = 7074; - return true; - } - break; - case 7074: - if ('a' == current) { - state = 7075; - return true; - } - else if ('s' == current) { - state = 7081; - return true; - } - break; - case 7075: - if ('p' == current) { - state = 7076; - return true; - } - break; - case 7076: - if ('p' == current) { - state = 7077; - return true; - } - break; - case 7077: - if ('r' == current) { - state = 7078; - return true; - } - break; - case 7078: - if ('o' == current) { - state = 7079; - return true; - } - break; - case 7079: - if ('x' == current) { - state = 7080; - return true; - } - break; - case 7080: - // thickapprox; - if (';' == current) { - match = "\u2248"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7081: - if ('i' == current) { - state = 7082; - return true; - } - break; - case 7082: - if ('m' == current) { - state = 7083; - return true; - } - break; - case 7083: - // thicksim; - if (';' == current) { - match = "\u223C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7084: - if ('s' == current) { - state = 7085; - return true; - } - break; - case 7085: - if ('p' == current) { - state = 7086; - return true; - } - break; - case 7086: - // thinsp; - if (';' == current) { - match = "\u2009"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7087: - if ('a' == current) { - state = 7088; - return true; - } - else if ('s' == current) { - state = 7090; - return true; - } - break; - case 7088: - if ('p' == current) { - state = 7089; - return true; - } - break; - case 7089: - // thkap; - if (';' == current) { - match = "\u2248"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7090: - if ('i' == current) { - state = 7091; - return true; - } - break; - case 7091: - if ('m' == current) { - state = 7092; - return true; - } - break; - case 7092: - // thksim; - if (';' == current) { - match = "\u223C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7093: - if ('r' == current) { - state = 7094; - return true; - } - break; - case 7094: - // thorn - if ('n' == current) { - match = "\u00FE"; - matchLength = consumedCount; - state = 7095; - return true; - } - break; - case 7095: - // thorn; - if (';' == current) { - match = "\u00FE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7096: - switch (current) { - case 'l': - state = 7097; - return true; - case 'm': - state = 7100; - return true; - case 'n': - state = 7107; - return true; - } - break; - case 7097: - if ('d' == current) { - state = 7098; - return true; - } - break; - case 7098: - if ('e' == current) { - state = 7099; - return true; - } - break; - case 7099: - // tilde; - if (';' == current) { - match = "\u02DC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7100: - if ('e' == current) { - state = 7101; - return true; - } - break; - case 7101: - // times - if ('s' == current) { - match = "\u00D7"; - matchLength = consumedCount; - state = 7102; - return true; - } - break; - case 7102: - switch (current) { - case ';': // times; - match = "\u00D7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'b': - state = 7103; - return true; - case 'd': - state = 7106; - return true; - } - break; - case 7103: - // timesb; - if (';' == current) { - match = "\u22A0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('a' == current) { - state = 7104; - return true; - } - break; - case 7104: - if ('r' == current) { - state = 7105; - return true; - } - break; - case 7105: - // timesbar; - if (';' == current) { - match = "\u2A31"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7106: - // timesd; - if (';' == current) { - match = "\u2A30"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7107: - if ('t' == current) { - state = 7108; - return true; - } - break; - case 7108: - // tint; - if (';' == current) { - match = "\u222D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7109: - switch (current) { - case 'e': - state = 7110; - return true; - case 'p': - state = 7112; - return true; - case 's': - state = 7123; - return true; - } - break; - case 7110: - if ('a' == current) { - state = 7111; - return true; - } - break; - case 7111: - // toea; - if (';' == current) { - match = "\u2928"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7112: - switch (current) { - case ';': // top; - match = "\u22A4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'b': - state = 7113; - return true; - case 'c': - state = 7116; - return true; - case 'f': - state = 7119; - return true; - } - break; - case 7113: - if ('o' == current) { - state = 7114; - return true; - } - break; - case 7114: - if ('t' == current) { - state = 7115; - return true; - } - break; - case 7115: - // topbot; - if (';' == current) { - match = "\u2336"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7116: - if ('i' == current) { - state = 7117; - return true; - } - break; - case 7117: - if ('r' == current) { - state = 7118; - return true; - } - break; - case 7118: - // topcir; - if (';' == current) { - match = "\u2AF1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7119: - // topf; - if (';' == current) { - match = "\uD835\uDD65"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('o' == current) { - state = 7120; - return true; - } - break; - case 7120: - if ('r' == current) { - state = 7121; - return true; - } - break; - case 7121: - if ('k' == current) { - state = 7122; - return true; - } - break; - case 7122: - // topfork; - if (';' == current) { - match = "\u2ADA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7123: - if ('a' == current) { - state = 7124; - return true; - } - break; - case 7124: - // tosa; - if (';' == current) { - match = "\u2929"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7125: - if ('r' == current) { - state = 7126; - return true; - } - break; - case 7126: - if ('i' == current) { - state = 7127; - return true; - } - break; - case 7127: - if ('m' == current) { - state = 7128; - return true; - } - break; - case 7128: - if ('e' == current) { - state = 7129; - return true; - } - break; - case 7129: - // tprime; - if (';' == current) { - match = "\u2034"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7130: - switch (current) { - case 'a': - state = 7131; - return true; - case 'i': - state = 7134; - return true; - case 'p': - state = 7177; - return true; - } - break; - case 7131: - if ('d' == current) { - state = 7132; - return true; - } - break; - case 7132: - if ('e' == current) { - state = 7133; - return true; - } - break; - case 7133: - // trade; - if (';' == current) { - match = "\u2122"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7134: - switch (current) { - case 'a': - state = 7135; - return true; - case 'd': - state = 7158; - return true; - case 'e': - state = 7161; - return true; - case 'm': - state = 7162; - return true; - case 'p': - state = 7167; - return true; - case 's': - state = 7171; - return true; - case 't': - state = 7173; - return true; - } - break; - case 7135: - if ('n' == current) { - state = 7136; - return true; - } - break; - case 7136: - if ('g' == current) { - state = 7137; - return true; - } - break; - case 7137: - if ('l' == current) { - state = 7138; - return true; - } - break; - case 7138: - if ('e' == current) { - state = 7139; - return true; - } - break; - case 7139: - switch (current) { - case ';': // triangle; - match = "\u25B5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'd': - state = 7140; - return true; - case 'l': - state = 7144; - return true; - case 'q': - state = 7150; - return true; - case 'r': - state = 7151; - return true; - } - break; - case 7140: - if ('o' == current) { - state = 7141; - return true; - } - break; - case 7141: - if ('w' == current) { - state = 7142; - return true; - } - break; - case 7142: - if ('n' == current) { - state = 7143; - return true; - } - break; - case 7143: - // triangledown; - if (';' == current) { - match = "\u25BF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7144: - if ('e' == current) { - state = 7145; - return true; - } - break; - case 7145: - if ('f' == current) { - state = 7146; - return true; - } - break; - case 7146: - if ('t' == current) { - state = 7147; - return true; - } - break; - case 7147: - // triangleleft; - if (';' == current) { - match = "\u25C3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 7148; - return true; - } - break; - case 7148: - if ('q' == current) { - state = 7149; - return true; - } - break; - case 7149: - // trianglelefteq; - if (';' == current) { - match = "\u22B4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7150: - // triangleq; - if (';' == current) { - match = "\u225C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7151: - if ('i' == current) { - state = 7152; - return true; - } - break; - case 7152: - if ('g' == current) { - state = 7153; - return true; - } - break; - case 7153: - if ('h' == current) { - state = 7154; - return true; - } - break; - case 7154: - if ('t' == current) { - state = 7155; - return true; - } - break; - case 7155: - // triangleright; - if (';' == current) { - match = "\u25B9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 7156; - return true; - } - break; - case 7156: - if ('q' == current) { - state = 7157; - return true; - } - break; - case 7157: - // trianglerighteq; - if (';' == current) { - match = "\u22B5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7158: - if ('o' == current) { - state = 7159; - return true; - } - break; - case 7159: - if ('t' == current) { - state = 7160; - return true; - } - break; - case 7160: - // tridot; - if (';' == current) { - match = "\u25EC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7161: - // trie; - if (';' == current) { - match = "\u225C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7162: - if ('i' == current) { - state = 7163; - return true; - } - break; - case 7163: - if ('n' == current) { - state = 7164; - return true; - } - break; - case 7164: - if ('u' == current) { - state = 7165; - return true; - } - break; - case 7165: - if ('s' == current) { - state = 7166; - return true; - } - break; - case 7166: - // triminus; - if (';' == current) { - match = "\u2A3A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7167: - if ('l' == current) { - state = 7168; - return true; - } - break; - case 7168: - if ('u' == current) { - state = 7169; - return true; - } - break; - case 7169: - if ('s' == current) { - state = 7170; - return true; - } - break; - case 7170: - // triplus; - if (';' == current) { - match = "\u2A39"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7171: - if ('b' == current) { - state = 7172; - return true; - } - break; - case 7172: - // trisb; - if (';' == current) { - match = "\u29CD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7173: - if ('i' == current) { - state = 7174; - return true; - } - break; - case 7174: - if ('m' == current) { - state = 7175; - return true; - } - break; - case 7175: - if ('e' == current) { - state = 7176; - return true; - } - break; - case 7176: - // tritime; - if (';' == current) { - match = "\u2A3B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7177: - if ('e' == current) { - state = 7178; - return true; - } - break; - case 7178: - if ('z' == current) { - state = 7179; - return true; - } - break; - case 7179: - if ('i' == current) { - state = 7180; - return true; - } - break; - case 7180: - if ('u' == current) { - state = 7181; - return true; - } - break; - case 7181: - if ('m' == current) { - state = 7182; - return true; - } - break; - case 7182: - // trpezium; - if (';' == current) { - match = "\u23E2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7183: - switch (current) { - case 'c': - state = 7184; - return true; - case 'h': - state = 7187; - return true; - case 't': - state = 7190; - return true; - } - break; - case 7184: - if ('r' == current) { - state = 7185; - return true; - } - else if ('y' == current) { - state = 7186; - return true; - } - break; - case 7185: - // tscr; - if (';' == current) { - match = "\uD835\uDCC9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7186: - // tscy; - if (';' == current) { - match = "\u0446"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7187: - if ('c' == current) { - state = 7188; - return true; - } - break; - case 7188: - if ('y' == current) { - state = 7189; - return true; - } - break; - case 7189: - // tshcy; - if (';' == current) { - match = "\u045B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7190: - if ('r' == current) { - state = 7191; - return true; - } - break; - case 7191: - if ('o' == current) { - state = 7192; - return true; - } - break; - case 7192: - if ('k' == current) { - state = 7193; - return true; - } - break; - case 7193: - // tstrok; - if (';' == current) { - match = "\u0167"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7194: - if ('i' == current) { - state = 7195; - return true; - } - else if ('o' == current) { - state = 7198; - return true; - } - break; - case 7195: - if ('x' == current) { - state = 7196; - return true; - } - break; - case 7196: - if ('t' == current) { - state = 7197; - return true; - } - break; - case 7197: - // twixt; - if (';' == current) { - match = "\u226C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7198: - if ('h' == current) { - state = 7199; - return true; - } - break; - case 7199: - if ('e' == current) { - state = 7200; - return true; - } - break; - case 7200: - if ('a' == current) { - state = 7201; - return true; - } - break; - case 7201: - if ('d' == current) { - state = 7202; - return true; - } - break; - case 7202: - if ('l' == current) { - state = 7203; - return true; - } - else if ('r' == current) { - state = 7212; - return true; - } - break; - case 7203: - if ('e' == current) { - state = 7204; - return true; - } - break; - case 7204: - if ('f' == current) { - state = 7205; - return true; - } - break; - case 7205: - if ('t' == current) { - state = 7206; - return true; - } - break; - case 7206: - if ('a' == current) { - state = 7207; - return true; - } - break; - case 7207: - if ('r' == current) { - state = 7208; - return true; - } - break; - case 7208: - if ('r' == current) { - state = 7209; - return true; - } - break; - case 7209: - if ('o' == current) { - state = 7210; - return true; - } - break; - case 7210: - if ('w' == current) { - state = 7211; - return true; - } - break; - case 7211: - // twoheadleftarrow; - if (';' == current) { - match = "\u219E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7212: - if ('i' == current) { - state = 7213; - return true; - } - break; - case 7213: - if ('g' == current) { - state = 7214; - return true; - } - break; - case 7214: - if ('h' == current) { - state = 7215; - return true; - } - break; - case 7215: - if ('t' == current) { - state = 7216; - return true; - } - break; - case 7216: - if ('a' == current) { - state = 7217; - return true; - } - break; - case 7217: - if ('r' == current) { - state = 7218; - return true; - } - break; - case 7218: - if ('r' == current) { - state = 7219; - return true; - } - break; - case 7219: - if ('o' == current) { - state = 7220; - return true; - } - break; - case 7220: - if ('w' == current) { - state = 7221; - return true; - } - break; - case 7221: - // twoheadrightarrow; - if (';' == current) { - match = "\u21A0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7222: - switch (current) { - case 'A': - state = 7223; - return true; - case 'H': - state = 7226; - return true; - case 'a': - state = 7229; - return true; - case 'b': - state = 7236; - return true; - case 'c': - state = 7243; - return true; - case 'd': - state = 7248; - return true; - case 'f': - state = 7259; - return true; - case 'g': - state = 7265; - return true; - case 'h': - state = 7270; - return true; - case 'l': - state = 7278; - return true; - case 'm': - state = 7291; - return true; - case 'o': - state = 7296; - return true; - case 'p': - state = 7302; - return true; - case 'r': - state = 7350; - return true; - case 's': - state = 7366; - return true; - case 't': - state = 7369; - return true; - case 'u': - state = 7380; - return true; - case 'w': - state = 7386; - return true; - } - break; - case 7223: - if ('r' == current) { - state = 7224; - return true; - } - break; - case 7224: - if ('r' == current) { - state = 7225; - return true; - } - break; - case 7225: - // uArr; - if (';' == current) { - match = "\u21D1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7226: - if ('a' == current) { - state = 7227; - return true; - } - break; - case 7227: - if ('r' == current) { - state = 7228; - return true; - } - break; - case 7228: - // uHar; - if (';' == current) { - match = "\u2963"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7229: - if ('c' == current) { - state = 7230; - return true; - } - else if ('r' == current) { - state = 7234; - return true; - } - break; - case 7230: - if ('u' == current) { - state = 7231; - return true; - } - break; - case 7231: - if ('t' == current) { - state = 7232; - return true; - } - break; - case 7232: - // uacute - if ('e' == current) { - match = "\u00FA"; - matchLength = consumedCount; - state = 7233; - return true; - } - break; - case 7233: - // uacute; - if (';' == current) { - match = "\u00FA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7234: - if ('r' == current) { - state = 7235; - return true; - } - break; - case 7235: - // uarr; - if (';' == current) { - match = "\u2191"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7236: - if ('r' == current) { - state = 7237; - return true; - } - break; - case 7237: - if ('c' == current) { - state = 7238; - return true; - } - else if ('e' == current) { - state = 7240; - return true; - } - break; - case 7238: - if ('y' == current) { - state = 7239; - return true; - } - break; - case 7239: - // ubrcy; - if (';' == current) { - match = "\u045E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7240: - if ('v' == current) { - state = 7241; - return true; - } - break; - case 7241: - if ('e' == current) { - state = 7242; - return true; - } - break; - case 7242: - // ubreve; - if (';' == current) { - match = "\u016D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7243: - if ('i' == current) { - state = 7244; - return true; - } - else if ('y' == current) { - state = 7247; - return true; - } - break; - case 7244: - if ('r' == current) { - state = 7245; - return true; - } - break; - case 7245: - // ucirc - if ('c' == current) { - match = "\u00FB"; - matchLength = consumedCount; - state = 7246; - return true; - } - break; - case 7246: - // ucirc; - if (';' == current) { - match = "\u00FB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7247: - // ucy; - if (';' == current) { - match = "\u0443"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7248: - switch (current) { - case 'a': - state = 7249; - return true; - case 'b': - state = 7252; - return true; - case 'h': - state = 7256; - return true; - } - break; - case 7249: - if ('r' == current) { - state = 7250; - return true; - } - break; - case 7250: - if ('r' == current) { - state = 7251; - return true; - } - break; - case 7251: - // udarr; - if (';' == current) { - match = "\u21C5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7252: - if ('l' == current) { - state = 7253; - return true; - } - break; - case 7253: - if ('a' == current) { - state = 7254; - return true; - } - break; - case 7254: - if ('c' == current) { - state = 7255; - return true; - } - break; - case 7255: - // udblac; - if (';' == current) { - match = "\u0171"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7256: - if ('a' == current) { - state = 7257; - return true; - } - break; - case 7257: - if ('r' == current) { - state = 7258; - return true; - } - break; - case 7258: - // udhar; - if (';' == current) { - match = "\u296E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7259: - if ('i' == current) { - state = 7260; - return true; - } - else if ('r' == current) { - state = 7264; - return true; - } - break; - case 7260: - if ('s' == current) { - state = 7261; - return true; - } - break; - case 7261: - if ('h' == current) { - state = 7262; - return true; - } - break; - case 7262: - if ('t' == current) { - state = 7263; - return true; - } - break; - case 7263: - // ufisht; - if (';' == current) { - match = "\u297E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7264: - // ufr; - if (';' == current) { - match = "\uD835\uDD32"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7265: - if ('r' == current) { - state = 7266; - return true; - } - break; - case 7266: - if ('a' == current) { - state = 7267; - return true; - } - break; - case 7267: - if ('v' == current) { - state = 7268; - return true; - } - break; - case 7268: - // ugrave - if ('e' == current) { - match = "\u00F9"; - matchLength = consumedCount; - state = 7269; - return true; - } - break; - case 7269: - // ugrave; - if (';' == current) { - match = "\u00F9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7270: - if ('a' == current) { - state = 7271; - return true; - } - else if ('b' == current) { - state = 7275; - return true; - } - break; - case 7271: - if ('r' == current) { - state = 7272; - return true; - } - break; - case 7272: - if ('l' == current) { - state = 7273; - return true; - } - else if ('r' == current) { - state = 7274; - return true; - } - break; - case 7273: - // uharl; - if (';' == current) { - match = "\u21BF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7274: - // uharr; - if (';' == current) { - match = "\u21BE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7275: - if ('l' == current) { - state = 7276; - return true; - } - break; - case 7276: - if ('k' == current) { - state = 7277; - return true; - } - break; - case 7277: - // uhblk; - if (';' == current) { - match = "\u2580"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7278: - if ('c' == current) { - state = 7279; - return true; - } - else if ('t' == current) { - state = 7288; - return true; - } - break; - case 7279: - if ('o' == current) { - state = 7280; - return true; - } - else if ('r' == current) { - state = 7285; - return true; - } - break; - case 7280: - if ('r' == current) { - state = 7281; - return true; - } - break; - case 7281: - if ('n' == current) { - state = 7282; - return true; - } - break; - case 7282: - // ulcorn; - if (';' == current) { - match = "\u231C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 7283; - return true; - } - break; - case 7283: - if ('r' == current) { - state = 7284; - return true; - } - break; - case 7284: - // ulcorner; - if (';' == current) { - match = "\u231C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7285: - if ('o' == current) { - state = 7286; - return true; - } - break; - case 7286: - if ('p' == current) { - state = 7287; - return true; - } - break; - case 7287: - // ulcrop; - if (';' == current) { - match = "\u230F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7288: - if ('r' == current) { - state = 7289; - return true; - } - break; - case 7289: - if ('i' == current) { - state = 7290; - return true; - } - break; - case 7290: - // ultri; - if (';' == current) { - match = "\u25F8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7291: - if ('a' == current) { - state = 7292; - return true; - } - // uml - else if ('l' == current) { - match = "\u00A8"; - matchLength = consumedCount; - state = 7295; - return true; - } - break; - case 7292: - if ('c' == current) { - state = 7293; - return true; - } - break; - case 7293: - if ('r' == current) { - state = 7294; - return true; - } - break; - case 7294: - // umacr; - if (';' == current) { - match = "\u016B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7295: - // uml; - if (';' == current) { - match = "\u00A8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7296: - if ('g' == current) { - state = 7297; - return true; - } - else if ('p' == current) { - state = 7300; - return true; - } - break; - case 7297: - if ('o' == current) { - state = 7298; - return true; - } - break; - case 7298: - if ('n' == current) { - state = 7299; - return true; - } - break; - case 7299: - // uogon; - if (';' == current) { - match = "\u0173"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7300: - if ('f' == current) { - state = 7301; - return true; - } - break; - case 7301: - // uopf; - if (';' == current) { - match = "\uD835\uDD66"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7302: - switch (current) { - case 'a': - state = 7303; - return true; - case 'd': - state = 7308; - return true; - case 'h': - state = 7317; - return true; - case 'l': - state = 7333; - return true; - case 's': - state = 7336; - return true; - case 'u': - state = 7342; - return true; - } - break; - case 7303: - if ('r' == current) { - state = 7304; - return true; - } - break; - case 7304: - if ('r' == current) { - state = 7305; - return true; - } - break; - case 7305: - if ('o' == current) { - state = 7306; - return true; - } - break; - case 7306: - if ('w' == current) { - state = 7307; - return true; - } - break; - case 7307: - // uparrow; - if (';' == current) { - match = "\u2191"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7308: - if ('o' == current) { - state = 7309; - return true; - } - break; - case 7309: - if ('w' == current) { - state = 7310; - return true; - } - break; - case 7310: - if ('n' == current) { - state = 7311; - return true; - } - break; - case 7311: - if ('a' == current) { - state = 7312; - return true; - } - break; - case 7312: - if ('r' == current) { - state = 7313; - return true; - } - break; - case 7313: - if ('r' == current) { - state = 7314; - return true; - } - break; - case 7314: - if ('o' == current) { - state = 7315; - return true; - } - break; - case 7315: - if ('w' == current) { - state = 7316; - return true; - } - break; - case 7316: - // updownarrow; - if (';' == current) { - match = "\u2195"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7317: - if ('a' == current) { - state = 7318; - return true; - } - break; - case 7318: - if ('r' == current) { - state = 7319; - return true; - } - break; - case 7319: - if ('p' == current) { - state = 7320; - return true; - } - break; - case 7320: - if ('o' == current) { - state = 7321; - return true; - } - break; - case 7321: - if ('o' == current) { - state = 7322; - return true; - } - break; - case 7322: - if ('n' == current) { - state = 7323; - return true; - } - break; - case 7323: - if ('l' == current) { - state = 7324; - return true; - } - else if ('r' == current) { - state = 7328; - return true; - } - break; - case 7324: - if ('e' == current) { - state = 7325; - return true; - } - break; - case 7325: - if ('f' == current) { - state = 7326; - return true; - } - break; - case 7326: - if ('t' == current) { - state = 7327; - return true; - } - break; - case 7327: - // upharpoonleft; - if (';' == current) { - match = "\u21BF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7328: - if ('i' == current) { - state = 7329; - return true; - } - break; - case 7329: - if ('g' == current) { - state = 7330; - return true; - } - break; - case 7330: - if ('h' == current) { - state = 7331; - return true; - } - break; - case 7331: - if ('t' == current) { - state = 7332; - return true; - } - break; - case 7332: - // upharpoonright; - if (';' == current) { - match = "\u21BE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7333: - if ('u' == current) { - state = 7334; - return true; - } - break; - case 7334: - if ('s' == current) { - state = 7335; - return true; - } - break; - case 7335: - // uplus; - if (';' == current) { - match = "\u228E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7336: - if ('i' == current) { - state = 7337; - return true; - } - break; - case 7337: - switch (current) { - case ';': // upsi; - match = "\u03C5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'h': - state = 7338; - return true; - case 'l': - state = 7339; - return true; - } - break; - case 7338: - // upsih; - if (';' == current) { - match = "\u03D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7339: - if ('o' == current) { - state = 7340; - return true; - } - break; - case 7340: - if ('n' == current) { - state = 7341; - return true; - } - break; - case 7341: - // upsilon; - if (';' == current) { - match = "\u03C5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7342: - if ('p' == current) { - state = 7343; - return true; - } - break; - case 7343: - if ('a' == current) { - state = 7344; - return true; - } - break; - case 7344: - if ('r' == current) { - state = 7345; - return true; - } - break; - case 7345: - if ('r' == current) { - state = 7346; - return true; - } - break; - case 7346: - if ('o' == current) { - state = 7347; - return true; - } - break; - case 7347: - if ('w' == current) { - state = 7348; - return true; - } - break; - case 7348: - if ('s' == current) { - state = 7349; - return true; - } - break; - case 7349: - // upuparrows; - if (';' == current) { - match = "\u21C8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7350: - switch (current) { - case 'c': - state = 7351; - return true; - case 'i': - state = 7360; - return true; - case 't': - state = 7363; - return true; - } - break; - case 7351: - if ('o' == current) { - state = 7352; - return true; - } - else if ('r' == current) { - state = 7357; - return true; - } - break; - case 7352: - if ('r' == current) { - state = 7353; - return true; - } - break; - case 7353: - if ('n' == current) { - state = 7354; - return true; - } - break; - case 7354: - // urcorn; - if (';' == current) { - match = "\u231D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 7355; - return true; - } - break; - case 7355: - if ('r' == current) { - state = 7356; - return true; - } - break; - case 7356: - // urcorner; - if (';' == current) { - match = "\u231D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7357: - if ('o' == current) { - state = 7358; - return true; - } - break; - case 7358: - if ('p' == current) { - state = 7359; - return true; - } - break; - case 7359: - // urcrop; - if (';' == current) { - match = "\u230E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7360: - if ('n' == current) { - state = 7361; - return true; - } - break; - case 7361: - if ('g' == current) { - state = 7362; - return true; - } - break; - case 7362: - // uring; - if (';' == current) { - match = "\u016F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7363: - if ('r' == current) { - state = 7364; - return true; - } - break; - case 7364: - if ('i' == current) { - state = 7365; - return true; - } - break; - case 7365: - // urtri; - if (';' == current) { - match = "\u25F9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7366: - if ('c' == current) { - state = 7367; - return true; - } - break; - case 7367: - if ('r' == current) { - state = 7368; - return true; - } - break; - case 7368: - // uscr; - if (';' == current) { - match = "\uD835\uDCCA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7369: - switch (current) { - case 'd': - state = 7370; - return true; - case 'i': - state = 7373; - return true; - case 'r': - state = 7377; - return true; - } - break; - case 7370: - if ('o' == current) { - state = 7371; - return true; - } - break; - case 7371: - if ('t' == current) { - state = 7372; - return true; - } - break; - case 7372: - // utdot; - if (';' == current) { - match = "\u22F0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7373: - if ('l' == current) { - state = 7374; - return true; - } - break; - case 7374: - if ('d' == current) { - state = 7375; - return true; - } - break; - case 7375: - if ('e' == current) { - state = 7376; - return true; - } - break; - case 7376: - // utilde; - if (';' == current) { - match = "\u0169"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7377: - if ('i' == current) { - state = 7378; - return true; - } - break; - case 7378: - // utri; - if (';' == current) { - match = "\u25B5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('f' == current) { - state = 7379; - return true; - } - break; - case 7379: - // utrif; - if (';' == current) { - match = "\u25B4"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7380: - if ('a' == current) { - state = 7381; - return true; - } - else if ('m' == current) { - state = 7384; - return true; - } - break; - case 7381: - if ('r' == current) { - state = 7382; - return true; - } - break; - case 7382: - if ('r' == current) { - state = 7383; - return true; - } - break; - case 7383: - // uuarr; - if (';' == current) { - match = "\u21C8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7384: - // uuml - if ('l' == current) { - match = "\u00FC"; - matchLength = consumedCount; - state = 7385; - return true; - } - break; - case 7385: - // uuml; - if (';' == current) { - match = "\u00FC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7386: - if ('a' == current) { - state = 7387; - return true; - } - break; - case 7387: - if ('n' == current) { - state = 7388; - return true; - } - break; - case 7388: - if ('g' == current) { - state = 7389; - return true; - } - break; - case 7389: - if ('l' == current) { - state = 7390; - return true; - } - break; - case 7390: - if ('e' == current) { - state = 7391; - return true; - } - break; - case 7391: - // uwangle; - if (';' == current) { - match = "\u29A7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7392: - switch (current) { - case 'A': - state = 7393; - return true; - case 'B': - state = 7396; - return true; - case 'D': - state = 7400; - return true; - case 'a': - state = 7404; - return true; - case 'c': - state = 7484; - return true; - case 'd': - state = 7486; - return true; - case 'e': - state = 7490; - return true; - case 'f': - state = 7506; - return true; - case 'l': - state = 7508; - return true; - case 'n': - state = 7512; - return true; - case 'o': - state = 7517; - return true; - case 'p': - state = 7520; - return true; - case 'r': - state = 7524; - return true; - case 's': - state = 7528; - return true; - case 'z': - state = 7540; - return true; - } - break; - case 7393: - if ('r' == current) { - state = 7394; - return true; - } - break; - case 7394: - if ('r' == current) { - state = 7395; - return true; - } - break; - case 7395: - // vArr; - if (';' == current) { - match = "\u21D5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7396: - if ('a' == current) { - state = 7397; - return true; - } - break; - case 7397: - if ('r' == current) { - state = 7398; - return true; - } - break; - case 7398: - // vBar; - if (';' == current) { - match = "\u2AE8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('v' == current) { - state = 7399; - return true; - } - break; - case 7399: - // vBarv; - if (';' == current) { - match = "\u2AE9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7400: - if ('a' == current) { - state = 7401; - return true; - } - break; - case 7401: - if ('s' == current) { - state = 7402; - return true; - } - break; - case 7402: - if ('h' == current) { - state = 7403; - return true; - } - break; - case 7403: - // vDash; - if (';' == current) { - match = "\u22A8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7404: - if ('n' == current) { - state = 7405; - return true; - } - else if ('r' == current) { - state = 7409; - return true; - } - break; - case 7405: - if ('g' == current) { - state = 7406; - return true; - } - break; - case 7406: - if ('r' == current) { - state = 7407; - return true; - } - break; - case 7407: - if ('t' == current) { - state = 7408; - return true; - } - break; - case 7408: - // vangrt; - if (';' == current) { - match = "\u299C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7409: - switch (current) { - case 'e': - state = 7410; - return true; - case 'k': - state = 7417; - return true; - case 'n': - state = 7422; - return true; - case 'p': - state = 7429; - return true; - case 'r': - state = 7438; - return true; - case 's': - state = 7441; - return true; - case 't': - state = 7463; - return true; - } - break; - case 7410: - if ('p' == current) { - state = 7411; - return true; - } - break; - case 7411: - if ('s' == current) { - state = 7412; - return true; - } - break; - case 7412: - if ('i' == current) { - state = 7413; - return true; - } - break; - case 7413: - if ('l' == current) { - state = 7414; - return true; - } - break; - case 7414: - if ('o' == current) { - state = 7415; - return true; - } - break; - case 7415: - if ('n' == current) { - state = 7416; - return true; - } - break; - case 7416: - // varepsilon; - if (';' == current) { - match = "\u03F5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7417: - if ('a' == current) { - state = 7418; - return true; - } - break; - case 7418: - if ('p' == current) { - state = 7419; - return true; - } - break; - case 7419: - if ('p' == current) { - state = 7420; - return true; - } - break; - case 7420: - if ('a' == current) { - state = 7421; - return true; - } - break; - case 7421: - // varkappa; - if (';' == current) { - match = "\u03F0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7422: - if ('o' == current) { - state = 7423; - return true; - } - break; - case 7423: - if ('t' == current) { - state = 7424; - return true; - } - break; - case 7424: - if ('h' == current) { - state = 7425; - return true; - } - break; - case 7425: - if ('i' == current) { - state = 7426; - return true; - } - break; - case 7426: - if ('n' == current) { - state = 7427; - return true; - } - break; - case 7427: - if ('g' == current) { - state = 7428; - return true; - } - break; - case 7428: - // varnothing; - if (';' == current) { - match = "\u2205"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7429: - switch (current) { - case 'h': - state = 7430; - return true; - case 'i': - state = 7432; - return true; - case 'r': - state = 7433; - return true; - } - break; - case 7430: - if ('i' == current) { - state = 7431; - return true; - } - break; - case 7431: - // varphi; - if (';' == current) { - match = "\u03D5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7432: - // varpi; - if (';' == current) { - match = "\u03D6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7433: - if ('o' == current) { - state = 7434; - return true; - } - break; - case 7434: - if ('p' == current) { - state = 7435; - return true; - } - break; - case 7435: - if ('t' == current) { - state = 7436; - return true; - } - break; - case 7436: - if ('o' == current) { - state = 7437; - return true; - } - break; - case 7437: - // varpropto; - if (';' == current) { - match = "\u221D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7438: - // varr; - if (';' == current) { - match = "\u2195"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('h' == current) { - state = 7439; - return true; - } - break; - case 7439: - if ('o' == current) { - state = 7440; - return true; - } - break; - case 7440: - // varrho; - if (';' == current) { - match = "\u03F1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7441: - if ('i' == current) { - state = 7442; - return true; - } - else if ('u' == current) { - state = 7446; - return true; - } - break; - case 7442: - if ('g' == current) { - state = 7443; - return true; - } - break; - case 7443: - if ('m' == current) { - state = 7444; - return true; - } - break; - case 7444: - if ('a' == current) { - state = 7445; - return true; - } - break; - case 7445: - // varsigma; - if (';' == current) { - match = "\u03C2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7446: - if ('b' == current) { - state = 7447; - return true; - } - else if ('p' == current) { - state = 7455; - return true; - } - break; - case 7447: - if ('s' == current) { - state = 7448; - return true; - } - break; - case 7448: - if ('e' == current) { - state = 7449; - return true; - } - break; - case 7449: - if ('t' == current) { - state = 7450; - return true; - } - break; - case 7450: - if ('n' == current) { - state = 7451; - return true; - } - break; - case 7451: - if ('e' == current) { - state = 7452; - return true; - } - break; - case 7452: - if ('q' == current) { - state = 7453; - return true; - } - break; - case 7453: - // varsubsetneq; - if (';' == current) { - match = "\u228A\uFE00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('q' == current) { - state = 7454; - return true; - } - break; - case 7454: - // varsubsetneqq; - if (';' == current) { - match = "\u2ACB\uFE00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7455: - if ('s' == current) { - state = 7456; - return true; - } - break; - case 7456: - if ('e' == current) { - state = 7457; - return true; - } - break; - case 7457: - if ('t' == current) { - state = 7458; - return true; - } - break; - case 7458: - if ('n' == current) { - state = 7459; - return true; - } - break; - case 7459: - if ('e' == current) { - state = 7460; - return true; - } - break; - case 7460: - if ('q' == current) { - state = 7461; - return true; - } - break; - case 7461: - // varsupsetneq; - if (';' == current) { - match = "\u228B\uFE00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('q' == current) { - state = 7462; - return true; - } - break; - case 7462: - // varsupsetneqq; - if (';' == current) { - match = "\u2ACC\uFE00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7463: - if ('h' == current) { - state = 7464; - return true; - } - else if ('r' == current) { - state = 7468; - return true; - } - break; - case 7464: - if ('e' == current) { - state = 7465; - return true; - } - break; - case 7465: - if ('t' == current) { - state = 7466; - return true; - } - break; - case 7466: - if ('a' == current) { - state = 7467; - return true; - } - break; - case 7467: - // vartheta; - if (';' == current) { - match = "\u03D1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7468: - if ('i' == current) { - state = 7469; - return true; - } - break; - case 7469: - if ('a' == current) { - state = 7470; - return true; - } - break; - case 7470: - if ('n' == current) { - state = 7471; - return true; - } - break; - case 7471: - if ('g' == current) { - state = 7472; - return true; - } - break; - case 7472: - if ('l' == current) { - state = 7473; - return true; - } - break; - case 7473: - if ('e' == current) { - state = 7474; - return true; - } - break; - case 7474: - if ('l' == current) { - state = 7475; - return true; - } - else if ('r' == current) { - state = 7479; - return true; - } - break; - case 7475: - if ('e' == current) { - state = 7476; - return true; - } - break; - case 7476: - if ('f' == current) { - state = 7477; - return true; - } - break; - case 7477: - if ('t' == current) { - state = 7478; - return true; - } - break; - case 7478: - // vartriangleleft; - if (';' == current) { - match = "\u22B2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7479: - if ('i' == current) { - state = 7480; - return true; - } - break; - case 7480: - if ('g' == current) { - state = 7481; - return true; - } - break; - case 7481: - if ('h' == current) { - state = 7482; - return true; - } - break; - case 7482: - if ('t' == current) { - state = 7483; - return true; - } - break; - case 7483: - // vartriangleright; - if (';' == current) { - match = "\u22B3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7484: - if ('y' == current) { - state = 7485; - return true; - } - break; - case 7485: - // vcy; - if (';' == current) { - match = "\u0432"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7486: - if ('a' == current) { - state = 7487; - return true; - } - break; - case 7487: - if ('s' == current) { - state = 7488; - return true; - } - break; - case 7488: - if ('h' == current) { - state = 7489; - return true; - } - break; - case 7489: - // vdash; - if (';' == current) { - match = "\u22A2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7490: - switch (current) { - case 'e': - state = 7491; - return true; - case 'l': - state = 7497; - return true; - case 'r': - state = 7501; - return true; - } - break; - case 7491: - switch (current) { - case ';': // vee; - match = "\u2228"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - case 'b': - state = 7492; - return true; - case 'e': - state = 7495; - return true; - } - break; - case 7492: - if ('a' == current) { - state = 7493; - return true; - } - break; - case 7493: - if ('r' == current) { - state = 7494; - return true; - } - break; - case 7494: - // veebar; - if (';' == current) { - match = "\u22BB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7495: - if ('q' == current) { - state = 7496; - return true; - } - break; - case 7496: - // veeeq; - if (';' == current) { - match = "\u225A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7497: - if ('l' == current) { - state = 7498; - return true; - } - break; - case 7498: - if ('i' == current) { - state = 7499; - return true; - } - break; - case 7499: - if ('p' == current) { - state = 7500; - return true; - } - break; - case 7500: - // vellip; - if (';' == current) { - match = "\u22EE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7501: - if ('b' == current) { - state = 7502; - return true; - } - else if ('t' == current) { - state = 7505; - return true; - } - break; - case 7502: - if ('a' == current) { - state = 7503; - return true; - } - break; - case 7503: - if ('r' == current) { - state = 7504; - return true; - } - break; - case 7504: - // verbar; - if (';' == current) { - match = "|"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7505: - // vert; - if (';' == current) { - match = "|"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7506: - if ('r' == current) { - state = 7507; - return true; - } - break; - case 7507: - // vfr; - if (';' == current) { - match = "\uD835\uDD33"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7508: - if ('t' == current) { - state = 7509; - return true; - } - break; - case 7509: - if ('r' == current) { - state = 7510; - return true; - } - break; - case 7510: - if ('i' == current) { - state = 7511; - return true; - } - break; - case 7511: - // vltri; - if (';' == current) { - match = "\u22B2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7512: - if ('s' == current) { - state = 7513; - return true; - } - break; - case 7513: - if ('u' == current) { - state = 7514; - return true; - } - break; - case 7514: - if ('b' == current) { - state = 7515; - return true; - } - else if ('p' == current) { - state = 7516; - return true; - } - break; - case 7515: - // vnsub; - if (';' == current) { - match = "\u2282\u20D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7516: - // vnsup; - if (';' == current) { - match = "\u2283\u20D2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7517: - if ('p' == current) { - state = 7518; - return true; - } - break; - case 7518: - if ('f' == current) { - state = 7519; - return true; - } - break; - case 7519: - // vopf; - if (';' == current) { - match = "\uD835\uDD67"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7520: - if ('r' == current) { - state = 7521; - return true; - } - break; - case 7521: - if ('o' == current) { - state = 7522; - return true; - } - break; - case 7522: - if ('p' == current) { - state = 7523; - return true; - } - break; - case 7523: - // vprop; - if (';' == current) { - match = "\u221D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7524: - if ('t' == current) { - state = 7525; - return true; - } - break; - case 7525: - if ('r' == current) { - state = 7526; - return true; - } - break; - case 7526: - if ('i' == current) { - state = 7527; - return true; - } - break; - case 7527: - // vrtri; - if (';' == current) { - match = "\u22B3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7528: - if ('c' == current) { - state = 7529; - return true; - } - else if ('u' == current) { - state = 7531; - return true; - } - break; - case 7529: - if ('r' == current) { - state = 7530; - return true; - } - break; - case 7530: - // vscr; - if (';' == current) { - match = "\uD835\uDCCB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7531: - if ('b' == current) { - state = 7532; - return true; - } - else if ('p' == current) { - state = 7536; - return true; - } - break; - case 7532: - if ('n' == current) { - state = 7533; - return true; - } - break; - case 7533: - if ('E' == current) { - state = 7534; - return true; - } - else if ('e' == current) { - state = 7535; - return true; - } - break; - case 7534: - // vsubnE; - if (';' == current) { - match = "\u2ACB\uFE00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7535: - // vsubne; - if (';' == current) { - match = "\u228A\uFE00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7536: - if ('n' == current) { - state = 7537; - return true; - } - break; - case 7537: - if ('E' == current) { - state = 7538; - return true; - } - else if ('e' == current) { - state = 7539; - return true; - } - break; - case 7538: - // vsupnE; - if (';' == current) { - match = "\u2ACC\uFE00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7539: - // vsupne; - if (';' == current) { - match = "\u228B\uFE00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7540: - if ('i' == current) { - state = 7541; - return true; - } - break; - case 7541: - if ('g' == current) { - state = 7542; - return true; - } - break; - case 7542: - if ('z' == current) { - state = 7543; - return true; - } - break; - case 7543: - if ('a' == current) { - state = 7544; - return true; - } - break; - case 7544: - if ('g' == current) { - state = 7545; - return true; - } - break; - case 7545: - // vzigzag; - if (';' == current) { - match = "\u299A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7546: - switch (current) { - case 'c': - state = 7547; - return true; - case 'e': - state = 7551; - return true; - case 'f': - state = 7563; - return true; - case 'o': - state = 7565; - return true; - case 'p': - state = 7568; - return true; - case 'r': - state = 7569; - return true; - case 's': - state = 7574; - return true; - } - break; - case 7547: - if ('i' == current) { - state = 7548; - return true; - } - break; - case 7548: - if ('r' == current) { - state = 7549; - return true; - } - break; - case 7549: - if ('c' == current) { - state = 7550; - return true; - } - break; - case 7550: - // wcirc; - if (';' == current) { - match = "\u0175"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7551: - if ('d' == current) { - state = 7552; - return true; - } - else if ('i' == current) { - state = 7559; - return true; - } - break; - case 7552: - if ('b' == current) { - state = 7553; - return true; - } - else if ('g' == current) { - state = 7556; - return true; - } - break; - case 7553: - if ('a' == current) { - state = 7554; - return true; - } - break; - case 7554: - if ('r' == current) { - state = 7555; - return true; - } - break; - case 7555: - // wedbar; - if (';' == current) { - match = "\u2A5F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7556: - if ('e' == current) { - state = 7557; - return true; - } - break; - case 7557: - // wedge; - if (';' == current) { - match = "\u2227"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('q' == current) { - state = 7558; - return true; - } - break; - case 7558: - // wedgeq; - if (';' == current) { - match = "\u2259"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7559: - if ('e' == current) { - state = 7560; - return true; - } - break; - case 7560: - if ('r' == current) { - state = 7561; - return true; - } - break; - case 7561: - if ('p' == current) { - state = 7562; - return true; - } - break; - case 7562: - // weierp; - if (';' == current) { - match = "\u2118"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7563: - if ('r' == current) { - state = 7564; - return true; - } - break; - case 7564: - // wfr; - if (';' == current) { - match = "\uD835\uDD34"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7565: - if ('p' == current) { - state = 7566; - return true; - } - break; - case 7566: - if ('f' == current) { - state = 7567; - return true; - } - break; - case 7567: - // wopf; - if (';' == current) { - match = "\uD835\uDD68"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7568: - // wp; - if (';' == current) { - match = "\u2118"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7569: - // wr; - if (';' == current) { - match = "\u2240"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - else if ('e' == current) { - state = 7570; - return true; - } - break; - case 7570: - if ('a' == current) { - state = 7571; - return true; - } - break; - case 7571: - if ('t' == current) { - state = 7572; - return true; - } - break; - case 7572: - if ('h' == current) { - state = 7573; - return true; - } - break; - case 7573: - // wreath; - if (';' == current) { - match = "\u2240"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7574: - if ('c' == current) { - state = 7575; - return true; - } - break; - case 7575: - if ('r' == current) { - state = 7576; - return true; - } - break; - case 7576: - // wscr; - if (';' == current) { - match = "\uD835\uDCCC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7577: - switch (current) { - case 'c': - state = 7578; - return true; - case 'd': - state = 7586; - return true; - case 'f': - state = 7590; - return true; - case 'h': - state = 7592; - return true; - case 'i': - state = 7599; - return true; - case 'l': - state = 7600; - return true; - case 'm': - state = 7607; - return true; - case 'n': - state = 7610; - return true; - case 'o': - state = 7613; - return true; - case 'r': - state = 7626; - return true; - case 's': - state = 7633; - return true; - case 'u': - state = 7640; - return true; - case 'v': - state = 7648; - return true; - case 'w': - state = 7651; - return true; - } - break; - case 7578: - switch (current) { - case 'a': - state = 7579; - return true; - case 'i': - state = 7581; - return true; - case 'u': - state = 7584; - return true; - } - break; - case 7579: - if ('p' == current) { - state = 7580; - return true; - } - break; - case 7580: - // xcap; - if (';' == current) { - match = "\u22C2"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7581: - if ('r' == current) { - state = 7582; - return true; - } - break; - case 7582: - if ('c' == current) { - state = 7583; - return true; - } - break; - case 7583: - // xcirc; - if (';' == current) { - match = "\u25EF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7584: - if ('p' == current) { - state = 7585; - return true; - } - break; - case 7585: - // xcup; - if (';' == current) { - match = "\u22C3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7586: - if ('t' == current) { - state = 7587; - return true; - } - break; - case 7587: - if ('r' == current) { - state = 7588; - return true; - } - break; - case 7588: - if ('i' == current) { - state = 7589; - return true; - } - break; - case 7589: - // xdtri; - if (';' == current) { - match = "\u25BD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7590: - if ('r' == current) { - state = 7591; - return true; - } - break; - case 7591: - // xfr; - if (';' == current) { - match = "\uD835\uDD35"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7592: - if ('A' == current) { - state = 7593; - return true; - } - else if ('a' == current) { - state = 7596; - return true; - } - break; - case 7593: - if ('r' == current) { - state = 7594; - return true; - } - break; - case 7594: - if ('r' == current) { - state = 7595; - return true; - } - break; - case 7595: - // xhArr; - if (';' == current) { - match = "\u27FA"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7596: - if ('r' == current) { - state = 7597; - return true; - } - break; - case 7597: - if ('r' == current) { - state = 7598; - return true; - } - break; - case 7598: - // xharr; - if (';' == current) { - match = "\u27F7"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7599: - // xi; - if (';' == current) { - match = "\u03BE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7600: - if ('A' == current) { - state = 7601; - return true; - } - else if ('a' == current) { - state = 7604; - return true; - } - break; - case 7601: - if ('r' == current) { - state = 7602; - return true; - } - break; - case 7602: - if ('r' == current) { - state = 7603; - return true; - } - break; - case 7603: - // xlArr; - if (';' == current) { - match = "\u27F8"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7604: - if ('r' == current) { - state = 7605; - return true; - } - break; - case 7605: - if ('r' == current) { - state = 7606; - return true; - } - break; - case 7606: - // xlarr; - if (';' == current) { - match = "\u27F5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7607: - if ('a' == current) { - state = 7608; - return true; - } - break; - case 7608: - if ('p' == current) { - state = 7609; - return true; - } - break; - case 7609: - // xmap; - if (';' == current) { - match = "\u27FC"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7610: - if ('i' == current) { - state = 7611; - return true; - } - break; - case 7611: - if ('s' == current) { - state = 7612; - return true; - } - break; - case 7612: - // xnis; - if (';' == current) { - match = "\u22FB"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7613: - switch (current) { - case 'd': - state = 7614; - return true; - case 'p': - state = 7617; - return true; - case 't': - state = 7622; - return true; - } - break; - case 7614: - if ('o' == current) { - state = 7615; - return true; - } - break; - case 7615: - if ('t' == current) { - state = 7616; - return true; - } - break; - case 7616: - // xodot; - if (';' == current) { - match = "\u2A00"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7617: - if ('f' == current) { - state = 7618; - return true; - } - else if ('l' == current) { - state = 7619; - return true; - } - break; - case 7618: - // xopf; - if (';' == current) { - match = "\uD835\uDD69"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7619: - if ('u' == current) { - state = 7620; - return true; - } - break; - case 7620: - if ('s' == current) { - state = 7621; - return true; - } - break; - case 7621: - // xoplus; - if (';' == current) { - match = "\u2A01"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7622: - if ('i' == current) { - state = 7623; - return true; - } - break; - case 7623: - if ('m' == current) { - state = 7624; - return true; - } - break; - case 7624: - if ('e' == current) { - state = 7625; - return true; - } - break; - case 7625: - // xotime; - if (';' == current) { - match = "\u2A02"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7626: - if ('A' == current) { - state = 7627; - return true; - } - else if ('a' == current) { - state = 7630; - return true; - } - break; - case 7627: - if ('r' == current) { - state = 7628; - return true; - } - break; - case 7628: - if ('r' == current) { - state = 7629; - return true; - } - break; - case 7629: - // xrArr; - if (';' == current) { - match = "\u27F9"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7630: - if ('r' == current) { - state = 7631; - return true; - } - break; - case 7631: - if ('r' == current) { - state = 7632; - return true; - } - break; - case 7632: - // xrarr; - if (';' == current) { - match = "\u27F6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7633: - if ('c' == current) { - state = 7634; - return true; - } - else if ('q' == current) { - state = 7636; - return true; - } - break; - case 7634: - if ('r' == current) { - state = 7635; - return true; - } - break; - case 7635: - // xscr; - if (';' == current) { - match = "\uD835\uDCCD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7636: - if ('c' == current) { - state = 7637; - return true; - } - break; - case 7637: - if ('u' == current) { - state = 7638; - return true; - } - break; - case 7638: - if ('p' == current) { - state = 7639; - return true; - } - break; - case 7639: - // xsqcup; - if (';' == current) { - match = "\u2A06"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7640: - if ('p' == current) { - state = 7641; - return true; - } - else if ('t' == current) { - state = 7645; - return true; - } - break; - case 7641: - if ('l' == current) { - state = 7642; - return true; - } - break; - case 7642: - if ('u' == current) { - state = 7643; - return true; - } - break; - case 7643: - if ('s' == current) { - state = 7644; - return true; - } - break; - case 7644: - // xuplus; - if (';' == current) { - match = "\u2A04"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7645: - if ('r' == current) { - state = 7646; - return true; - } - break; - case 7646: - if ('i' == current) { - state = 7647; - return true; - } - break; - case 7647: - // xutri; - if (';' == current) { - match = "\u25B3"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7648: - if ('e' == current) { - state = 7649; - return true; - } - break; - case 7649: - if ('e' == current) { - state = 7650; - return true; - } - break; - case 7650: - // xvee; - if (';' == current) { - match = "\u22C1"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7651: - if ('e' == current) { - state = 7652; - return true; - } - break; - case 7652: - if ('d' == current) { - state = 7653; - return true; - } - break; - case 7653: - if ('g' == current) { - state = 7654; - return true; - } - break; - case 7654: - if ('e' == current) { - state = 7655; - return true; - } - break; - case 7655: - // xwedge; - if (';' == current) { - match = "\u22C0"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7656: - switch (current) { - case 'a': - state = 7657; - return true; - case 'c': - state = 7663; - return true; - case 'e': - state = 7668; - return true; - case 'f': - state = 7670; - return true; - case 'i': - state = 7672; - return true; - case 'o': - state = 7675; - return true; - case 's': - state = 7678; - return true; - case 'u': - state = 7681; - return true; - } - break; - case 7657: - if ('c' == current) { - state = 7658; - return true; - } - break; - case 7658: - if ('u' == current) { - state = 7659; - return true; - } - else if ('y' == current) { - state = 7662; - return true; - } - break; - case 7659: - if ('t' == current) { - state = 7660; - return true; - } - break; - case 7660: - // yacute - if ('e' == current) { - match = "\u00FD"; - matchLength = consumedCount; - state = 7661; - return true; - } - break; - case 7661: - // yacute; - if (';' == current) { - match = "\u00FD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7662: - // yacy; - if (';' == current) { - match = "\u044F"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7663: - if ('i' == current) { - state = 7664; - return true; - } - else if ('y' == current) { - state = 7667; - return true; - } - break; - case 7664: - if ('r' == current) { - state = 7665; - return true; - } - break; - case 7665: - if ('c' == current) { - state = 7666; - return true; - } - break; - case 7666: - // ycirc; - if (';' == current) { - match = "\u0177"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7667: - // ycy; - if (';' == current) { - match = "\u044B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7668: - // yen - if ('n' == current) { - match = "\u00A5"; - matchLength = consumedCount; - state = 7669; - return true; - } - break; - case 7669: - // yen; - if (';' == current) { - match = "\u00A5"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7670: - if ('r' == current) { - state = 7671; - return true; - } - break; - case 7671: - // yfr; - if (';' == current) { - match = "\uD835\uDD36"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7672: - if ('c' == current) { - state = 7673; - return true; - } - break; - case 7673: - if ('y' == current) { - state = 7674; - return true; - } - break; - case 7674: - // yicy; - if (';' == current) { - match = "\u0457"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7675: - if ('p' == current) { - state = 7676; - return true; - } - break; - case 7676: - if ('f' == current) { - state = 7677; - return true; - } - break; - case 7677: - // yopf; - if (';' == current) { - match = "\uD835\uDD6A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7678: - if ('c' == current) { - state = 7679; - return true; - } - break; - case 7679: - if ('r' == current) { - state = 7680; - return true; - } - break; - case 7680: - // yscr; - if (';' == current) { - match = "\uD835\uDCCE"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7681: - if ('c' == current) { - state = 7682; - return true; - } - else if ('m' == current) { - state = 7684; - return true; - } - break; - case 7682: - if ('y' == current) { - state = 7683; - return true; - } - break; - case 7683: - // yucy; - if (';' == current) { - match = "\u044E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7684: - // yuml - if ('l' == current) { - match = "\u00FF"; - matchLength = consumedCount; - state = 7685; - return true; - } - break; - case 7685: - // yuml; - if (';' == current) { - match = "\u00FF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7686: - switch (current) { - case 'a': - state = 7687; - return true; - case 'c': - state = 7692; - return true; - case 'd': - state = 7698; - return true; - case 'e': - state = 7701; - return true; - case 'f': - state = 7708; - return true; - case 'h': - state = 7710; - return true; - case 'i': - state = 7713; - return true; - case 'o': - state = 7719; - return true; - case 's': - state = 7722; - return true; - case 'w': - state = 7725; - return true; - } - break; - case 7687: - if ('c' == current) { - state = 7688; - return true; - } - break; - case 7688: - if ('u' == current) { - state = 7689; - return true; - } - break; - case 7689: - if ('t' == current) { - state = 7690; - return true; - } - break; - case 7690: - if ('e' == current) { - state = 7691; - return true; - } - break; - case 7691: - // zacute; - if (';' == current) { - match = "\u017A"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7692: - if ('a' == current) { - state = 7693; - return true; - } - else if ('y' == current) { - state = 7697; - return true; - } - break; - case 7693: - if ('r' == current) { - state = 7694; - return true; - } - break; - case 7694: - if ('o' == current) { - state = 7695; - return true; - } - break; - case 7695: - if ('n' == current) { - state = 7696; - return true; - } - break; - case 7696: - // zcaron; - if (';' == current) { - match = "\u017E"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7697: - // zcy; - if (';' == current) { - match = "\u0437"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7698: - if ('o' == current) { - state = 7699; - return true; - } - break; - case 7699: - if ('t' == current) { - state = 7700; - return true; - } - break; - case 7700: - // zdot; - if (';' == current) { - match = "\u017C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7701: - if ('e' == current) { - state = 7702; - return true; - } - else if ('t' == current) { - state = 7706; - return true; - } - break; - case 7702: - if ('t' == current) { - state = 7703; - return true; - } - break; - case 7703: - if ('r' == current) { - state = 7704; - return true; - } - break; - case 7704: - if ('f' == current) { - state = 7705; - return true; - } - break; - case 7705: - // zeetrf; - if (';' == current) { - match = "\u2128"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7706: - if ('a' == current) { - state = 7707; - return true; - } - break; - case 7707: - // zeta; - if (';' == current) { - match = "\u03B6"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7708: - if ('r' == current) { - state = 7709; - return true; - } - break; - case 7709: - // zfr; - if (';' == current) { - match = "\uD835\uDD37"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7710: - if ('c' == current) { - state = 7711; - return true; - } - break; - case 7711: - if ('y' == current) { - state = 7712; - return true; - } - break; - case 7712: - // zhcy; - if (';' == current) { - match = "\u0436"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7713: - if ('g' == current) { - state = 7714; - return true; - } - break; - case 7714: - if ('r' == current) { - state = 7715; - return true; - } - break; - case 7715: - if ('a' == current) { - state = 7716; - return true; - } - break; - case 7716: - if ('r' == current) { - state = 7717; - return true; - } - break; - case 7717: - if ('r' == current) { - state = 7718; - return true; - } - break; - case 7718: - // zigrarr; - if (';' == current) { - match = "\u21DD"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7719: - if ('p' == current) { - state = 7720; - return true; - } - break; - case 7720: - if ('f' == current) { - state = 7721; - return true; - } - break; - case 7721: - // zopf; - if (';' == current) { - match = "\uD835\uDD6B"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7722: - if ('c' == current) { - state = 7723; - return true; - } - break; - case 7723: - if ('r' == current) { - state = 7724; - return true; - } - break; - case 7724: - // zscr; - if (';' == current) { - match = "\uD835\uDCCF"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7725: - if ('j' == current) { - state = 7726; - return true; - } - else if ('n' == current) { - state = 7727; - return true; - } - break; - case 7726: - // zwj; - if (';' == current) { - match = "\u200D"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - case 7727: - if ('j' == current) { - state = 7728; - return true; - } - break; - case 7728: - // zwnj; - if (';' == current) { - match = "\u200C"; - matchLength = consumedCount; - state = STATE_ENDS_WITH_SEMICOLON; - return false; - } - break; - } - return false; - } - - public boolean parse(final int current) { - if (state < 1000) { - return parse1(current); - } - if (state < 2000) { - return parse2(current); - } - if (state < 3000) { - return parse3(current); - } - if (state < 4000) { - return parse4(current); - } - if (state < 5000) { - return parse5(current); - } - if (state < 6000) { - return parse6(current); - } - if (state < 7000) { - return parse7(current); - } - if (state < 8000) { - return parse8(current); - } - return false; - } - -} diff --git a/benchmark/src/main/java/org/htmlunit/cyberneko/HtmlEntitiesParserBenchmark.java b/benchmark/src/main/java/org/htmlunit/cyberneko/HtmlEntitiesParserBenchmark.java deleted file mode 100644 index 6d4219c3..00000000 --- a/benchmark/src/main/java/org/htmlunit/cyberneko/HtmlEntitiesParserBenchmark.java +++ /dev/null @@ -1,282 +0,0 @@ -/* - * Copyright (c) 2014, Oracle America, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name of Oracle nor the names of its contributors may be used - * to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.htmlunit.cyberneko; - -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; -import java.util.Properties; -import java.util.Random; -import java.util.concurrent.TimeUnit; - -import org.htmlunit.benchmark.util.FastRandom; -import org.htmlunit.cyberneko.util.HtmlEntities1; -import org.htmlunit.cyberneko.util.HtmlEntities1.Resolver; -import org.htmlunit.cyberneko.util.HtmlEntities2; -import org.htmlunit.cyberneko.util.HtmlEntities3; -import org.htmlunit.cyberneko.util.HTMLEntitiesParser; -import org.openjdk.jmh.annotations.Benchmark; -import org.openjdk.jmh.annotations.BenchmarkMode; -import org.openjdk.jmh.annotations.Fork; -import org.openjdk.jmh.annotations.Measurement; -import org.openjdk.jmh.annotations.Mode; -import org.openjdk.jmh.annotations.OutputTimeUnit; -import org.openjdk.jmh.annotations.Param; -import org.openjdk.jmh.annotations.Scope; -import org.openjdk.jmh.annotations.Setup; -import org.openjdk.jmh.annotations.State; -import org.openjdk.jmh.annotations.Warmup; -import org.openjdk.jmh.infra.BenchmarkParams; -import org.openjdk.jmh.runner.Runner; -import org.openjdk.jmh.runner.RunnerException; -import org.openjdk.jmh.runner.options.Options; -import org.openjdk.jmh.runner.options.OptionsBuilder; - -@State(Scope.Thread) -@BenchmarkMode(Mode.AverageTime) -@OutputTimeUnit(TimeUnit.NANOSECONDS) -@Warmup(iterations = 3, time = 2 , timeUnit = TimeUnit.SECONDS) -@Measurement(iterations = 3, time = 2, timeUnit = TimeUnit.SECONDS) -@Fork(1) -public class HtmlEntitiesParserBenchmark { - - final List keys = new ArrayList<>(); - final List values = new ArrayList<>(); - - @Param({"true", "false"}) - boolean random; - - @Param({"true", "false"}) - boolean onlyCommon; - - final Random r = new Random(); - - @Setup - public void setup(BenchmarkParams params) throws IOException { - final Properties props = new Properties(); - try (InputStream stream = HtmlEntitiesParserBenchmark.class.getResourceAsStream(onlyCommon ? "html_entities_common.properties" : "html_entities.properties")) { - props.load(stream); - } - - props.forEach((k, v) -> { - String key = (String) k; - String value = (String) v; - - // we might have an empty line in it - if (key.isEmpty()) { - return; - } - - // we need randomness to avoid that the setup data looks identical to the quueried data - if (random) - { - FastRandom r = new FastRandom(); - int pos = r.nextInt(keys.size() + 1); - - keys.add(pos, key.endsWith(";") ? key : key + " "); - values.add(pos, value); - } - else - { - keys.add(key.endsWith(";") ? key : key + " "); - values.add(value); - } - }); - } - - @Benchmark - public String oldParser() { - String lastHit = null; - - for (int i = 0; i < keys.size(); i++) { - HTMLEntitiesParser_Old parser = new HTMLEntitiesParser_Old(); - - // already got a space at the end - String parserInput = keys.get(i); - int x = 0; - while (parser.parse(parserInput.charAt(x))) { - x++; - } - - lastHit = parser.getMatch(); - if (!values.get(i).equals(lastHit)) - { - throw new RuntimeException("Darn"); - } - } - - return lastHit; - } - - @Benchmark - public String newParser1() { - String lastHit = null; - - final Resolver resolver = new HtmlEntities1.Resolver(); - - for (int i = 0; i < keys.size(); i++) { - // already got a space at the end - String parserInput = keys.get(i) + " "; - - resolver.reset(); - - int x = 0; - while (resolver.parse(parserInput.charAt(x))) { - x++; - } - - lastHit = resolver.getResolvedValue(); - if (!values.get(i).equals(lastHit)) - { - throw new RuntimeException("Darn"); - } - } - - return lastHit; - } - - @Benchmark - public String newParser2() { - String lastHit = null; - HtmlEntities2.get(); - - for (int i = 0; i < keys.size(); i++) { - // already got a space at the end - String parserInput = keys.get(i); - - HtmlEntities2.Level result = null; - - for (int x = 0; ; x++) { - HtmlEntities2.Level r = HtmlEntities2.get().lookup(parserInput.charAt(x), result); - if (r.endNode) { - result = r; - break; - } - else if (result == r) { - // no more stuff to match, last one was the last match - break; - } - result = r; - } - - lastHit = result.resolvedValue; - if (!values.get(i).equals(lastHit)) - { - throw new RuntimeException("Darn"); - } - } - - return lastHit; - } - - @Benchmark - public String newParser3() { - String lastHit = null; - HtmlEntities3.get(); - - for (int i = 0; i < keys.size(); i++) { - // already got a space at the end - String parserInput = keys.get(i); - - HtmlEntities3.Level result = null; - - for (int x = 0; ; x++) { - HtmlEntities3.Level r = HtmlEntities3.get().lookup(parserInput.charAt(x), result); - if (r.endNode) { - result = r; - break; - } - else if (result == r) { - // no more stuff to match, last one was the last match - break; - } - result = r; - } - - lastHit = result.resolvedValue; - if (!values.get(i).equals(lastHit)) - { - throw new RuntimeException("Darn"); - } - } - - return lastHit; - } - - @Benchmark - public String newParser4() { - String lastHit = null; - HTMLEntitiesParser.get(); - - for (int i = 0; i < keys.size(); i++) { - // already got a space at the end - String parserInput = keys.get(i); - - HTMLEntitiesParser.Level result = null; - - for (int x = 0; ; x++) { - HTMLEntitiesParser.Level r = HTMLEntitiesParser.get().lookup(parserInput.charAt(x), result); - if (r.endNode) { - result = r; - break; - } - else if (result == r) { - // no more stuff to match, last one was the last match - break; - } - result = r; - } - - lastHit = result.resolvedValue; - if (!values.get(i).equals(lastHit)) - { - throw new RuntimeException("Darn"); - } - } - - return lastHit; - } - - public static void main(String[] args) throws RunnerException - { - Options opt = new OptionsBuilder() - // important, otherwise we will run all tests! - .include(HtmlEntitiesParserBenchmark.class.getSimpleName() + ".newParser3") - // 0 is needed for debugging, not for running - .forks(0) - .build(); - - new Runner(opt).run(); - } -} - diff --git a/benchmark/src/main/java/org/htmlunit/cyberneko/html_entities.properties b/benchmark/src/main/java/org/htmlunit/cyberneko/html_entities.properties deleted file mode 100644 index 63fbee86..00000000 --- a/benchmark/src/main/java/org/htmlunit/cyberneko/html_entities.properties +++ /dev/null @@ -1,2231 +0,0 @@ -AElig=\u00C6 -AElig;=\u00C6 -AMP=\u0026 -AMP;=\u0026 -Aacute=\u00C1 -Aacute;=\u00C1 -Abreve;=\u0102 -Acirc=\u00C2 -Acirc;=\u00C2 -Acy;=\u0410 -Afr;=\uD835\uDD04 -Agrave=\u00C0 -Agrave;=\u00C0 -Alpha;=\u0391 -Amacr;=\u0100 -And;=\u2A53 -Aogon;=\u0104 -Aopf;=\uD835\uDD38 -ApplyFunction;=\u2061 -Aring=\u00C5 -Aring;=\u00C5 -Ascr;=\uD835\uDC9C -Assign;=\u2254 -Atilde=\u00C3 -Atilde;=\u00C3 -Auml=\u00C4 -Auml;=\u00C4 -Backslash;=\u2216 -Barv;=\u2AE7 -Barwed;=\u2306 -Bcy;=\u0411 -Because;=\u2235 -Bernoullis;=\u212C -Beta;=\u0392 -Bfr;=\uD835\uDD05 -Bopf;=\uD835\uDD39 -Breve;=\u02D8 -Bscr;=\u212C -Bumpeq;=\u224E -CHcy;=\u0427 -COPY=\u00A9 -COPY;=\u00A9 -Cacute;=\u0106 -Cap;=\u22D2 -CapitalDifferentialD;=\u2145 -Cayleys;=\u212D -Ccaron;=\u010C -Ccedil=\u00C7 -Ccedil;=\u00C7 -Ccirc;=\u0108 -Cconint;=\u2230 -Cdot;=\u010A -Cedilla;=\u00B8 -CenterDot;=\u00B7 -Cfr;=\u212D -Chi;=\u03A7 -CircleDot;=\u2299 -CircleMinus;=\u2296 -CirclePlus;=\u2295 -CircleTimes;=\u2297 -ClockwiseContourIntegral;=\u2232 -CloseCurlyDoubleQuote;=\u201D -CloseCurlyQuote;=\u2019 -Colon;=\u2237 -Colone;=\u2A74 -Congruent;=\u2261 -Conint;=\u222F -ContourIntegral;=\u222E -Copf;=\u2102 -Coproduct;=\u2210 -CounterClockwiseContourIntegral;=\u2233 -Cross;=\u2A2F -Cscr;=\uD835\uDC9E -Cup;=\u22D3 -CupCap;=\u224D -DD;=\u2145 -DDotrahd;=\u2911 -DJcy;=\u0402 -DScy;=\u0405 -DZcy;=\u040F -Dagger;=\u2021 -Darr;=\u21A1 -Dashv;=\u2AE4 -Dcaron;=\u010E -Dcy;=\u0414 -Del;=\u2207 -Delta;=\u0394 -Dfr;=\uD835\uDD07 -DiacriticalAcute;=\u00B4 -DiacriticalDot;=\u02D9 -DiacriticalDoubleAcute;=\u02DD -DiacriticalGrave;=\u0060 -DiacriticalTilde;=\u02DC -Diamond;=\u22C4 -DifferentialD;=\u2146 -Dopf;=\uD835\uDD3B -Dot;=\u00A8 -DotDot;=\u20DC -DotEqual;=\u2250 -DoubleContourIntegral;=\u222F -DoubleDot;=\u00A8 -DoubleDownArrow;=\u21D3 -DoubleLeftArrow;=\u21D0 -DoubleLeftRightArrow;=\u21D4 -DoubleLeftTee;=\u2AE4 -DoubleLongLeftArrow;=\u27F8 -DoubleLongLeftRightArrow;=\u27FA -DoubleLongRightArrow;=\u27F9 -DoubleRightArrow;=\u21D2 -DoubleRightTee;=\u22A8 -DoubleUpArrow;=\u21D1 -DoubleUpDownArrow;=\u21D5 -DoubleVerticalBar;=\u2225 -DownArrow;=\u2193 -DownArrowBar;=\u2913 -DownArrowUpArrow;=\u21F5 -DownBreve;=\u0311 -DownLeftRightVector;=\u2950 -DownLeftTeeVector;=\u295E -DownLeftVector;=\u21BD -DownLeftVectorBar;=\u2956 -DownRightTeeVector;=\u295F -DownRightVector;=\u21C1 -DownRightVectorBar;=\u2957 -DownTee;=\u22A4 -DownTeeArrow;=\u21A7 -Downarrow;=\u21D3 -Dscr;=\uD835\uDC9F -Dstrok;=\u0110 -ENG;=\u014A -ETH=\u00D0 -ETH;=\u00D0 -Eacute=\u00C9 -Eacute;=\u00C9 -Ecaron;=\u011A -Ecirc=\u00CA -Ecirc;=\u00CA -Ecy;=\u042D -Edot;=\u0116 -Efr;=\uD835\uDD08 -Egrave=\u00C8 -Egrave;=\u00C8 -Element;=\u2208 -Emacr;=\u0112 -EmptySmallSquare;=\u25FB -EmptyVerySmallSquare;=\u25AB -Eogon;=\u0118 -Eopf;=\uD835\uDD3C -Epsilon;=\u0395 -Equal;=\u2A75 -EqualTilde;=\u2242 -Equilibrium;=\u21CC -Escr;=\u2130 -Esim;=\u2A73 -Eta;=\u0397 -Euml=\u00CB -Euml;=\u00CB -Exists;=\u2203 -ExponentialE;=\u2147 -Fcy;=\u0424 -Ffr;=\uD835\uDD09 -FilledSmallSquare;=\u25FC -FilledVerySmallSquare;=\u25AA -Fopf;=\uD835\uDD3D -ForAll;=\u2200 -Fouriertrf;=\u2131 -Fscr;=\u2131 -GJcy;=\u0403 -GT=\u003E -GT;=\u003E -Gamma;=\u0393 -Gammad;=\u03DC -Gbreve;=\u011E -Gcedil;=\u0122 -Gcirc;=\u011C -Gcy;=\u0413 -Gdot;=\u0120 -Gfr;=\uD835\uDD0A -Gg;=\u22D9 -Gopf;=\uD835\uDD3E -GreaterEqual;=\u2265 -GreaterEqualLess;=\u22DB -GreaterFullEqual;=\u2267 -GreaterGreater;=\u2AA2 -GreaterLess;=\u2277 -GreaterSlantEqual;=\u2A7E -GreaterTilde;=\u2273 -Gscr;=\uD835\uDCA2 -Gt;=\u226B -HARDcy;=\u042A -Hacek;=\u02C7 -Hat;=\u005E -Hcirc;=\u0124 -Hfr;=\u210C -HilbertSpace;=\u210B -Hopf;=\u210D -HorizontalLine;=\u2500 -Hscr;=\u210B -Hstrok;=\u0126 -HumpDownHump;=\u224E -HumpEqual;=\u224F -IEcy;=\u0415 -IJlig;=\u0132 -IOcy;=\u0401 -Iacute=\u00CD -Iacute;=\u00CD -Icirc=\u00CE -Icirc;=\u00CE -Icy;=\u0418 -Idot;=\u0130 -Ifr;=\u2111 -Igrave=\u00CC -Igrave;=\u00CC -Im;=\u2111 -Imacr;=\u012A -ImaginaryI;=\u2148 -Implies;=\u21D2 -Int;=\u222C -Integral;=\u222B -Intersection;=\u22C2 -InvisibleComma;=\u2063 -InvisibleTimes;=\u2062 -Iogon;=\u012E -Iopf;=\uD835\uDD40 -Iota;=\u0399 -Iscr;=\u2110 -Itilde;=\u0128 -Iukcy;=\u0406 -Iuml=\u00CF -Iuml;=\u00CF -Jcirc;=\u0134 -Jcy;=\u0419 -Jfr;=\uD835\uDD0D -Jopf;=\uD835\uDD41 -Jscr;=\uD835\uDCA5 -Jsercy;=\u0408 -Jukcy;=\u0404 -KHcy;=\u0425 -KJcy;=\u040C -Kappa;=\u039A -Kcedil;=\u0136 -Kcy;=\u041A -Kfr;=\uD835\uDD0E -Kopf;=\uD835\uDD42 -Kscr;=\uD835\uDCA6 -LJcy;=\u0409 -LT=\u003C -LT;=\u003C -Lacute;=\u0139 -Lambda;=\u039B -Lang;=\u27EA -Laplacetrf;=\u2112 -Larr;=\u219E -Lcaron;=\u013D -Lcedil;=\u013B -Lcy;=\u041B -LeftAngleBracket;=\u27E8 -LeftArrow;=\u2190 -LeftArrowBar;=\u21E4 -LeftArrowRightArrow;=\u21C6 -LeftCeiling;=\u2308 -LeftDoubleBracket;=\u27E6 -LeftDownTeeVector;=\u2961 -LeftDownVector;=\u21C3 -LeftDownVectorBar;=\u2959 -LeftFloor;=\u230A -LeftRightArrow;=\u2194 -LeftRightVector;=\u294E -LeftTee;=\u22A3 -LeftTeeArrow;=\u21A4 -LeftTeeVector;=\u295A -LeftTriangle;=\u22B2 -LeftTriangleBar;=\u29CF -LeftTriangleEqual;=\u22B4 -LeftUpDownVector;=\u2951 -LeftUpTeeVector;=\u2960 -LeftUpVector;=\u21BF -LeftUpVectorBar;=\u2958 -LeftVector;=\u21BC -LeftVectorBar;=\u2952 -Leftarrow;=\u21D0 -Leftrightarrow;=\u21D4 -LessEqualGreater;=\u22DA -LessFullEqual;=\u2266 -LessGreater;=\u2276 -LessLess;=\u2AA1 -LessSlantEqual;=\u2A7D -LessTilde;=\u2272 -Lfr;=\uD835\uDD0F -Ll;=\u22D8 -Lleftarrow;=\u21DA -Lmidot;=\u013F -LongLeftArrow;=\u27F5 -LongLeftRightArrow;=\u27F7 -LongRightArrow;=\u27F6 -Longleftarrow;=\u27F8 -Longleftrightarrow;=\u27FA -Longrightarrow;=\u27F9 -Lopf;=\uD835\uDD43 -LowerLeftArrow;=\u2199 -LowerRightArrow;=\u2198 -Lscr;=\u2112 -Lsh;=\u21B0 -Lstrok;=\u0141 -Lt;=\u226A -Map;=\u2905 -Mcy;=\u041C -MediumSpace;=\u205F -Mellintrf;=\u2133 -Mfr;=\uD835\uDD10 -MinusPlus;=\u2213 -Mopf;=\uD835\uDD44 -Mscr;=\u2133 -Mu;=\u039C -NJcy;=\u040A -Nacute;=\u0143 -Ncaron;=\u0147 -Ncedil;=\u0145 -Ncy;=\u041D -NegativeMediumSpace;=\u200B -NegativeThickSpace;=\u200B -NegativeThinSpace;=\u200B -NegativeVeryThinSpace;=\u200B -NestedGreaterGreater;=\u226B -NestedLessLess;=\u226A -NewLine;=\u000A -Nfr;=\uD835\uDD11 -NoBreak;=\u2060 -NonBreakingSpace;=\u00A0 -Nopf;=\u2115 -Not;=\u2AEC -NotCongruent;=\u2262 -NotCupCap;=\u226D -NotDoubleVerticalBar;=\u2226 -NotElement;=\u2209 -NotEqual;=\u2260 -NotEqualTilde;=\u2242\u0338 -NotExists;=\u2204 -NotGreater;=\u226F -NotGreaterEqual;=\u2271 -NotGreaterFullEqual;=\u2267\u0338 -NotGreaterGreater;=\u226B\u0338 -NotGreaterLess;=\u2279 -NotGreaterSlantEqual;=\u2A7E\u0338 -NotGreaterTilde;=\u2275 -NotHumpDownHump;=\u224E\u0338 -NotHumpEqual;=\u224F\u0338 -NotLeftTriangle;=\u22EA -NotLeftTriangleBar;=\u29CF\u0338 -NotLeftTriangleEqual;=\u22EC -NotLess;=\u226E -NotLessEqual;=\u2270 -NotLessGreater;=\u2278 -NotLessLess;=\u226A\u0338 -NotLessSlantEqual;=\u2A7D\u0338 -NotLessTilde;=\u2274 -NotNestedGreaterGreater;=\u2AA2\u0338 -NotNestedLessLess;=\u2AA1\u0338 -NotPrecedes;=\u2280 -NotPrecedesEqual;=\u2AAF\u0338 -NotPrecedesSlantEqual;=\u22E0 -NotReverseElement;=\u220C -NotRightTriangle;=\u22EB -NotRightTriangleBar;=\u29D0\u0338 -NotRightTriangleEqual;=\u22ED -NotSquareSubset;=\u228F\u0338 -NotSquareSubsetEqual;=\u22E2 -NotSquareSuperset;=\u2290\u0338 -NotSquareSupersetEqual;=\u22E3 -NotSubset;=\u2282\u20D2 -NotSubsetEqual;=\u2288 -NotSucceeds;=\u2281 -NotSucceedsEqual;=\u2AB0\u0338 -NotSucceedsSlantEqual;=\u22E1 -NotSucceedsTilde;=\u227F\u0338 -NotSuperset;=\u2283\u20D2 -NotSupersetEqual;=\u2289 -NotTilde;=\u2241 -NotTildeEqual;=\u2244 -NotTildeFullEqual;=\u2247 -NotTildeTilde;=\u2249 -NotVerticalBar;=\u2224 -Nscr;=\uD835\uDCA9 -Ntilde=\u00D1 -Ntilde;=\u00D1 -Nu;=\u039D -OElig;=\u0152 -Oacute=\u00D3 -Oacute;=\u00D3 -Ocirc=\u00D4 -Ocirc;=\u00D4 -Ocy;=\u041E -Odblac;=\u0150 -Ofr;=\uD835\uDD12 -Ograve=\u00D2 -Ograve;=\u00D2 -Omacr;=\u014C -Omega;=\u03A9 -Omicron;=\u039F -Oopf;=\uD835\uDD46 -OpenCurlyDoubleQuote;=\u201C -OpenCurlyQuote;=\u2018 -Or;=\u2A54 -Oscr;=\uD835\uDCAA -Oslash=\u00D8 -Oslash;=\u00D8 -Otilde=\u00D5 -Otilde;=\u00D5 -Otimes;=\u2A37 -Ouml=\u00D6 -Ouml;=\u00D6 -OverBar;=\u203E -OverBrace;=\u23DE -OverBracket;=\u23B4 -OverParenthesis;=\u23DC -PartialD;=\u2202 -Pcy;=\u041F -Pfr;=\uD835\uDD13 -Phi;=\u03A6 -Pi;=\u03A0 -PlusMinus;=\u00B1 -Poincareplane;=\u210C -Popf;=\u2119 -Pr;=\u2ABB -Precedes;=\u227A -PrecedesEqual;=\u2AAF -PrecedesSlantEqual;=\u227C -PrecedesTilde;=\u227E -Prime;=\u2033 -Product;=\u220F -Proportion;=\u2237 -Proportional;=\u221D -Pscr;=\uD835\uDCAB -Psi;=\u03A8 -QUOT=\u0022 -QUOT;=\u0022 -Qfr;=\uD835\uDD14 -Qopf;=\u211A -Qscr;=\uD835\uDCAC -RBarr;=\u2910 -REG=\u00AE -REG;=\u00AE -Racute;=\u0154 -Rang;=\u27EB -Rarr;=\u21A0 -Rarrtl;=\u2916 -Rcaron;=\u0158 -Rcedil;=\u0156 -Rcy;=\u0420 -Re;=\u211C -ReverseElement;=\u220B -ReverseEquilibrium;=\u21CB -ReverseUpEquilibrium;=\u296F -Rfr;=\u211C -Rho;=\u03A1 -RightAngleBracket;=\u27E9 -RightArrow;=\u2192 -RightArrowBar;=\u21E5 -RightArrowLeftArrow;=\u21C4 -RightCeiling;=\u2309 -RightDoubleBracket;=\u27E7 -RightDownTeeVector;=\u295D -RightDownVector;=\u21C2 -RightDownVectorBar;=\u2955 -RightFloor;=\u230B -RightTee;=\u22A2 -RightTeeArrow;=\u21A6 -RightTeeVector;=\u295B -RightTriangle;=\u22B3 -RightTriangleBar;=\u29D0 -RightTriangleEqual;=\u22B5 -RightUpDownVector;=\u294F -RightUpTeeVector;=\u295C -RightUpVector;=\u21BE -RightUpVectorBar;=\u2954 -RightVector;=\u21C0 -RightVectorBar;=\u2953 -Rightarrow;=\u21D2 -Ropf;=\u211D -RoundImplies;=\u2970 -Rrightarrow;=\u21DB -Rscr;=\u211B -Rsh;=\u21B1 -RuleDelayed;=\u29F4 -SHCHcy;=\u0429 -SHcy;=\u0428 -SOFTcy;=\u042C -Sacute;=\u015A -Sc;=\u2ABC -Scaron;=\u0160 -Scedil;=\u015E -Scirc;=\u015C -Scy;=\u0421 -Sfr;=\uD835\uDD16 -ShortDownArrow;=\u2193 -ShortLeftArrow;=\u2190 -ShortRightArrow;=\u2192 -ShortUpArrow;=\u2191 -Sigma;=\u03A3 -SmallCircle;=\u2218 -Sopf;=\uD835\uDD4A -Sqrt;=\u221A -Square;=\u25A1 -SquareIntersection;=\u2293 -SquareSubset;=\u228F -SquareSubsetEqual;=\u2291 -SquareSuperset;=\u2290 -SquareSupersetEqual;=\u2292 -SquareUnion;=\u2294 -Sscr;=\uD835\uDCAE -Star;=\u22C6 -Sub;=\u22D0 -Subset;=\u22D0 -SubsetEqual;=\u2286 -Succeeds;=\u227B -SucceedsEqual;=\u2AB0 -SucceedsSlantEqual;=\u227D -SucceedsTilde;=\u227F -SuchThat;=\u220B -Sum;=\u2211 -Sup;=\u22D1 -Superset;=\u2283 -SupersetEqual;=\u2287 -Supset;=\u22D1 -THORN=\u00DE -THORN;=\u00DE -TRADE;=\u2122 -TSHcy;=\u040B -TScy;=\u0426 -Tab;=\u0009 -Tau;=\u03A4 -Tcaron;=\u0164 -Tcedil;=\u0162 -Tcy;=\u0422 -Tfr;=\uD835\uDD17 -Therefore;=\u2234 -Theta;=\u0398 -ThickSpace;=\u205F\u200A -ThinSpace;=\u2009 -Tilde;=\u223C -TildeEqual;=\u2243 -TildeFullEqual;=\u2245 -TildeTilde;=\u2248 -Topf;=\uD835\uDD4B -TripleDot;=\u20DB -Tscr;=\uD835\uDCAF -Tstrok;=\u0166 -Uacute=\u00DA -Uacute;=\u00DA -Uarr;=\u219F -Uarrocir;=\u2949 -Ubrcy;=\u040E -Ubreve;=\u016C -Ucirc=\u00DB -Ucirc;=\u00DB -Ucy;=\u0423 -Udblac;=\u0170 -Ufr;=\uD835\uDD18 -Ugrave=\u00D9 -Ugrave;=\u00D9 -Umacr;=\u016A -UnderBar;=\u005F -UnderBrace;=\u23DF -UnderBracket;=\u23B5 -UnderParenthesis;=\u23DD -Union;=\u22C3 -UnionPlus;=\u228E -Uogon;=\u0172 -Uopf;=\uD835\uDD4C -UpArrow;=\u2191 -UpArrowBar;=\u2912 -UpArrowDownArrow;=\u21C5 -UpDownArrow;=\u2195 -UpEquilibrium;=\u296E -UpTee;=\u22A5 -UpTeeArrow;=\u21A5 -Uparrow;=\u21D1 -Updownarrow;=\u21D5 -UpperLeftArrow;=\u2196 -UpperRightArrow;=\u2197 -Upsi;=\u03D2 -Upsilon;=\u03A5 -Uring;=\u016E -Uscr;=\uD835\uDCB0 -Utilde;=\u0168 -Uuml=\u00DC -Uuml;=\u00DC -VDash;=\u22AB -Vbar;=\u2AEB -Vcy;=\u0412 -Vdash;=\u22A9 -Vdashl;=\u2AE6 -Vee;=\u22C1 -Verbar;=\u2016 -Vert;=\u2016 -VerticalBar;=\u2223 -VerticalLine;=\u007C -VerticalSeparator;=\u2758 -VerticalTilde;=\u2240 -VeryThinSpace;=\u200A -Vfr;=\uD835\uDD19 -Vopf;=\uD835\uDD4D -Vscr;=\uD835\uDCB1 -Vvdash;=\u22AA -Wcirc;=\u0174 -Wedge;=\u22C0 -Wfr;=\uD835\uDD1A -Wopf;=\uD835\uDD4E -Wscr;=\uD835\uDCB2 -Xfr;=\uD835\uDD1B -Xi;=\u039E -Xopf;=\uD835\uDD4F -Xscr;=\uD835\uDCB3 -YAcy;=\u042F -YIcy;=\u0407 -YUcy;=\u042E -Yacute=\u00DD -Yacute;=\u00DD -Ycirc;=\u0176 -Ycy;=\u042B -Yfr;=\uD835\uDD1C -Yopf;=\uD835\uDD50 -Yscr;=\uD835\uDCB4 -Yuml;=\u0178 -ZHcy;=\u0416 -Zacute;=\u0179 -Zcaron;=\u017D -Zcy;=\u0417 -Zdot;=\u017B -ZeroWidthSpace;=\u200B -Zeta;=\u0396 -Zfr;=\u2128 -Zopf;=\u2124 -Zscr;=\uD835\uDCB5 -aacute=\u00E1 -aacute;=\u00E1 -abreve;=\u0103 -ac;=\u223E -acE;=\u223E\u0333 -acd;=\u223F -acirc=\u00E2 -acirc;=\u00E2 -acute=\u00B4 -acute;=\u00B4 -acy;=\u0430 -aelig=\u00E6 -aelig;=\u00E6 -af;=\u2061 -afr;=\uD835\uDD1E -agrave=\u00E0 -agrave;=\u00E0 -alefsym;=\u2135 -aleph;=\u2135 -alpha;=\u03B1 -amacr;=\u0101 -amalg;=\u2A3F -amp=\u0026 -amp;=\u0026 -and;=\u2227 -andand;=\u2A55 -andd;=\u2A5C -andslope;=\u2A58 -andv;=\u2A5A -ang;=\u2220 -ange;=\u29A4 -angle;=\u2220 -angmsd;=\u2221 -angmsdaa;=\u29A8 -angmsdab;=\u29A9 -angmsdac;=\u29AA -angmsdad;=\u29AB -angmsdae;=\u29AC -angmsdaf;=\u29AD -angmsdag;=\u29AE -angmsdah;=\u29AF -angrt;=\u221F -angrtvb;=\u22BE -angrtvbd;=\u299D -angsph;=\u2222 -angst;=\u00C5 -angzarr;=\u237C -aogon;=\u0105 -aopf;=\uD835\uDD52 -ap;=\u2248 -apE;=\u2A70 -apacir;=\u2A6F -ape;=\u224A -apid;=\u224B -apos;=\u0027 -approx;=\u2248 -approxeq;=\u224A -aring=\u00E5 -aring;=\u00E5 -ascr;=\uD835\uDCB6 -ast;=\u002A -asymp;=\u2248 -asympeq;=\u224D -atilde=\u00E3 -atilde;=\u00E3 -auml=\u00E4 -auml;=\u00E4 -awconint;=\u2233 -awint;=\u2A11 -bNot;=\u2AED -backcong;=\u224C -backepsilon;=\u03F6 -backprime;=\u2035 -backsim;=\u223D -backsimeq;=\u22CD -barvee;=\u22BD -barwed;=\u2305 -barwedge;=\u2305 -bbrk;=\u23B5 -bbrktbrk;=\u23B6 -bcong;=\u224C -bcy;=\u0431 -bdquo;=\u201E -becaus;=\u2235 -because;=\u2235 -bemptyv;=\u29B0 -bepsi;=\u03F6 -bernou;=\u212C -beta;=\u03B2 -beth;=\u2136 -between;=\u226C -bfr;=\uD835\uDD1F -bigcap;=\u22C2 -bigcirc;=\u25EF -bigcup;=\u22C3 -bigodot;=\u2A00 -bigoplus;=\u2A01 -bigotimes;=\u2A02 -bigsqcup;=\u2A06 -bigstar;=\u2605 -bigtriangledown;=\u25BD -bigtriangleup;=\u25B3 -biguplus;=\u2A04 -bigvee;=\u22C1 -bigwedge;=\u22C0 -bkarow;=\u290D -blacklozenge;=\u29EB -blacksquare;=\u25AA -blacktriangle;=\u25B4 -blacktriangledown;=\u25BE -blacktriangleleft;=\u25C2 -blacktriangleright;=\u25B8 -blank;=\u2423 -blk12;=\u2592 -blk14;=\u2591 -blk34;=\u2593 -block;=\u2588 -bne;=\u003D\u20E5 -bnequiv;=\u2261\u20E5 -bnot;=\u2310 -bopf;=\uD835\uDD53 -bot;=\u22A5 -bottom;=\u22A5 -bowtie;=\u22C8 -boxDL;=\u2557 -boxDR;=\u2554 -boxDl;=\u2556 -boxDr;=\u2553 -boxH;=\u2550 -boxHD;=\u2566 -boxHU;=\u2569 -boxHd;=\u2564 -boxHu;=\u2567 -boxUL;=\u255D -boxUR;=\u255A -boxUl;=\u255C -boxUr;=\u2559 -boxV;=\u2551 -boxVH;=\u256C -boxVL;=\u2563 -boxVR;=\u2560 -boxVh;=\u256B -boxVl;=\u2562 -boxVr;=\u255F -boxbox;=\u29C9 -boxdL;=\u2555 -boxdR;=\u2552 -boxdl;=\u2510 -boxdr;=\u250C -boxh;=\u2500 -boxhD;=\u2565 -boxhU;=\u2568 -boxhd;=\u252C -boxhu;=\u2534 -boxminus;=\u229F -boxplus;=\u229E -boxtimes;=\u22A0 -boxuL;=\u255B -boxuR;=\u2558 -boxul;=\u2518 -boxur;=\u2514 -boxv;=\u2502 -boxvH;=\u256A -boxvL;=\u2561 -boxvR;=\u255E -boxvh;=\u253C -boxvl;=\u2524 -boxvr;=\u251C -bprime;=\u2035 -breve;=\u02D8 -brvbar=\u00A6 -brvbar;=\u00A6 -bscr;=\uD835\uDCB7 -bsemi;=\u204F -bsim;=\u223D -bsime;=\u22CD -bsol;=\u005C -bsolb;=\u29C5 -bsolhsub;=\u27C8 -bull;=\u2022 -bullet;=\u2022 -bump;=\u224E -bumpE;=\u2AAE -bumpe;=\u224F -bumpeq;=\u224F -cacute;=\u0107 -cap;=\u2229 -capand;=\u2A44 -capbrcup;=\u2A49 -capcap;=\u2A4B -capcup;=\u2A47 -capdot;=\u2A40 -caps;=\u2229\uFE00 -caret;=\u2041 -caron;=\u02C7 -ccaps;=\u2A4D -ccaron;=\u010D -ccedil=\u00E7 -ccedil;=\u00E7 -ccirc;=\u0109 -ccups;=\u2A4C -ccupssm;=\u2A50 -cdot;=\u010B -cedil=\u00B8 -cedil;=\u00B8 -cemptyv;=\u29B2 -cent=\u00A2 -cent;=\u00A2 -centerdot;=\u00B7 -cfr;=\uD835\uDD20 -chcy;=\u0447 -check;=\u2713 -checkmark;=\u2713 -chi;=\u03C7 -cir;=\u25CB -cirE;=\u29C3 -circ;=\u02C6 -circeq;=\u2257 -circlearrowleft;=\u21BA -circlearrowright;=\u21BB -circledR;=\u00AE -circledS;=\u24C8 -circledast;=\u229B -circledcirc;=\u229A -circleddash;=\u229D -cire;=\u2257 -cirfnint;=\u2A10 -cirmid;=\u2AEF -cirscir;=\u29C2 -clubs;=\u2663 -clubsuit;=\u2663 -colon;=\u003A -colone;=\u2254 -coloneq;=\u2254 -comma;=\u002C -commat;=\u0040 -comp;=\u2201 -compfn;=\u2218 -complement;=\u2201 -complexes;=\u2102 -cong;=\u2245 -congdot;=\u2A6D -conint;=\u222E -copf;=\uD835\uDD54 -coprod;=\u2210 -copy=\u00A9 -copy;=\u00A9 -copysr;=\u2117 -crarr;=\u21B5 -cross;=\u2717 -cscr;=\uD835\uDCB8 -csub;=\u2ACF -csube;=\u2AD1 -csup;=\u2AD0 -csupe;=\u2AD2 -ctdot;=\u22EF -cudarrl;=\u2938 -cudarrr;=\u2935 -cuepr;=\u22DE -cuesc;=\u22DF -cularr;=\u21B6 -cularrp;=\u293D -cup;=\u222A -cupbrcap;=\u2A48 -cupcap;=\u2A46 -cupcup;=\u2A4A -cupdot;=\u228D -cupor;=\u2A45 -cups;=\u222A\uFE00 -curarr;=\u21B7 -curarrm;=\u293C -curlyeqprec;=\u22DE -curlyeqsucc;=\u22DF -curlyvee;=\u22CE -curlywedge;=\u22CF -curren=\u00A4 -curren;=\u00A4 -curvearrowleft;=\u21B6 -curvearrowright;=\u21B7 -cuvee;=\u22CE -cuwed;=\u22CF -cwconint;=\u2232 -cwint;=\u2231 -cylcty;=\u232D -dArr;=\u21D3 -dHar;=\u2965 -dagger;=\u2020 -daleth;=\u2138 -darr;=\u2193 -dash;=\u2010 -dashv;=\u22A3 -dbkarow;=\u290F -dblac;=\u02DD -dcaron;=\u010F -dcy;=\u0434 -dd;=\u2146 -ddagger;=\u2021 -ddarr;=\u21CA -ddotseq;=\u2A77 -deg=\u00B0 -deg;=\u00B0 -delta;=\u03B4 -demptyv;=\u29B1 -dfisht;=\u297F -dfr;=\uD835\uDD21 -dharl;=\u21C3 -dharr;=\u21C2 -diam;=\u22C4 -diamond;=\u22C4 -diamondsuit;=\u2666 -diams;=\u2666 -die;=\u00A8 -digamma;=\u03DD -disin;=\u22F2 -div;=\u00F7 -divide=\u00F7 -divide;=\u00F7 -divideontimes;=\u22C7 -divonx;=\u22C7 -djcy;=\u0452 -dlcorn;=\u231E -dlcrop;=\u230D -dollar;=\u0024 -dopf;=\uD835\uDD55 -dot;=\u02D9 -doteq;=\u2250 -doteqdot;=\u2251 -dotminus;=\u2238 -dotplus;=\u2214 -dotsquare;=\u22A1 -doublebarwedge;=\u2306 -downarrow;=\u2193 -downdownarrows;=\u21CA -downharpoonleft;=\u21C3 -downharpoonright;=\u21C2 -drbkarow;=\u2910 -drcorn;=\u231F -drcrop;=\u230C -dscr;=\uD835\uDCB9 -dscy;=\u0455 -dsol;=\u29F6 -dstrok;=\u0111 -dtdot;=\u22F1 -dtri;=\u25BF -dtrif;=\u25BE -duarr;=\u21F5 -duhar;=\u296F -dwangle;=\u29A6 -dzcy;=\u045F -dzigrarr;=\u27FF -eDDot;=\u2A77 -eDot;=\u2251 -eacute=\u00E9 -eacute;=\u00E9 -easter;=\u2A6E -ecaron;=\u011B -ecir;=\u2256 -ecirc=\u00EA -ecirc;=\u00EA -ecolon;=\u2255 -ecy;=\u044D -edot;=\u0117 -ee;=\u2147 -efDot;=\u2252 -efr;=\uD835\uDD22 -eg;=\u2A9A -egrave=\u00E8 -egrave;=\u00E8 -egs;=\u2A96 -egsdot;=\u2A98 -el;=\u2A99 -elinters;=\u23E7 -ell;=\u2113 -els;=\u2A95 -elsdot;=\u2A97 -emacr;=\u0113 -empty;=\u2205 -emptyset;=\u2205 -emptyv;=\u2205 -emsp13;=\u2004 -emsp14;=\u2005 -emsp;=\u2003 -eng;=\u014B -ensp;=\u2002 -eogon;=\u0119 -eopf;=\uD835\uDD56 -epar;=\u22D5 -eparsl;=\u29E3 -eplus;=\u2A71 -epsi;=\u03B5 -epsilon;=\u03B5 -epsiv;=\u03F5 -eqcirc;=\u2256 -eqcolon;=\u2255 -eqsim;=\u2242 -eqslantgtr;=\u2A96 -eqslantless;=\u2A95 -equals;=\u003D -equest;=\u225F -equiv;=\u2261 -equivDD;=\u2A78 -eqvparsl;=\u29E5 -erDot;=\u2253 -erarr;=\u2971 -escr;=\u212F -esdot;=\u2250 -esim;=\u2242 -eta;=\u03B7 -eth=\u00F0 -eth;=\u00F0 -euml=\u00EB -euml;=\u00EB -euro;=\u20AC -excl;=\u0021 -exist;=\u2203 -expectation;=\u2130 -exponentiale;=\u2147 -fallingdotseq;=\u2252 -fcy;=\u0444 -female;=\u2640 -ffilig;=\uFB03 -fflig;=\uFB00 -ffllig;=\uFB04 -ffr;=\uD835\uDD23 -filig;=\uFB01 -fjlig;=\u0066\u006A -flat;=\u266D -fllig;=\uFB02 -fltns;=\u25B1 -fnof;=\u0192 -fopf;=\uD835\uDD57 -forall;=\u2200 -fork;=\u22D4 -forkv;=\u2AD9 -fpartint;=\u2A0D -frac12=\u00BD -frac12;=\u00BD -frac13;=\u2153 -frac14=\u00BC -frac14;=\u00BC -frac15;=\u2155 -frac16;=\u2159 -frac18;=\u215B -frac23;=\u2154 -frac25;=\u2156 -frac34=\u00BE -frac34;=\u00BE -frac35;=\u2157 -frac38;=\u215C -frac45;=\u2158 -frac56;=\u215A -frac58;=\u215D -frac78;=\u215E -frasl;=\u2044 -frown;=\u2322 -fscr;=\uD835\uDCBB -gE;=\u2267 -gEl;=\u2A8C -gacute;=\u01F5 -gamma;=\u03B3 -gammad;=\u03DD -gap;=\u2A86 -gbreve;=\u011F -gcirc;=\u011D -gcy;=\u0433 -gdot;=\u0121 -ge;=\u2265 -gel;=\u22DB -geq;=\u2265 -geqq;=\u2267 -geqslant;=\u2A7E -ges;=\u2A7E -gescc;=\u2AA9 -gesdot;=\u2A80 -gesdoto;=\u2A82 -gesdotol;=\u2A84 -gesl;=\u22DB\uFE00 -gesles;=\u2A94 -gfr;=\uD835\uDD24 -gg;=\u226B -ggg;=\u22D9 -gimel;=\u2137 -gjcy;=\u0453 -gl;=\u2277 -glE;=\u2A92 -gla;=\u2AA5 -glj;=\u2AA4 -gnE;=\u2269 -gnap;=\u2A8A -gnapprox;=\u2A8A -gne;=\u2A88 -gneq;=\u2A88 -gneqq;=\u2269 -gnsim;=\u22E7 -gopf;=\uD835\uDD58 -grave;=\u0060 -gscr;=\u210A -gsim;=\u2273 -gsime;=\u2A8E -gsiml;=\u2A90 -gt=\u003E -gt;=\u003E -gtcc;=\u2AA7 -gtcir;=\u2A7A -gtdot;=\u22D7 -gtlPar;=\u2995 -gtquest;=\u2A7C -gtrapprox;=\u2A86 -gtrarr;=\u2978 -gtrdot;=\u22D7 -gtreqless;=\u22DB -gtreqqless;=\u2A8C -gtrless;=\u2277 -gtrsim;=\u2273 -gvertneqq;=\u2269\uFE00 -gvnE;=\u2269\uFE00 -hArr;=\u21D4 -hairsp;=\u200A -half;=\u00BD -hamilt;=\u210B -hardcy;=\u044A -harr;=\u2194 -harrcir;=\u2948 -harrw;=\u21AD -hbar;=\u210F -hcirc;=\u0125 -hearts;=\u2665 -heartsuit;=\u2665 -hellip;=\u2026 -hercon;=\u22B9 -hfr;=\uD835\uDD25 -hksearow;=\u2925 -hkswarow;=\u2926 -hoarr;=\u21FF -homtht;=\u223B -hookleftarrow;=\u21A9 -hookrightarrow;=\u21AA -hopf;=\uD835\uDD59 -horbar;=\u2015 -hscr;=\uD835\uDCBD -hslash;=\u210F -hstrok;=\u0127 -hybull;=\u2043 -hyphen;=\u2010 -iacute=\u00ED -iacute;=\u00ED -ic;=\u2063 -icirc=\u00EE -icirc;=\u00EE -icy;=\u0438 -iecy;=\u0435 -iexcl=\u00A1 -iexcl;=\u00A1 -iff;=\u21D4 -ifr;=\uD835\uDD26 -igrave=\u00EC -igrave;=\u00EC -ii;=\u2148 -iiiint;=\u2A0C -iiint;=\u222D -iinfin;=\u29DC -iiota;=\u2129 -ijlig;=\u0133 -imacr;=\u012B -image;=\u2111 -imagline;=\u2110 -imagpart;=\u2111 -imath;=\u0131 -imof;=\u22B7 -imped;=\u01B5 -in;=\u2208 -incare;=\u2105 -infin;=\u221E -infintie;=\u29DD -inodot;=\u0131 -int;=\u222B -intcal;=\u22BA -integers;=\u2124 -intercal;=\u22BA -intlarhk;=\u2A17 -intprod;=\u2A3C -iocy;=\u0451 -iogon;=\u012F -iopf;=\uD835\uDD5A -iota;=\u03B9 -iprod;=\u2A3C -iquest=\u00BF -iquest;=\u00BF -iscr;=\uD835\uDCBE -isin;=\u2208 -isinE;=\u22F9 -isindot;=\u22F5 -isins;=\u22F4 -isinsv;=\u22F3 -isinv;=\u2208 -it;=\u2062 -itilde;=\u0129 -iukcy;=\u0456 -iuml=\u00EF -iuml;=\u00EF -jcirc;=\u0135 -jcy;=\u0439 -jfr;=\uD835\uDD27 -jmath;=\u0237 -jopf;=\uD835\uDD5B -jscr;=\uD835\uDCBF -jsercy;=\u0458 -jukcy;=\u0454 -kappa;=\u03BA -kappav;=\u03F0 -kcedil;=\u0137 -kcy;=\u043A -kfr;=\uD835\uDD28 -kgreen;=\u0138 -khcy;=\u0445 -kjcy;=\u045C -kopf;=\uD835\uDD5C -kscr;=\uD835\uDCC0 -lAarr;=\u21DA -lArr;=\u21D0 -lAtail;=\u291B -lBarr;=\u290E -lE;=\u2266 -lEg;=\u2A8B -lHar;=\u2962 -lacute;=\u013A -laemptyv;=\u29B4 -lagran;=\u2112 -lambda;=\u03BB -lang;=\u27E8 -langd;=\u2991 -langle;=\u27E8 -lap;=\u2A85 -laquo=\u00AB -laquo;=\u00AB -larr;=\u2190 -larrb;=\u21E4 -larrbfs;=\u291F -larrfs;=\u291D -larrhk;=\u21A9 -larrlp;=\u21AB -larrpl;=\u2939 -larrsim;=\u2973 -larrtl;=\u21A2 -lat;=\u2AAB -latail;=\u2919 -late;=\u2AAD -lates;=\u2AAD\uFE00 -lbarr;=\u290C -lbbrk;=\u2772 -lbrace;=\u007B -lbrack;=\u005B -lbrke;=\u298B -lbrksld;=\u298F -lbrkslu;=\u298D -lcaron;=\u013E -lcedil;=\u013C -lceil;=\u2308 -lcub;=\u007B -lcy;=\u043B -ldca;=\u2936 -ldquo;=\u201C -ldquor;=\u201E -ldrdhar;=\u2967 -ldrushar;=\u294B -ldsh;=\u21B2 -le;=\u2264 -leftarrow;=\u2190 -leftarrowtail;=\u21A2 -leftharpoondown;=\u21BD -leftharpoonup;=\u21BC -leftleftarrows;=\u21C7 -leftrightarrow;=\u2194 -leftrightarrows;=\u21C6 -leftrightharpoons;=\u21CB -leftrightsquigarrow;=\u21AD -leftthreetimes;=\u22CB -leg;=\u22DA -leq;=\u2264 -leqq;=\u2266 -leqslant;=\u2A7D -les;=\u2A7D -lescc;=\u2AA8 -lesdot;=\u2A7F -lesdoto;=\u2A81 -lesdotor;=\u2A83 -lesg;=\u22DA\uFE00 -lesges;=\u2A93 -lessapprox;=\u2A85 -lessdot;=\u22D6 -lesseqgtr;=\u22DA -lesseqqgtr;=\u2A8B -lessgtr;=\u2276 -lesssim;=\u2272 -lfisht;=\u297C -lfloor;=\u230A -lfr;=\uD835\uDD29 -lg;=\u2276 -lgE;=\u2A91 -lhard;=\u21BD -lharu;=\u21BC -lharul;=\u296A -lhblk;=\u2584 -ljcy;=\u0459 -ll;=\u226A -llarr;=\u21C7 -llcorner;=\u231E -llhard;=\u296B -lltri;=\u25FA -lmidot;=\u0140 -lmoust;=\u23B0 -lmoustache;=\u23B0 -lnE;=\u2268 -lnap;=\u2A89 -lnapprox;=\u2A89 -lne;=\u2A87 -lneq;=\u2A87 -lneqq;=\u2268 -lnsim;=\u22E6 -loang;=\u27EC -loarr;=\u21FD -lobrk;=\u27E6 -longleftarrow;=\u27F5 -longleftrightarrow;=\u27F7 -longmapsto;=\u27FC -longrightarrow;=\u27F6 -looparrowleft;=\u21AB -looparrowright;=\u21AC -lopar;=\u2985 -lopf;=\uD835\uDD5D -loplus;=\u2A2D -lotimes;=\u2A34 -lowast;=\u2217 -lowbar;=\u005F -loz;=\u25CA -lozenge;=\u25CA -lozf;=\u29EB -lpar;=\u0028 -lparlt;=\u2993 -lrarr;=\u21C6 -lrcorner;=\u231F -lrhar;=\u21CB -lrhard;=\u296D -lrm;=\u200E -lrtri;=\u22BF -lsaquo;=\u2039 -lscr;=\uD835\uDCC1 -lsh;=\u21B0 -lsim;=\u2272 -lsime;=\u2A8D -lsimg;=\u2A8F -lsqb;=\u005B -lsquo;=\u2018 -lsquor;=\u201A -lstrok;=\u0142 -lt=\u003C -lt;=\u003C -ltcc;=\u2AA6 -ltcir;=\u2A79 -ltdot;=\u22D6 -lthree;=\u22CB -ltimes;=\u22C9 -ltlarr;=\u2976 -ltquest;=\u2A7B -ltrPar;=\u2996 -ltri;=\u25C3 -ltrie;=\u22B4 -ltrif;=\u25C2 -lurdshar;=\u294A -luruhar;=\u2966 -lvertneqq;=\u2268\uFE00 -lvnE;=\u2268\uFE00 -mDDot;=\u223A -macr=\u00AF -macr;=\u00AF -male;=\u2642 -malt;=\u2720 -maltese;=\u2720 -map;=\u21A6 -mapsto;=\u21A6 -mapstodown;=\u21A7 -mapstoleft;=\u21A4 -mapstoup;=\u21A5 -marker;=\u25AE -mcomma;=\u2A29 -mcy;=\u043C -mdash;=\u2014 -measuredangle;=\u2221 -mfr;=\uD835\uDD2A -mho;=\u2127 -micro=\u00B5 -micro;=\u00B5 -mid;=\u2223 -midast;=\u002A -midcir;=\u2AF0 -middot=\u00B7 -middot;=\u00B7 -minus;=\u2212 -minusb;=\u229F -minusd;=\u2238 -minusdu;=\u2A2A -mlcp;=\u2ADB -mldr;=\u2026 -mnplus;=\u2213 -models;=\u22A7 -mopf;=\uD835\uDD5E -mp;=\u2213 -mscr;=\uD835\uDCC2 -mstpos;=\u223E -mu;=\u03BC -multimap;=\u22B8 -mumap;=\u22B8 -nGg;=\u22D9\u0338 -nGt;=\u226B\u20D2 -nGtv;=\u226B\u0338 -nLeftarrow;=\u21CD -nLeftrightarrow;=\u21CE -nLl;=\u22D8\u0338 -nLt;=\u226A\u20D2 -nLtv;=\u226A\u0338 -nRightarrow;=\u21CF -nVDash;=\u22AF -nVdash;=\u22AE -nabla;=\u2207 -nacute;=\u0144 -nang;=\u2220\u20D2 -nap;=\u2249 -napE;=\u2A70\u0338 -napid;=\u224B\u0338 -napos;=\u0149 -napprox;=\u2249 -natur;=\u266E -natural;=\u266E -naturals;=\u2115 -nbsp=\u00A0 -nbsp;=\u00A0 -nbump;=\u224E\u0338 -nbumpe;=\u224F\u0338 -ncap;=\u2A43 -ncaron;=\u0148 -ncedil;=\u0146 -ncong;=\u2247 -ncongdot;=\u2A6D\u0338 -ncup;=\u2A42 -ncy;=\u043D -ndash;=\u2013 -ne;=\u2260 -neArr;=\u21D7 -nearhk;=\u2924 -nearr;=\u2197 -nearrow;=\u2197 -nedot;=\u2250\u0338 -nequiv;=\u2262 -nesear;=\u2928 -nesim;=\u2242\u0338 -nexist;=\u2204 -nexists;=\u2204 -nfr;=\uD835\uDD2B -ngE;=\u2267\u0338 -nge;=\u2271 -ngeq;=\u2271 -ngeqq;=\u2267\u0338 -ngeqslant;=\u2A7E\u0338 -nges;=\u2A7E\u0338 -ngsim;=\u2275 -ngt;=\u226F -ngtr;=\u226F -nhArr;=\u21CE -nharr;=\u21AE -nhpar;=\u2AF2 -ni;=\u220B -nis;=\u22FC -nisd;=\u22FA -niv;=\u220B -njcy;=\u045A -nlArr;=\u21CD -nlE;=\u2266\u0338 -nlarr;=\u219A -nldr;=\u2025 -nle;=\u2270 -nleftarrow;=\u219A -nleftrightarrow;=\u21AE -nleq;=\u2270 -nleqq;=\u2266\u0338 -nleqslant;=\u2A7D\u0338 -nles;=\u2A7D\u0338 -nless;=\u226E -nlsim;=\u2274 -nlt;=\u226E -nltri;=\u22EA -nltrie;=\u22EC -nmid;=\u2224 -nopf;=\uD835\uDD5F -not=\u00AC -not;=\u00AC -notin;=\u2209 -notinE;=\u22F9\u0338 -notindot;=\u22F5\u0338 -notinva;=\u2209 -notinvb;=\u22F7 -notinvc;=\u22F6 -notni;=\u220C -notniva;=\u220C -notnivb;=\u22FE -notnivc;=\u22FD -npar;=\u2226 -nparallel;=\u2226 -nparsl;=\u2AFD\u20E5 -npart;=\u2202\u0338 -npolint;=\u2A14 -npr;=\u2280 -nprcue;=\u22E0 -npre;=\u2AAF\u0338 -nprec;=\u2280 -npreceq;=\u2AAF\u0338 -nrArr;=\u21CF -nrarr;=\u219B -nrarrc;=\u2933\u0338 -nrarrw;=\u219D\u0338 -nrightarrow;=\u219B -nrtri;=\u22EB -nrtrie;=\u22ED -nsc;=\u2281 -nsccue;=\u22E1 -nsce;=\u2AB0\u0338 -nscr;=\uD835\uDCC3 -nshortmid;=\u2224 -nshortparallel;=\u2226 -nsim;=\u2241 -nsime;=\u2244 -nsimeq;=\u2244 -nsmid;=\u2224 -nspar;=\u2226 -nsqsube;=\u22E2 -nsqsupe;=\u22E3 -nsub;=\u2284 -nsubE;=\u2AC5\u0338 -nsube;=\u2288 -nsubset;=\u2282\u20D2 -nsubseteq;=\u2288 -nsubseteqq;=\u2AC5\u0338 -nsucc;=\u2281 -nsucceq;=\u2AB0\u0338 -nsup;=\u2285 -nsupE;=\u2AC6\u0338 -nsupe;=\u2289 -nsupset;=\u2283\u20D2 -nsupseteq;=\u2289 -nsupseteqq;=\u2AC6\u0338 -ntgl;=\u2279 -ntilde=\u00F1 -ntilde;=\u00F1 -ntlg;=\u2278 -ntriangleleft;=\u22EA -ntrianglelefteq;=\u22EC -ntriangleright;=\u22EB -ntrianglerighteq;=\u22ED -nu;=\u03BD -num;=\u0023 -numero;=\u2116 -numsp;=\u2007 -nvDash;=\u22AD -nvHarr;=\u2904 -nvap;=\u224D\u20D2 -nvdash;=\u22AC -nvge;=\u2265\u20D2 -nvgt;=\u003E\u20D2 -nvinfin;=\u29DE -nvlArr;=\u2902 -nvle;=\u2264\u20D2 -nvlt;=\u003C\u20D2 -nvltrie;=\u22B4\u20D2 -nvrArr;=\u2903 -nvrtrie;=\u22B5\u20D2 -nvsim;=\u223C\u20D2 -nwArr;=\u21D6 -nwarhk;=\u2923 -nwarr;=\u2196 -nwarrow;=\u2196 -nwnear;=\u2927 -oS;=\u24C8 -oacute=\u00F3 -oacute;=\u00F3 -oast;=\u229B -ocir;=\u229A -ocirc=\u00F4 -ocirc;=\u00F4 -ocy;=\u043E -odash;=\u229D -odblac;=\u0151 -odiv;=\u2A38 -odot;=\u2299 -odsold;=\u29BC -oelig;=\u0153 -ofcir;=\u29BF -ofr;=\uD835\uDD2C -ogon;=\u02DB -ograve=\u00F2 -ograve;=\u00F2 -ogt;=\u29C1 -ohbar;=\u29B5 -ohm;=\u03A9 -oint;=\u222E -olarr;=\u21BA -olcir;=\u29BE -olcross;=\u29BB -oline;=\u203E -olt;=\u29C0 -omacr;=\u014D -omega;=\u03C9 -omicron;=\u03BF -omid;=\u29B6 -ominus;=\u2296 -oopf;=\uD835\uDD60 -opar;=\u29B7 -operp;=\u29B9 -oplus;=\u2295 -or;=\u2228 -orarr;=\u21BB -ord;=\u2A5D -order;=\u2134 -orderof;=\u2134 -ordf=\u00AA -ordf;=\u00AA -ordm=\u00BA -ordm;=\u00BA -origof;=\u22B6 -oror;=\u2A56 -orslope;=\u2A57 -orv;=\u2A5B -oscr;=\u2134 -oslash=\u00F8 -oslash;=\u00F8 -osol;=\u2298 -otilde=\u00F5 -otilde;=\u00F5 -otimes;=\u2297 -otimesas;=\u2A36 -ouml=\u00F6 -ouml;=\u00F6 -ovbar;=\u233D -par;=\u2225 -para=\u00B6 -para;=\u00B6 -parallel;=\u2225 -parsim;=\u2AF3 -parsl;=\u2AFD -part;=\u2202 -pcy;=\u043F -percnt;=\u0025 -period;=\u002E -permil;=\u2030 -perp;=\u22A5 -pertenk;=\u2031 -pfr;=\uD835\uDD2D -phi;=\u03C6 -phiv;=\u03D5 -phmmat;=\u2133 -phone;=\u260E -pi;=\u03C0 -pitchfork;=\u22D4 -piv;=\u03D6 -planck;=\u210F -planckh;=\u210E -plankv;=\u210F -plus;=\u002B -plusacir;=\u2A23 -plusb;=\u229E -pluscir;=\u2A22 -plusdo;=\u2214 -plusdu;=\u2A25 -pluse;=\u2A72 -plusmn=\u00B1 -plusmn;=\u00B1 -plussim;=\u2A26 -plustwo;=\u2A27 -pm;=\u00B1 -pointint;=\u2A15 -popf;=\uD835\uDD61 -pound=\u00A3 -pound;=\u00A3 -pr;=\u227A -prE;=\u2AB3 -prap;=\u2AB7 -prcue;=\u227C -pre;=\u2AAF -prec;=\u227A -precapprox;=\u2AB7 -preccurlyeq;=\u227C -preceq;=\u2AAF -precnapprox;=\u2AB9 -precneqq;=\u2AB5 -precnsim;=\u22E8 -precsim;=\u227E -prime;=\u2032 -primes;=\u2119 -prnE;=\u2AB5 -prnap;=\u2AB9 -prnsim;=\u22E8 -prod;=\u220F -profalar;=\u232E -profline;=\u2312 -profsurf;=\u2313 -prop;=\u221D -propto;=\u221D -prsim;=\u227E -prurel;=\u22B0 -pscr;=\uD835\uDCC5 -psi;=\u03C8 -puncsp;=\u2008 -qfr;=\uD835\uDD2E -qint;=\u2A0C -qopf;=\uD835\uDD62 -qprime;=\u2057 -qscr;=\uD835\uDCC6 -quaternions;=\u210D -quatint;=\u2A16 -quest;=\u003F -questeq;=\u225F -quot=\u0022 -quot;=\u0022 -rAarr;=\u21DB -rArr;=\u21D2 -rAtail;=\u291C -rBarr;=\u290F -rHar;=\u2964 -race;=\u223D\u0331 -racute;=\u0155 -radic;=\u221A -raemptyv;=\u29B3 -rang;=\u27E9 -rangd;=\u2992 -range;=\u29A5 -rangle;=\u27E9 -raquo=\u00BB -raquo;=\u00BB -rarr;=\u2192 -rarrap;=\u2975 -rarrb;=\u21E5 -rarrbfs;=\u2920 -rarrc;=\u2933 -rarrfs;=\u291E -rarrhk;=\u21AA -rarrlp;=\u21AC -rarrpl;=\u2945 -rarrsim;=\u2974 -rarrtl;=\u21A3 -rarrw;=\u219D -ratail;=\u291A -ratio;=\u2236 -rationals;=\u211A -rbarr;=\u290D -rbbrk;=\u2773 -rbrace;=\u007D -rbrack;=\u005D -rbrke;=\u298C -rbrksld;=\u298E -rbrkslu;=\u2990 -rcaron;=\u0159 -rcedil;=\u0157 -rceil;=\u2309 -rcub;=\u007D -rcy;=\u0440 -rdca;=\u2937 -rdldhar;=\u2969 -rdquo;=\u201D -rdquor;=\u201D -rdsh;=\u21B3 -real;=\u211C -realine;=\u211B -realpart;=\u211C -reals;=\u211D -rect;=\u25AD -reg=\u00AE -reg;=\u00AE -rfisht;=\u297D -rfloor;=\u230B -rfr;=\uD835\uDD2F -rhard;=\u21C1 -rharu;=\u21C0 -rharul;=\u296C -rho;=\u03C1 -rhov;=\u03F1 -rightarrow;=\u2192 -rightarrowtail;=\u21A3 -rightharpoondown;=\u21C1 -rightharpoonup;=\u21C0 -rightleftarrows;=\u21C4 -rightleftharpoons;=\u21CC -rightrightarrows;=\u21C9 -rightsquigarrow;=\u219D -rightthreetimes;=\u22CC -ring;=\u02DA -risingdotseq;=\u2253 -rlarr;=\u21C4 -rlhar;=\u21CC -rlm;=\u200F -rmoust;=\u23B1 -rmoustache;=\u23B1 -rnmid;=\u2AEE -roang;=\u27ED -roarr;=\u21FE -robrk;=\u27E7 -ropar;=\u2986 -ropf;=\uD835\uDD63 -roplus;=\u2A2E -rotimes;=\u2A35 -rpar;=\u0029 -rpargt;=\u2994 -rppolint;=\u2A12 -rrarr;=\u21C9 -rsaquo;=\u203A -rscr;=\uD835\uDCC7 -rsh;=\u21B1 -rsqb;=\u005D -rsquo;=\u2019 -rsquor;=\u2019 -rthree;=\u22CC -rtimes;=\u22CA -rtri;=\u25B9 -rtrie;=\u22B5 -rtrif;=\u25B8 -rtriltri;=\u29CE -ruluhar;=\u2968 -rx;=\u211E -sacute;=\u015B -sbquo;=\u201A -sc;=\u227B -scE;=\u2AB4 -scap;=\u2AB8 -scaron;=\u0161 -sccue;=\u227D -sce;=\u2AB0 -scedil;=\u015F -scirc;=\u015D -scnE;=\u2AB6 -scnap;=\u2ABA -scnsim;=\u22E9 -scpolint;=\u2A13 -scsim;=\u227F -scy;=\u0441 -sdot;=\u22C5 -sdotb;=\u22A1 -sdote;=\u2A66 -seArr;=\u21D8 -searhk;=\u2925 -searr;=\u2198 -searrow;=\u2198 -sect=\u00A7 -sect;=\u00A7 -semi;=\u003B -seswar;=\u2929 -setminus;=\u2216 -setmn;=\u2216 -sext;=\u2736 -sfr;=\uD835\uDD30 -sfrown;=\u2322 -sharp;=\u266F -shchcy;=\u0449 -shcy;=\u0448 -shortmid;=\u2223 -shortparallel;=\u2225 -shy=\u00AD -shy;=\u00AD -sigma;=\u03C3 -sigmaf;=\u03C2 -sigmav;=\u03C2 -sim;=\u223C -simdot;=\u2A6A -sime;=\u2243 -simeq;=\u2243 -simg;=\u2A9E -simgE;=\u2AA0 -siml;=\u2A9D -simlE;=\u2A9F -simne;=\u2246 -simplus;=\u2A24 -simrarr;=\u2972 -slarr;=\u2190 -smallsetminus;=\u2216 -smashp;=\u2A33 -smeparsl;=\u29E4 -smid;=\u2223 -smile;=\u2323 -smt;=\u2AAA -smte;=\u2AAC -smtes;=\u2AAC\uFE00 -softcy;=\u044C -sol;=\u002F -solb;=\u29C4 -solbar;=\u233F -sopf;=\uD835\uDD64 -spades;=\u2660 -spadesuit;=\u2660 -spar;=\u2225 -sqcap;=\u2293 -sqcaps;=\u2293\uFE00 -sqcup;=\u2294 -sqcups;=\u2294\uFE00 -sqsub;=\u228F -sqsube;=\u2291 -sqsubset;=\u228F -sqsubseteq;=\u2291 -sqsup;=\u2290 -sqsupe;=\u2292 -sqsupset;=\u2290 -sqsupseteq;=\u2292 -squ;=\u25A1 -square;=\u25A1 -squarf;=\u25AA -squf;=\u25AA -srarr;=\u2192 -sscr;=\uD835\uDCC8 -ssetmn;=\u2216 -ssmile;=\u2323 -sstarf;=\u22C6 -star;=\u2606 -starf;=\u2605 -straightepsilon;=\u03F5 -straightphi;=\u03D5 -strns;=\u00AF -sub;=\u2282 -subE;=\u2AC5 -subdot;=\u2ABD -sube;=\u2286 -subedot;=\u2AC3 -submult;=\u2AC1 -subnE;=\u2ACB -subne;=\u228A -subplus;=\u2ABF -subrarr;=\u2979 -subset;=\u2282 -subseteq;=\u2286 -subseteqq;=\u2AC5 -subsetneq;=\u228A -subsetneqq;=\u2ACB -subsim;=\u2AC7 -subsub;=\u2AD5 -subsup;=\u2AD3 -succ;=\u227B -succapprox;=\u2AB8 -succcurlyeq;=\u227D -succeq;=\u2AB0 -succnapprox;=\u2ABA -succneqq;=\u2AB6 -succnsim;=\u22E9 -succsim;=\u227F -sum;=\u2211 -sung;=\u266A -sup1=\u00B9 -sup1;=\u00B9 -sup2=\u00B2 -sup2;=\u00B2 -sup3=\u00B3 -sup3;=\u00B3 -sup;=\u2283 -supE;=\u2AC6 -supdot;=\u2ABE -supdsub;=\u2AD8 -supe;=\u2287 -supedot;=\u2AC4 -suphsol;=\u27C9 -suphsub;=\u2AD7 -suplarr;=\u297B -supmult;=\u2AC2 -supnE;=\u2ACC -supne;=\u228B -supplus;=\u2AC0 -supset;=\u2283 -supseteq;=\u2287 -supseteqq;=\u2AC6 -supsetneq;=\u228B -supsetneqq;=\u2ACC -supsim;=\u2AC8 -supsub;=\u2AD4 -supsup;=\u2AD6 -swArr;=\u21D9 -swarhk;=\u2926 -swarr;=\u2199 -swarrow;=\u2199 -swnwar;=\u292A -szlig=\u00DF -szlig;=\u00DF -target;=\u2316 -tau;=\u03C4 -tbrk;=\u23B4 -tcaron;=\u0165 -tcedil;=\u0163 -tcy;=\u0442 -tdot;=\u20DB -telrec;=\u2315 -tfr;=\uD835\uDD31 -there4;=\u2234 -therefore;=\u2234 -theta;=\u03B8 -thetasym;=\u03D1 -thetav;=\u03D1 -thickapprox;=\u2248 -thicksim;=\u223C -thinsp;=\u2009 -thkap;=\u2248 -thksim;=\u223C -thorn=\u00FE -thorn;=\u00FE -tilde;=\u02DC -times=\u00D7 -times;=\u00D7 -timesb;=\u22A0 -timesbar;=\u2A31 -timesd;=\u2A30 -tint;=\u222D -toea;=\u2928 -top;=\u22A4 -topbot;=\u2336 -topcir;=\u2AF1 -topf;=\uD835\uDD65 -topfork;=\u2ADA -tosa;=\u2929 -tprime;=\u2034 -trade;=\u2122 -triangle;=\u25B5 -triangledown;=\u25BF -triangleleft;=\u25C3 -trianglelefteq;=\u22B4 -triangleq;=\u225C -triangleright;=\u25B9 -trianglerighteq;=\u22B5 -tridot;=\u25EC -trie;=\u225C -triminus;=\u2A3A -triplus;=\u2A39 -trisb;=\u29CD -tritime;=\u2A3B -trpezium;=\u23E2 -tscr;=\uD835\uDCC9 -tscy;=\u0446 -tshcy;=\u045B -tstrok;=\u0167 -twixt;=\u226C -twoheadleftarrow;=\u219E -twoheadrightarrow;=\u21A0 -uArr;=\u21D1 -uHar;=\u2963 -uacute=\u00FA -uacute;=\u00FA -uarr;=\u2191 -ubrcy;=\u045E -ubreve;=\u016D -ucirc=\u00FB -ucirc;=\u00FB -ucy;=\u0443 -udarr;=\u21C5 -udblac;=\u0171 -udhar;=\u296E -ufisht;=\u297E -ufr;=\uD835\uDD32 -ugrave=\u00F9 -ugrave;=\u00F9 -uharl;=\u21BF -uharr;=\u21BE -uhblk;=\u2580 -ulcorn;=\u231C -ulcorner;=\u231C -ulcrop;=\u230F -ultri;=\u25F8 -umacr;=\u016B -uml=\u00A8 -uml;=\u00A8 -uogon;=\u0173 -uopf;=\uD835\uDD66 -uparrow;=\u2191 -updownarrow;=\u2195 -upharpoonleft;=\u21BF -upharpoonright;=\u21BE -uplus;=\u228E -upsi;=\u03C5 -upsih;=\u03D2 -upsilon;=\u03C5 -upuparrows;=\u21C8 -urcorn;=\u231D -urcorner;=\u231D -urcrop;=\u230E -uring;=\u016F -urtri;=\u25F9 -uscr;=\uD835\uDCCA -utdot;=\u22F0 -utilde;=\u0169 -utri;=\u25B5 -utrif;=\u25B4 -uuarr;=\u21C8 -uuml=\u00FC -uuml;=\u00FC -uwangle;=\u29A7 -vArr;=\u21D5 -vBar;=\u2AE8 -vBarv;=\u2AE9 -vDash;=\u22A8 -vangrt;=\u299C -varepsilon;=\u03F5 -varkappa;=\u03F0 -varnothing;=\u2205 -varphi;=\u03D5 -varpi;=\u03D6 -varpropto;=\u221D -varr;=\u2195 -varrho;=\u03F1 -varsigma;=\u03C2 -varsubsetneq;=\u228A\uFE00 -varsubsetneqq;=\u2ACB\uFE00 -varsupsetneq;=\u228B\uFE00 -varsupsetneqq;=\u2ACC\uFE00 -vartheta;=\u03D1 -vartriangleleft;=\u22B2 -vartriangleright;=\u22B3 -vcy;=\u0432 -vdash;=\u22A2 -vee;=\u2228 -veebar;=\u22BB -veeeq;=\u225A -vellip;=\u22EE -verbar;=\u007C -vert;=\u007C -vfr;=\uD835\uDD33 -vltri;=\u22B2 -vnsub;=\u2282\u20D2 -vnsup;=\u2283\u20D2 -vopf;=\uD835\uDD67 -vprop;=\u221D -vrtri;=\u22B3 -vscr;=\uD835\uDCCB -vsubnE;=\u2ACB\uFE00 -vsubne;=\u228A\uFE00 -vsupnE;=\u2ACC\uFE00 -vsupne;=\u228B\uFE00 -vzigzag;=\u299A -wcirc;=\u0175 -wedbar;=\u2A5F -wedge;=\u2227 -wedgeq;=\u2259 -weierp;=\u2118 -wfr;=\uD835\uDD34 -wopf;=\uD835\uDD68 -wp;=\u2118 -wr;=\u2240 -wreath;=\u2240 -wscr;=\uD835\uDCCC -xcap;=\u22C2 -xcirc;=\u25EF -xcup;=\u22C3 -xdtri;=\u25BD -xfr;=\uD835\uDD35 -xhArr;=\u27FA -xharr;=\u27F7 -xi;=\u03BE -xlArr;=\u27F8 -xlarr;=\u27F5 -xmap;=\u27FC -xnis;=\u22FB -xodot;=\u2A00 -xopf;=\uD835\uDD69 -xoplus;=\u2A01 -xotime;=\u2A02 -xrArr;=\u27F9 -xrarr;=\u27F6 -xscr;=\uD835\uDCCD -xsqcup;=\u2A06 -xuplus;=\u2A04 -xutri;=\u25B3 -xvee;=\u22C1 -xwedge;=\u22C0 -yacute=\u00FD -yacute;=\u00FD -yacy;=\u044F -ycirc;=\u0177 -ycy;=\u044B -yen=\u00A5 -yen;=\u00A5 -yfr;=\uD835\uDD36 -yicy;=\u0457 -yopf;=\uD835\uDD6A -yscr;=\uD835\uDCCE -yucy;=\u044E -yuml=\u00FF -yuml;=\u00FF -zacute;=\u017A -zcaron;=\u017E -zcy;=\u0437 -zdot;=\u017C -zeetrf;=\u2128 -zeta;=\u03B6 -zfr;=\uD835\uDD37 -zhcy;=\u0436 -zigrarr;=\u21DD -zopf;=\uD835\uDD6B -zscr;=\uD835\uDCCF -zwj;=\u200D -zwnj;=\u200C \ No newline at end of file diff --git a/benchmark/src/main/java/org/htmlunit/cyberneko/html_entities_common.properties b/benchmark/src/main/java/org/htmlunit/cyberneko/html_entities_common.properties deleted file mode 100644 index 92167179..00000000 --- a/benchmark/src/main/java/org/htmlunit/cyberneko/html_entities_common.properties +++ /dev/null @@ -1,8 +0,0 @@ -amp;=\u0026 -nbsp;=\u00A0 -shy;=\u00AD -lt;=\u003C -gt;=\u003E -euro;=\u20AC -copy;=\u00A9 -reg;=\u00AE \ No newline at end of file diff --git a/benchmark/src/main/java/org/htmlunit/cyberneko/util/HTMLEntitiesParser.java b/benchmark/src/main/java/org/htmlunit/cyberneko/util/HTMLEntitiesParser.java deleted file mode 100644 index 761a56bb..00000000 --- a/benchmark/src/main/java/org/htmlunit/cyberneko/util/HTMLEntitiesParser.java +++ /dev/null @@ -1,342 +0,0 @@ -/* - * Copyright 2002-2009 Andy Clark, Marc Guillemot - * Copyright 2017-2023 Ronald Brill - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.htmlunit.cyberneko.util; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Arrays; -import java.util.Properties; - -/** - * This is a very specialized class for storing HTML entities with the ability - * to look them up in stages. It is stateless and hence it use is memory friendly. - * Additionally, it is not generated code rather it sets itself up from a file at - * first use and stays fixed from now on. - * - * Because it is stateless, it delegates the state handling to the user in the - * sense of how many characters one saw and when to stop doing things. - * - * - * - * @author René Schwietzke - */ -public class HTMLEntitiesParser -{ - // These are some benchmark results of a comparison old vs. new parser. onlyCommon is a test with just 7 out of - // 2231 entities (most common such as lt gt and more). Random means, we are not feeding the parser the data - // the test data in the same order, but vary them. - // - // As you can see, the new parser is up to 20x faster for common entities and 8x faster when checking all. - // - // Benchmark (onlyCommon) (random) Mode Cnt Score Error Units - // HtmlEntitiesParserBenchmark.newParser4 true true avgt 3 135.647 ± 13.500 ns/op - // HtmlEntitiesParserBenchmark.newParser4 true false avgt 3 132.972 ± 4.807 ns/op - // HtmlEntitiesParserBenchmark.newParser4 false true avgt 3 240162.769 ± 3538.438 ns/op - // HtmlEntitiesParserBenchmark.newParser4 false false avgt 3 206904.535 ± 53584.038 ns/op - // HtmlEntitiesParserBenchmark.oldParser true true avgt 3 3320.223 ± 178.501 ns/op - // HtmlEntitiesParserBenchmark.oldParser true false avgt 3 3097.086 ± 48.238 ns/op - // HtmlEntitiesParserBenchmark.oldParser false true avgt 3 1584678.257 ± 65965.438 ns/op - // HtmlEntitiesParserBenchmark.oldParser false false avgt 3 1604853.180 ± 73638.435 ns/op - - /* - * Our single instance of the parser - */ - private final static HTMLEntitiesParser instance = new HTMLEntitiesParser(); - - /* - * Our starting point of the pseudo tree of entities. The root level is a little special, because of the size - * it employs a different lookup on the characters (calculation rather comparison). - */ - private RootLevel rootLevel = new RootLevel(); - - /** - * Constructor - */ - private HTMLEntitiesParser() - { - // read the entities defined in the data taken from - try (InputStream stream = HTMLEntitiesParser.class.getResourceAsStream("html_entities.properties")) - { - final Properties props = new Properties(); - props.load(stream); - - props.forEach((k, v) -> { - String key = (String) k; - String value = (String) v; - - // we might have an empty line in it - if (key.isEmpty()) { - return; - } - - this.rootLevel.add(key, value); - }); - - // make the root more efficient, rest stays simple - this.rootLevel.optimize(); - } - catch (IOException e) - { - throw new RuntimeException("Unable to initilaize the HTML entities from file"); - } - } - - /** - * Returns the singleton. The singleton is stateless and can safely be used in a multi-threaded - * context. The - */ - public static HTMLEntitiesParser get() - { - return instance; - } - - public Level lookup(final String entityName) - { - Level lastResult = this.rootLevel; - Level lastMatchingResult = null; - - for (int i = 0; i < entityName.length(); i++) - { - Level result = lastResult.lookup(entityName.charAt(i)); - - if (result.endNode) - { - return result; - } - if (result == lastResult) - { - // nothing changed, more characters have not done anything - return lastMatchingResult == null ? lastResult : lastMatchingResult; - } - if (result.isMatch) - { - lastMatchingResult = result; - } - lastResult = result; - } - - return lastMatchingResult == null ? lastResult : lastMatchingResult; - } - - public Level lookup(final int character, final Level level) - { - return level != null ? level.lookup(character) : rootLevel.lookup(character); - } - - public static class RootLevel extends Level - { - private int offset = 0; - - @Override - public Level lookup(int character) - { - // fastpath, just calculate the pos - final int pos = character - offset; - if (pos >=0 && pos < this.nextLevel.length) - { - return this.nextLevel[pos]; - } - else - { - return this; - } - } - - /* - * Optimizes the layout after creation but not for every level - */ - protected void optimize() - { - // are we final already? - if (offset > 0) - { - return; - } - - // ok, smallest char is the start - this.offset = this.characters[0]; - - // get us new level array covering the smallest char in [0] and the largest in the last pos, - // we might have holes, but not too many, hence this is faster than iterating or a binary search - final Level[] newNextLevel = new Level[this.characters[this.characters.length - 1] - offset + 1]; - - // arrange entry according to charactercode - for (int i = 0; i < this.characters.length; i++) - { - final int c = this.characters[i]; - final Level level = this.nextLevel[i]; - - newNextLevel[c - offset] = level; - } - - // take it live - this.nextLevel = newNextLevel; - // free memory, because we not longer need that - this.characters = null; - } - - } - - public static class Level - { - private final int depth; - int[] characters = new int[0]; - Level[] nextLevel = new Level[0]; - - public final String entityOrFragment; - public String resolvedValue; - public final int length; - public final boolean endsWithSemicolon; - public boolean isMatch; - public boolean endNode; - - public Level() - { - this.entityOrFragment = ""; - this.length = 0; - this.depth = 0; - this.endsWithSemicolon = false; - this.isMatch = false; - this.resolvedValue = null; - this.endNode = false; - } - - public Level(final int depth, final String entityFragment, final String resolvedValue) - { - if (depth == entityFragment.length()) - { - // we are at the end - this.entityOrFragment = entityFragment; - this.length = entityFragment.length(); - this.depth = entityFragment.length(); - this.endsWithSemicolon = entityFragment.endsWith(";"); - this.isMatch = true; - this.resolvedValue = resolvedValue; - this.endNode = entityFragment.endsWith(";"); - } - else - { - // intermediate state - final String currentFragment = entityFragment.substring(0, depth); - - this.entityOrFragment = currentFragment; - this.length = currentFragment.length(); - this.depth = depth; - this.endsWithSemicolon = false; - this.isMatch = false; - this.resolvedValue = null; - this.endNode = false; - } - } - - - public void updateNonSemicolonEntity(final String entity, final String resolvedValue) - { - if (entity.endsWith(";")) - { - // nothing to do - return; - } - if (entity.length() == this.depth) - { - // safety check - if (!entity.equals(this.entityOrFragment)) - { - throw new RuntimeException("Illegal state reached"); - } - - this.isMatch = true; - this.resolvedValue = resolvedValue; - } - } - - public void add(final String entity, final String resolvedValue) - { - // ok, any characters left? - if (this.depth >= entity.length()) - { - // no reason to go any further - return; - } - - // get me my character - final char c = entity.charAt(this.depth); - - // do I already know it? - final int pos = Arrays.binarySearch(characters, c); - - if (pos < 0) - { - // we don't know it, make the size bigger and get us the new pos - this.nextLevel = Arrays.copyOf(this.nextLevel, this.nextLevel.length + 1); - this.characters = Arrays.copyOf(this.characters, this.characters.length + 1); - final int newPos = -(pos + 1); - - // move stuff first - if (newPos != this.characters.length - 1) - { - System.arraycopy(this.characters, newPos, this.characters, newPos + 1, this.characters.length - newPos - 1); - System.arraycopy(this.nextLevel, newPos, this.nextLevel, newPos + 1, this.nextLevel.length - newPos - 1); - } - else - { - // we insert at the end, so no move needed - } - final Level newLevel = new Level(this.depth + 1, entity, resolvedValue); - this.characters[newPos] = c; - this.nextLevel[newPos] = newLevel; - - // update next level - newLevel.add(entity, resolvedValue); - } - else - { - // ok, if this one is without a ; and we have the full entity, we - // have a mismatch between one with and one without ; - // change the level - this.nextLevel[pos].updateNonSemicolonEntity(entity, resolvedValue); - this.nextLevel[pos].add(entity, resolvedValue); - } - } - - public Level lookup(int character) - { - // because we have sorted arrays, we can be more efficient here - final int length = this.characters.length; - for (int i = 0; i < length; i++) - { - final int c = this.characters[i]; - if (c < character) - { - continue; - } - if (c == character) - { - // we are at position - return this.nextLevel[i]; - } - else - { - // ok, too far and have not found it, abort with current state - return this; - } - } - - return this; - } - } - -} diff --git a/benchmark/src/main/java/org/htmlunit/cyberneko/util/HTMLNumericEntitiesParser.java b/benchmark/src/main/java/org/htmlunit/cyberneko/util/HTMLNumericEntitiesParser.java deleted file mode 100644 index 9c16252c..00000000 --- a/benchmark/src/main/java/org/htmlunit/cyberneko/util/HTMLNumericEntitiesParser.java +++ /dev/null @@ -1,283 +0,0 @@ -/* - * Copyright 2002-2009 Andy Clark, Marc Guillemot - * Copyright 2017-2023 Ronald Brill - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.htmlunit.cyberneko.util; - -/** - * Parser for the Pre-defined named HTML entities. - * 12.2.5.72 Character reference state - *

- * From the spec:
- * Consume the maximum number of characters possible, with the consumed characters matching - * one of the identifiers in the first column of the named character references table - * (in a case-sensitive manner). - * Append each character to the temporary buffer when it's consumed. - * - * @author Ronald Brill - */ -public class HTMLNumericEntitiesParser { - public static final int STATE_START = 0; - private static final int STATE_ENDS_WITH_SEMICOLON = -2; - - private static final int STATE_HEXADECIMAL_CHAR = -102; - private static final int STATE_DECIMAL_CHAR = -104; - - private static final int STATE_NUMERIC_CHAR_END_SEMICOLON_MISSING = -105; - - private int state; - private int consumedCount; - private String match; - private int code; - private int matchLength; - - public String getMatch() { - return match; - } - - public int getMatchLength() { - return matchLength; - } - - public int getRewindCount() { - return consumedCount - matchLength; - } - - public boolean endsWithSemicolon() { - return STATE_ENDS_WITH_SEMICOLON == state; - } - - public HTMLNumericEntitiesParser() { - state = STATE_START; - } - - public void setMatchFromCode() { - // If the number is 0x00, then this is a null-character-reference parse error. Set the character reference code to 0xFFFD. - // If the number is greater than 0x10FFFF, then this is a character-reference-outside-unicode-range parse error. Set the character reference code to 0xFFFD. - if ((0x00 == code) || (code > 0x10FFFF)) { - match = "\uFFFD"; - matchLength = consumedCount; - return; - } - - // If the number is a surrogate, then this is a surrogate-character-reference parse error. Set the character reference code to 0xFFFD - if (Character.isSurrogate((char) code)) { - match = "\uFFFD"; - return; - } - - // If the number is a noncharacter, then this is a noncharacter-character-reference parse error. - - // If the number is 0x0D, or a control that's not ASCII whitespace, then this is a control-character-reference parse error. - - // If the number is one of the numbers in the first column of the following table, then find the row with that number in the first column, - // and set the character reference code to the number in the second column of that row. - switch (code) { - case 0x80: - match = "\u20AC"; - matchLength = consumedCount; - return; - - case 0x82: - match = "\u201A"; - matchLength = consumedCount; - return; - - case 0x83: - match = "\u0192"; - matchLength = consumedCount; - return; - - case 0x84: - match = "\u201E"; - matchLength = consumedCount; - return; - - case 0x85: - match = "\u2026"; - matchLength = consumedCount; - return; - - case 0x86: - match = "\u2020"; - matchLength = consumedCount; - return; - - case 0x87: - match = "\u2021"; - matchLength = consumedCount; - return; - - case 0x88: - match = "\u02C6"; - matchLength = consumedCount; - return; - - case 0x89: - match = "\u2030"; - matchLength = consumedCount; - return; - - case 0x8A: - match = "\u0160"; - matchLength = consumedCount; - return; - - case 0x8B: - match = "\u2039"; - matchLength = consumedCount; - return; - - case 0x8C: - match = "\u0152"; - matchLength = consumedCount; - return; - - case 0x8E: - match = "\u017D"; - matchLength = consumedCount; - return; - - case 0x91: - match = "\u2018"; - matchLength = consumedCount; - return; - - case 0x92: - match = "\u2019"; - matchLength = consumedCount; - return; - - case 0x93: - match = "\u201C"; - matchLength = consumedCount; - return; - - case 0x94: - match = "\u201D"; - matchLength = consumedCount; - return; - - case 0x95: - match = "\u2022"; - matchLength = consumedCount; - return; - - case 0x96: - match = "\u2013"; - matchLength = consumedCount; - return; - - case 0x97: - match = "\u2014"; - matchLength = consumedCount; - return; - - case 0x98: - match = "\u20DC"; - matchLength = consumedCount; - return; - - case 0x99: - match = "\u2122"; - matchLength = consumedCount; - return; - - case 0x9A: - match = "\u0161"; - matchLength = consumedCount; - return; - - case 0x9B: - match = "\u203A"; - matchLength = consumedCount; - return; - - case 0x9C: - match = "\u0153"; - matchLength = consumedCount; - return; - - case 0x9E: - match = "\u017E"; - matchLength = consumedCount; - return; - - case 0x9F: - match = "\u0178"; - matchLength = consumedCount; - return; - - default: - break; - } - match = new String(Character.toChars(code)); - matchLength = consumedCount; - } - - public boolean parseNumeric(final int current) { - consumedCount++; - switch (state) { - case STATE_START: - if ('X' == current || 'x' == current) { - state = STATE_HEXADECIMAL_CHAR; - return true; - } - if ('0' <= current && current <= '9') { - state = STATE_DECIMAL_CHAR; - code = (code * 10) + current - 0x30; - return true; - } - break; - case STATE_HEXADECIMAL_CHAR: - if ('0' <= current && current <= '9') { - code = (code * 16) + current - 0x30; - return true; - } - if ('A' <= current && current <= 'F') { - code = (code * 16) + current - 0x37; - return true; - } - if ('a' <= current && current <= 'f') { - code = (code * 16) + current - 0x57; - return true; - } - if (';' == current) { - setMatchFromCode(); - return false; - } - - state = STATE_NUMERIC_CHAR_END_SEMICOLON_MISSING; - setMatchFromCode(); - matchLength = consumedCount - 1; - break; - case STATE_DECIMAL_CHAR: - if ('0' <= current && current <= '9') { - code = (code * 10) + current - 0x30; - return true; - } - if (';' == current) { - setMatchFromCode(); - return false; - } - - state = STATE_NUMERIC_CHAR_END_SEMICOLON_MISSING; - setMatchFromCode(); - matchLength = consumedCount - 1; - break; - } - return false; - } - -} diff --git a/benchmark/src/main/java/org/htmlunit/cyberneko/util/HtmlEntities1.java b/benchmark/src/main/java/org/htmlunit/cyberneko/util/HtmlEntities1.java deleted file mode 100644 index 97a73972..00000000 --- a/benchmark/src/main/java/org/htmlunit/cyberneko/util/HtmlEntities1.java +++ /dev/null @@ -1,297 +0,0 @@ -package org.htmlunit.cyberneko.util; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Arrays; -import java.util.Optional; -import java.util.Properties; - -import org.htmlunit.cyberneko.HtmlEntitiesParserBenchmark; - -/** - * This is a very specialized tree class for storing HTML entities - * with the ability to look them up in stages. It is driven by an - * char (presented as int) and results in finding a String result at - * the end. We return the last tree node as result, so we can keep - * that as state for the next iterations. The tree itself does not - * keep an active state when being used. - */ -public class HtmlEntities1 -{ - private final static HtmlEntities1 instance = new HtmlEntities1(); - - private String[] entities = new String[0]; - private ValueNode[] values = new ValueNode[0]; - - /** - * Constructor - */ - private HtmlEntities1() - { - // read the entities defined in the data taken from - try (InputStream stream = HtmlEntitiesParserBenchmark.class.getResourceAsStream("html_entities.properties")) - { - final Properties props = new Properties(); - props.load(stream); - - props.forEach((k, v) -> { - String key = (String) k; - String value = (String) v; - - // we might have an empty line in it - if (key.isEmpty()) { - return; - } - - this.add(key, value); - }); - - // enumerate all - this.enumerate(); - } - catch (IOException e) - { - throw new RuntimeException("Unable to initilaize the HTML entities from file"); - } - } - - /** - * Returns the singleton. The singleton is stateless and can safely be used in a multi-threaded - * context. The - */ - public static HtmlEntities1 get() - { - return instance; - } - - /** - * Returns the intermediate state as position in the data set - * Returns >= 0 if still matching, -1 if no match or no match - * anymore. You can use the last positive number to retrieve - * the last valid result. - * - * @param - * @param - * @return - */ - public ValueNode lookup(final String entityName, int previousStep) - { - if (entityName.length() <= 2) - { - int low = previousStep; - int high = this.entities.length - 1; - - while (low <= high) { - int mid = (low + high) >>> 1; - String midVal = this.entities[mid]; - int cmp = midVal.compareTo(entityName); - - if (cmp < 0) { - low = mid + 1; - } - else if (cmp > 0) { - high = mid - 1; - } - else { - return this.values[mid]; // key found - } - } - } - else - { - for (int i = previousStep + 1; i < this.entities.length; i++) - { - final int r = this.entities[i].compareTo(entityName); - if (r < 0) - { - continue; - } - - if (r == 0) - { - return this.values[i]; - } - else if (r > 0) - { - return null; - } - } - } - - return null; - } - - /** - * Allows to directly lookup an entity without going the incrementally. - * We go the Java 8 way and avoid null here. With Valhalla, this will become - * memory efficient, up to that point, we might use this for testing only - * I guess. - * - * @param entityName - * @return - */ - public Optional lookup(final String entityName) - { - final int pos = Arrays.binarySearch(this.entities, entityName); - if (pos >= 0) - { - return Optional.ofNullable(this.values[pos].resolvedValue); - } - else - { - return Optional.empty(); - } - } - - public ValueNode lookup(final int pos) - { - return this.values[pos]; - } - - private void add(ValueNode node) - { - // find position - final int pos = Arrays.binarySearch(this.entities, node.entity); - if (pos >= 0) - { - // when this is a non match but we need a mtch to store, overridde - // this covers things like a valid "gt" and a later valid "gt;" - if (node.isMatch() && !this.values[pos].isMatch()) - { - this.values[pos] = node; - } - return; - } - - // we assume clean data such as that we don't have things twice - // increase data size - this.entities = Arrays.copyOf(this.entities, this.entities.length + 1); - this.values = Arrays.copyOf(this.values, this.values.length + 1); - - // move all to the right - final int p = -(pos + 1); - if (p < this.entities.length - 1) - { - System.arraycopy(this.entities, p, this.entities, p + 1, this.entities.length - p - 1); - System.arraycopy(this.values, p, this.values, p + 1, this.values.length - p - 1); - } - - this.entities[p] = node.entity; - this.values[p] = node;; - } - - private void add(final String entityName, final String resolvedValue) - { - for (int i = 1; i < entityName.length(); i++) - { - String s = entityName.substring(0, i); - add(new ValueNode(s)); - } - add(new ValueNode(entityName, resolvedValue)); - } - - private void enumerate() - { - for (int i = 0; i < this.values.length; i++) - { - this.values[i].position = i; - } - } - - public static class Resolver - { - private int consumedCount; - private ValueNode state = ValueNode.EMPTY; - private StringBuilder data = new StringBuilder(8); - - public void reset() - { - this.consumedCount = 0; - this.state = ValueNode.EMPTY; - this.data.delete(0, this.data.length()); - } - - public String getResolvedValue() - { - return state.resolvedValue; - } - - public int getMatchLength() - { - return state.length; - } - - public int getRewindCount() - { - return consumedCount - getMatchLength(); - } - - public boolean endsWithSemicolon() - { - return state.endsWithSemicolon; - } - - public boolean parse(final int character) - { - this.consumedCount++; - this.data.append((char) character); - - ValueNode newState = HtmlEntities1.get().lookup(data.toString(), state.position); - - if (newState == null) - { - return false; - } - else - { - this.state = newState; - return true; - } - } - } - - public static class ValueNode - { - public static ValueNode EMPTY = new ValueNode(""); - - public int position; - public String entity; - public String resolvedValue; - public int length; - public boolean endsWithSemicolon; - public boolean isMatch; - - public ValueNode(final String entity) - { - this.entity = entity; - this.resolvedValue = null; - this.length = entity.length(); - this.endsWithSemicolon = false; - this.isMatch = false; - } - - public ValueNode(final String entity, final String resolvedValue) - { - this.entity = entity; - this.resolvedValue = resolvedValue; - this.length = entity.length(); - this.endsWithSemicolon = entity.endsWith(";"); - this.isMatch = true; - } - - public boolean isMatch() - { - return this.isMatch; - } - - public String matched() - { - return this.entity; - } - - public String resolvedTo() - { - return resolvedValue; - } - } -} diff --git a/benchmark/src/main/java/org/htmlunit/cyberneko/util/HtmlEntities2.java b/benchmark/src/main/java/org/htmlunit/cyberneko/util/HtmlEntities2.java deleted file mode 100644 index 24561ac0..00000000 --- a/benchmark/src/main/java/org/htmlunit/cyberneko/util/HtmlEntities2.java +++ /dev/null @@ -1,227 +0,0 @@ -package org.htmlunit.cyberneko.util; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Arrays; -import java.util.Optional; -import java.util.Properties; - -import javax.management.RuntimeErrorException; - -import org.htmlunit.cyberneko.HtmlEntitiesParserBenchmark; - -/** - * This is a very specialized tree class for storing HTML entities - * with the ability to look them up in stages. It is driven by an - * char (presented as int) and results in finding a String result at - * the end. We return the last tree node as result, so we can keep - * that as state for the next iterations. The tree itself does not - * keep an active state when being used. - */ -public class HtmlEntities2 -{ - private final static HtmlEntities2 instance = new HtmlEntities2(); - - private Level rootLevel = new Level(); - - /** - * Constructor - */ - private HtmlEntities2() - { - // read the entities defined in the data taken from - try (InputStream stream = HtmlEntitiesParserBenchmark.class.getResourceAsStream("html_entities.properties")) - { - final Properties props = new Properties(); - props.load(stream); - - props.forEach((k, v) -> { - String key = (String) k; - String value = (String) v; - - // we might have an empty line in it - if (key.isEmpty()) { - return; - } - - this.rootLevel.add(key, value); - }); - } - catch (IOException e) - { - throw new RuntimeException("Unable to initilaize the HTML entities from file"); - } - } - - /** - * Returns the singleton. The singleton is stateless and can safely be used in a multi-threaded - * context. The - */ - public static HtmlEntities2 get() - { - return instance; - } - - public Optional lookup(final String entityName) - { - Level lastResult = this.rootLevel; - for (int i = 0; i < entityName.length(); i++) - { - Level result = lastResult.lookup(entityName.charAt(i)); - - if (result.endNode) - { - lastResult = result; - break; - } - if (result == lastResult) - { - // nothing changed, more characters have not done anything - break; - } - lastResult = result; - } - - return Optional.of(lastResult); - } - - public Level lookup(final int character, final Level level) - { - return level != null ? level.lookup(character) : rootLevel.lookup(character); - } - - public static class Level - { - private final int depth; - private int[] characters = new int[0]; - private Level[] nextLevel = new Level[0]; - - public final String entityOrFragment; - public String resolvedValue; - public final int length; - public final boolean endsWithSemicolon; - public boolean isMatch; - public boolean endNode; - - public Level() - { - this.entityOrFragment = ""; - this.length = 0; - this.depth = 0; - this.endsWithSemicolon = false; - this.isMatch = false; - this.resolvedValue = null; - this.endNode = false; - } - - public Level(final int depth, final String entityFragment, final String resolvedValue) - { - if (depth == entityFragment.length()) - { - // we are at the end - this.entityOrFragment = entityFragment; - this.length = entityFragment.length(); - this.depth = entityFragment.length(); - this.endsWithSemicolon = entityFragment.endsWith(";"); - this.isMatch = true; - this.resolvedValue = resolvedValue; - this.endNode = entityFragment.endsWith(";"); - } - else - { - // intermediate state - final String currentFragment = entityFragment.substring(0, depth); - - this.entityOrFragment = currentFragment; - this.length = currentFragment.length(); - this.depth = depth; - this.endsWithSemicolon = false; - this.isMatch = false; - this.resolvedValue = null; - this.endNode = false; - } - } - - public void updateNonSemicolonEntity(final String entity, final String resolvedValue) - { - if (entity.endsWith(";")) - { - // nothing to do - return; - } - if (entity.length() == this.depth) - { - // safety check - if (!entity.equals(this.entityOrFragment)) - { - throw new RuntimeException("Illegal state reached"); - } - - this.isMatch = true; - this.resolvedValue = resolvedValue; - } - } - - public void add(final String entity, final String resolvedValue) - { - // ok, any characters left? - if (this.depth >= entity.length()) - { - // no reason to go any further - return; - } - - // get me my character - final char c = entity.charAt(this.depth); - final boolean finalChar = entity.length() - 1 == this.depth; - - // do I already know it? - int pos = 0; - boolean found = false; - for (; pos < characters.length; pos++) - { - if (characters[pos] == c) - { - found = true; - break; - } - } - - if (!found) - { - // we don't know it, make the size bigger and get us the new pos - this.nextLevel = Arrays.copyOf(this.nextLevel, this.nextLevel.length + 1); - this.characters = Arrays.copyOf(this.characters, this.characters.length + 1); - pos = this.characters.length - 1; - - this.characters[pos] = c; - this.nextLevel[pos] = new Level(this.depth + 1, entity, resolvedValue); - - // update next level - this.nextLevel[pos].add(entity, resolvedValue); - } - else - { - // ok, if this one is without a ; and we have the full entity, we - // have a mismatch between one with and one without ; - // change the level - this.nextLevel[pos].updateNonSemicolonEntity(entity, resolvedValue); - this.nextLevel[pos].add(entity, resolvedValue); - } - } - - public Level lookup(int character) - { - for (int i = 0; i < this.characters.length; i++) - { - if (this.characters[i] == character) - { - return this.nextLevel[i]; - } - } - - return this; - } - } - -} diff --git a/benchmark/src/main/java/org/htmlunit/cyberneko/util/HtmlEntities3.java b/benchmark/src/main/java/org/htmlunit/cyberneko/util/HtmlEntities3.java deleted file mode 100644 index af1f9d63..00000000 --- a/benchmark/src/main/java/org/htmlunit/cyberneko/util/HtmlEntities3.java +++ /dev/null @@ -1,240 +0,0 @@ -package org.htmlunit.cyberneko.util; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Arrays; -import java.util.Optional; -import java.util.Properties; - -import javax.management.RuntimeErrorException; - -import org.htmlunit.cyberneko.HtmlEntitiesParserBenchmark; - -/** - * This is a very specialized tree class for storing HTML entities - * with the ability to look them up in stages. It is driven by an - * char (presented as int) and results in finding a String result at - * the end. We return the last tree node as result, so we can keep - * that as state for the next iterations. The tree itself does not - * keep an active state when being used. - */ -public class HtmlEntities3 -{ - private final static HtmlEntities3 instance = new HtmlEntities3(); - - private Level rootLevel = new Level(); - - /** - * Constructor - */ - private HtmlEntities3() - { - // read the entities defined in the data taken from - try (InputStream stream = HtmlEntitiesParserBenchmark.class.getResourceAsStream("html_entities.properties")) - { - final Properties props = new Properties(); - props.load(stream); - - props.forEach((k, v) -> { - String key = (String) k; - String value = (String) v; - - // we might have an empty line in it - if (key.isEmpty()) { - return; - } - - this.rootLevel.add(key, value); - }); - } - catch (IOException e) - { - throw new RuntimeException("Unable to initilaize the HTML entities from file"); - } - } - - /** - * Returns the singleton. The singleton is stateless and can safely be used in a multi-threaded - * context. The - */ - public static HtmlEntities3 get() - { - return instance; - } - - public Optional lookup(final String entityName) - { - Level lastResult = this.rootLevel; - for (int i = 0; i < entityName.length(); i++) - { - Level result = lastResult.lookup(entityName.charAt(i)); - - if (result.endNode) - { - lastResult = result; - break; - } - if (result == lastResult) - { - // nothing changed, more characters have not done anything - break; - } - lastResult = result; - } - - return Optional.of(lastResult); - } - - public Level lookup(final int character, final Level level) - { - return level != null ? level.lookup(character) : rootLevel.lookup(character); - } - - public static class Level - { - private final int depth; - private int[] characters = new int[0]; - private Level[] nextLevel = new Level[0]; - - public final String entityOrFragment; - public String resolvedValue; - public final int length; - public final boolean endsWithSemicolon; - public boolean isMatch; - public boolean endNode; - - public Level() - { - this.entityOrFragment = ""; - this.length = 0; - this.depth = 0; - this.endsWithSemicolon = false; - this.isMatch = false; - this.resolvedValue = null; - this.endNode = false; - } - - public Level(final int depth, final String entityFragment, final String resolvedValue) - { - if (depth == entityFragment.length()) - { - // we are at the end - this.entityOrFragment = entityFragment; - this.length = entityFragment.length(); - this.depth = entityFragment.length(); - this.endsWithSemicolon = entityFragment.endsWith(";"); - this.isMatch = true; - this.resolvedValue = resolvedValue; - this.endNode = entityFragment.endsWith(";"); - } - else - { - // intermediate state - final String currentFragment = entityFragment.substring(0, depth); - - this.entityOrFragment = currentFragment; - this.length = currentFragment.length(); - this.depth = depth; - this.endsWithSemicolon = false; - this.isMatch = false; - this.resolvedValue = null; - this.endNode = false; - } - } - - public void updateNonSemicolonEntity(final String entity, final String resolvedValue) - { - if (entity.endsWith(";")) - { - // nothing to do - return; - } - if (entity.length() == this.depth) - { - // safety check - if (!entity.equals(this.entityOrFragment)) - { - throw new RuntimeException("Illegal state reached"); - } - - this.isMatch = true; - this.resolvedValue = resolvedValue; - } - } - - public void add(final String entity, final String resolvedValue) - { - // ok, any characters left? - if (this.depth >= entity.length()) - { - // no reason to go any further - return; - } - - // get me my character - final char c = entity.charAt(this.depth); - - // do I already know it? - final int pos = Arrays.binarySearch(characters, c); - - if (pos < 0) - { - // we don't know it, make the size bigger and get us the new pos - this.nextLevel = Arrays.copyOf(this.nextLevel, this.nextLevel.length + 1); - this.characters = Arrays.copyOf(this.characters, this.characters.length + 1); - final int newPos = -(pos + 1); - - // move stuff first - if (newPos != this.characters.length - 1) - { - System.arraycopy(this.characters, newPos, this.characters, newPos + 1, this.characters.length - newPos - 1); - System.arraycopy(this.nextLevel, newPos, this.nextLevel, newPos + 1, this.nextLevel.length - newPos - 1); - } - else - { - // we insert at the end, so no move needed - } - final Level newLevel = new Level(this.depth + 1, entity, resolvedValue); - this.characters[newPos] = c; - this.nextLevel[newPos] = newLevel; - - // update next level - newLevel.add(entity, resolvedValue); - } - else - { - // ok, if this one is without a ; and we have the full entity, we - // have a mismatch between one with and one without ; - // change the level - this.nextLevel[pos].updateNonSemicolonEntity(entity, resolvedValue); - this.nextLevel[pos].add(entity, resolvedValue); - } - } - - public Level lookup(int character) - { - // because we have sorted arrays, we can be more efficient here - final int length = this.characters.length; - for (int i = 0; i < length; i++) - { - final int c = this.characters[i]; - if (c < character) - { - continue; - } - if (c == character) - { - // we are over position - return this.nextLevel[i]; - } - else - { - return this; - } - } - - return this; - } - } - -} diff --git a/benchmark/src/main/java/org/htmlunit/cyberneko/util/html_entities.properties b/benchmark/src/main/java/org/htmlunit/cyberneko/util/html_entities.properties deleted file mode 100644 index 63fbee86..00000000 --- a/benchmark/src/main/java/org/htmlunit/cyberneko/util/html_entities.properties +++ /dev/null @@ -1,2231 +0,0 @@ -AElig=\u00C6 -AElig;=\u00C6 -AMP=\u0026 -AMP;=\u0026 -Aacute=\u00C1 -Aacute;=\u00C1 -Abreve;=\u0102 -Acirc=\u00C2 -Acirc;=\u00C2 -Acy;=\u0410 -Afr;=\uD835\uDD04 -Agrave=\u00C0 -Agrave;=\u00C0 -Alpha;=\u0391 -Amacr;=\u0100 -And;=\u2A53 -Aogon;=\u0104 -Aopf;=\uD835\uDD38 -ApplyFunction;=\u2061 -Aring=\u00C5 -Aring;=\u00C5 -Ascr;=\uD835\uDC9C -Assign;=\u2254 -Atilde=\u00C3 -Atilde;=\u00C3 -Auml=\u00C4 -Auml;=\u00C4 -Backslash;=\u2216 -Barv;=\u2AE7 -Barwed;=\u2306 -Bcy;=\u0411 -Because;=\u2235 -Bernoullis;=\u212C -Beta;=\u0392 -Bfr;=\uD835\uDD05 -Bopf;=\uD835\uDD39 -Breve;=\u02D8 -Bscr;=\u212C -Bumpeq;=\u224E -CHcy;=\u0427 -COPY=\u00A9 -COPY;=\u00A9 -Cacute;=\u0106 -Cap;=\u22D2 -CapitalDifferentialD;=\u2145 -Cayleys;=\u212D -Ccaron;=\u010C -Ccedil=\u00C7 -Ccedil;=\u00C7 -Ccirc;=\u0108 -Cconint;=\u2230 -Cdot;=\u010A -Cedilla;=\u00B8 -CenterDot;=\u00B7 -Cfr;=\u212D -Chi;=\u03A7 -CircleDot;=\u2299 -CircleMinus;=\u2296 -CirclePlus;=\u2295 -CircleTimes;=\u2297 -ClockwiseContourIntegral;=\u2232 -CloseCurlyDoubleQuote;=\u201D -CloseCurlyQuote;=\u2019 -Colon;=\u2237 -Colone;=\u2A74 -Congruent;=\u2261 -Conint;=\u222F -ContourIntegral;=\u222E -Copf;=\u2102 -Coproduct;=\u2210 -CounterClockwiseContourIntegral;=\u2233 -Cross;=\u2A2F -Cscr;=\uD835\uDC9E -Cup;=\u22D3 -CupCap;=\u224D -DD;=\u2145 -DDotrahd;=\u2911 -DJcy;=\u0402 -DScy;=\u0405 -DZcy;=\u040F -Dagger;=\u2021 -Darr;=\u21A1 -Dashv;=\u2AE4 -Dcaron;=\u010E -Dcy;=\u0414 -Del;=\u2207 -Delta;=\u0394 -Dfr;=\uD835\uDD07 -DiacriticalAcute;=\u00B4 -DiacriticalDot;=\u02D9 -DiacriticalDoubleAcute;=\u02DD -DiacriticalGrave;=\u0060 -DiacriticalTilde;=\u02DC -Diamond;=\u22C4 -DifferentialD;=\u2146 -Dopf;=\uD835\uDD3B -Dot;=\u00A8 -DotDot;=\u20DC -DotEqual;=\u2250 -DoubleContourIntegral;=\u222F -DoubleDot;=\u00A8 -DoubleDownArrow;=\u21D3 -DoubleLeftArrow;=\u21D0 -DoubleLeftRightArrow;=\u21D4 -DoubleLeftTee;=\u2AE4 -DoubleLongLeftArrow;=\u27F8 -DoubleLongLeftRightArrow;=\u27FA -DoubleLongRightArrow;=\u27F9 -DoubleRightArrow;=\u21D2 -DoubleRightTee;=\u22A8 -DoubleUpArrow;=\u21D1 -DoubleUpDownArrow;=\u21D5 -DoubleVerticalBar;=\u2225 -DownArrow;=\u2193 -DownArrowBar;=\u2913 -DownArrowUpArrow;=\u21F5 -DownBreve;=\u0311 -DownLeftRightVector;=\u2950 -DownLeftTeeVector;=\u295E -DownLeftVector;=\u21BD -DownLeftVectorBar;=\u2956 -DownRightTeeVector;=\u295F -DownRightVector;=\u21C1 -DownRightVectorBar;=\u2957 -DownTee;=\u22A4 -DownTeeArrow;=\u21A7 -Downarrow;=\u21D3 -Dscr;=\uD835\uDC9F -Dstrok;=\u0110 -ENG;=\u014A -ETH=\u00D0 -ETH;=\u00D0 -Eacute=\u00C9 -Eacute;=\u00C9 -Ecaron;=\u011A -Ecirc=\u00CA -Ecirc;=\u00CA -Ecy;=\u042D -Edot;=\u0116 -Efr;=\uD835\uDD08 -Egrave=\u00C8 -Egrave;=\u00C8 -Element;=\u2208 -Emacr;=\u0112 -EmptySmallSquare;=\u25FB -EmptyVerySmallSquare;=\u25AB -Eogon;=\u0118 -Eopf;=\uD835\uDD3C -Epsilon;=\u0395 -Equal;=\u2A75 -EqualTilde;=\u2242 -Equilibrium;=\u21CC -Escr;=\u2130 -Esim;=\u2A73 -Eta;=\u0397 -Euml=\u00CB -Euml;=\u00CB -Exists;=\u2203 -ExponentialE;=\u2147 -Fcy;=\u0424 -Ffr;=\uD835\uDD09 -FilledSmallSquare;=\u25FC -FilledVerySmallSquare;=\u25AA -Fopf;=\uD835\uDD3D -ForAll;=\u2200 -Fouriertrf;=\u2131 -Fscr;=\u2131 -GJcy;=\u0403 -GT=\u003E -GT;=\u003E -Gamma;=\u0393 -Gammad;=\u03DC -Gbreve;=\u011E -Gcedil;=\u0122 -Gcirc;=\u011C -Gcy;=\u0413 -Gdot;=\u0120 -Gfr;=\uD835\uDD0A -Gg;=\u22D9 -Gopf;=\uD835\uDD3E -GreaterEqual;=\u2265 -GreaterEqualLess;=\u22DB -GreaterFullEqual;=\u2267 -GreaterGreater;=\u2AA2 -GreaterLess;=\u2277 -GreaterSlantEqual;=\u2A7E -GreaterTilde;=\u2273 -Gscr;=\uD835\uDCA2 -Gt;=\u226B -HARDcy;=\u042A -Hacek;=\u02C7 -Hat;=\u005E -Hcirc;=\u0124 -Hfr;=\u210C -HilbertSpace;=\u210B -Hopf;=\u210D -HorizontalLine;=\u2500 -Hscr;=\u210B -Hstrok;=\u0126 -HumpDownHump;=\u224E -HumpEqual;=\u224F -IEcy;=\u0415 -IJlig;=\u0132 -IOcy;=\u0401 -Iacute=\u00CD -Iacute;=\u00CD -Icirc=\u00CE -Icirc;=\u00CE -Icy;=\u0418 -Idot;=\u0130 -Ifr;=\u2111 -Igrave=\u00CC -Igrave;=\u00CC -Im;=\u2111 -Imacr;=\u012A -ImaginaryI;=\u2148 -Implies;=\u21D2 -Int;=\u222C -Integral;=\u222B -Intersection;=\u22C2 -InvisibleComma;=\u2063 -InvisibleTimes;=\u2062 -Iogon;=\u012E -Iopf;=\uD835\uDD40 -Iota;=\u0399 -Iscr;=\u2110 -Itilde;=\u0128 -Iukcy;=\u0406 -Iuml=\u00CF -Iuml;=\u00CF -Jcirc;=\u0134 -Jcy;=\u0419 -Jfr;=\uD835\uDD0D -Jopf;=\uD835\uDD41 -Jscr;=\uD835\uDCA5 -Jsercy;=\u0408 -Jukcy;=\u0404 -KHcy;=\u0425 -KJcy;=\u040C -Kappa;=\u039A -Kcedil;=\u0136 -Kcy;=\u041A -Kfr;=\uD835\uDD0E -Kopf;=\uD835\uDD42 -Kscr;=\uD835\uDCA6 -LJcy;=\u0409 -LT=\u003C -LT;=\u003C -Lacute;=\u0139 -Lambda;=\u039B -Lang;=\u27EA -Laplacetrf;=\u2112 -Larr;=\u219E -Lcaron;=\u013D -Lcedil;=\u013B -Lcy;=\u041B -LeftAngleBracket;=\u27E8 -LeftArrow;=\u2190 -LeftArrowBar;=\u21E4 -LeftArrowRightArrow;=\u21C6 -LeftCeiling;=\u2308 -LeftDoubleBracket;=\u27E6 -LeftDownTeeVector;=\u2961 -LeftDownVector;=\u21C3 -LeftDownVectorBar;=\u2959 -LeftFloor;=\u230A -LeftRightArrow;=\u2194 -LeftRightVector;=\u294E -LeftTee;=\u22A3 -LeftTeeArrow;=\u21A4 -LeftTeeVector;=\u295A -LeftTriangle;=\u22B2 -LeftTriangleBar;=\u29CF -LeftTriangleEqual;=\u22B4 -LeftUpDownVector;=\u2951 -LeftUpTeeVector;=\u2960 -LeftUpVector;=\u21BF -LeftUpVectorBar;=\u2958 -LeftVector;=\u21BC -LeftVectorBar;=\u2952 -Leftarrow;=\u21D0 -Leftrightarrow;=\u21D4 -LessEqualGreater;=\u22DA -LessFullEqual;=\u2266 -LessGreater;=\u2276 -LessLess;=\u2AA1 -LessSlantEqual;=\u2A7D -LessTilde;=\u2272 -Lfr;=\uD835\uDD0F -Ll;=\u22D8 -Lleftarrow;=\u21DA -Lmidot;=\u013F -LongLeftArrow;=\u27F5 -LongLeftRightArrow;=\u27F7 -LongRightArrow;=\u27F6 -Longleftarrow;=\u27F8 -Longleftrightarrow;=\u27FA -Longrightarrow;=\u27F9 -Lopf;=\uD835\uDD43 -LowerLeftArrow;=\u2199 -LowerRightArrow;=\u2198 -Lscr;=\u2112 -Lsh;=\u21B0 -Lstrok;=\u0141 -Lt;=\u226A -Map;=\u2905 -Mcy;=\u041C -MediumSpace;=\u205F -Mellintrf;=\u2133 -Mfr;=\uD835\uDD10 -MinusPlus;=\u2213 -Mopf;=\uD835\uDD44 -Mscr;=\u2133 -Mu;=\u039C -NJcy;=\u040A -Nacute;=\u0143 -Ncaron;=\u0147 -Ncedil;=\u0145 -Ncy;=\u041D -NegativeMediumSpace;=\u200B -NegativeThickSpace;=\u200B -NegativeThinSpace;=\u200B -NegativeVeryThinSpace;=\u200B -NestedGreaterGreater;=\u226B -NestedLessLess;=\u226A -NewLine;=\u000A -Nfr;=\uD835\uDD11 -NoBreak;=\u2060 -NonBreakingSpace;=\u00A0 -Nopf;=\u2115 -Not;=\u2AEC -NotCongruent;=\u2262 -NotCupCap;=\u226D -NotDoubleVerticalBar;=\u2226 -NotElement;=\u2209 -NotEqual;=\u2260 -NotEqualTilde;=\u2242\u0338 -NotExists;=\u2204 -NotGreater;=\u226F -NotGreaterEqual;=\u2271 -NotGreaterFullEqual;=\u2267\u0338 -NotGreaterGreater;=\u226B\u0338 -NotGreaterLess;=\u2279 -NotGreaterSlantEqual;=\u2A7E\u0338 -NotGreaterTilde;=\u2275 -NotHumpDownHump;=\u224E\u0338 -NotHumpEqual;=\u224F\u0338 -NotLeftTriangle;=\u22EA -NotLeftTriangleBar;=\u29CF\u0338 -NotLeftTriangleEqual;=\u22EC -NotLess;=\u226E -NotLessEqual;=\u2270 -NotLessGreater;=\u2278 -NotLessLess;=\u226A\u0338 -NotLessSlantEqual;=\u2A7D\u0338 -NotLessTilde;=\u2274 -NotNestedGreaterGreater;=\u2AA2\u0338 -NotNestedLessLess;=\u2AA1\u0338 -NotPrecedes;=\u2280 -NotPrecedesEqual;=\u2AAF\u0338 -NotPrecedesSlantEqual;=\u22E0 -NotReverseElement;=\u220C -NotRightTriangle;=\u22EB -NotRightTriangleBar;=\u29D0\u0338 -NotRightTriangleEqual;=\u22ED -NotSquareSubset;=\u228F\u0338 -NotSquareSubsetEqual;=\u22E2 -NotSquareSuperset;=\u2290\u0338 -NotSquareSupersetEqual;=\u22E3 -NotSubset;=\u2282\u20D2 -NotSubsetEqual;=\u2288 -NotSucceeds;=\u2281 -NotSucceedsEqual;=\u2AB0\u0338 -NotSucceedsSlantEqual;=\u22E1 -NotSucceedsTilde;=\u227F\u0338 -NotSuperset;=\u2283\u20D2 -NotSupersetEqual;=\u2289 -NotTilde;=\u2241 -NotTildeEqual;=\u2244 -NotTildeFullEqual;=\u2247 -NotTildeTilde;=\u2249 -NotVerticalBar;=\u2224 -Nscr;=\uD835\uDCA9 -Ntilde=\u00D1 -Ntilde;=\u00D1 -Nu;=\u039D -OElig;=\u0152 -Oacute=\u00D3 -Oacute;=\u00D3 -Ocirc=\u00D4 -Ocirc;=\u00D4 -Ocy;=\u041E -Odblac;=\u0150 -Ofr;=\uD835\uDD12 -Ograve=\u00D2 -Ograve;=\u00D2 -Omacr;=\u014C -Omega;=\u03A9 -Omicron;=\u039F -Oopf;=\uD835\uDD46 -OpenCurlyDoubleQuote;=\u201C -OpenCurlyQuote;=\u2018 -Or;=\u2A54 -Oscr;=\uD835\uDCAA -Oslash=\u00D8 -Oslash;=\u00D8 -Otilde=\u00D5 -Otilde;=\u00D5 -Otimes;=\u2A37 -Ouml=\u00D6 -Ouml;=\u00D6 -OverBar;=\u203E -OverBrace;=\u23DE -OverBracket;=\u23B4 -OverParenthesis;=\u23DC -PartialD;=\u2202 -Pcy;=\u041F -Pfr;=\uD835\uDD13 -Phi;=\u03A6 -Pi;=\u03A0 -PlusMinus;=\u00B1 -Poincareplane;=\u210C -Popf;=\u2119 -Pr;=\u2ABB -Precedes;=\u227A -PrecedesEqual;=\u2AAF -PrecedesSlantEqual;=\u227C -PrecedesTilde;=\u227E -Prime;=\u2033 -Product;=\u220F -Proportion;=\u2237 -Proportional;=\u221D -Pscr;=\uD835\uDCAB -Psi;=\u03A8 -QUOT=\u0022 -QUOT;=\u0022 -Qfr;=\uD835\uDD14 -Qopf;=\u211A -Qscr;=\uD835\uDCAC -RBarr;=\u2910 -REG=\u00AE -REG;=\u00AE -Racute;=\u0154 -Rang;=\u27EB -Rarr;=\u21A0 -Rarrtl;=\u2916 -Rcaron;=\u0158 -Rcedil;=\u0156 -Rcy;=\u0420 -Re;=\u211C -ReverseElement;=\u220B -ReverseEquilibrium;=\u21CB -ReverseUpEquilibrium;=\u296F -Rfr;=\u211C -Rho;=\u03A1 -RightAngleBracket;=\u27E9 -RightArrow;=\u2192 -RightArrowBar;=\u21E5 -RightArrowLeftArrow;=\u21C4 -RightCeiling;=\u2309 -RightDoubleBracket;=\u27E7 -RightDownTeeVector;=\u295D -RightDownVector;=\u21C2 -RightDownVectorBar;=\u2955 -RightFloor;=\u230B -RightTee;=\u22A2 -RightTeeArrow;=\u21A6 -RightTeeVector;=\u295B -RightTriangle;=\u22B3 -RightTriangleBar;=\u29D0 -RightTriangleEqual;=\u22B5 -RightUpDownVector;=\u294F -RightUpTeeVector;=\u295C -RightUpVector;=\u21BE -RightUpVectorBar;=\u2954 -RightVector;=\u21C0 -RightVectorBar;=\u2953 -Rightarrow;=\u21D2 -Ropf;=\u211D -RoundImplies;=\u2970 -Rrightarrow;=\u21DB -Rscr;=\u211B -Rsh;=\u21B1 -RuleDelayed;=\u29F4 -SHCHcy;=\u0429 -SHcy;=\u0428 -SOFTcy;=\u042C -Sacute;=\u015A -Sc;=\u2ABC -Scaron;=\u0160 -Scedil;=\u015E -Scirc;=\u015C -Scy;=\u0421 -Sfr;=\uD835\uDD16 -ShortDownArrow;=\u2193 -ShortLeftArrow;=\u2190 -ShortRightArrow;=\u2192 -ShortUpArrow;=\u2191 -Sigma;=\u03A3 -SmallCircle;=\u2218 -Sopf;=\uD835\uDD4A -Sqrt;=\u221A -Square;=\u25A1 -SquareIntersection;=\u2293 -SquareSubset;=\u228F -SquareSubsetEqual;=\u2291 -SquareSuperset;=\u2290 -SquareSupersetEqual;=\u2292 -SquareUnion;=\u2294 -Sscr;=\uD835\uDCAE -Star;=\u22C6 -Sub;=\u22D0 -Subset;=\u22D0 -SubsetEqual;=\u2286 -Succeeds;=\u227B -SucceedsEqual;=\u2AB0 -SucceedsSlantEqual;=\u227D -SucceedsTilde;=\u227F -SuchThat;=\u220B -Sum;=\u2211 -Sup;=\u22D1 -Superset;=\u2283 -SupersetEqual;=\u2287 -Supset;=\u22D1 -THORN=\u00DE -THORN;=\u00DE -TRADE;=\u2122 -TSHcy;=\u040B -TScy;=\u0426 -Tab;=\u0009 -Tau;=\u03A4 -Tcaron;=\u0164 -Tcedil;=\u0162 -Tcy;=\u0422 -Tfr;=\uD835\uDD17 -Therefore;=\u2234 -Theta;=\u0398 -ThickSpace;=\u205F\u200A -ThinSpace;=\u2009 -Tilde;=\u223C -TildeEqual;=\u2243 -TildeFullEqual;=\u2245 -TildeTilde;=\u2248 -Topf;=\uD835\uDD4B -TripleDot;=\u20DB -Tscr;=\uD835\uDCAF -Tstrok;=\u0166 -Uacute=\u00DA -Uacute;=\u00DA -Uarr;=\u219F -Uarrocir;=\u2949 -Ubrcy;=\u040E -Ubreve;=\u016C -Ucirc=\u00DB -Ucirc;=\u00DB -Ucy;=\u0423 -Udblac;=\u0170 -Ufr;=\uD835\uDD18 -Ugrave=\u00D9 -Ugrave;=\u00D9 -Umacr;=\u016A -UnderBar;=\u005F -UnderBrace;=\u23DF -UnderBracket;=\u23B5 -UnderParenthesis;=\u23DD -Union;=\u22C3 -UnionPlus;=\u228E -Uogon;=\u0172 -Uopf;=\uD835\uDD4C -UpArrow;=\u2191 -UpArrowBar;=\u2912 -UpArrowDownArrow;=\u21C5 -UpDownArrow;=\u2195 -UpEquilibrium;=\u296E -UpTee;=\u22A5 -UpTeeArrow;=\u21A5 -Uparrow;=\u21D1 -Updownarrow;=\u21D5 -UpperLeftArrow;=\u2196 -UpperRightArrow;=\u2197 -Upsi;=\u03D2 -Upsilon;=\u03A5 -Uring;=\u016E -Uscr;=\uD835\uDCB0 -Utilde;=\u0168 -Uuml=\u00DC -Uuml;=\u00DC -VDash;=\u22AB -Vbar;=\u2AEB -Vcy;=\u0412 -Vdash;=\u22A9 -Vdashl;=\u2AE6 -Vee;=\u22C1 -Verbar;=\u2016 -Vert;=\u2016 -VerticalBar;=\u2223 -VerticalLine;=\u007C -VerticalSeparator;=\u2758 -VerticalTilde;=\u2240 -VeryThinSpace;=\u200A -Vfr;=\uD835\uDD19 -Vopf;=\uD835\uDD4D -Vscr;=\uD835\uDCB1 -Vvdash;=\u22AA -Wcirc;=\u0174 -Wedge;=\u22C0 -Wfr;=\uD835\uDD1A -Wopf;=\uD835\uDD4E -Wscr;=\uD835\uDCB2 -Xfr;=\uD835\uDD1B -Xi;=\u039E -Xopf;=\uD835\uDD4F -Xscr;=\uD835\uDCB3 -YAcy;=\u042F -YIcy;=\u0407 -YUcy;=\u042E -Yacute=\u00DD -Yacute;=\u00DD -Ycirc;=\u0176 -Ycy;=\u042B -Yfr;=\uD835\uDD1C -Yopf;=\uD835\uDD50 -Yscr;=\uD835\uDCB4 -Yuml;=\u0178 -ZHcy;=\u0416 -Zacute;=\u0179 -Zcaron;=\u017D -Zcy;=\u0417 -Zdot;=\u017B -ZeroWidthSpace;=\u200B -Zeta;=\u0396 -Zfr;=\u2128 -Zopf;=\u2124 -Zscr;=\uD835\uDCB5 -aacute=\u00E1 -aacute;=\u00E1 -abreve;=\u0103 -ac;=\u223E -acE;=\u223E\u0333 -acd;=\u223F -acirc=\u00E2 -acirc;=\u00E2 -acute=\u00B4 -acute;=\u00B4 -acy;=\u0430 -aelig=\u00E6 -aelig;=\u00E6 -af;=\u2061 -afr;=\uD835\uDD1E -agrave=\u00E0 -agrave;=\u00E0 -alefsym;=\u2135 -aleph;=\u2135 -alpha;=\u03B1 -amacr;=\u0101 -amalg;=\u2A3F -amp=\u0026 -amp;=\u0026 -and;=\u2227 -andand;=\u2A55 -andd;=\u2A5C -andslope;=\u2A58 -andv;=\u2A5A -ang;=\u2220 -ange;=\u29A4 -angle;=\u2220 -angmsd;=\u2221 -angmsdaa;=\u29A8 -angmsdab;=\u29A9 -angmsdac;=\u29AA -angmsdad;=\u29AB -angmsdae;=\u29AC -angmsdaf;=\u29AD -angmsdag;=\u29AE -angmsdah;=\u29AF -angrt;=\u221F -angrtvb;=\u22BE -angrtvbd;=\u299D -angsph;=\u2222 -angst;=\u00C5 -angzarr;=\u237C -aogon;=\u0105 -aopf;=\uD835\uDD52 -ap;=\u2248 -apE;=\u2A70 -apacir;=\u2A6F -ape;=\u224A -apid;=\u224B -apos;=\u0027 -approx;=\u2248 -approxeq;=\u224A -aring=\u00E5 -aring;=\u00E5 -ascr;=\uD835\uDCB6 -ast;=\u002A -asymp;=\u2248 -asympeq;=\u224D -atilde=\u00E3 -atilde;=\u00E3 -auml=\u00E4 -auml;=\u00E4 -awconint;=\u2233 -awint;=\u2A11 -bNot;=\u2AED -backcong;=\u224C -backepsilon;=\u03F6 -backprime;=\u2035 -backsim;=\u223D -backsimeq;=\u22CD -barvee;=\u22BD -barwed;=\u2305 -barwedge;=\u2305 -bbrk;=\u23B5 -bbrktbrk;=\u23B6 -bcong;=\u224C -bcy;=\u0431 -bdquo;=\u201E -becaus;=\u2235 -because;=\u2235 -bemptyv;=\u29B0 -bepsi;=\u03F6 -bernou;=\u212C -beta;=\u03B2 -beth;=\u2136 -between;=\u226C -bfr;=\uD835\uDD1F -bigcap;=\u22C2 -bigcirc;=\u25EF -bigcup;=\u22C3 -bigodot;=\u2A00 -bigoplus;=\u2A01 -bigotimes;=\u2A02 -bigsqcup;=\u2A06 -bigstar;=\u2605 -bigtriangledown;=\u25BD -bigtriangleup;=\u25B3 -biguplus;=\u2A04 -bigvee;=\u22C1 -bigwedge;=\u22C0 -bkarow;=\u290D -blacklozenge;=\u29EB -blacksquare;=\u25AA -blacktriangle;=\u25B4 -blacktriangledown;=\u25BE -blacktriangleleft;=\u25C2 -blacktriangleright;=\u25B8 -blank;=\u2423 -blk12;=\u2592 -blk14;=\u2591 -blk34;=\u2593 -block;=\u2588 -bne;=\u003D\u20E5 -bnequiv;=\u2261\u20E5 -bnot;=\u2310 -bopf;=\uD835\uDD53 -bot;=\u22A5 -bottom;=\u22A5 -bowtie;=\u22C8 -boxDL;=\u2557 -boxDR;=\u2554 -boxDl;=\u2556 -boxDr;=\u2553 -boxH;=\u2550 -boxHD;=\u2566 -boxHU;=\u2569 -boxHd;=\u2564 -boxHu;=\u2567 -boxUL;=\u255D -boxUR;=\u255A -boxUl;=\u255C -boxUr;=\u2559 -boxV;=\u2551 -boxVH;=\u256C -boxVL;=\u2563 -boxVR;=\u2560 -boxVh;=\u256B -boxVl;=\u2562 -boxVr;=\u255F -boxbox;=\u29C9 -boxdL;=\u2555 -boxdR;=\u2552 -boxdl;=\u2510 -boxdr;=\u250C -boxh;=\u2500 -boxhD;=\u2565 -boxhU;=\u2568 -boxhd;=\u252C -boxhu;=\u2534 -boxminus;=\u229F -boxplus;=\u229E -boxtimes;=\u22A0 -boxuL;=\u255B -boxuR;=\u2558 -boxul;=\u2518 -boxur;=\u2514 -boxv;=\u2502 -boxvH;=\u256A -boxvL;=\u2561 -boxvR;=\u255E -boxvh;=\u253C -boxvl;=\u2524 -boxvr;=\u251C -bprime;=\u2035 -breve;=\u02D8 -brvbar=\u00A6 -brvbar;=\u00A6 -bscr;=\uD835\uDCB7 -bsemi;=\u204F -bsim;=\u223D -bsime;=\u22CD -bsol;=\u005C -bsolb;=\u29C5 -bsolhsub;=\u27C8 -bull;=\u2022 -bullet;=\u2022 -bump;=\u224E -bumpE;=\u2AAE -bumpe;=\u224F -bumpeq;=\u224F -cacute;=\u0107 -cap;=\u2229 -capand;=\u2A44 -capbrcup;=\u2A49 -capcap;=\u2A4B -capcup;=\u2A47 -capdot;=\u2A40 -caps;=\u2229\uFE00 -caret;=\u2041 -caron;=\u02C7 -ccaps;=\u2A4D -ccaron;=\u010D -ccedil=\u00E7 -ccedil;=\u00E7 -ccirc;=\u0109 -ccups;=\u2A4C -ccupssm;=\u2A50 -cdot;=\u010B -cedil=\u00B8 -cedil;=\u00B8 -cemptyv;=\u29B2 -cent=\u00A2 -cent;=\u00A2 -centerdot;=\u00B7 -cfr;=\uD835\uDD20 -chcy;=\u0447 -check;=\u2713 -checkmark;=\u2713 -chi;=\u03C7 -cir;=\u25CB -cirE;=\u29C3 -circ;=\u02C6 -circeq;=\u2257 -circlearrowleft;=\u21BA -circlearrowright;=\u21BB -circledR;=\u00AE -circledS;=\u24C8 -circledast;=\u229B -circledcirc;=\u229A -circleddash;=\u229D -cire;=\u2257 -cirfnint;=\u2A10 -cirmid;=\u2AEF -cirscir;=\u29C2 -clubs;=\u2663 -clubsuit;=\u2663 -colon;=\u003A -colone;=\u2254 -coloneq;=\u2254 -comma;=\u002C -commat;=\u0040 -comp;=\u2201 -compfn;=\u2218 -complement;=\u2201 -complexes;=\u2102 -cong;=\u2245 -congdot;=\u2A6D -conint;=\u222E -copf;=\uD835\uDD54 -coprod;=\u2210 -copy=\u00A9 -copy;=\u00A9 -copysr;=\u2117 -crarr;=\u21B5 -cross;=\u2717 -cscr;=\uD835\uDCB8 -csub;=\u2ACF -csube;=\u2AD1 -csup;=\u2AD0 -csupe;=\u2AD2 -ctdot;=\u22EF -cudarrl;=\u2938 -cudarrr;=\u2935 -cuepr;=\u22DE -cuesc;=\u22DF -cularr;=\u21B6 -cularrp;=\u293D -cup;=\u222A -cupbrcap;=\u2A48 -cupcap;=\u2A46 -cupcup;=\u2A4A -cupdot;=\u228D -cupor;=\u2A45 -cups;=\u222A\uFE00 -curarr;=\u21B7 -curarrm;=\u293C -curlyeqprec;=\u22DE -curlyeqsucc;=\u22DF -curlyvee;=\u22CE -curlywedge;=\u22CF -curren=\u00A4 -curren;=\u00A4 -curvearrowleft;=\u21B6 -curvearrowright;=\u21B7 -cuvee;=\u22CE -cuwed;=\u22CF -cwconint;=\u2232 -cwint;=\u2231 -cylcty;=\u232D -dArr;=\u21D3 -dHar;=\u2965 -dagger;=\u2020 -daleth;=\u2138 -darr;=\u2193 -dash;=\u2010 -dashv;=\u22A3 -dbkarow;=\u290F -dblac;=\u02DD -dcaron;=\u010F -dcy;=\u0434 -dd;=\u2146 -ddagger;=\u2021 -ddarr;=\u21CA -ddotseq;=\u2A77 -deg=\u00B0 -deg;=\u00B0 -delta;=\u03B4 -demptyv;=\u29B1 -dfisht;=\u297F -dfr;=\uD835\uDD21 -dharl;=\u21C3 -dharr;=\u21C2 -diam;=\u22C4 -diamond;=\u22C4 -diamondsuit;=\u2666 -diams;=\u2666 -die;=\u00A8 -digamma;=\u03DD -disin;=\u22F2 -div;=\u00F7 -divide=\u00F7 -divide;=\u00F7 -divideontimes;=\u22C7 -divonx;=\u22C7 -djcy;=\u0452 -dlcorn;=\u231E -dlcrop;=\u230D -dollar;=\u0024 -dopf;=\uD835\uDD55 -dot;=\u02D9 -doteq;=\u2250 -doteqdot;=\u2251 -dotminus;=\u2238 -dotplus;=\u2214 -dotsquare;=\u22A1 -doublebarwedge;=\u2306 -downarrow;=\u2193 -downdownarrows;=\u21CA -downharpoonleft;=\u21C3 -downharpoonright;=\u21C2 -drbkarow;=\u2910 -drcorn;=\u231F -drcrop;=\u230C -dscr;=\uD835\uDCB9 -dscy;=\u0455 -dsol;=\u29F6 -dstrok;=\u0111 -dtdot;=\u22F1 -dtri;=\u25BF -dtrif;=\u25BE -duarr;=\u21F5 -duhar;=\u296F -dwangle;=\u29A6 -dzcy;=\u045F -dzigrarr;=\u27FF -eDDot;=\u2A77 -eDot;=\u2251 -eacute=\u00E9 -eacute;=\u00E9 -easter;=\u2A6E -ecaron;=\u011B -ecir;=\u2256 -ecirc=\u00EA -ecirc;=\u00EA -ecolon;=\u2255 -ecy;=\u044D -edot;=\u0117 -ee;=\u2147 -efDot;=\u2252 -efr;=\uD835\uDD22 -eg;=\u2A9A -egrave=\u00E8 -egrave;=\u00E8 -egs;=\u2A96 -egsdot;=\u2A98 -el;=\u2A99 -elinters;=\u23E7 -ell;=\u2113 -els;=\u2A95 -elsdot;=\u2A97 -emacr;=\u0113 -empty;=\u2205 -emptyset;=\u2205 -emptyv;=\u2205 -emsp13;=\u2004 -emsp14;=\u2005 -emsp;=\u2003 -eng;=\u014B -ensp;=\u2002 -eogon;=\u0119 -eopf;=\uD835\uDD56 -epar;=\u22D5 -eparsl;=\u29E3 -eplus;=\u2A71 -epsi;=\u03B5 -epsilon;=\u03B5 -epsiv;=\u03F5 -eqcirc;=\u2256 -eqcolon;=\u2255 -eqsim;=\u2242 -eqslantgtr;=\u2A96 -eqslantless;=\u2A95 -equals;=\u003D -equest;=\u225F -equiv;=\u2261 -equivDD;=\u2A78 -eqvparsl;=\u29E5 -erDot;=\u2253 -erarr;=\u2971 -escr;=\u212F -esdot;=\u2250 -esim;=\u2242 -eta;=\u03B7 -eth=\u00F0 -eth;=\u00F0 -euml=\u00EB -euml;=\u00EB -euro;=\u20AC -excl;=\u0021 -exist;=\u2203 -expectation;=\u2130 -exponentiale;=\u2147 -fallingdotseq;=\u2252 -fcy;=\u0444 -female;=\u2640 -ffilig;=\uFB03 -fflig;=\uFB00 -ffllig;=\uFB04 -ffr;=\uD835\uDD23 -filig;=\uFB01 -fjlig;=\u0066\u006A -flat;=\u266D -fllig;=\uFB02 -fltns;=\u25B1 -fnof;=\u0192 -fopf;=\uD835\uDD57 -forall;=\u2200 -fork;=\u22D4 -forkv;=\u2AD9 -fpartint;=\u2A0D -frac12=\u00BD -frac12;=\u00BD -frac13;=\u2153 -frac14=\u00BC -frac14;=\u00BC -frac15;=\u2155 -frac16;=\u2159 -frac18;=\u215B -frac23;=\u2154 -frac25;=\u2156 -frac34=\u00BE -frac34;=\u00BE -frac35;=\u2157 -frac38;=\u215C -frac45;=\u2158 -frac56;=\u215A -frac58;=\u215D -frac78;=\u215E -frasl;=\u2044 -frown;=\u2322 -fscr;=\uD835\uDCBB -gE;=\u2267 -gEl;=\u2A8C -gacute;=\u01F5 -gamma;=\u03B3 -gammad;=\u03DD -gap;=\u2A86 -gbreve;=\u011F -gcirc;=\u011D -gcy;=\u0433 -gdot;=\u0121 -ge;=\u2265 -gel;=\u22DB -geq;=\u2265 -geqq;=\u2267 -geqslant;=\u2A7E -ges;=\u2A7E -gescc;=\u2AA9 -gesdot;=\u2A80 -gesdoto;=\u2A82 -gesdotol;=\u2A84 -gesl;=\u22DB\uFE00 -gesles;=\u2A94 -gfr;=\uD835\uDD24 -gg;=\u226B -ggg;=\u22D9 -gimel;=\u2137 -gjcy;=\u0453 -gl;=\u2277 -glE;=\u2A92 -gla;=\u2AA5 -glj;=\u2AA4 -gnE;=\u2269 -gnap;=\u2A8A -gnapprox;=\u2A8A -gne;=\u2A88 -gneq;=\u2A88 -gneqq;=\u2269 -gnsim;=\u22E7 -gopf;=\uD835\uDD58 -grave;=\u0060 -gscr;=\u210A -gsim;=\u2273 -gsime;=\u2A8E -gsiml;=\u2A90 -gt=\u003E -gt;=\u003E -gtcc;=\u2AA7 -gtcir;=\u2A7A -gtdot;=\u22D7 -gtlPar;=\u2995 -gtquest;=\u2A7C -gtrapprox;=\u2A86 -gtrarr;=\u2978 -gtrdot;=\u22D7 -gtreqless;=\u22DB -gtreqqless;=\u2A8C -gtrless;=\u2277 -gtrsim;=\u2273 -gvertneqq;=\u2269\uFE00 -gvnE;=\u2269\uFE00 -hArr;=\u21D4 -hairsp;=\u200A -half;=\u00BD -hamilt;=\u210B -hardcy;=\u044A -harr;=\u2194 -harrcir;=\u2948 -harrw;=\u21AD -hbar;=\u210F -hcirc;=\u0125 -hearts;=\u2665 -heartsuit;=\u2665 -hellip;=\u2026 -hercon;=\u22B9 -hfr;=\uD835\uDD25 -hksearow;=\u2925 -hkswarow;=\u2926 -hoarr;=\u21FF -homtht;=\u223B -hookleftarrow;=\u21A9 -hookrightarrow;=\u21AA -hopf;=\uD835\uDD59 -horbar;=\u2015 -hscr;=\uD835\uDCBD -hslash;=\u210F -hstrok;=\u0127 -hybull;=\u2043 -hyphen;=\u2010 -iacute=\u00ED -iacute;=\u00ED -ic;=\u2063 -icirc=\u00EE -icirc;=\u00EE -icy;=\u0438 -iecy;=\u0435 -iexcl=\u00A1 -iexcl;=\u00A1 -iff;=\u21D4 -ifr;=\uD835\uDD26 -igrave=\u00EC -igrave;=\u00EC -ii;=\u2148 -iiiint;=\u2A0C -iiint;=\u222D -iinfin;=\u29DC -iiota;=\u2129 -ijlig;=\u0133 -imacr;=\u012B -image;=\u2111 -imagline;=\u2110 -imagpart;=\u2111 -imath;=\u0131 -imof;=\u22B7 -imped;=\u01B5 -in;=\u2208 -incare;=\u2105 -infin;=\u221E -infintie;=\u29DD -inodot;=\u0131 -int;=\u222B -intcal;=\u22BA -integers;=\u2124 -intercal;=\u22BA -intlarhk;=\u2A17 -intprod;=\u2A3C -iocy;=\u0451 -iogon;=\u012F -iopf;=\uD835\uDD5A -iota;=\u03B9 -iprod;=\u2A3C -iquest=\u00BF -iquest;=\u00BF -iscr;=\uD835\uDCBE -isin;=\u2208 -isinE;=\u22F9 -isindot;=\u22F5 -isins;=\u22F4 -isinsv;=\u22F3 -isinv;=\u2208 -it;=\u2062 -itilde;=\u0129 -iukcy;=\u0456 -iuml=\u00EF -iuml;=\u00EF -jcirc;=\u0135 -jcy;=\u0439 -jfr;=\uD835\uDD27 -jmath;=\u0237 -jopf;=\uD835\uDD5B -jscr;=\uD835\uDCBF -jsercy;=\u0458 -jukcy;=\u0454 -kappa;=\u03BA -kappav;=\u03F0 -kcedil;=\u0137 -kcy;=\u043A -kfr;=\uD835\uDD28 -kgreen;=\u0138 -khcy;=\u0445 -kjcy;=\u045C -kopf;=\uD835\uDD5C -kscr;=\uD835\uDCC0 -lAarr;=\u21DA -lArr;=\u21D0 -lAtail;=\u291B -lBarr;=\u290E -lE;=\u2266 -lEg;=\u2A8B -lHar;=\u2962 -lacute;=\u013A -laemptyv;=\u29B4 -lagran;=\u2112 -lambda;=\u03BB -lang;=\u27E8 -langd;=\u2991 -langle;=\u27E8 -lap;=\u2A85 -laquo=\u00AB -laquo;=\u00AB -larr;=\u2190 -larrb;=\u21E4 -larrbfs;=\u291F -larrfs;=\u291D -larrhk;=\u21A9 -larrlp;=\u21AB -larrpl;=\u2939 -larrsim;=\u2973 -larrtl;=\u21A2 -lat;=\u2AAB -latail;=\u2919 -late;=\u2AAD -lates;=\u2AAD\uFE00 -lbarr;=\u290C -lbbrk;=\u2772 -lbrace;=\u007B -lbrack;=\u005B -lbrke;=\u298B -lbrksld;=\u298F -lbrkslu;=\u298D -lcaron;=\u013E -lcedil;=\u013C -lceil;=\u2308 -lcub;=\u007B -lcy;=\u043B -ldca;=\u2936 -ldquo;=\u201C -ldquor;=\u201E -ldrdhar;=\u2967 -ldrushar;=\u294B -ldsh;=\u21B2 -le;=\u2264 -leftarrow;=\u2190 -leftarrowtail;=\u21A2 -leftharpoondown;=\u21BD -leftharpoonup;=\u21BC -leftleftarrows;=\u21C7 -leftrightarrow;=\u2194 -leftrightarrows;=\u21C6 -leftrightharpoons;=\u21CB -leftrightsquigarrow;=\u21AD -leftthreetimes;=\u22CB -leg;=\u22DA -leq;=\u2264 -leqq;=\u2266 -leqslant;=\u2A7D -les;=\u2A7D -lescc;=\u2AA8 -lesdot;=\u2A7F -lesdoto;=\u2A81 -lesdotor;=\u2A83 -lesg;=\u22DA\uFE00 -lesges;=\u2A93 -lessapprox;=\u2A85 -lessdot;=\u22D6 -lesseqgtr;=\u22DA -lesseqqgtr;=\u2A8B -lessgtr;=\u2276 -lesssim;=\u2272 -lfisht;=\u297C -lfloor;=\u230A -lfr;=\uD835\uDD29 -lg;=\u2276 -lgE;=\u2A91 -lhard;=\u21BD -lharu;=\u21BC -lharul;=\u296A -lhblk;=\u2584 -ljcy;=\u0459 -ll;=\u226A -llarr;=\u21C7 -llcorner;=\u231E -llhard;=\u296B -lltri;=\u25FA -lmidot;=\u0140 -lmoust;=\u23B0 -lmoustache;=\u23B0 -lnE;=\u2268 -lnap;=\u2A89 -lnapprox;=\u2A89 -lne;=\u2A87 -lneq;=\u2A87 -lneqq;=\u2268 -lnsim;=\u22E6 -loang;=\u27EC -loarr;=\u21FD -lobrk;=\u27E6 -longleftarrow;=\u27F5 -longleftrightarrow;=\u27F7 -longmapsto;=\u27FC -longrightarrow;=\u27F6 -looparrowleft;=\u21AB -looparrowright;=\u21AC -lopar;=\u2985 -lopf;=\uD835\uDD5D -loplus;=\u2A2D -lotimes;=\u2A34 -lowast;=\u2217 -lowbar;=\u005F -loz;=\u25CA -lozenge;=\u25CA -lozf;=\u29EB -lpar;=\u0028 -lparlt;=\u2993 -lrarr;=\u21C6 -lrcorner;=\u231F -lrhar;=\u21CB -lrhard;=\u296D -lrm;=\u200E -lrtri;=\u22BF -lsaquo;=\u2039 -lscr;=\uD835\uDCC1 -lsh;=\u21B0 -lsim;=\u2272 -lsime;=\u2A8D -lsimg;=\u2A8F -lsqb;=\u005B -lsquo;=\u2018 -lsquor;=\u201A -lstrok;=\u0142 -lt=\u003C -lt;=\u003C -ltcc;=\u2AA6 -ltcir;=\u2A79 -ltdot;=\u22D6 -lthree;=\u22CB -ltimes;=\u22C9 -ltlarr;=\u2976 -ltquest;=\u2A7B -ltrPar;=\u2996 -ltri;=\u25C3 -ltrie;=\u22B4 -ltrif;=\u25C2 -lurdshar;=\u294A -luruhar;=\u2966 -lvertneqq;=\u2268\uFE00 -lvnE;=\u2268\uFE00 -mDDot;=\u223A -macr=\u00AF -macr;=\u00AF -male;=\u2642 -malt;=\u2720 -maltese;=\u2720 -map;=\u21A6 -mapsto;=\u21A6 -mapstodown;=\u21A7 -mapstoleft;=\u21A4 -mapstoup;=\u21A5 -marker;=\u25AE -mcomma;=\u2A29 -mcy;=\u043C -mdash;=\u2014 -measuredangle;=\u2221 -mfr;=\uD835\uDD2A -mho;=\u2127 -micro=\u00B5 -micro;=\u00B5 -mid;=\u2223 -midast;=\u002A -midcir;=\u2AF0 -middot=\u00B7 -middot;=\u00B7 -minus;=\u2212 -minusb;=\u229F -minusd;=\u2238 -minusdu;=\u2A2A -mlcp;=\u2ADB -mldr;=\u2026 -mnplus;=\u2213 -models;=\u22A7 -mopf;=\uD835\uDD5E -mp;=\u2213 -mscr;=\uD835\uDCC2 -mstpos;=\u223E -mu;=\u03BC -multimap;=\u22B8 -mumap;=\u22B8 -nGg;=\u22D9\u0338 -nGt;=\u226B\u20D2 -nGtv;=\u226B\u0338 -nLeftarrow;=\u21CD -nLeftrightarrow;=\u21CE -nLl;=\u22D8\u0338 -nLt;=\u226A\u20D2 -nLtv;=\u226A\u0338 -nRightarrow;=\u21CF -nVDash;=\u22AF -nVdash;=\u22AE -nabla;=\u2207 -nacute;=\u0144 -nang;=\u2220\u20D2 -nap;=\u2249 -napE;=\u2A70\u0338 -napid;=\u224B\u0338 -napos;=\u0149 -napprox;=\u2249 -natur;=\u266E -natural;=\u266E -naturals;=\u2115 -nbsp=\u00A0 -nbsp;=\u00A0 -nbump;=\u224E\u0338 -nbumpe;=\u224F\u0338 -ncap;=\u2A43 -ncaron;=\u0148 -ncedil;=\u0146 -ncong;=\u2247 -ncongdot;=\u2A6D\u0338 -ncup;=\u2A42 -ncy;=\u043D -ndash;=\u2013 -ne;=\u2260 -neArr;=\u21D7 -nearhk;=\u2924 -nearr;=\u2197 -nearrow;=\u2197 -nedot;=\u2250\u0338 -nequiv;=\u2262 -nesear;=\u2928 -nesim;=\u2242\u0338 -nexist;=\u2204 -nexists;=\u2204 -nfr;=\uD835\uDD2B -ngE;=\u2267\u0338 -nge;=\u2271 -ngeq;=\u2271 -ngeqq;=\u2267\u0338 -ngeqslant;=\u2A7E\u0338 -nges;=\u2A7E\u0338 -ngsim;=\u2275 -ngt;=\u226F -ngtr;=\u226F -nhArr;=\u21CE -nharr;=\u21AE -nhpar;=\u2AF2 -ni;=\u220B -nis;=\u22FC -nisd;=\u22FA -niv;=\u220B -njcy;=\u045A -nlArr;=\u21CD -nlE;=\u2266\u0338 -nlarr;=\u219A -nldr;=\u2025 -nle;=\u2270 -nleftarrow;=\u219A -nleftrightarrow;=\u21AE -nleq;=\u2270 -nleqq;=\u2266\u0338 -nleqslant;=\u2A7D\u0338 -nles;=\u2A7D\u0338 -nless;=\u226E -nlsim;=\u2274 -nlt;=\u226E -nltri;=\u22EA -nltrie;=\u22EC -nmid;=\u2224 -nopf;=\uD835\uDD5F -not=\u00AC -not;=\u00AC -notin;=\u2209 -notinE;=\u22F9\u0338 -notindot;=\u22F5\u0338 -notinva;=\u2209 -notinvb;=\u22F7 -notinvc;=\u22F6 -notni;=\u220C -notniva;=\u220C -notnivb;=\u22FE -notnivc;=\u22FD -npar;=\u2226 -nparallel;=\u2226 -nparsl;=\u2AFD\u20E5 -npart;=\u2202\u0338 -npolint;=\u2A14 -npr;=\u2280 -nprcue;=\u22E0 -npre;=\u2AAF\u0338 -nprec;=\u2280 -npreceq;=\u2AAF\u0338 -nrArr;=\u21CF -nrarr;=\u219B -nrarrc;=\u2933\u0338 -nrarrw;=\u219D\u0338 -nrightarrow;=\u219B -nrtri;=\u22EB -nrtrie;=\u22ED -nsc;=\u2281 -nsccue;=\u22E1 -nsce;=\u2AB0\u0338 -nscr;=\uD835\uDCC3 -nshortmid;=\u2224 -nshortparallel;=\u2226 -nsim;=\u2241 -nsime;=\u2244 -nsimeq;=\u2244 -nsmid;=\u2224 -nspar;=\u2226 -nsqsube;=\u22E2 -nsqsupe;=\u22E3 -nsub;=\u2284 -nsubE;=\u2AC5\u0338 -nsube;=\u2288 -nsubset;=\u2282\u20D2 -nsubseteq;=\u2288 -nsubseteqq;=\u2AC5\u0338 -nsucc;=\u2281 -nsucceq;=\u2AB0\u0338 -nsup;=\u2285 -nsupE;=\u2AC6\u0338 -nsupe;=\u2289 -nsupset;=\u2283\u20D2 -nsupseteq;=\u2289 -nsupseteqq;=\u2AC6\u0338 -ntgl;=\u2279 -ntilde=\u00F1 -ntilde;=\u00F1 -ntlg;=\u2278 -ntriangleleft;=\u22EA -ntrianglelefteq;=\u22EC -ntriangleright;=\u22EB -ntrianglerighteq;=\u22ED -nu;=\u03BD -num;=\u0023 -numero;=\u2116 -numsp;=\u2007 -nvDash;=\u22AD -nvHarr;=\u2904 -nvap;=\u224D\u20D2 -nvdash;=\u22AC -nvge;=\u2265\u20D2 -nvgt;=\u003E\u20D2 -nvinfin;=\u29DE -nvlArr;=\u2902 -nvle;=\u2264\u20D2 -nvlt;=\u003C\u20D2 -nvltrie;=\u22B4\u20D2 -nvrArr;=\u2903 -nvrtrie;=\u22B5\u20D2 -nvsim;=\u223C\u20D2 -nwArr;=\u21D6 -nwarhk;=\u2923 -nwarr;=\u2196 -nwarrow;=\u2196 -nwnear;=\u2927 -oS;=\u24C8 -oacute=\u00F3 -oacute;=\u00F3 -oast;=\u229B -ocir;=\u229A -ocirc=\u00F4 -ocirc;=\u00F4 -ocy;=\u043E -odash;=\u229D -odblac;=\u0151 -odiv;=\u2A38 -odot;=\u2299 -odsold;=\u29BC -oelig;=\u0153 -ofcir;=\u29BF -ofr;=\uD835\uDD2C -ogon;=\u02DB -ograve=\u00F2 -ograve;=\u00F2 -ogt;=\u29C1 -ohbar;=\u29B5 -ohm;=\u03A9 -oint;=\u222E -olarr;=\u21BA -olcir;=\u29BE -olcross;=\u29BB -oline;=\u203E -olt;=\u29C0 -omacr;=\u014D -omega;=\u03C9 -omicron;=\u03BF -omid;=\u29B6 -ominus;=\u2296 -oopf;=\uD835\uDD60 -opar;=\u29B7 -operp;=\u29B9 -oplus;=\u2295 -or;=\u2228 -orarr;=\u21BB -ord;=\u2A5D -order;=\u2134 -orderof;=\u2134 -ordf=\u00AA -ordf;=\u00AA -ordm=\u00BA -ordm;=\u00BA -origof;=\u22B6 -oror;=\u2A56 -orslope;=\u2A57 -orv;=\u2A5B -oscr;=\u2134 -oslash=\u00F8 -oslash;=\u00F8 -osol;=\u2298 -otilde=\u00F5 -otilde;=\u00F5 -otimes;=\u2297 -otimesas;=\u2A36 -ouml=\u00F6 -ouml;=\u00F6 -ovbar;=\u233D -par;=\u2225 -para=\u00B6 -para;=\u00B6 -parallel;=\u2225 -parsim;=\u2AF3 -parsl;=\u2AFD -part;=\u2202 -pcy;=\u043F -percnt;=\u0025 -period;=\u002E -permil;=\u2030 -perp;=\u22A5 -pertenk;=\u2031 -pfr;=\uD835\uDD2D -phi;=\u03C6 -phiv;=\u03D5 -phmmat;=\u2133 -phone;=\u260E -pi;=\u03C0 -pitchfork;=\u22D4 -piv;=\u03D6 -planck;=\u210F -planckh;=\u210E -plankv;=\u210F -plus;=\u002B -plusacir;=\u2A23 -plusb;=\u229E -pluscir;=\u2A22 -plusdo;=\u2214 -plusdu;=\u2A25 -pluse;=\u2A72 -plusmn=\u00B1 -plusmn;=\u00B1 -plussim;=\u2A26 -plustwo;=\u2A27 -pm;=\u00B1 -pointint;=\u2A15 -popf;=\uD835\uDD61 -pound=\u00A3 -pound;=\u00A3 -pr;=\u227A -prE;=\u2AB3 -prap;=\u2AB7 -prcue;=\u227C -pre;=\u2AAF -prec;=\u227A -precapprox;=\u2AB7 -preccurlyeq;=\u227C -preceq;=\u2AAF -precnapprox;=\u2AB9 -precneqq;=\u2AB5 -precnsim;=\u22E8 -precsim;=\u227E -prime;=\u2032 -primes;=\u2119 -prnE;=\u2AB5 -prnap;=\u2AB9 -prnsim;=\u22E8 -prod;=\u220F -profalar;=\u232E -profline;=\u2312 -profsurf;=\u2313 -prop;=\u221D -propto;=\u221D -prsim;=\u227E -prurel;=\u22B0 -pscr;=\uD835\uDCC5 -psi;=\u03C8 -puncsp;=\u2008 -qfr;=\uD835\uDD2E -qint;=\u2A0C -qopf;=\uD835\uDD62 -qprime;=\u2057 -qscr;=\uD835\uDCC6 -quaternions;=\u210D -quatint;=\u2A16 -quest;=\u003F -questeq;=\u225F -quot=\u0022 -quot;=\u0022 -rAarr;=\u21DB -rArr;=\u21D2 -rAtail;=\u291C -rBarr;=\u290F -rHar;=\u2964 -race;=\u223D\u0331 -racute;=\u0155 -radic;=\u221A -raemptyv;=\u29B3 -rang;=\u27E9 -rangd;=\u2992 -range;=\u29A5 -rangle;=\u27E9 -raquo=\u00BB -raquo;=\u00BB -rarr;=\u2192 -rarrap;=\u2975 -rarrb;=\u21E5 -rarrbfs;=\u2920 -rarrc;=\u2933 -rarrfs;=\u291E -rarrhk;=\u21AA -rarrlp;=\u21AC -rarrpl;=\u2945 -rarrsim;=\u2974 -rarrtl;=\u21A3 -rarrw;=\u219D -ratail;=\u291A -ratio;=\u2236 -rationals;=\u211A -rbarr;=\u290D -rbbrk;=\u2773 -rbrace;=\u007D -rbrack;=\u005D -rbrke;=\u298C -rbrksld;=\u298E -rbrkslu;=\u2990 -rcaron;=\u0159 -rcedil;=\u0157 -rceil;=\u2309 -rcub;=\u007D -rcy;=\u0440 -rdca;=\u2937 -rdldhar;=\u2969 -rdquo;=\u201D -rdquor;=\u201D -rdsh;=\u21B3 -real;=\u211C -realine;=\u211B -realpart;=\u211C -reals;=\u211D -rect;=\u25AD -reg=\u00AE -reg;=\u00AE -rfisht;=\u297D -rfloor;=\u230B -rfr;=\uD835\uDD2F -rhard;=\u21C1 -rharu;=\u21C0 -rharul;=\u296C -rho;=\u03C1 -rhov;=\u03F1 -rightarrow;=\u2192 -rightarrowtail;=\u21A3 -rightharpoondown;=\u21C1 -rightharpoonup;=\u21C0 -rightleftarrows;=\u21C4 -rightleftharpoons;=\u21CC -rightrightarrows;=\u21C9 -rightsquigarrow;=\u219D -rightthreetimes;=\u22CC -ring;=\u02DA -risingdotseq;=\u2253 -rlarr;=\u21C4 -rlhar;=\u21CC -rlm;=\u200F -rmoust;=\u23B1 -rmoustache;=\u23B1 -rnmid;=\u2AEE -roang;=\u27ED -roarr;=\u21FE -robrk;=\u27E7 -ropar;=\u2986 -ropf;=\uD835\uDD63 -roplus;=\u2A2E -rotimes;=\u2A35 -rpar;=\u0029 -rpargt;=\u2994 -rppolint;=\u2A12 -rrarr;=\u21C9 -rsaquo;=\u203A -rscr;=\uD835\uDCC7 -rsh;=\u21B1 -rsqb;=\u005D -rsquo;=\u2019 -rsquor;=\u2019 -rthree;=\u22CC -rtimes;=\u22CA -rtri;=\u25B9 -rtrie;=\u22B5 -rtrif;=\u25B8 -rtriltri;=\u29CE -ruluhar;=\u2968 -rx;=\u211E -sacute;=\u015B -sbquo;=\u201A -sc;=\u227B -scE;=\u2AB4 -scap;=\u2AB8 -scaron;=\u0161 -sccue;=\u227D -sce;=\u2AB0 -scedil;=\u015F -scirc;=\u015D -scnE;=\u2AB6 -scnap;=\u2ABA -scnsim;=\u22E9 -scpolint;=\u2A13 -scsim;=\u227F -scy;=\u0441 -sdot;=\u22C5 -sdotb;=\u22A1 -sdote;=\u2A66 -seArr;=\u21D8 -searhk;=\u2925 -searr;=\u2198 -searrow;=\u2198 -sect=\u00A7 -sect;=\u00A7 -semi;=\u003B -seswar;=\u2929 -setminus;=\u2216 -setmn;=\u2216 -sext;=\u2736 -sfr;=\uD835\uDD30 -sfrown;=\u2322 -sharp;=\u266F -shchcy;=\u0449 -shcy;=\u0448 -shortmid;=\u2223 -shortparallel;=\u2225 -shy=\u00AD -shy;=\u00AD -sigma;=\u03C3 -sigmaf;=\u03C2 -sigmav;=\u03C2 -sim;=\u223C -simdot;=\u2A6A -sime;=\u2243 -simeq;=\u2243 -simg;=\u2A9E -simgE;=\u2AA0 -siml;=\u2A9D -simlE;=\u2A9F -simne;=\u2246 -simplus;=\u2A24 -simrarr;=\u2972 -slarr;=\u2190 -smallsetminus;=\u2216 -smashp;=\u2A33 -smeparsl;=\u29E4 -smid;=\u2223 -smile;=\u2323 -smt;=\u2AAA -smte;=\u2AAC -smtes;=\u2AAC\uFE00 -softcy;=\u044C -sol;=\u002F -solb;=\u29C4 -solbar;=\u233F -sopf;=\uD835\uDD64 -spades;=\u2660 -spadesuit;=\u2660 -spar;=\u2225 -sqcap;=\u2293 -sqcaps;=\u2293\uFE00 -sqcup;=\u2294 -sqcups;=\u2294\uFE00 -sqsub;=\u228F -sqsube;=\u2291 -sqsubset;=\u228F -sqsubseteq;=\u2291 -sqsup;=\u2290 -sqsupe;=\u2292 -sqsupset;=\u2290 -sqsupseteq;=\u2292 -squ;=\u25A1 -square;=\u25A1 -squarf;=\u25AA -squf;=\u25AA -srarr;=\u2192 -sscr;=\uD835\uDCC8 -ssetmn;=\u2216 -ssmile;=\u2323 -sstarf;=\u22C6 -star;=\u2606 -starf;=\u2605 -straightepsilon;=\u03F5 -straightphi;=\u03D5 -strns;=\u00AF -sub;=\u2282 -subE;=\u2AC5 -subdot;=\u2ABD -sube;=\u2286 -subedot;=\u2AC3 -submult;=\u2AC1 -subnE;=\u2ACB -subne;=\u228A -subplus;=\u2ABF -subrarr;=\u2979 -subset;=\u2282 -subseteq;=\u2286 -subseteqq;=\u2AC5 -subsetneq;=\u228A -subsetneqq;=\u2ACB -subsim;=\u2AC7 -subsub;=\u2AD5 -subsup;=\u2AD3 -succ;=\u227B -succapprox;=\u2AB8 -succcurlyeq;=\u227D -succeq;=\u2AB0 -succnapprox;=\u2ABA -succneqq;=\u2AB6 -succnsim;=\u22E9 -succsim;=\u227F -sum;=\u2211 -sung;=\u266A -sup1=\u00B9 -sup1;=\u00B9 -sup2=\u00B2 -sup2;=\u00B2 -sup3=\u00B3 -sup3;=\u00B3 -sup;=\u2283 -supE;=\u2AC6 -supdot;=\u2ABE -supdsub;=\u2AD8 -supe;=\u2287 -supedot;=\u2AC4 -suphsol;=\u27C9 -suphsub;=\u2AD7 -suplarr;=\u297B -supmult;=\u2AC2 -supnE;=\u2ACC -supne;=\u228B -supplus;=\u2AC0 -supset;=\u2283 -supseteq;=\u2287 -supseteqq;=\u2AC6 -supsetneq;=\u228B -supsetneqq;=\u2ACC -supsim;=\u2AC8 -supsub;=\u2AD4 -supsup;=\u2AD6 -swArr;=\u21D9 -swarhk;=\u2926 -swarr;=\u2199 -swarrow;=\u2199 -swnwar;=\u292A -szlig=\u00DF -szlig;=\u00DF -target;=\u2316 -tau;=\u03C4 -tbrk;=\u23B4 -tcaron;=\u0165 -tcedil;=\u0163 -tcy;=\u0442 -tdot;=\u20DB -telrec;=\u2315 -tfr;=\uD835\uDD31 -there4;=\u2234 -therefore;=\u2234 -theta;=\u03B8 -thetasym;=\u03D1 -thetav;=\u03D1 -thickapprox;=\u2248 -thicksim;=\u223C -thinsp;=\u2009 -thkap;=\u2248 -thksim;=\u223C -thorn=\u00FE -thorn;=\u00FE -tilde;=\u02DC -times=\u00D7 -times;=\u00D7 -timesb;=\u22A0 -timesbar;=\u2A31 -timesd;=\u2A30 -tint;=\u222D -toea;=\u2928 -top;=\u22A4 -topbot;=\u2336 -topcir;=\u2AF1 -topf;=\uD835\uDD65 -topfork;=\u2ADA -tosa;=\u2929 -tprime;=\u2034 -trade;=\u2122 -triangle;=\u25B5 -triangledown;=\u25BF -triangleleft;=\u25C3 -trianglelefteq;=\u22B4 -triangleq;=\u225C -triangleright;=\u25B9 -trianglerighteq;=\u22B5 -tridot;=\u25EC -trie;=\u225C -triminus;=\u2A3A -triplus;=\u2A39 -trisb;=\u29CD -tritime;=\u2A3B -trpezium;=\u23E2 -tscr;=\uD835\uDCC9 -tscy;=\u0446 -tshcy;=\u045B -tstrok;=\u0167 -twixt;=\u226C -twoheadleftarrow;=\u219E -twoheadrightarrow;=\u21A0 -uArr;=\u21D1 -uHar;=\u2963 -uacute=\u00FA -uacute;=\u00FA -uarr;=\u2191 -ubrcy;=\u045E -ubreve;=\u016D -ucirc=\u00FB -ucirc;=\u00FB -ucy;=\u0443 -udarr;=\u21C5 -udblac;=\u0171 -udhar;=\u296E -ufisht;=\u297E -ufr;=\uD835\uDD32 -ugrave=\u00F9 -ugrave;=\u00F9 -uharl;=\u21BF -uharr;=\u21BE -uhblk;=\u2580 -ulcorn;=\u231C -ulcorner;=\u231C -ulcrop;=\u230F -ultri;=\u25F8 -umacr;=\u016B -uml=\u00A8 -uml;=\u00A8 -uogon;=\u0173 -uopf;=\uD835\uDD66 -uparrow;=\u2191 -updownarrow;=\u2195 -upharpoonleft;=\u21BF -upharpoonright;=\u21BE -uplus;=\u228E -upsi;=\u03C5 -upsih;=\u03D2 -upsilon;=\u03C5 -upuparrows;=\u21C8 -urcorn;=\u231D -urcorner;=\u231D -urcrop;=\u230E -uring;=\u016F -urtri;=\u25F9 -uscr;=\uD835\uDCCA -utdot;=\u22F0 -utilde;=\u0169 -utri;=\u25B5 -utrif;=\u25B4 -uuarr;=\u21C8 -uuml=\u00FC -uuml;=\u00FC -uwangle;=\u29A7 -vArr;=\u21D5 -vBar;=\u2AE8 -vBarv;=\u2AE9 -vDash;=\u22A8 -vangrt;=\u299C -varepsilon;=\u03F5 -varkappa;=\u03F0 -varnothing;=\u2205 -varphi;=\u03D5 -varpi;=\u03D6 -varpropto;=\u221D -varr;=\u2195 -varrho;=\u03F1 -varsigma;=\u03C2 -varsubsetneq;=\u228A\uFE00 -varsubsetneqq;=\u2ACB\uFE00 -varsupsetneq;=\u228B\uFE00 -varsupsetneqq;=\u2ACC\uFE00 -vartheta;=\u03D1 -vartriangleleft;=\u22B2 -vartriangleright;=\u22B3 -vcy;=\u0432 -vdash;=\u22A2 -vee;=\u2228 -veebar;=\u22BB -veeeq;=\u225A -vellip;=\u22EE -verbar;=\u007C -vert;=\u007C -vfr;=\uD835\uDD33 -vltri;=\u22B2 -vnsub;=\u2282\u20D2 -vnsup;=\u2283\u20D2 -vopf;=\uD835\uDD67 -vprop;=\u221D -vrtri;=\u22B3 -vscr;=\uD835\uDCCB -vsubnE;=\u2ACB\uFE00 -vsubne;=\u228A\uFE00 -vsupnE;=\u2ACC\uFE00 -vsupne;=\u228B\uFE00 -vzigzag;=\u299A -wcirc;=\u0175 -wedbar;=\u2A5F -wedge;=\u2227 -wedgeq;=\u2259 -weierp;=\u2118 -wfr;=\uD835\uDD34 -wopf;=\uD835\uDD68 -wp;=\u2118 -wr;=\u2240 -wreath;=\u2240 -wscr;=\uD835\uDCCC -xcap;=\u22C2 -xcirc;=\u25EF -xcup;=\u22C3 -xdtri;=\u25BD -xfr;=\uD835\uDD35 -xhArr;=\u27FA -xharr;=\u27F7 -xi;=\u03BE -xlArr;=\u27F8 -xlarr;=\u27F5 -xmap;=\u27FC -xnis;=\u22FB -xodot;=\u2A00 -xopf;=\uD835\uDD69 -xoplus;=\u2A01 -xotime;=\u2A02 -xrArr;=\u27F9 -xrarr;=\u27F6 -xscr;=\uD835\uDCCD -xsqcup;=\u2A06 -xuplus;=\u2A04 -xutri;=\u25B3 -xvee;=\u22C1 -xwedge;=\u22C0 -yacute=\u00FD -yacute;=\u00FD -yacy;=\u044F -ycirc;=\u0177 -ycy;=\u044B -yen=\u00A5 -yen;=\u00A5 -yfr;=\uD835\uDD36 -yicy;=\u0457 -yopf;=\uD835\uDD6A -yscr;=\uD835\uDCCE -yucy;=\u044E -yuml=\u00FF -yuml;=\u00FF -zacute;=\u017A -zcaron;=\u017E -zcy;=\u0437 -zdot;=\u017C -zeetrf;=\u2128 -zeta;=\u03B6 -zfr;=\uD835\uDD37 -zhcy;=\u0436 -zigrarr;=\u21DD -zopf;=\uD835\uDD6B -zscr;=\uD835\uDCCF -zwj;=\u200D -zwnj;=\u200C \ No newline at end of file diff --git a/benchmark/src/test/java/org/htmlunit/cyberneko/HTMLEntitiesParserTest.java b/benchmark/src/test/java/org/htmlunit/cyberneko/HTMLEntitiesParserTest.java deleted file mode 100644 index bc2a0497..00000000 --- a/benchmark/src/test/java/org/htmlunit/cyberneko/HTMLEntitiesParserTest.java +++ /dev/null @@ -1,216 +0,0 @@ -package org.htmlunit.cyberneko; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; - -import org.htmlunit.cyberneko.util.HTMLEntitiesParser; -import org.htmlunit.cyberneko.util.HTMLEntitiesParser.Level; -import org.junit.jupiter.api.Test; - -public class HTMLEntitiesParserTest -{ - @Test - public void happyPath() - { - final Level r = HTMLEntitiesParser.get().lookup("Beta;"); - assertTrue(r.isMatch); - assertTrue(r.endNode); - assertTrue(r.endsWithSemicolon); - - assertEquals("\u0392", r.resolvedValue); - assertEquals("Beta;", r.entityOrFragment); - assertEquals(5, r.length); - } - - @Test - public void happyPathOneCharDiff() - { - { - final Level r = HTMLEntitiesParser.get().lookup("Colon;"); - assertTrue(r.isMatch); - assertTrue(r.endNode); - assertTrue(r.endsWithSemicolon); - - assertEquals("\u2237", r.resolvedValue); - assertEquals("Colon;", r.entityOrFragment); - assertEquals(6, r.length); - } - { - final Level r = HTMLEntitiesParser.get().lookup("Colone;"); - assertTrue(r.isMatch); - assertTrue(r.endNode); - assertTrue(r.endsWithSemicolon); - - assertEquals("\u2A74", r.resolvedValue); - assertEquals("Colone;", r.entityOrFragment); - assertEquals(7, r.length); - } - } - - @Test - public void happyPathTwoVersionEntity() - { - { - final Level r = HTMLEntitiesParser.get().lookup("gt"); - assertEquals("gt", r.entityOrFragment); - assertTrue(r.isMatch); - assertFalse(r.endNode); - assertFalse(r.endsWithSemicolon); - - assertEquals(">", r.resolvedValue); - assertEquals(2, r.length); - } - { - final Level r = HTMLEntitiesParser.get().lookup("gt;"); - assertEquals("gt;", r.entityOrFragment); - assertTrue(r.isMatch); - assertTrue(r.endNode); - assertTrue(r.endsWithSemicolon); - - assertEquals(">", r.resolvedValue); - assertEquals(3, r.length); - } - } - - @Test - public void happyPathTwoVersionEntity2() - { - { - final Level r = HTMLEntitiesParser.get().lookup("ccedil"); - assertEquals("ccedil", r.entityOrFragment); - assertTrue(r.isMatch); - assertFalse(r.endNode); - assertFalse(r.endsWithSemicolon); - - assertEquals("\u00E7", r.resolvedValue); - assertEquals(6, r.length); - } - { - final Level r = HTMLEntitiesParser.get().lookup("ccedil;"); - assertEquals("ccedil;", r.entityOrFragment); - assertTrue(r.isMatch); - assertTrue(r.endNode); - assertTrue(r.endsWithSemicolon); - - assertEquals("\u00E7", r.resolvedValue); - assertEquals(7, r.length); - } - } - - @Test - public void fullyUnknown() - { - { - final Level r = HTMLEntitiesParser.get().lookup("abc;"); - assertFalse(r.isMatch); - assertFalse(r.endNode); - assertFalse(r.endsWithSemicolon); - - assertEquals(null, r.resolvedValue); - assertEquals("ab", r.entityOrFragment); - assertEquals(2, r.length); - } - } - - /** - * This must resolve to ¬ !! - */ - @Test - public void notit() - { - { - final Level r = HTMLEntitiesParser.get().lookup("notit;"); - assertTrue(r.isMatch); - assertFalse(r.endNode); - assertFalse(r.endsWithSemicolon); - - assertEquals("\u00AC", r.resolvedValue); - assertEquals("not", r.entityOrFragment); - assertEquals(3, r.length); - } - } - - /** - * This resolve to ¬ - */ - @Test - public void notSemicolon() - { - { - final Level r = HTMLEntitiesParser.get().lookup("not;"); - assertTrue(r.isMatch); - assertTrue(r.endNode); - assertTrue(r.endsWithSemicolon); - - assertEquals("\u00AC", r.resolvedValue); - assertEquals("not;", r.entityOrFragment); - assertEquals(4, r.length); - } - } - - /** - * This resolve to ¬ - */ - @Test - public void nothash() - { - { - final Level r = HTMLEntitiesParser.get().lookup("not#"); - assertTrue(r.isMatch); - assertFalse(r.endNode); - assertFalse(r.endsWithSemicolon); - - assertEquals("\u00AC", r.resolvedValue); - assertEquals("not", r.entityOrFragment); - assertEquals(3, r.length); - } - } - - /** - * Test all entities - * @throws IOException - */ - @Test - public void allEntitiesWithSemicolonFull() throws IOException { - final Properties props = new Properties(); - try (InputStream stream = HTMLEntitiesParserTest.class.getResourceAsStream("html_entities.properties")) { - props.load(stream); - } - - props.forEach((k, v) -> { - String key = (String) k; - String value = (String) v; - - // we might have an empty line in it - // we also don't want to test "old" entities at the moment aka no ; at the end - if (key.trim().isEmpty()) { - return; - } - - final Level r = HTMLEntitiesParser.get().lookup(key); - assertTrue(r.isMatch); - if (key.endsWith(";")) - { - assertTrue(r.endNode); - assertTrue(r.endsWithSemicolon); - } - else - { - // no ; means it is never and end node, because this - // is for legacy entities - assertFalse(r.endNode); - assertFalse(r.endsWithSemicolon); - } - - assertEquals(value, r.resolvedValue); - assertEquals(key, r.entityOrFragment); - assertEquals(key.length(), r.length); - }); - } - -} diff --git a/benchmark/src/test/java/org/htmlunit/cyberneko/HTMLEntitiesParser_OldTest.java b/benchmark/src/test/java/org/htmlunit/cyberneko/HTMLEntitiesParser_OldTest.java deleted file mode 100644 index 96c67f74..00000000 --- a/benchmark/src/test/java/org/htmlunit/cyberneko/HTMLEntitiesParser_OldTest.java +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright 2002-2009 Andy Clark, Marc Guillemot - * Copyright 2017-2023 Ronald Brill - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.htmlunit.cyberneko; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; - -import org.htmlunit.cyberneko.HTMLEntitiesParser_Old; -import org.junit.jupiter.api.Test; - -/** - * Unit tests for {@link HTMLEntitiesParser_OldGenerator}. - * @author Ronald Brill - */ -public class HTMLEntitiesParser_OldTest { - - @Test - public void parseEuml() { - final HTMLEntitiesParser_Old parser = new HTMLEntitiesParser_Old(); - - final String input = "Euml "; - int i = 0; - while (parser.parse(input.charAt(i))) { - i++; - } - assertEquals("\u00CB", parser.getMatch()); - assertEquals(1, parser.getRewindCount()); - assertFalse(parser.endsWithSemicolon()); - } - - @Test - public void parseEuml_() { - final HTMLEntitiesParser_Old parser = new HTMLEntitiesParser_Old(); - - final String input = "Euml; "; - int i = 0; - while (parser.parse(input.charAt(i))) { - i++; - } - assertEquals("\u00CB", parser.getMatch()); - assertEquals(0, parser.getRewindCount()); - assertTrue(parser.endsWithSemicolon()); - } - - @Test - public void parseEumlX() { - final HTMLEntitiesParser_Old parser = new HTMLEntitiesParser_Old(); - - final String input = "EumlX"; - int i = 0; - while (parser.parse(input.charAt(i))) { - i++; - } - - // valid without semicolon at end - assertEquals("\u00CB", parser.getMatch()); - assertEquals(1, parser.getRewindCount()); - assertFalse(parser.endsWithSemicolon()); - } - - @Test - public void parseEumX() { - final HTMLEntitiesParser_Old parser = new HTMLEntitiesParser_Old(); - - final String input = "EumX"; - int i = 0; - while (parser.parse(input.charAt(i))) { - i++; - } - assertNull(parser.getMatch()); - assertEquals(4, parser.getRewindCount()); - assertFalse(parser.endsWithSemicolon()); - } - - @Test - public void parseEuroLt() { - final HTMLEntitiesParser_Old parser = new HTMLEntitiesParser_Old(); - - final String input = "euro<"; - int i = 0; - while (parser.parse(input.charAt(i))) { - i++; - } - - // not valid without semicolon at end - assertNull(parser.getMatch()); - assertEquals(5, parser.getRewindCount()); - assertFalse(parser.endsWithSemicolon()); - } - - @Test - public void parseEuro() { - final HTMLEntitiesParser_Old parser = new HTMLEntitiesParser_Old(); - - final String input = "x80;"; - int i = 0; - while (parser.parseNumeric(input.charAt(i))) { - i++; - } - - assertEquals("\u20ac", parser.getMatch()); - assertEquals(0, parser.getRewindCount()); - } - - @Test - public void parseEuroMissingSemicolon() { - final HTMLEntitiesParser_Old parser = new HTMLEntitiesParser_Old(); - - final String input = "x80<"; - int i = 0; - while (parser.parseNumeric(input.charAt(i))) { - i++; - } - - assertEquals("\u20ac", parser.getMatch()); - assertEquals(1, parser.getRewindCount()); - } - - /** - * Test all entities - * @throws IOException - */ - @Test - public void allEntities() throws IOException { - final Properties props = new Properties(); - try (InputStream stream = HTMLEntitiesParser_OldTest.class.getResourceAsStream("html_entities.properties")) { - props.load(stream); - } - - props.forEach((k, v) -> { - String key = (String) k; - String value = (String) v; - - // we might have an empty line in it - if (key.isEmpty()) { - return; - } - - final HTMLEntitiesParser_Old parser = new HTMLEntitiesParser_Old(); - - int i = 0; - String parserInput = key + " "; - while (parser.parse(parserInput.charAt(i))) { - i++; - } - - assertEquals(value, parser.getMatch()); - assertEquals(key.endsWith(";") ? 0 : 1, parser.getRewindCount()); - assertEquals(key.endsWith(";"), parser.endsWithSemicolon()); - }); - } -} - - diff --git a/benchmark/src/test/java/org/htmlunit/cyberneko/HTMLNumericEntitiesParserTest.java b/benchmark/src/test/java/org/htmlunit/cyberneko/HTMLNumericEntitiesParserTest.java deleted file mode 100644 index 5c273dde..00000000 --- a/benchmark/src/test/java/org/htmlunit/cyberneko/HTMLNumericEntitiesParserTest.java +++ /dev/null @@ -1,198 +0,0 @@ -/* - * Copyright 2002-2009 Andy Clark, Marc Guillemot - * Copyright 2017-2023 Ronald Brill - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.htmlunit.cyberneko; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import org.htmlunit.cyberneko.util.HTMLNumericEntitiesParser; -import org.junit.jupiter.api.Test; - -/** - * Unit tests for {@link HTMLNumericEntities}. - * @author René Schwietzke - */ -public class HTMLNumericEntitiesParserTest { - @Test - public void parseEuro() { - final HTMLNumericEntitiesParser parser = new HTMLNumericEntitiesParser(); - - final String input = "x80;"; - int i = 0; - while (parser.parseNumeric(input.charAt(i))) { - i++; - } - - assertEquals("\u20ac", parser.getMatch()); - assertEquals(0, parser.getRewindCount()); - } - - @Test - public void parseEuroUppercase() { - final HTMLNumericEntitiesParser parser = new HTMLNumericEntitiesParser(); - - final String input = "X80;"; - int i = 0; - while (parser.parseNumeric(input.charAt(i))) { - i++; - } - - assertEquals("\u20ac", parser.getMatch()); - assertEquals(0, parser.getRewindCount()); - } - - @Test - public void parseBroken() { - final HTMLNumericEntitiesParser parser = new HTMLNumericEntitiesParser(); - - final String input = "A80;"; - int i = 0; - while (parser.parseNumeric(input.charAt(i))) { - i++; - } - - assertEquals(null, parser.getMatch()); - assertEquals(1, parser.getRewindCount()); - } - - @Test - public void parseLTAsDecimal() { - final HTMLNumericEntitiesParser parser = new HTMLNumericEntitiesParser(); - - final String input = "60;"; - int i = 0; - while (parser.parseNumeric(input.charAt(i))) { - i++; - } - - assertEquals("<", parser.getMatch()); - assertEquals(0, parser.getRewindCount()); - } - - @Test - public void parseLTAsDecimalBroken() { - final HTMLNumericEntitiesParser parser = new HTMLNumericEntitiesParser(); - - final String input = "60 "; - int i = 0; - while (parser.parseNumeric(input.charAt(i))) { - i++; - } - - assertEquals("<", parser.getMatch()); - assertEquals(1, parser.getRewindCount()); - } - - - @Test - public void parseEuroMissingSemicolon() { - final HTMLNumericEntitiesParser parser = new HTMLNumericEntitiesParser(); - - final String input = "x80<"; - int i = 0; - while (parser.parseNumeric(input.charAt(i))) { - i++; - } - - assertEquals("\u20ac", parser.getMatch()); - assertEquals(1, parser.getRewindCount()); - } - - @Test - public void parseNullChar() { - final HTMLEntitiesParser_Old parser = new HTMLEntitiesParser_Old(); - - final String input = "x00;"; - int i = 0; - while (parser.parseNumeric(input.charAt(i))) { - i++; - } - - assertEquals("\uFFFD", parser.getMatch()); - assertEquals(0, parser.getRewindCount()); - } - - @Test - public void parseOverflowRange() { - final HTMLNumericEntitiesParser parser = new HTMLNumericEntitiesParser(); - - final String input = "x11FFFF;"; - int i = 0; - while (parser.parseNumeric(input.charAt(i))) { - i++; - } - - assertEquals("\uFFFD", parser.getMatch()); - assertEquals(0, parser.getRewindCount()); - } - - @Test - public void parseSurrogate() { - final HTMLNumericEntitiesParser parser = new HTMLNumericEntitiesParser(); - - final String input = "xD800;"; - int i = 0; - while (parser.parseNumeric(input.charAt(i))) { - i++; - } - - assertEquals("\uFFFD", parser.getMatch()); - assertEquals(6, parser.getRewindCount()); - } - - @Test - public void parseNonCharacterLow() { - final HTMLNumericEntitiesParser parser = new HTMLNumericEntitiesParser(); - - final String input = "x80;"; - int i = 0; - while (parser.parseNumeric(input.charAt(i))) { - i++; - } - - assertEquals("\u20AC", parser.getMatch()); - assertEquals(0, parser.getRewindCount()); - } - - @Test - public void parseNonCharacterHighLowercase() { - final HTMLNumericEntitiesParser parser = new HTMLNumericEntitiesParser(); - - final String input = "x9f;"; - int i = 0; - while (parser.parseNumeric(input.charAt(i))) { - i++; - } - - assertEquals("\u0178", parser.getMatch()); - assertEquals(0, parser.getRewindCount()); - } - - @Test - public void parseNonCharacterHighUppercase() { - final HTMLNumericEntitiesParser parser = new HTMLNumericEntitiesParser(); - - final String input = "x9F;"; - int i = 0; - while (parser.parseNumeric(input.charAt(i))) { - i++; - } - - assertEquals("\u0178", parser.getMatch()); - assertEquals(0, parser.getRewindCount()); - } -} - - diff --git a/benchmark/src/test/java/org/htmlunit/cyberneko/HtmlEntities1ParserTest.java b/benchmark/src/test/java/org/htmlunit/cyberneko/HtmlEntities1ParserTest.java deleted file mode 100644 index 5d08f054..00000000 --- a/benchmark/src/test/java/org/htmlunit/cyberneko/HtmlEntities1ParserTest.java +++ /dev/null @@ -1,149 +0,0 @@ -package org.htmlunit.cyberneko; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.Properties; - -import org.htmlunit.benchmark.util.FastRandom; -import org.htmlunit.cyberneko.util.HtmlEntities1; -import org.htmlunit.cyberneko.util.HtmlEntities1.Resolver; -import org.htmlunit.cyberneko.util.HtmlEntities2.Level; -import org.junit.jupiter.api.Test; - -public class HtmlEntities1ParserTest -{ - @Test - public void happyPath() - { - final Optional r = HtmlEntities1.get().lookup("gt"); - assertEquals(">", r.get()); - } - - @Test - public void unknown() - { - final Optional r = HtmlEntities1.get().lookup("anything"); - assertFalse(r.isPresent()); - } - - @Test - public void unicodeFind() - { - final Optional r = HtmlEntities1.get().lookup("dot;"); - assertEquals("\u02D9", r.get()); - } - - @Test - public void existsButOnlyAsPiece() - { - final Optional r = HtmlEntities1.get().lookup("Agra"); - assertFalse(r.isPresent()); - } - - @Test - public void existsInTwoVersions() - { - final Optional r1 = HtmlEntities1.get().lookup("Agrave"); - assertEquals("\u00C0", r1.get()); - - final Optional r2 = HtmlEntities1.get().lookup("Agrave;"); - assertEquals("\u00C0", r2.get()); - } - - /** - * Test all entities - * @throws IOException - */ - @Test - public void allEntitiesFullRandom() throws IOException { - final Properties props = new Properties(); - try (InputStream stream = HtmlEntities1ParserTest.class.getResourceAsStream("html_entities.properties")) { - props.load(stream); - } - - final List keys = new ArrayList<>(); - final List values = new ArrayList<>(); - - props.forEach((k, v) -> { - String key = (String) k; - String value = (String) v; - - // we might have an empty line in it - if (key.isEmpty()) { - return; - } - - // we need randomness to avoid that the setup data looks identical to the quueried data - FastRandom r = new FastRandom(); - int pos = r.nextInt(keys.size() + 1); - - keys.add(pos, key); - values.add(pos, value); - }); - - - for (int i = 0; i < keys.size(); i++) { - String key = keys.get(i); - String value = values.get(i); - - // we might have an empty line in it - // we also don't want to test "old" entities at the moment aka no ; at the end - if (key.trim().isEmpty()) { - return; - } - - final Optional r = HtmlEntities1.get().lookup(key); - assertEquals(value, r.get()); - } - } - - /** - * Test all entities - * @throws IOException - */ - @Test - public void allEntitiesByCharacter() throws IOException { - final Properties props = new Properties(); - try (InputStream stream = HtmlEntities1ParserTest.class.getResourceAsStream("html_entities.properties")) { - props.load(stream); - } - - // touch me for faster debug loading - HtmlEntities1.get(); - - props.forEach((k, v) -> { - String key = (String) k; - String value = (String) v; - - // we might have an empty line in it - if (key.isEmpty()) { - return; - } - - final Resolver resolver = new HtmlEntities1.Resolver(); - for (int i = 0; i < key.length(); i++) - { - final int c = key.charAt(i); - boolean r = resolver.parse(c); - - // end when false and things should be complete - if (r == false) - { - break; - } - } - - assertEquals(value, resolver.getResolvedValue()); - assertEquals(key.length(), resolver.getMatchLength()); - assertEquals(0, resolver.getRewindCount()); - assertEquals(key.endsWith(";"), resolver.endsWithSemicolon()); - }); - } -} diff --git a/benchmark/src/test/java/org/htmlunit/cyberneko/HtmlEntities2ParserTest.java b/benchmark/src/test/java/org/htmlunit/cyberneko/HtmlEntities2ParserTest.java deleted file mode 100644 index 5be552fb..00000000 --- a/benchmark/src/test/java/org/htmlunit/cyberneko/HtmlEntities2ParserTest.java +++ /dev/null @@ -1,230 +0,0 @@ -package org.htmlunit.cyberneko; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.Properties; - -import org.htmlunit.benchmark.util.FastRandom; -import org.htmlunit.benchmark.util.RandomUtils; -import org.htmlunit.cyberneko.util.HtmlEntities2; -import org.htmlunit.cyberneko.util.HtmlEntities2.Level; -import org.junit.jupiter.api.Test; - -public class HtmlEntities2ParserTest -{ - @Test - public void happyPath() - { - final Optional r = HtmlEntities2.get().lookup("Beta;"); - assertTrue(r.get().isMatch); - assertTrue(r.get().endNode); - assertTrue(r.get().endsWithSemicolon); - - assertEquals("\u0392", r.get().resolvedValue); - assertEquals("Beta;", r.get().entityOrFragment); - assertEquals(5, r.get().length); - } - - @Test - public void happyPathOneCharDiff() - { - { - final Optional r = HtmlEntities2.get().lookup("Colon;"); - assertTrue(r.get().isMatch); - assertTrue(r.get().endNode); - assertTrue(r.get().endsWithSemicolon); - - assertEquals("\u2237", r.get().resolvedValue); - assertEquals("Colon;", r.get().entityOrFragment); - assertEquals(6, r.get().length); - } - { - final Optional r = HtmlEntities2.get().lookup("Colone;"); - assertTrue(r.get().isMatch); - assertTrue(r.get().endNode); - assertTrue(r.get().endsWithSemicolon); - - assertEquals("\u2A74", r.get().resolvedValue); - assertEquals("Colone;", r.get().entityOrFragment); - assertEquals(7, r.get().length); - } - } - - @Test - public void happyPathTwoVersionEntity() - { - { - final Optional r = HtmlEntities2.get().lookup("gt"); - assertEquals("gt", r.get().entityOrFragment); - assertTrue(r.get().isMatch); - assertFalse(r.get().endNode); - assertFalse(r.get().endsWithSemicolon); - - assertEquals(">", r.get().resolvedValue); - assertEquals(2, r.get().length); - } - { - final Optional r = HtmlEntities2.get().lookup("gt;"); - assertEquals("gt;", r.get().entityOrFragment); - assertTrue(r.get().isMatch); - assertTrue(r.get().endNode); - assertTrue(r.get().endsWithSemicolon); - - assertEquals(">", r.get().resolvedValue); - assertEquals(3, r.get().length); - } - } - - @Test - public void happyPathTwoVersionEntity2() - { - { - final Optional r = HtmlEntities2.get().lookup("ccedil"); - assertEquals("ccedil", r.get().entityOrFragment); - assertTrue(r.get().isMatch); - assertFalse(r.get().endNode); - assertFalse(r.get().endsWithSemicolon); - - assertEquals("\u00E7", r.get().resolvedValue); - assertEquals(6, r.get().length); - } - { - final Optional r = HtmlEntities2.get().lookup("ccedil;"); - assertEquals("ccedil;", r.get().entityOrFragment); - assertTrue(r.get().isMatch); - assertTrue(r.get().endNode); - assertTrue(r.get().endsWithSemicolon); - - assertEquals("\u00E7", r.get().resolvedValue); - assertEquals(7, r.get().length); - } - } - - @Test - public void fullyUnknown() - { - { - final Optional r = HtmlEntities2.get().lookup("abc;"); - assertFalse(r.get().isMatch); - assertFalse(r.get().endNode); - assertFalse(r.get().endsWithSemicolon); - - assertEquals(null, r.get().resolvedValue); - assertEquals("ab", r.get().entityOrFragment); - assertEquals(2, r.get().length); - } - } - - - /** - * Test all entities - * @throws IOException - */ - @Test - public void allEntitiesWithSemicolonFull() throws IOException { - final Properties props = new Properties(); - try (InputStream stream = HtmlEntities2ParserTest.class.getResourceAsStream("html_entities.properties")) { - props.load(stream); - } - - props.forEach((k, v) -> { - String key = (String) k; - String value = (String) v; - - // we might have an empty line in it - // we also don't want to test "old" entities at the moment aka no ; at the end - if (key.trim().isEmpty()) { - return; - } - - final Optional r = HtmlEntities2.get().lookup(key); - assertTrue(r.get().isMatch); - if (key.endsWith(";")) - { - assertTrue(r.get().endNode); - assertTrue(r.get().endsWithSemicolon); - } - else - { - // no ; means it is never and end node, because this - // is for legacy entities - assertFalse(r.get().endNode); - assertFalse(r.get().endsWithSemicolon); - } - - assertEquals(value, r.get().resolvedValue); - assertEquals(key, r.get().entityOrFragment); - assertEquals(key.length(), r.get().length); - }); - } - - /** - * Test all entities - * @throws IOException - */ - @Test - public void allEntitiesFullRandom() throws IOException { - final Properties props = new Properties(); - try (InputStream stream = HtmlEntities2ParserTest.class.getResourceAsStream("html_entities.properties")) { - props.load(stream); - } - - final List keys = new ArrayList<>(); - final List values = new ArrayList<>(); - - props.forEach((k, v) -> { - String key = (String) k; - String value = (String) v; - - // we might have an empty line in it - if (key.isEmpty()) { - return; - } - - // we need randomness to avoid that the setup data looks identical to the quueried data - FastRandom r = new FastRandom(); - int pos = r.nextInt(keys.size() + 1); - - keys.add(pos, key); - values.add(pos, value); - }); - - - for (int i = 0; i < keys.size(); i++) { - String key = keys.get(i); - String value = values.get(i); - - // we might have an empty line in it - // we also don't want to test "old" entities at the moment aka no ; at the end - if (key.trim().isEmpty()) { - return; - } - - final Optional r = HtmlEntities2.get().lookup(key); - assertTrue(r.get().isMatch); - if (key.endsWith(";")) - { - assertTrue(r.get().endNode); - assertTrue(r.get().endsWithSemicolon); - } - else - { - // no ; means it is never and end node, because this - // is for legacy entities - assertFalse(r.get().endNode); - assertFalse(r.get().endsWithSemicolon); - } - - assertEquals(value, r.get().resolvedValue); - assertEquals(key, r.get().entityOrFragment); - assertEquals(key.length(), r.get().length); - } - } -} diff --git a/benchmark/src/test/java/org/htmlunit/cyberneko/HtmlEntities3ParserTest.java b/benchmark/src/test/java/org/htmlunit/cyberneko/HtmlEntities3ParserTest.java deleted file mode 100644 index a8d2a310..00000000 --- a/benchmark/src/test/java/org/htmlunit/cyberneko/HtmlEntities3ParserTest.java +++ /dev/null @@ -1,166 +0,0 @@ -package org.htmlunit.cyberneko; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Optional; -import java.util.Properties; - -import org.htmlunit.cyberneko.util.HtmlEntities3; -import org.htmlunit.cyberneko.util.HtmlEntities3.Level; -import org.junit.jupiter.api.Test; - -public class HtmlEntities3ParserTest -{ - @Test - public void happyPath() - { - final Optional r = HtmlEntities3.get().lookup("Beta;"); - assertTrue(r.get().isMatch); - assertTrue(r.get().endNode); - assertTrue(r.get().endsWithSemicolon); - - assertEquals("\u0392", r.get().resolvedValue); - assertEquals("Beta;", r.get().entityOrFragment); - assertEquals(5, r.get().length); - } - - @Test - public void happyPathOneCharDiff() - { - { - final Optional r = HtmlEntities3.get().lookup("Colon;"); - assertTrue(r.get().isMatch); - assertTrue(r.get().endNode); - assertTrue(r.get().endsWithSemicolon); - - assertEquals("\u2237", r.get().resolvedValue); - assertEquals("Colon;", r.get().entityOrFragment); - assertEquals(6, r.get().length); - } - { - final Optional r = HtmlEntities3.get().lookup("Colone;"); - assertTrue(r.get().isMatch); - assertTrue(r.get().endNode); - assertTrue(r.get().endsWithSemicolon); - - assertEquals("\u2A74", r.get().resolvedValue); - assertEquals("Colone;", r.get().entityOrFragment); - assertEquals(7, r.get().length); - } - } - - @Test - public void happyPathTwoVersionEntity() - { - { - final Optional r = HtmlEntities3.get().lookup("gt"); - assertEquals("gt", r.get().entityOrFragment); - assertTrue(r.get().isMatch); - assertFalse(r.get().endNode); - assertFalse(r.get().endsWithSemicolon); - - assertEquals(">", r.get().resolvedValue); - assertEquals(2, r.get().length); - } - { - final Optional r = HtmlEntities3.get().lookup("gt;"); - assertEquals("gt;", r.get().entityOrFragment); - assertTrue(r.get().isMatch); - assertTrue(r.get().endNode); - assertTrue(r.get().endsWithSemicolon); - - assertEquals(">", r.get().resolvedValue); - assertEquals(3, r.get().length); - } - } - - @Test - public void happyPathTwoVersionEntity2() - { - { - final Optional r = HtmlEntities3.get().lookup("ccedil"); - assertEquals("ccedil", r.get().entityOrFragment); - assertTrue(r.get().isMatch); - assertFalse(r.get().endNode); - assertFalse(r.get().endsWithSemicolon); - - assertEquals("\u00E7", r.get().resolvedValue); - assertEquals(6, r.get().length); - } - { - final Optional r = HtmlEntities3.get().lookup("ccedil;"); - assertEquals("ccedil;", r.get().entityOrFragment); - assertTrue(r.get().isMatch); - assertTrue(r.get().endNode); - assertTrue(r.get().endsWithSemicolon); - - assertEquals("\u00E7", r.get().resolvedValue); - assertEquals(7, r.get().length); - } - } - - @Test - public void fullyUnknown() - { - { - final Optional r = HtmlEntities3.get().lookup("abc;"); - assertFalse(r.get().isMatch); - assertFalse(r.get().endNode); - assertFalse(r.get().endsWithSemicolon); - - assertEquals(null, r.get().resolvedValue); - assertEquals("ab", r.get().entityOrFragment); - assertEquals(2, r.get().length); - } - } - - - /** - * Test all entities - * @throws IOException - */ - @Test - public void allEntitiesWithSemicolonFull() throws IOException { - final Properties props = new Properties(); - try (InputStream stream = HtmlEntities3ParserTest.class.getResourceAsStream("html_entities.properties")) { - props.load(stream); - } - - props.forEach((k, v) -> { - String key = (String) k; - String value = (String) v; - - // we might have an empty line in it - // we also don't want to test "old" entities at the moment aka no ; at the end - if (key.trim().isEmpty()) { - return; - } - - System.out.println(key); - - final Optional r = HtmlEntities3.get().lookup(key); - assertTrue(r.get().isMatch); - if (key.endsWith(";")) - { - assertTrue(r.get().endNode); - assertTrue(r.get().endsWithSemicolon); - } - else - { - // no ; means it is never and end node, because this - // is for legacy entities - assertFalse(r.get().endNode); - assertFalse(r.get().endsWithSemicolon); - } - - assertEquals(value, r.get().resolvedValue); - assertEquals(key, r.get().entityOrFragment); - assertEquals(key.length(), r.get().length); - }); - } - -} diff --git a/src/main/java/org/htmlunit/cyberneko/HTMLElements.java b/src/main/java/org/htmlunit/cyberneko/HTMLElements.java index b5ea6de5..0b660d37 100644 --- a/src/main/java/org/htmlunit/cyberneko/HTMLElements.java +++ b/src/main/java/org/htmlunit/cyberneko/HTMLElements.java @@ -17,8 +17,8 @@ import java.util.HashMap; import java.util.Locale; -import java.util.Map; -import java.util.TreeMap; + +import org.htmlunit.cyberneko.util.FastHashMap; /** * Collection of HTML element information. @@ -189,9 +189,14 @@ public class HTMLElements { /** No such element. */ public final Element NO_SUCH_ELEMENT = new Element(UNKNOWN, "", Element.CONTAINER, new short[]{BODY}, null); - public final Map elementsByCode = new HashMap<>(256); + // these fields became private to avoid exposing them for indirect modification + // this cannot be final because HtmlUnit might add to that + private Element[] elementsByCode; - public final Map elementsByName = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); + // keep the list here for later modification + private final HashMap elementsByNameForReference = new HashMap<>(); + // this is a optimized version which will be later queried + private final FastHashMap elementsByNameOptimized = new FastHashMap<>(311, 0.50f); public HTMLElements() { final Element[][] elementsArray = new Element[26][]; @@ -542,31 +547,54 @@ public HTMLElements() { for (final Element[] elements : elementsArray) { if (elements != null) { for (final Element element : elements) { - elementsByCode.put(element.code, element); - elementsByName.put(element.name, element); + this.elementsByNameForReference.put(element.name, element); } } } - elementsByCode.put(NO_SUCH_ELEMENT.code, NO_SUCH_ELEMENT); - - // initialize cross references to parent elements - for (final Element element : elementsByCode.values()) { - defineParents(element); - } + // setup optimized versions + setupOptimizedVersions(); } public void setElement(final Element element) { - elementsByCode.put(element.code, element); - elementsByName.put(element.name, element); - defineParents(element); + this.elementsByNameForReference.put(element.name, element); + + // rebuild the information "trees" + setupOptimizedVersions(); + } + + private void setupOptimizedVersions() { + // we got x amount of elements + 1 unknown + // put that into an array instead of a map, that + // is a faster look up and avoids equals + // ATTENTION: Due to some HtmlUnit custom tag handling that overwrites our + // list here, we might get a list with holes, so check the range first + final int size = elementsByNameForReference.values().stream().mapToInt(v -> v.code).max().getAsInt(); + elementsByCode = new Element[Math.max(size, NO_SUCH_ELEMENT.code) + 1]; + elementsByNameForReference.values().forEach(v -> elementsByCode[v.code] = v); + elementsByCode[NO_SUCH_ELEMENT.code] = NO_SUCH_ELEMENT; + + // initialize cross references to parent elements + for (final Element element : elementsByCode) { + if (element != null) { + defineParents(element); + } + } + // get us a second version that is lowercase stringified to + // reduce lookup overhead + for (final Element element : elementsByCode) { + // we might have holes due to HtmlUnitNekoHtmlParser + if (element != null) { + elementsByNameOptimized.put(element.name.toLowerCase(Locale.ROOT), element); + } + } } private void defineParents(final Element element) { if (element.parentCodes != null) { element.parent = new Element[element.parentCodes.length]; for (int j = 0; j < element.parentCodes.length; j++) { - element.parent[j] = elementsByCode.get(element.parentCodes[j]); + element.parent[j] = elementsByCode[element.parentCodes[j]]; } element.parentCodes = null; } @@ -582,7 +610,7 @@ private void defineParents(final Element element) { * @param code The element code. */ public final Element getElement(final short code) { - return elementsByCode.get(code); + return elementsByCode[code]; } /** @@ -608,7 +636,16 @@ public final Element getElement(final String ename) { * @param element The default element to return if not found. */ public final Element getElement(final String ename, final Element element) { - return elementsByName.getOrDefault(ename, element); + // check the current form casing first, which is mostly lowercase only + Element r = elementsByNameOptimized.get(ename); + if (r == null) { + // we have found it in its current form, which + // is hopefully mainly lowercase or uppercase, so try + // all lowercase + r = elementsByNameOptimized.get(ename.toLowerCase(Locale.ROOT)); + } + // return fallback element if needed + return r != null ? r : element; } // @@ -643,6 +680,9 @@ public static class Element { /** The element name. */ public final String name; + /** The element name. */ + public final String lowercaseName; + /** Informational flags. */ public final int flags; @@ -715,6 +755,7 @@ public Element(final short code, final String name, final int flags, final short[] parents, final short bounds, final short[] closes) { this.code = code; this.name = name; + this.lowercaseName = name.toLowerCase(Locale.ROOT); this.flags = flags; this.parentCodes = parents; this.parent = null; @@ -792,7 +833,8 @@ public int hashCode() { @Override public boolean equals(final Object o) { if (o instanceof Element) { - return name.equals(((Element) o).name); + Element e = (Element) o; + return lowercaseName.equals(e.name) || name.equals(e.name); } return false; } diff --git a/src/main/java/org/htmlunit/cyberneko/HTMLScanner.java b/src/main/java/org/htmlunit/cyberneko/HTMLScanner.java index bf035a8e..534907a4 100644 --- a/src/main/java/org/htmlunit/cyberneko/HTMLScanner.java +++ b/src/main/java/org/htmlunit/cyberneko/HTMLScanner.java @@ -16,7 +16,6 @@ package org.htmlunit.cyberneko; import java.io.EOFException; -import java.io.FilterInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -24,8 +23,9 @@ import java.io.UnsupportedEncodingException; import java.net.URL; import java.util.Locale; -import java.util.Stack; +import org.htmlunit.cyberneko.io.PlaybackInputStream; +import org.htmlunit.cyberneko.util.MiniStack; import org.htmlunit.cyberneko.xerces.util.EncodingMap; import org.htmlunit.cyberneko.xerces.util.NamespaceSupport; import org.htmlunit.cyberneko.xerces.util.URI; @@ -83,6 +83,7 @@ * @author Marc Guillemot * @author Ahmed Ashour * @author Ronald Brill + * @author René Schwietzke */ public class HTMLScanner implements XMLDocumentScanner, XMLLocator, HTMLComponent { @@ -284,8 +285,11 @@ public class HTMLScanner implements XMLDocumentScanner, XMLLocator, HTMLComponen // defaults - /** Default buffer size. */ - protected static final int DEFAULT_BUFFER_SIZE = 2048; + /* Default buffer size, 10 cache lines minus overhead + * A smaller buffer creates less cache misses compared + * to 2048 bytes or more. + */ + protected static final int DEFAULT_BUFFER_SIZE = (10 * 64) - 24; // debugging @@ -402,7 +406,7 @@ public class HTMLScanner implements XMLDocumentScanner, XMLLocator, HTMLComponen protected CurrentEntity fCurrentEntity; /** The current entity stack. */ - protected final Stack fCurrentEntityStack = new Stack<>(); + protected final MiniStack fCurrentEntityStack = new MiniStack<>(); /** The current scanner. */ protected Scanner fScanner; @@ -445,15 +449,30 @@ public class HTMLScanner implements XMLDocumentScanner, XMLLocator, HTMLComponen /** String buffer. */ private final XMLString fStringBuffer2 = new XMLString(); + /** String buffer, larger because scripts areas are larger */ + private final XMLString fScanScriptContent = new XMLString(128); + + private final XMLString fScanUntilEndTag = new XMLString(); + + private final XMLString fScanComment = new XMLString(); + + private final XMLString fScanLiteral = new XMLString(); + /** Single boolean array. */ private final boolean[] fSingleBoolean = {false}; private final HTMLConfiguration htmlConfiguration_; + /** + * Creates a new HTMLScanner with the given configuration + * + * @param htmlConfiguration the configuration to use + */ HTMLScanner(final HTMLConfiguration htmlConfiguration) { - htmlConfiguration_ = htmlConfiguration; + this.htmlConfiguration_ = htmlConfiguration; } + /** * Pushes an input source onto the current entity stack. This enables the * scanner to transparently scan new content (e.g. the output written by an @@ -732,7 +751,7 @@ public void setInputSource(final XMLInputSource source) throws IOException { fElementCount = 0; fElementDepth = -1; fByteStream = null; - fCurrentEntityStack.removeAllElements(); + fCurrentEntityStack.clear(); fBeginLineNumber = 1; fBeginColumnNumber = 1; @@ -1085,14 +1104,15 @@ else if (skip("SYSTEM", false)) { // Scans a quoted literal. protected String scanLiteral() throws IOException { final int quote = fCurrentEntity.read(); - if (quote == '\'' || quote == '"') { - final StringBuilder str = new StringBuilder(); + + if (quote == '"' || quote == '\'') { + final XMLString str = fScanLiteral.clear(); int c; while ((c = fCurrentEntity.read()) != -1) { if (c == quote) { break; } - if (c == '\r' || c == '\n') { + if (c == '\n' || c == '\r') { fCurrentEntity.rewind(); // NOTE: This collapses newlines to a single space. // [Q] Is this the right thing to do here? -Ac @@ -1104,7 +1124,14 @@ else if (c == '<') { break; } else { - appendChar(str, c, null); + try { + str.appendCodePoint(c); + } + catch (IllegalArgumentException e) { + if (fReportErrors_) { + fErrorReporter.reportError("HTML1005", new Object[] {"&#" + c + ';'}); + } + } } } if (c == -1) { @@ -1115,8 +1142,10 @@ else if (c == '<') { } return str.toString(); } - fCurrentEntity.rewind(); - return null; + else { + fCurrentEntity.rewind(); + return null; + } } // Scans a name. @@ -1136,8 +1165,14 @@ protected String scanName(final boolean strict) throws IOException { while (true) { while (fCurrentEntity.hasNext()) { final char c = fCurrentEntity.getNextChar(); - if ((strict && (!Character.isLetterOrDigit(c) && c != '-' && c != '.' && c != ':' && c != '_')) - || (!strict && (Character.isWhitespace(c) || c == '=' || c == '/' || c == '>'))) { + // this has been split up to cater to the needs of branch prediction + if (strict && (!Character.isLetterOrDigit(c) && c != '-' && c != '.' && c != ':' && c != '_')) { + fCurrentEntity.rewind(); + break; + } + // we check for the regular space first because isWhitespace is no inlineable and hence expensive + // regular space should be the norm as well as newlines + else if (!strict && (c == ' ' || c == '\n' || c == '=' || c == '/' || c == '>' || Character.isWhitespace(c))) { fCurrentEntity.rewind(); break; } @@ -1165,8 +1200,7 @@ protected String scanName(final boolean strict) throws IOException { // Scans an entity reference. protected int scanEntityRef(final XMLString str, final boolean content) throws IOException { - str.clear(); - str.append('&'); + str.clearAndAppend('&'); // use readPreservingBufferContent inside this method to be sure we can rewind @@ -1195,13 +1229,11 @@ protected int scanEntityRef(final XMLString str, final boolean content) throws I if (match == null) { final String consumed = str.toString(); fCurrentEntity.rewind(consumed.length() - 1); - str.clear(); - str.append('&'); + str.clearAndAppend('&'); } else { fCurrentEntity.rewind(parser.getRewindCount()); - str.clear(); - str.append(match); + str.clear().append(match); } return returnEntityRefString(str, content); } @@ -1254,8 +1286,7 @@ protected int scanEntityRef(final XMLString str, final boolean content) throws I // if we have a correct character that is terminate by ; // we can keep things simple if (result.endsWithSemicolon) { - str.clear(); - str.append(result.resolvedValue); + str.clear().append(result.resolvedValue); } else { if (fReportErrors_) { @@ -1280,8 +1311,7 @@ protected int scanEntityRef(final XMLString str, final boolean content) throws I // Flush code points consumed as a character reference. Switch to the ambiguous ampersand state. // } if (content) { - str.clear(); - str.append(result.resolvedValue); + str.clear().append(result.resolvedValue); } else { // look ahead @@ -1292,16 +1322,14 @@ protected int scanEntityRef(final XMLString str, final boolean content) throws I if ('=' == nextChar || '0' <= nextChar && nextChar <= '9' || 'A' <= nextChar && nextChar <= 'Z' || 'a' <= nextChar && nextChar <= 'z') { // we just shorten our temp str instead of copying stuff around - str.delete(result.length + 1, str.length() + 1); + str.shortenBy(str.length() - result.length - 1); } else { - str.clear(); - str.append(result.resolvedValue); + str.clear().append(result.resolvedValue); } } else { - str.clear(); - str.append(result.resolvedValue); + str.clear().append(result.resolvedValue); } } } @@ -1310,8 +1338,7 @@ protected int scanEntityRef(final XMLString str, final boolean content) throws I // Entity not found, rewind and continue // broken from here, aka keeping everything fCurrentEntity.rewind(readCount); - str.clear(); - str.append('&'); + str.clearAndAppend('&'); } return returnEntityRefString(str, content); @@ -1419,15 +1446,19 @@ protected boolean skipSpaces() throws IOException { } } final char c = fCurrentEntity.getNextChar(); - if (!Character.isWhitespace(c)) { - fCurrentEntity.rewind(); - break; + // compare against the usual suspects first before going + // the expensive route + if (c == ' ' || c == '\n' || Character.isWhitespace(c)) { + spaces = true; + // unix \n might dominate + if (c == '\n' || c == '\r') { + fCurrentEntity.rewind(); + skipNewlines(); + } } - spaces = true; - if (c == '\r' || c == '\n') { + else { fCurrentEntity.rewind(); - skipNewlines(); - continue; + break; } } if (DEBUG_BUFFER) { @@ -1442,7 +1473,7 @@ protected int skipNewlines() throws IOException { fCurrentEntity.debugBufferIfNeeded("(skipNewlines: "); } - if (!fCurrentEntity.hasNext()) { + if (fCurrentEntity.offset_ == fCurrentEntity.length_) { if (fCurrentEntity.load(0) == -1) { if (DEBUG_BUFFER) { fCurrentEntity.debugBufferIfNeeded(")skipNewlines: "); @@ -1455,7 +1486,7 @@ protected int skipNewlines() throws IOException { if (c == '\n' || c == '\r') { do { c = fCurrentEntity.getNextChar(); - if (c == '\r') { + if (c == '\n') { newlines++; if (fCurrentEntity.offset_ == fCurrentEntity.length_) { fCurrentEntity.offset_ = newlines; @@ -1463,12 +1494,8 @@ protected int skipNewlines() throws IOException { break; } } - if (fCurrentEntity.getCurrentChar() == '\n') { - fCurrentEntity.offset_++; - fCurrentEntity.characterOffset_++; - } } - else if (c == '\n') { + else if (c == '\r') { newlines++; if (fCurrentEntity.offset_ == fCurrentEntity.length_) { fCurrentEntity.offset_ = newlines; @@ -1476,6 +1503,10 @@ else if (c == '\n') { break; } } + if (fCurrentEntity.getCurrentChar() == '\n') { + fCurrentEntity.offset_++; + fCurrentEntity.characterOffset_++; + } } else { fCurrentEntity.rewind(); @@ -1516,66 +1547,6 @@ protected static boolean builtinXmlRef(final String name) { || "apos".equals(name); } - /** - * Append a character to an XMLStringBuffer. The character is an int value, and - * can either be a single UTF-16 character or a supplementary character - * represented by two UTF-16 code points. - * - * @param str The XMLStringBuffer to append to. - * @param value The character value. - * @param name to be used for error reporting - */ - private void appendChar(final XMLString str, final int value, String name) { - if (value > Character.MAX_VALUE) { - try { - final char[] chars = Character.toChars(value); - str.append(chars, 0, chars.length); - } - catch (final IllegalArgumentException e) { // when value is not valid as UTF-16 - if (fReportErrors_) { - if (name == null) { - name = "&#" + value + ';'; - } - fErrorReporter.reportError("HTML1005", new Object[] {name}); - } - str.append(REPLACEMENT_CHARACTER); - } - } - else { - str.append((char) value); - } - } - - /** - * Append a character to a StringBuilder. The character is an int value, and can - * either be a single UTF-16 character or a supplementary character represented - * by two UTF-16 code points. - * - * @param str The StringBuilder to append to. - * @param value The character value. - * @param name to be used for error reporting - */ - private void appendChar(final StringBuilder str, final int value, String name) { - if (value > Character.MAX_VALUE) { - try { - final char[] chars = Character.toChars(value); - str.append(chars, 0, chars.length); - } - catch (final IllegalArgumentException e) { // when value is not valid as UTF-16 - if (fReportErrors_) { - if (name == null) { - name = "&#" + value + ';'; - } - fErrorReporter.reportError("HTML1005", new Object[] {name}); - } - str.append(REPLACEMENT_CHARACTER); - } - } - else { - str.append((char) value); - } - } - /** * Basic scanner interface. * @@ -1602,7 +1573,7 @@ public interface Scanner { * * @author Andy Clark */ - public static final class CurrentEntity { + public final class CurrentEntity { /** Character stream. */ private Reader stream_; @@ -1699,18 +1670,20 @@ protected int load(final int loadOffset) throws IOException { debugBufferIfNeeded("(load: "); } // resize buffer, if needed - if (loadOffset == buffer_.length) { - final int adjust = buffer_.length / 4; + if (loadOffset == this.buffer_.length) { + final int adjust = this.buffer_.length / 4; final char[] array = new char[buffer_.length + adjust]; - System.arraycopy(buffer_, 0, array, 0, length_); - buffer_ = array; + System.arraycopy(this.buffer_, 0, array, 0, this.length_); + this.buffer_ = array; } // read a block of characters final int count = stream_.read(buffer_, loadOffset, buffer_.length - loadOffset); if (count == -1) { - endReached_ = true; + this.length_ = loadOffset; + this.endReached_ = true; + } else { + this.length_ = count + loadOffset; } - length_ = count != -1 ? count + loadOffset : loadOffset; this.offset_ = loadOffset; if (DEBUG_BUFFER) { debugBufferIfNeeded(")load: ", " -> " + count); @@ -1907,8 +1880,7 @@ else if (c == '&') { fErrorReporter.reportError("HTML1003", null); } if (fDocumentHandler != null && fElementCount >= fElementDepth) { - fStringBuffer.clear(); - fStringBuffer.append('<'); + fStringBuffer.clearAndAppend('<'); fDocumentHandler.characters(fStringBuffer, null); } throw new EOFException(); @@ -1922,7 +1894,10 @@ else if (c == '&') { fEndLineNumber = fCurrentEntity.getLineNumber(); fEndColumnNumber = fCurrentEntity.getColumnNumber(); fEndCharacterOffset = fCurrentEntity.getCharacterOffset(); - fDocumentHandler.comment(new XMLString(), locationAugs()); + // using EMPTY here is slightly dangerous but a review showed + // that all implementations of comment() only read the data + // never do anything else with it, so safe for now + fDocumentHandler.comment(XMLString.EMPTY, locationAugs()); } else if (skip("-!>", false)) { fEndLineNumber = fCurrentEntity.getLineNumber(); @@ -2035,7 +2010,7 @@ else if (ename != null && htmlConfiguration_.getHtmlElements().getElement(enameL } } catch (final EOFException e) { - if (fCurrentEntityStack.empty()) { + if (fCurrentEntityStack.isEmpty()) { setScannerState(STATE_END_DOCUMENT); } else { @@ -2058,7 +2033,8 @@ else if (ename != null && htmlConfiguration_.getHtmlElements().getElement(enameL * @throws IOException on error */ private void scanUntilEndTag(final String tagName) throws IOException { - final XMLString xmlString = new XMLString(); + fScanUntilEndTag.clear(); + final String end = "/" + tagName; final int lengthToScan = tagName.length() + 2; @@ -2076,35 +2052,44 @@ private void scanUntilEndTag(final String tagName) throws IOException { break; } } - if (c == '\r' || c == '\n') { + if (c == '\n' || c == '\r') { fCurrentEntity.rewind(); final int newlines = skipNewlines(); for (int i = 0; i < newlines; i++) { - xmlString.append('\n'); + fScanUntilEndTag.append('\n'); } } else { - appendChar(xmlString, c, null); + try { + fScanUntilEndTag.appendCodePoint(c); + } + catch (IllegalArgumentException e) { + if (fReportErrors_) { + fErrorReporter.reportError("HTML1005", new Object[] {"&#" + c + ';'}); + } + } } } - if (xmlString.length() > 0 && fDocumentHandler != null) { + if (fScanUntilEndTag.length() > 0 && fDocumentHandler != null) { fEndLineNumber = fCurrentEntity.getLineNumber(); fEndColumnNumber = fCurrentEntity.getColumnNumber(); fEndCharacterOffset = fCurrentEntity.getCharacterOffset(); - fDocumentHandler.characters(xmlString, locationAugs()); + fDocumentHandler.characters(fScanUntilEndTag, locationAugs()); } } private void scanScriptContent() throws IOException { - final XMLString xmlString = new XMLString(); + fScanScriptContent.clear(); + boolean waitForEndComment = false; boolean invalidComment = false; + while (true) { final int c = fCurrentEntity.read(); if (c == -1) { break; } - else if (c == '-' && xmlString.endsWith("') { - if (xmlString.endsWith("--")) { + if (fScanScriptContent.endsWith("--")) { waitForEndComment = false; } - if (xmlString.endsWith("--!")) { + if (fScanScriptContent.endsWith("--!")) { invalidComment = true; waitForEndComment = false; } @@ -2129,34 +2114,41 @@ else if (c == '>') { fCurrentEntity.rewind(); final int newlines = skipNewlines(); for (int i = 0; i < newlines; i++) { - xmlString.append('\n'); + fScanScriptContent.append('\n'); } } else { - appendChar(xmlString, c, null); + try { + fScanScriptContent.appendCodePoint(c); + } + catch (IllegalArgumentException e) { + if (fReportErrors_) { + fErrorReporter.reportError("HTML1005", new Object[] {"&#" + c + ';'}); + } + } } } if (fScriptStripCommentDelims_) { if (invalidComment) { - xmlString.reduceToContent(""); + fScanScriptContent.trimToContent(""); } else { - xmlString.reduceToContent(""); + fScanScriptContent.trimToContent(""); } } if (fScriptStripCDATADelims_) { - xmlString.reduceToContent(""); + fScanScriptContent.trimToContent(""); } - if (xmlString.length() > 0 && fDocumentHandler != null && fElementCount >= fElementDepth) { + if (fScanScriptContent.length() > 0 && fDocumentHandler != null && fElementCount >= fElementDepth) { if (DEBUG_CALLBACKS) { - System.out.println("characters(" + xmlString + ")"); + System.out.println("characters(" + fScanScriptContent + ")"); } fEndLineNumber = fCurrentEntity.getLineNumber(); fEndColumnNumber = fCurrentEntity.getColumnNumber(); fEndCharacterOffset = fCurrentEntity.getCharacterOffset(); - fDocumentHandler.characters(xmlString, locationAugs()); + fDocumentHandler.characters(fScanScriptContent, locationAugs()); } } @@ -2210,13 +2202,12 @@ protected void scanCharacters() throws IOException { } break; } - char c; final int offset = fCurrentEntity.offset_ - newlines; for (int i = offset; i < fCurrentEntity.offset_; i++) { fCurrentEntity.buffer_[i] = '\n'; } while (fCurrentEntity.hasNext()) { - c = fCurrentEntity.getNextChar(); + final char c = fCurrentEntity.getNextChar(); if (c == '<' || c == '&' || c == '\n' || c == '\r') { fCurrentEntity.rewind(); break; @@ -2309,12 +2300,12 @@ protected void scanComment() throws IOException { fEndLineNumber = fCurrentEntity.getLineNumber(); fEndColumnNumber = fCurrentEntity.getColumnNumber(); fEndCharacterOffset = fCurrentEntity.getCharacterOffset(); - XMLString xmlString = new XMLString(); - boolean eof = scanCommentContent(xmlString); + fScanComment.clear(); + boolean eof = scanCommentContent(fScanComment); // no --> found, comment with end only with > if (eof) { - fCurrentEntity.resetBuffer(xmlString, fEndLineNumber, fEndColumnNumber, fEndCharacterOffset); - xmlString = new XMLString(); // take a new one to avoid interactions + fCurrentEntity.resetBuffer(fScanComment, fEndLineNumber, fEndColumnNumber, fEndCharacterOffset); + fScanComment.clear(); // take a new one to avoid interactions while (true) { final int c = fCurrentEntity.read(); if (c == -1) { @@ -2328,12 +2319,19 @@ else if (c == '\n' || c == '\r') { fCurrentEntity.rewind(); final int newlines = skipNewlines(); for (int i = 0; i < newlines; i++) { - xmlString.append('\n'); + fScanComment.append('\n'); } continue; } else if (c != '>') { - appendChar(xmlString, c, null); + try { + fScanComment.appendCodePoint(c); + } + catch (IllegalArgumentException e) { + if (fReportErrors_) { + fErrorReporter.reportError("HTML1005", new Object[] {"&#" + c + ';'}); + } + } continue; } eof = false; @@ -2342,12 +2340,12 @@ else if (c != '>') { } if (fDocumentHandler != null && fElementCount >= fElementDepth) { if (DEBUG_CALLBACKS) { - System.out.println("comment(" + xmlString + ")"); + System.out.println("comment(" + fScanComment + ")"); } fEndLineNumber = fCurrentEntity.getLineNumber(); fEndColumnNumber = fCurrentEntity.getColumnNumber(); fEndCharacterOffset = fCurrentEntity.getCharacterOffset(); - fDocumentHandler.comment(xmlString, locationAugs()); + fDocumentHandler.comment(fScanComment, locationAugs()); } if (DEBUG_BUFFER) { fCurrentEntity.debugBufferIfNeeded(")scanComment: "); @@ -2357,8 +2355,8 @@ else if (c != '>') { } } - // Scans comment content. - protected boolean scanCommentContent(final XMLString xmlString) throws IOException { + // Scans markup content. + protected boolean scanCommentContent(final XMLString buffer) throws IOException { int c; OUTER: while (true) { c = fCurrentEntity.read(); @@ -2386,7 +2384,7 @@ protected boolean scanCommentContent(final XMLString xmlString) throws IOExcepti break OUTER; } if (count < 2) { - xmlString.append('-'); + buffer.append('-'); fCurrentEntity.rewind(); continue; } @@ -2402,28 +2400,28 @@ protected boolean scanCommentContent(final XMLString xmlString) throws IOExcepti if (c == '>') { for (int i = 0; i < count - 2; i++) { - xmlString.append('-'); + buffer.append('-'); } break; } for (int i = 0; i < count; i++) { - xmlString.append('-'); + buffer.append('-'); } - xmlString.append('!'); + buffer.append('!'); fCurrentEntity.rewind(); continue; } if (c == '>') { for (int i = 0; i < count - 2; i++) { - xmlString.append('-'); + buffer.append('-'); } break; } for (int i = 0; i < count; i++) { - xmlString.append('-'); + buffer.append('-'); } fCurrentEntity.rewind(); continue; @@ -2432,11 +2430,18 @@ else if (c == '\n' || c == '\r') { fCurrentEntity.rewind(); final int newlines = skipNewlines(); for (int i = 0; i < newlines; i++) { - xmlString.append('\n'); + buffer.append('\n'); } continue; } - appendChar(xmlString, c, null); + try { + buffer.appendCodePoint(c); + } + catch (IllegalArgumentException e) { + if (fReportErrors_) { + fErrorReporter.reportError("HTML1005", new Object[] {"&#" + c + ';'}); + } + } } return c == -1; @@ -2499,7 +2504,14 @@ else if (c == '\n' || c == '\r') { } continue; } - appendChar(xmlString, c, null); + try { + xmlString.appendCodePoint(c); + } + catch (IllegalArgumentException e) { + if (fReportErrors_) { + fErrorReporter.reportError("HTML1005", new Object[] {"&#" + c + ';'}); + } + } } if (!fCDATASections_) { @@ -2587,7 +2599,14 @@ else if (c == '>') { return; } else { - appendChar(fStringBuffer, c, null); + try { + fStringBuffer.appendCodePoint(c); + } + catch (IllegalArgumentException e) { + if (fReportErrors_) { + fErrorReporter.reportError("HTML1005", new Object[] {"&#" + c + ';'}); + } + } } } if (fDocumentHandler != null) { @@ -2661,8 +2680,7 @@ protected String scanStartElement(final boolean[] empty) throws IOException { fErrorReporter.reportError("HTML1009", null); } if (fDocumentHandler != null && fElementCount >= fElementDepth) { - fStringBuffer.clear(); - fStringBuffer.append('<'); + fStringBuffer.clearAndAppend('<'); if (length > 0) { fStringBuffer.append(ename); } @@ -2947,7 +2965,14 @@ else if (c == '<') { fStringBuffer.append(fStringBuffer2); } else { - appendChar(fStringBuffer, c, null); + try { + fStringBuffer.appendCodePoint(c); + } + catch (IllegalArgumentException e) { + if (fReportErrors_) { + fErrorReporter.reportError("HTML1005", new Object[] {"&#" + c + ';'}); + } + } } } qName_.setValues(null, aname, aname, null); @@ -2970,22 +2995,13 @@ else if (c == '<') { } throw new EOFException(); } - if (c == '&') { - isStart = false; - final int ce = scanEntityRef(fStringBuffer2, false); - if (ce != -1) { - appendChar(fStringBuffer, ce, null); - } - else { - fStringBuffer.append(fStringBuffer2); - } - } - else if (c == ' ' || c == '\t') { + if (c == ' ' || c == '\t') { if (acceptSpace) { fStringBuffer.append(fNormalizeAttributes_ ? ' ' : (char) c); } + prevSpace = true; } - else if (c == '\r' || c == '\n') { + else if (c == '\n' || c == '\r') { if (c == '\r') { final int c2 = fCurrentEntity.read(); if (c2 == '\n') { @@ -2999,19 +3015,47 @@ else if (c2 != -1) { fStringBuffer.append(fNormalizeAttributes_ ? ' ' : '\n'); } fCurrentEntity.incLine(); + prevSpace = true; + } + else if (c == '&') { + isStart = false; + final int ce = scanEntityRef(fStringBuffer2, false); + if (ce != -1) { + try { + fStringBuffer.appendCodePoint(ce); + } + catch (IllegalArgumentException e) { + if (fReportErrors_) { + fErrorReporter.reportError("HTML1005", new Object[] {"&#" + ce + ';'}); + } + } + } + else { + fStringBuffer.append(fStringBuffer2); + } + prevSpace = false; } else if (c != quote) { isStart = false; - appendChar(fStringBuffer, c, null); + try { + fStringBuffer.appendCodePoint(c); + } + catch (IllegalArgumentException e) { + if (fReportErrors_) { + fErrorReporter.reportError("HTML1005", new Object[] {"&#" + c + ';'}); + } + } + prevSpace = false; } - prevSpace = c == ' ' || c == '\t' || c == '\r' || c == '\n'; + // moved into IFs to safe on conditions + // prevSpace = c == ' ' || c == '\t' || c == '\r' || c == '\n'; isStart = isStart && prevSpace; } while (c != quote); if (fNormalizeAttributes_ && fStringBuffer.length() > 0) { // trailing whitespace already normalized to single space - fStringBuffer.trimWhitespaceAtEnd(); + fStringBuffer.trimTrailing(); } qName_.setValues(null, aname, aname, null); @@ -3089,7 +3133,7 @@ public class SpecialScanner implements Scanner { private final QName fQName_ = new QName(); /** A string buffer. */ - private final XMLString xmlString_ = new XMLString(); + private final XMLString charBuffer_ = new XMLString(); // Sets the element name. public Scanner setElementName(final String ename) { @@ -3125,17 +3169,16 @@ public boolean scan(final boolean complete) throws IOException { } if (c == '&') { if (fTextarea || fTitle) { - scanEntityRef(xmlString_, true); + scanEntityRef(charBuffer_, true); continue; } - xmlString_.clear(); - xmlString_.append('&'); + charBuffer_.clearAndAppend('&'); } else { fCurrentEntity.rewind(); - xmlString_.clear(); + charBuffer_.clear(); } - scanCharacters(xmlString_, -1); + scanCharacters(charBuffer_, -1); break; } case STATE_MARKUP_BRACKET: { @@ -3163,21 +3206,25 @@ public boolean scan(final boolean complete) throws IOException { } fCurrentEntity.rewind(); } - xmlString_.clear(); - xmlString_.append(""); + buffer.trimToContent(""); } if (fStyleStripCDATADelims_) { - buffer.reduceToContent(""); + buffer.trimToContent(""); } } @@ -3272,7 +3326,16 @@ protected void scanCharacters(final XMLString buffer) throws IOException { if (c == -1) { break; } - appendChar(buffer, c, null); + + try { + buffer.appendCodePoint(c); + } + catch (IllegalArgumentException e) { + if (fReportErrors_) { + fErrorReporter.reportError("HTML1005", new Object[] {"&#" + c + ';'}); + } + } + if (c == '\n') { fCurrentEntity.incLine(); } @@ -3294,216 +3357,6 @@ protected void scanCharacters(final XMLString buffer) throws IOException { } } - /** - * A playback input stream. This class has the ability to save the bytes read - * from the underlying input stream and play the bytes back later. This class is - * used by the HTML scanner to switch encodings when a <meta> tag is - * detected that specifies a different encoding. - *

- * If the encoding is changed, then the scanner calls the playback - * method and re-scans the beginning of the HTML document again. This should not - * be too much of a performance problem because the <meta> tag appears at - * the beginning of the document. - *

- * If the <body> tag is reached without playing back the bytes, then the - * buffer can be cleared by calling the clear method. This stops - * the buffering of bytes and allows the memory used by the buffer to be - * reclaimed. - *

- * Note: If the buffer is never played back or cleared, this - * input stream will continue to buffer the entire stream. Therefore, it is very - * important to use this stream correctly. - * - * @author Andy Clark - */ - private static final class PlaybackInputStream extends FilterInputStream { - - /** Set to true to debug playback. */ - private static final boolean DEBUG_PLAYBACK = false; - - /** Playback mode. */ - private boolean playback_; - - /** Buffer cleared. */ - private boolean cleared_; - - /** Encoding detected. */ - private boolean detected_; - - // buffer info - - /** Byte buffer. */ - private byte[] byteBuffer_ = new byte[1024]; - - /** Offset into byte buffer during playback. */ - private int byteOffset_; - - /** Length of bytes read into byte buffer. */ - private int byteLength_; - - /** Pushback offset. */ - private int pushbackOffset_; - - /** Pushback length. */ - private int pushbackLength_; - - // Constructor. - PlaybackInputStream(final InputStream in) { - super(in); - } - - // Detect encoding. - public void detectEncoding(final String[] encodings) throws IOException { - if (detected_) { - throw new IOException("Should not detect encoding twice."); - } - detected_ = true; - final int b1 = read(); - if (b1 == -1) { - return; - } - final int b2 = read(); - if (b2 == -1) { - pushbackLength_ = 1; - return; - } - // UTF-8 BOM: 0xEFBBBF - if (b1 == 0xEF && b2 == 0xBB) { - final int b3 = read(); - if (b3 == 0xBF) { - pushbackOffset_ = 3; - encodings[0] = "UTF-8"; - encodings[1] = "UTF8"; - return; - } - pushbackLength_ = 3; - } - // UTF-16 LE BOM: 0xFFFE - if (b1 == 0xFF && b2 == 0xFE) { - encodings[0] = "UTF-16"; - encodings[1] = "UnicodeLittleUnmarked"; - return; - } - // UTF-16 BE BOM: 0xFEFF - else if (b1 == 0xFE && b2 == 0xFF) { - encodings[0] = "UTF-16"; - encodings[1] = "UnicodeBigUnmarked"; - return; - } - // unknown - pushbackLength_ = 2; - } - - /** Playback buffer contents. */ - public void playback() { - playback_ = true; - } - - /** - * Clears the buffer. - *

- * Note: The buffer cannot be cleared during playback. - * Therefore, calling this method during playback will not do anything. However, - * the buffer will be cleared automatically at the end of playback. - */ - public void clear() { - if (!playback_) { - cleared_ = true; - byteBuffer_ = null; - } - } - - /** Read a byte. */ - @Override - public int read() throws IOException { - if (DEBUG_PLAYBACK) { - System.out.println("(read"); - } - if (pushbackOffset_ < pushbackLength_) { - return byteBuffer_[pushbackOffset_++]; - } - if (cleared_) { - return in.read(); - } - if (playback_) { - final int c = byteBuffer_[byteOffset_++]; - if (byteOffset_ == byteLength_) { - cleared_ = true; - byteBuffer_ = null; - } - if (DEBUG_PLAYBACK) { - System.out.println(")read -> " + (char) c); - } - return c; - } - final int c = in.read(); - if (c != -1) { - if (byteLength_ == byteBuffer_.length) { - final byte[] newarray = new byte[byteLength_ + 1024]; - System.arraycopy(byteBuffer_, 0, newarray, 0, byteLength_); - byteBuffer_ = newarray; - } - byteBuffer_[byteLength_++] = (byte) c; - } - if (DEBUG_PLAYBACK) { - System.out.println(")read -> " + (char) c); - } - return c; - } - - /** Read an array of bytes. */ - @Override - public int read(final byte[] array) throws IOException { - return read(array, 0, array.length); - } - - /** Read an array of bytes. */ - @Override - public int read(final byte[] array, final int offset, int length) throws IOException { - if (DEBUG_PLAYBACK) { - System.out.println(")read(" + offset + ',' + length + ')'); - } - if (pushbackOffset_ < pushbackLength_) { - int count = pushbackLength_ - pushbackOffset_; - if (count > length) { - count = length; - } - System.arraycopy(byteBuffer_, pushbackOffset_, array, offset, count); - pushbackOffset_ += count; - return count; - } - if (cleared_) { - return in.read(array, offset, length); - } - if (playback_) { - if (byteOffset_ + length > byteLength_) { - length = byteLength_ - byteOffset_; - } - System.arraycopy(byteBuffer_, byteOffset_, array, offset, length); - byteOffset_ += length; - if (byteOffset_ == byteLength_) { - cleared_ = true; - byteBuffer_ = null; - } - return length; - } - final int count = in.read(array, offset, length); - if (count != -1) { - if (byteLength_ + count > byteBuffer_.length) { - final byte[] newarray = new byte[byteLength_ + count + 512]; - System.arraycopy(byteBuffer_, 0, newarray, 0, byteLength_); - byteBuffer_ = newarray; - } - System.arraycopy(array, offset, byteBuffer_, byteLength_, count); - byteLength_ += count; - } - if (DEBUG_PLAYBACK) { - System.out.println(")read(" + offset + ',' + length + ") -> " + count); - } - return count; - } - } - /** * Location infoset item. * diff --git a/src/main/java/org/htmlunit/cyberneko/HTMLTagBalancer.java b/src/main/java/org/htmlunit/cyberneko/HTMLTagBalancer.java index c09f7967..39bc3e8f 100644 --- a/src/main/java/org/htmlunit/cyberneko/HTMLTagBalancer.java +++ b/src/main/java/org/htmlunit/cyberneko/HTMLTagBalancer.java @@ -27,9 +27,9 @@ import org.htmlunit.cyberneko.xerces.xni.NamespaceContext; import org.htmlunit.cyberneko.xerces.xni.QName; import org.htmlunit.cyberneko.xerces.xni.XMLAttributes; +import org.htmlunit.cyberneko.xerces.xni.XMLString; import org.htmlunit.cyberneko.xerces.xni.XMLDocumentHandler; import org.htmlunit.cyberneko.xerces.xni.XMLLocator; -import org.htmlunit.cyberneko.xerces.xni.XMLString; import org.htmlunit.cyberneko.xerces.xni.XNIException; import org.htmlunit.cyberneko.xerces.xni.parser.XMLComponentManager; import org.htmlunit.cyberneko.xerces.xni.parser.XMLConfigurationException; diff --git a/src/main/java/org/htmlunit/cyberneko/LostText.java b/src/main/java/org/htmlunit/cyberneko/LostText.java index 0bde1bb6..119b85f3 100644 --- a/src/main/java/org/htmlunit/cyberneko/LostText.java +++ b/src/main/java/org/htmlunit/cyberneko/LostText.java @@ -19,8 +19,8 @@ import java.util.List; import org.htmlunit.cyberneko.xerces.xni.Augmentations; -import org.htmlunit.cyberneko.xerces.xni.XMLDocumentHandler; import org.htmlunit.cyberneko.xerces.xni.XMLString; +import org.htmlunit.cyberneko.xerces.xni.XMLDocumentHandler; /** * Container for text that should be hold and re-feed later like text before <html> that will be re-feed diff --git a/src/main/java/org/htmlunit/cyberneko/filters/DefaultFilter.java b/src/main/java/org/htmlunit/cyberneko/filters/DefaultFilter.java index a133308f..49ff5406 100644 --- a/src/main/java/org/htmlunit/cyberneko/filters/DefaultFilter.java +++ b/src/main/java/org/htmlunit/cyberneko/filters/DefaultFilter.java @@ -20,9 +20,9 @@ import org.htmlunit.cyberneko.xerces.xni.NamespaceContext; import org.htmlunit.cyberneko.xerces.xni.QName; import org.htmlunit.cyberneko.xerces.xni.XMLAttributes; +import org.htmlunit.cyberneko.xerces.xni.XMLString; import org.htmlunit.cyberneko.xerces.xni.XMLDocumentHandler; import org.htmlunit.cyberneko.xerces.xni.XMLLocator; -import org.htmlunit.cyberneko.xerces.xni.XMLString; import org.htmlunit.cyberneko.xerces.xni.XNIException; import org.htmlunit.cyberneko.xerces.xni.parser.XMLComponentManager; import org.htmlunit.cyberneko.xerces.xni.parser.XMLConfigurationException; diff --git a/src/main/java/org/htmlunit/cyberneko/filters/NamespaceBinder.java b/src/main/java/org/htmlunit/cyberneko/filters/NamespaceBinder.java index 1a738e53..c0ebdea4 100644 --- a/src/main/java/org/htmlunit/cyberneko/filters/NamespaceBinder.java +++ b/src/main/java/org/htmlunit/cyberneko/filters/NamespaceBinder.java @@ -273,19 +273,6 @@ public void endElement(final QName element, final Augmentations augs) } } - // - // Protected static methods - // - - // Splits a qualified name. - protected static void splitQName(final QName qname) { - final int index = qname.rawname.indexOf(':'); - if (index != -1) { - qname.prefix = qname.rawname.substring(0, index); - qname.localpart = qname.rawname.substring(index + 1); - } - } - // // Converts HTML names string value to constant value. // @@ -317,18 +304,22 @@ protected static String modifyName(final String name, final short mode) { // Binds namespaces. protected void bindNamespaces(final QName element, final XMLAttributes attrs) { - // split element qname - splitQName(element); + element.splitQName(); // declare namespace prefixes if (attrs != null) { final int attrCount = attrs.getLength(); + for (int i = attrCount - 1; i >= 0; i--) { attrs.getName(i, fQName_); String rawname = fQName_.rawname; - final String rawnameUC = rawname.toUpperCase(Locale.ROOT); - if (rawnameUC.startsWith("XMLNS:") || "XMLNS".equals(rawnameUC)) { + // we don't uppercase anymore, instead we lowercase, because most + // of the time, we are lowercase already and save on memory because + // we don't convert it + final String rawnameUC = rawname.toLowerCase(Locale.ROOT); + + if ("xmlns".equals(rawnameUC) || rawnameUC.startsWith("xmlns:")) { final int anamelen = rawname.length(); // get parts @@ -337,20 +328,24 @@ protected void bindNamespaces(final QName element, final XMLAttributes attrs) { final String avalue = attrs.getValue(i); // re-case parts and set them back into attributes + final String prefix; if (anamelen > 5) { aprefix = modifyName(aprefix, NAMES_LOWERCASE); alocal = modifyName(alocal, fNamesElems_); rawname = aprefix + ':' + alocal; + prefix = alocal; } else { alocal = modifyName(alocal, NAMES_LOWERCASE); rawname = alocal; + prefix = ""; } fQName_.setValues(aprefix, alocal, rawname, null); attrs.setName(i, fQName_); - // declare prefix - final String prefix = alocal != rawname ? alocal : ""; + // declare prefix, this is moved up to avoid + // another if + // final String prefix = alocal != rawname ? alocal : ""; String uri = avalue.length() > 0 ? avalue : null; if (fOverrideNamespaces_ && prefix.equals(element.prefix) && htmlConfiguration_.getHtmlElements().getElement(element.localpart, null) != null) { @@ -362,8 +357,7 @@ protected void bindNamespaces(final QName element, final XMLAttributes attrs) { } // bind element - String prefix = element.prefix != null ? element.prefix : ""; - element.uri = fNamespaceContext_.getURI(prefix); + element.uri = fNamespaceContext_.getURI(element.prefix != null ? element.prefix : ""); // REVISIT: The prefix of a qualified element name that is // bound to a namespace is passed (as recent as // Xerces 2.4.0) as "" for start elements and null @@ -390,20 +384,22 @@ protected void bindNamespaces(final QName element, final XMLAttributes attrs) { if (attrs != null) { final int attrCount = attrs.getLength(); for (int i = 0; i < attrCount; i++) { - attrs.getName(i, fQName_); - splitQName(fQName_); - prefix = !"xmlns".equals(fQName_.rawname) - ? (fQName_.prefix != null ? fQName_.prefix : "") : "xmlns"; - // PATCH: Joseph Walton - if (!"".equals(prefix)) { - fQName_.uri = "xml".equals(prefix) ? XML_URI : fNamespaceContext_.getURI(prefix); + final QName qName = attrs.getName(i).splitQName(); + + final String prefix = !"xmlns".equals(qName.rawname) + ? (qName.prefix != null ? qName.prefix : "") : "xmlns"; + // PATCH: Joseph Walton, if we have a non-empty prefix + if (prefix.length() > 0) { + qName.uri = "xml".equals(prefix) ? XML_URI : fNamespaceContext_.getURI(prefix); } // NOTE: You would think the xmlns namespace would be handled // by NamespaceSupport but it's not. -Ac - if ("xmlns".equals(prefix) && fQName_.uri == null) { - fQName_.uri = XMLNS_URI; + if (qName.uri == null && "xmlns".equals(prefix)) { + qName.uri = XMLNS_URI; } - attrs.setName(i, fQName_); + // no need to set it, we already worked on the reference, + // less copying of things make it more efficient + // attrs.setName(i, fQName_); } } } diff --git a/src/main/java/org/htmlunit/cyberneko/html/dom/HTMLDocumentImpl.java b/src/main/java/org/htmlunit/cyberneko/html/dom/HTMLDocumentImpl.java index e5e28d01..0e572276 100644 --- a/src/main/java/org/htmlunit/cyberneko/html/dom/HTMLDocumentImpl.java +++ b/src/main/java/org/htmlunit/cyberneko/html/dom/HTMLDocumentImpl.java @@ -17,9 +17,12 @@ import java.io.StringWriter; import java.lang.reflect.Constructor; +import java.util.Arrays; import java.util.HashMap; import java.util.Locale; +import java.util.Map; +import org.htmlunit.cyberneko.util.FastHashMap; import org.htmlunit.cyberneko.xerces.dom.DocumentImpl; import org.htmlunit.cyberneko.xerces.dom.ElementImpl; import org.w3c.dom.Attr; @@ -56,6 +59,28 @@ */ public class HTMLDocumentImpl extends DocumentImpl implements HTMLDocument { + /** + * All valid HTML5 tags without deprecated elements + * https://www.tutorialrepublic.com/html-reference/html5-tags.php + */ + private static final String[] HTML5ELEMENTS = { + "A", "ABBR", "ADDRESS", "AREA", "ARTICLE", "ASIDE", "AUDIO", + "B", "BASE", "BDI", "BDO", "BLOCKQUOTE", "BODY", "BR", "BUTTON", + "CANVAS", "CAPTION", "CITE", "CODE", "COL", "COLGROUP", "DATA", + "DATALIST", "DD", "DEL", "DETAILS", "DFN", "DIALOG", "DIV", + "DL", "DT", "EM", "EMBED", "FIELDSET", "FIGCAPTION", "FIGURE", + "FOOTER", "FORM", "HEAD", "HEADER", "HGROUP", "H1", "HR", "HTML", + "I", "IFRAME", "IMG", "INPUT", "INS", "KBD", "KEYGEN", "LABEL", + "LEGEND", "LI", "LINK", "MAIN", "MAP", "MARK", "MENU", "MENUITEM", + "META", "METER", "NAV", "NOSCRIPT", "OBJECT", "OL", "OPTGROUP", + "OPTION", "OUTPUT", "P", "PARAM", "PICTURE", "PRE", "PROGRESS", + "Q", "RP", "RT", "RUBY", "S", "SAMP", "SCRIPT", "SECTION", + "SELECT", "SMALL", "SOURCE", "SPAN", "STRONG", "STYLE", "SUB", + "SUMMARY", "SUP", "SVG", "TABLE", "TBODY", "TD", "TEMPLATE", + "TEXTAREA", "TFOOT", "TH", "THEAD", "TIME", "TITLE", "TR", + "TRACK", "U", "UL", "VAR", "VIDEO", "WBR" + }; + /** * Holds HTMLCollectionImpl object with live collection of all * anchors in document. This reference is on demand only once. @@ -102,7 +127,8 @@ public class HTMLDocumentImpl extends DocumentImpl implements HTMLDocument { * * @see #createElement */ - private static final HashMap> elementTypesHTML_ = new HashMap<>(); + private static final FastHashMap elementTypesHTMLLower_ = new FastHashMap<>(11, 0.5f); + private static final FastHashMap elementTypesHTMLUpper_ = new FastHashMap<>(11, 0.5f); /** * Signature used to locate constructor of HTML element classes. This @@ -113,69 +139,108 @@ public class HTMLDocumentImpl extends DocumentImpl implements HTMLDocument { private static final Class[] elemClassSigHTML_ = new Class[] {HTMLDocumentImpl.class, String.class}; static { - elementTypesHTML_.put("A", HTMLAnchorElementImpl.class); - elementTypesHTML_.put("APPLET", HTMLAppletElementImpl.class); - elementTypesHTML_.put("AREA", HTMLAreaElementImpl.class); - elementTypesHTML_.put("BASE", HTMLBaseElementImpl.class); - elementTypesHTML_.put("BASEFONT", HTMLBaseFontElementImpl.class); - elementTypesHTML_.put("BLOCKQUOTE", HTMLQuoteElementImpl.class); - elementTypesHTML_.put("BODY", HTMLBodyElementImpl.class); - elementTypesHTML_.put("BR", HTMLBRElementImpl.class); - elementTypesHTML_.put("BUTTON", HTMLButtonElementImpl.class); - elementTypesHTML_.put("DEL", HTMLModElementImpl.class); - elementTypesHTML_.put("DIR", HTMLDirectoryElementImpl.class); - elementTypesHTML_.put("DIV", HTMLDivElementImpl.class); - elementTypesHTML_.put("DL", HTMLDListElementImpl.class); - elementTypesHTML_.put("FIELDSET", HTMLFieldSetElementImpl.class); - elementTypesHTML_.put("FONT", HTMLFontElementImpl.class); - elementTypesHTML_.put("FORM", HTMLFormElementImpl.class); - elementTypesHTML_.put("FRAME", HTMLFrameElementImpl.class); - elementTypesHTML_.put("FRAMESET", HTMLFrameSetElementImpl.class); - elementTypesHTML_.put("HEAD", HTMLHeadElementImpl.class); - elementTypesHTML_.put("H1", HTMLHeadingElementImpl.class); - elementTypesHTML_.put("H2", HTMLHeadingElementImpl.class); - elementTypesHTML_.put("H3", HTMLHeadingElementImpl.class); - elementTypesHTML_.put("H4", HTMLHeadingElementImpl.class); - elementTypesHTML_.put("H5", HTMLHeadingElementImpl.class); - elementTypesHTML_.put("H6", HTMLHeadingElementImpl.class); - elementTypesHTML_.put("HR", HTMLHRElementImpl.class); - elementTypesHTML_.put("HTML", HTMLHtmlElementImpl.class); - elementTypesHTML_.put("IFRAME", HTMLIFrameElementImpl.class); - elementTypesHTML_.put("IMG", HTMLImageElementImpl.class); - elementTypesHTML_.put("INPUT", HTMLInputElementImpl.class); - elementTypesHTML_.put("INS", HTMLModElementImpl.class); - elementTypesHTML_.put("ISINDEX", HTMLIsIndexElementImpl.class); - elementTypesHTML_.put("LABEL", HTMLLabelElementImpl.class); - elementTypesHTML_.put("LEGEND", HTMLLegendElementImpl.class); - elementTypesHTML_.put("LI", HTMLLIElementImpl.class); - elementTypesHTML_.put("LINK", HTMLLinkElementImpl.class); - elementTypesHTML_.put("MAP", HTMLMapElementImpl.class); - elementTypesHTML_.put("MENU", HTMLMenuElementImpl.class); - elementTypesHTML_.put("META", HTMLMetaElementImpl.class); - elementTypesHTML_.put("OBJECT", HTMLObjectElementImpl.class); - elementTypesHTML_.put("OL", HTMLOListElementImpl.class); - elementTypesHTML_.put("OPTGROUP", HTMLOptGroupElementImpl.class); - elementTypesHTML_.put("OPTION", HTMLOptionElementImpl.class); - elementTypesHTML_.put("P", HTMLParagraphElementImpl.class); - elementTypesHTML_.put("PARAM", HTMLParamElementImpl.class); - elementTypesHTML_.put("PRE", HTMLPreElementImpl.class); - elementTypesHTML_.put("Q", HTMLQuoteElementImpl.class); - elementTypesHTML_.put("SCRIPT", HTMLScriptElementImpl.class); - elementTypesHTML_.put("SELECT", HTMLSelectElementImpl.class); - elementTypesHTML_.put("STYLE", HTMLStyleElementImpl.class); - elementTypesHTML_.put("TABLE", HTMLTableElementImpl.class); - elementTypesHTML_.put("CAPTION", HTMLTableCaptionElementImpl.class); - elementTypesHTML_.put("TD", HTMLTableCellElementImpl.class); - elementTypesHTML_.put("TH", HTMLTableCellElementImpl.class); - elementTypesHTML_.put("COL", HTMLTableColElementImpl.class); - elementTypesHTML_.put("COLGROUP", HTMLTableColElementImpl.class); - elementTypesHTML_.put("TR", HTMLTableRowElementImpl.class); - elementTypesHTML_.put("TBODY", HTMLTableSectionElementImpl.class); - elementTypesHTML_.put("THEAD", HTMLTableSectionElementImpl.class); - elementTypesHTML_.put("TFOOT", HTMLTableSectionElementImpl.class); - elementTypesHTML_.put("TEXTAREA", HTMLTextAreaElementImpl.class); - elementTypesHTML_.put("TITLE", HTMLTitleElementImpl.class); - elementTypesHTML_.put("UL", HTMLUListElementImpl.class); + final Map> tMap = new HashMap<>(); + + // register all HTML5 elements that are not deprecated as simple + // HTMLElementImpl first and overwrite them later + // https://developer.mozilla.org/en-US/docs/Web/HTML/Element + Arrays.stream(HTML5ELEMENTS).forEach(t -> tMap.put(t, HTMLElementImpl.class)); + + tMap.put("A", HTMLAnchorElementImpl.class); + tMap.put("APPLET", HTMLAppletElementImpl.class); + tMap.put("AREA", HTMLAreaElementImpl.class); + tMap.put("BASE", HTMLBaseElementImpl.class); + tMap.put("BASEFONT", HTMLBaseFontElementImpl.class); + tMap.put("BLOCKQUOTE", HTMLQuoteElementImpl.class); + tMap.put("BODY", HTMLBodyElementImpl.class); + tMap.put("BR", HTMLBRElementImpl.class); + tMap.put("BUTTON", HTMLButtonElementImpl.class); + tMap.put("DEL", HTMLModElementImpl.class); + tMap.put("DIR", HTMLDirectoryElementImpl.class); + tMap.put("DIV", HTMLDivElementImpl.class); + tMap.put("DL", HTMLDListElementImpl.class); + tMap.put("FIELDSET", HTMLFieldSetElementImpl.class); + tMap.put("FONT", HTMLFontElementImpl.class); + tMap.put("FORM", HTMLFormElementImpl.class); + tMap.put("FRAME", HTMLFrameElementImpl.class); + tMap.put("FRAMESET", HTMLFrameSetElementImpl.class); + tMap.put("HEAD", HTMLHeadElementImpl.class); + tMap.put("H1", HTMLHeadingElementImpl.class); + tMap.put("H2", HTMLHeadingElementImpl.class); + tMap.put("H3", HTMLHeadingElementImpl.class); + tMap.put("H4", HTMLHeadingElementImpl.class); + tMap.put("H5", HTMLHeadingElementImpl.class); + tMap.put("H6", HTMLHeadingElementImpl.class); + tMap.put("HR", HTMLHRElementImpl.class); + tMap.put("HTML", HTMLHtmlElementImpl.class); + tMap.put("IFRAME", HTMLIFrameElementImpl.class); + tMap.put("IMG", HTMLImageElementImpl.class); + tMap.put("INPUT", HTMLInputElementImpl.class); + tMap.put("INS", HTMLModElementImpl.class); + tMap.put("ISINDEX", HTMLIsIndexElementImpl.class); + tMap.put("LABEL", HTMLLabelElementImpl.class); + tMap.put("LEGEND", HTMLLegendElementImpl.class); + tMap.put("LI", HTMLLIElementImpl.class); + tMap.put("LINK", HTMLLinkElementImpl.class); + tMap.put("MAP", HTMLMapElementImpl.class); + tMap.put("MENU", HTMLMenuElementImpl.class); + tMap.put("META", HTMLMetaElementImpl.class); + tMap.put("OBJECT", HTMLObjectElementImpl.class); + tMap.put("OL", HTMLOListElementImpl.class); + tMap.put("OPTGROUP", HTMLOptGroupElementImpl.class); + tMap.put("OPTION", HTMLOptionElementImpl.class); + tMap.put("P", HTMLParagraphElementImpl.class); + tMap.put("PARAM", HTMLParamElementImpl.class); + tMap.put("PRE", HTMLPreElementImpl.class); + tMap.put("Q", HTMLQuoteElementImpl.class); + tMap.put("SCRIPT", HTMLScriptElementImpl.class); + tMap.put("SELECT", HTMLSelectElementImpl.class); + tMap.put("STYLE", HTMLStyleElementImpl.class); + tMap.put("TABLE", HTMLTableElementImpl.class); + tMap.put("CAPTION", HTMLTableCaptionElementImpl.class); + tMap.put("TD", HTMLTableCellElementImpl.class); + tMap.put("TH", HTMLTableCellElementImpl.class); + tMap.put("COL", HTMLTableColElementImpl.class); + tMap.put("COLGROUP", HTMLTableColElementImpl.class); + tMap.put("TR", HTMLTableRowElementImpl.class); + tMap.put("TBODY", HTMLTableSectionElementImpl.class); + tMap.put("THEAD", HTMLTableSectionElementImpl.class); + tMap.put("TFOOT", HTMLTableSectionElementImpl.class); + tMap.put("TEXTAREA", HTMLTextAreaElementImpl.class); + tMap.put("TITLE", HTMLTitleElementImpl.class); + tMap.put("UL", HTMLUListElementImpl.class); + + // also put all lowercase versions here to safe on lookup + tMap.entrySet().forEach(e -> { + final String key = e.getKey(); + final Class value = e.getValue(); + + final String uKey = key.toUpperCase(Locale.ENGLISH); + final String lKey = key.toLowerCase(Locale.ENGLISH); + + try + { + final Constructor ctr = value.getConstructor(elemClassSigHTML_); + + final ElementTypesHTMLHolder holder = new ElementTypesHTMLHolder(uKey, ctr); + elementTypesHTMLUpper_.put(uKey, holder); + elementTypesHTMLLower_.put(lKey, holder); + } + catch (NoSuchMethodException | SecurityException ex) + { + throw new IllegalStateException("HTM15 Tag '" + key + "' associated with an Element class that failed to construct.\n" + key, ex); + } + }); + } + + static class ElementTypesHTMLHolder { + public final String tagName; + public final Constructor ctr; + + public ElementTypesHTMLHolder(final String tagName, final Constructor ctr) { + this.tagName = tagName; + this.ctr = ctr; + } } /** @@ -456,27 +521,29 @@ public Element createElementNS(final String namespaceURI, final String qualified @Override public Element createElement(String tagName) throws DOMException { - final Class elemClass; - final Constructor cnst; - // First, make sure tag name is all upper case, next get the associated // element class. If no class is found, generate a generic HTML element. // Do so also if an unexpected exception occurs. - tagName = tagName.toUpperCase(Locale.ENGLISH); - elemClass = elementTypesHTML_.get(tagName); - if (elemClass != null) { + ElementTypesHTMLHolder htmlHolder = elementTypesHTMLLower_.get(tagName); + if (htmlHolder == null) { + // try uppercase but only if needed and don't use this string to create + // the element but the stored one to keep the memory usage low when the + // tree is kept in memory longer + htmlHolder = elementTypesHTMLUpper_.get(tagName.toUpperCase(Locale.ENGLISH)); + } + + if (htmlHolder != null) { // Get the constructor for the element. The signature specifies an // owner document and a tag name. Use the constructor to instantiate // a new object and return it. try { - cnst = elemClass.getConstructor(elemClassSigHTML_); - return (Element) cnst.newInstance(new Object[] {this, tagName}); + return (Element) htmlHolder.ctr.newInstance(new Object[] {this, htmlHolder.tagName}); } catch (final Exception e) { throw new IllegalStateException("HTM15 Tag '" + tagName + "' associated with an Element class that failed to construct.\n" + tagName, e); } } - return new HTMLElementImpl(this, tagName); + return new HTMLElementImpl(this, tagName.toUpperCase(Locale.ENGLISH)); } /** @@ -620,9 +687,9 @@ protected boolean canRenameElements(final String newNamespaceURI, final String n } // check whether a class change is required - final Class newClass = elementTypesHTML_.get(newNodeName.toUpperCase(Locale.ENGLISH)); - final Class oldClass = elementTypesHTML_.get(el.getTagName()); - return newClass == oldClass; + final Constructor newCtr = elementTypesHTMLUpper_.get(newNodeName.toUpperCase(Locale.ENGLISH)).ctr; + final Constructor oldCtr = elementTypesHTMLUpper_.get(el.getTagName()).ctr; + return newCtr == oldCtr; } /** diff --git a/src/main/java/org/htmlunit/cyberneko/html/dom/HTMLElementImpl.java b/src/main/java/org/htmlunit/cyberneko/html/dom/HTMLElementImpl.java index 4e8898c5..dcd99b4d 100644 --- a/src/main/java/org/htmlunit/cyberneko/html/dom/HTMLElementImpl.java +++ b/src/main/java/org/htmlunit/cyberneko/html/dom/HTMLElementImpl.java @@ -48,7 +48,7 @@ public class HTMLElementImpl extends ElementImpl implements HTMLElement { * @param tagName The element's tag name */ public HTMLElementImpl(final HTMLDocumentImpl owner, final String tagName) { - super(owner, tagName.toUpperCase(Locale.ENGLISH)); + super(owner, tagName); } @Override diff --git a/src/main/java/org/htmlunit/cyberneko/io/PlaybackInputStream.java b/src/main/java/org/htmlunit/cyberneko/io/PlaybackInputStream.java new file mode 100644 index 00000000..11709b05 --- /dev/null +++ b/src/main/java/org/htmlunit/cyberneko/io/PlaybackInputStream.java @@ -0,0 +1,238 @@ +/* + * Copyright 2017-2023 Ronald Brill + * Copyright 2023 René Schwietzke + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.htmlunit.cyberneko.io; + +import java.io.IOException; +import java.io.InputStream; + +/** + * A playback input stream. This class has the ability to save the bytes read + * from the underlying input stream and play the bytes back later. This class is + * used by the HTML scanner to switch encodings when a <meta> tag is + * detected that specifies a different encoding. + *

+ * If the encoding is changed, then the scanner calls the playback + * method and re-scans the beginning of the HTML document again. This should not + * be too much of a performance problem because the <meta> tag appears at + * the beginning of the document. + *

+ * If the <body> tag is reached without playing back the bytes, then the + * buffer can be cleared by calling the clear method. This stops + * the buffering of bytes and allows the memory used by the buffer to be + * reclaimed. + *

+ * Note: If the buffer is never played back or cleared, this + * input stream will continue to buffer the entire stream. Therefore, it is very + * important to use this stream correctly. + * + * @author Andy Clark + */ +public final class PlaybackInputStream extends InputStream { + + /** Set to true to debug playback. */ + private static final boolean DEBUG_PLAYBACK = false; + + /** Playback mode. */ + private boolean playback_ = false; + + /** Buffer cleared. */ + private boolean cleared_ = false; + + /** Encoding detected. */ + private boolean detected_ = false; + + // buffer info + + /** Byte buffer. */ + private byte[] byteBuffer_ = new byte[1024]; + + /** Offset into byte buffer during playback. */ + private int byteOffset_ = 0; + + /** Length of bytes read into byte buffer. */ + private int byteLength_ = 0; + + /** Pushback offset. */ + private int pushbackOffset_ = 0; + + /** Pushback length. */ + private int pushbackLength_ = 0; + + /** Our inputstream */ + private final InputStream in; + + // Constructor. + public PlaybackInputStream(final InputStream in) { + this.in = in; + } + + // Detect encoding. + public void detectEncoding(final String[] encodings) throws IOException { + if (detected_) { + throw new IOException("Should not detect encoding twice."); + } + detected_ = true; + final int b1 = read(); + if (b1 == -1) { + return; + } + final int b2 = read(); + if (b2 == -1) { + pushbackLength_ = 1; + return; + } + // UTF-8 BOM: 0xEFBBBF + if (b1 == 0xEF && b2 == 0xBB) { + final int b3 = read(); + if (b3 == 0xBF) { + pushbackOffset_ = 3; + encodings[0] = "UTF-8"; + encodings[1] = "UTF8"; + return; + } + pushbackLength_ = 3; + } + // UTF-16 LE BOM: 0xFFFE + if (b1 == 0xFF && b2 == 0xFE) { + encodings[0] = "UTF-16"; + encodings[1] = "UnicodeLittleUnmarked"; + return; + } + // UTF-16 BE BOM: 0xFEFF + else if (b1 == 0xFE && b2 == 0xFF) { + encodings[0] = "UTF-16"; + encodings[1] = "UnicodeBigUnmarked"; + return; + } + // unknown + pushbackLength_ = 2; + } + + /** Playback buffer contents. */ + public void playback() { + playback_ = true; + } + + /** + * Clears the buffer. + *

+ * Note: The buffer cannot be cleared during playback. + * Therefore, calling this method during playback will not do anything. However, + * the buffer will be cleared automatically at the end of playback. + */ + public void clear() { + if (!playback_) { + cleared_ = true; + byteBuffer_ = null; + } + } + + // + // InputStream methods + // + + /** Read a byte. */ + @Override + public int read() throws IOException { + if (DEBUG_PLAYBACK) { + System.out.println("(read"); + } + // this should be the normal state, hence we do that first + if (cleared_) { + return in.read(); + } + if (pushbackOffset_ < pushbackLength_) { + return byteBuffer_[pushbackOffset_++]; + } + if (playback_) { + final int c = byteBuffer_[byteOffset_++]; + if (byteOffset_ == byteLength_) { + cleared_ = true; + byteBuffer_ = null; + } + if (DEBUG_PLAYBACK) { + System.out.println(")read -> " + (char) c); + } + return c; + } + final int c = in.read(); + if (c != -1) { + if (byteLength_ == byteBuffer_.length) { + final byte[] newarray = new byte[byteLength_ + 1024]; + System.arraycopy(byteBuffer_, 0, newarray, 0, byteLength_); + byteBuffer_ = newarray; + } + byteBuffer_[byteLength_++] = (byte) c; + } + if (DEBUG_PLAYBACK) { + System.out.println(")read -> " + (char) c); + } + return c; + } + + /** Read an array of bytes. */ + @Override + public int read(final byte[] array) throws IOException { + return read(array, 0, array.length); + } + + /** Read an array of bytes. */ + @Override + public int read(final byte[] array, final int offset, int length) throws IOException { + if (DEBUG_PLAYBACK) { + System.out.println(")read(" + offset + ',' + length + ')'); + } + // this should be the normal state, hence we do that first + if (cleared_) { + return in.read(array, offset, length); + } + if (pushbackOffset_ < pushbackLength_) { + int count = pushbackLength_ - pushbackOffset_; + if (count > length) { + count = length; + } + System.arraycopy(byteBuffer_, pushbackOffset_, array, offset, count); + pushbackOffset_ += count; + return count; + } + if (playback_) { + if (byteOffset_ + length > byteLength_) { + length = byteLength_ - byteOffset_; + } + System.arraycopy(byteBuffer_, byteOffset_, array, offset, length); + byteOffset_ += length; + if (byteOffset_ == byteLength_) { + cleared_ = true; + byteBuffer_ = null; + } + return length; + } + final int count = in.read(array, offset, length); + if (count != -1) { + if (byteLength_ + count > byteBuffer_.length) { + final byte[] newarray = new byte[byteLength_ + count + 512]; + System.arraycopy(byteBuffer_, 0, newarray, 0, byteLength_); + byteBuffer_ = newarray; + } + System.arraycopy(array, offset, byteBuffer_, byteLength_, count); + byteLength_ += count; + } + if (DEBUG_PLAYBACK) { + System.out.println(")read(" + offset + ',' + length + ") -> " + count); + } + return count; + } +} diff --git a/src/main/java/org/htmlunit/cyberneko/parsers/DOMFragmentParser.java b/src/main/java/org/htmlunit/cyberneko/parsers/DOMFragmentParser.java index b80ed4e1..da5e1156 100644 --- a/src/main/java/org/htmlunit/cyberneko/parsers/DOMFragmentParser.java +++ b/src/main/java/org/htmlunit/cyberneko/parsers/DOMFragmentParser.java @@ -27,9 +27,9 @@ import org.htmlunit.cyberneko.xerces.xni.NamespaceContext; import org.htmlunit.cyberneko.xerces.xni.QName; import org.htmlunit.cyberneko.xerces.xni.XMLAttributes; +import org.htmlunit.cyberneko.xerces.xni.XMLString; import org.htmlunit.cyberneko.xerces.xni.XMLDocumentHandler; import org.htmlunit.cyberneko.xerces.xni.XMLLocator; -import org.htmlunit.cyberneko.xerces.xni.XMLString; import org.htmlunit.cyberneko.xerces.xni.XNIException; import org.htmlunit.cyberneko.xerces.xni.parser.XMLConfigurationException; import org.htmlunit.cyberneko.xerces.xni.parser.XMLDocumentSource; diff --git a/src/main/java/org/htmlunit/cyberneko/util/FastHashMap.java b/src/main/java/org/htmlunit/cyberneko/util/FastHashMap.java new file mode 100644 index 00000000..71ef885e --- /dev/null +++ b/src/main/java/org/htmlunit/cyberneko/util/FastHashMap.java @@ -0,0 +1,311 @@ +/* + * Copyright (c) 2005-2023 Xceptance Software Technologies GmbH + * + * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.htmlunit.cyberneko.util; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * Simple hash map implementation taken from here + * https://github.com/mikvor/hashmapTest/blob/master/src/main/java/map/objobj/ObjObjMap.java + * No concrete license specified at the source. The project is public domain. + * + * Not thread-safe! + * + * Null support was removed. + * + * @since 3.10.0 + */ +public class FastHashMap +{ + private static final Object FREE_KEY = new Object(); + private static final Object REMOVED_KEY = new Object(); + + /** Keys and values */ + private Object[] m_data; + + /** Fill factor, must be between (0 and 1) */ + private final float m_fillFactor; + /** We will resize a map once it reaches this size */ + private int m_threshold; + /** Current map size */ + private int m_size; + /** Mask to calculate the original position */ + private int m_mask; + /** Mask to wrap the actual array pointer */ + private int m_mask2; + + public FastHashMap() + { + this(13, 0.5f); + } + + public FastHashMap( final int size, final float fillFactor ) + { + if ( fillFactor <= 0 || fillFactor >= 1 ) + throw new IllegalArgumentException( "FillFactor must be in (0, 1)" ); + if ( size <= 0 ) + throw new IllegalArgumentException( "Size must be positive!" ); + final int capacity = arraySize(size, fillFactor); + m_mask = capacity - 1; + m_mask2 = capacity * 2 - 1; + m_fillFactor = fillFactor; + + m_data = new Object[capacity * 2]; + Arrays.fill( m_data, FREE_KEY ); + + m_threshold = (int) (capacity * fillFactor); + } + + public V get( final K key ) + { + int ptr = (key.hashCode() & m_mask) << 1; + Object k = m_data[ ptr ]; + + if ( k == FREE_KEY ) + return null; //end of chain already + + if ( k.hashCode() == key.hashCode() && k.equals( key ) ) //we check FREE and REMOVED prior to this call + { + return (V) m_data[ ptr + 1 ]; + } + + while ( true ) + { + ptr = (ptr + 2) & m_mask2; //that's next index + k = m_data[ ptr ]; + if ( k == FREE_KEY ) + { + return null; + } + if ( k.hashCode() == key.hashCode() && k.equals( key ) ) + { + return (V) m_data[ ptr + 1 ]; + } + } + } + + public V put( final K key, final V value ) + { + int ptr = getStartIndex(key) << 1; + Object k = m_data[ptr]; + + if ( k == FREE_KEY ) //end of chain already + { + m_data[ ptr ] = key; + m_data[ ptr + 1 ] = value; + if ( m_size >= m_threshold ) + rehash( m_data.length * 2 ); //size is set inside + else + ++m_size; + return null; + } + else if ( k.equals( key ) ) //we check FREE and REMOVED prior to this call + { + final Object ret = m_data[ ptr + 1 ]; + m_data[ ptr + 1 ] = value; + return (V) ret; + } + + int firstRemoved = -1; + if ( k == REMOVED_KEY ) + firstRemoved = ptr; //we may find a key later + + while ( true ) + { + ptr = ( ptr + 2 ) & m_mask2; //that's next index calculation + k = m_data[ ptr ]; + if ( k == FREE_KEY ) + { + if ( firstRemoved != -1 ) + ptr = firstRemoved; + m_data[ ptr ] = key; + m_data[ ptr + 1 ] = value; + if ( m_size >= m_threshold ) + rehash( m_data.length * 2 ); //size is set inside + else + ++m_size; + return null; + } + else if ( k.equals( key ) ) + { + final Object ret = m_data[ ptr + 1 ]; + m_data[ ptr + 1 ] = value; + return (V) ret; + } + else if ( k == REMOVED_KEY ) + { + if ( firstRemoved == -1 ) + firstRemoved = ptr; + } + } + } + + public V remove( final K key ) + { + int ptr = getStartIndex(key) << 1; + Object k = m_data[ ptr ]; + if ( k == FREE_KEY ) + return null; //end of chain already + else if ( k.equals( key ) ) //we check FREE and REMOVED prior to this call + { + --m_size; + if ( m_data[ ( ptr + 2 ) & m_mask2 ] == FREE_KEY ) + m_data[ ptr ] = FREE_KEY; + else + m_data[ ptr ] = REMOVED_KEY; + final V ret = (V) m_data[ ptr + 1 ]; + m_data[ ptr + 1 ] = null; + return ret; + } + while ( true ) + { + ptr = ( ptr + 2 ) & m_mask2; //that's next index calculation + k = m_data[ ptr ]; + if ( k == FREE_KEY ) + return null; + else if ( k.equals( key ) ) + { + --m_size; + if ( m_data[ ( ptr + 2 ) & m_mask2 ] == FREE_KEY ) + m_data[ ptr ] = FREE_KEY; + else + m_data[ ptr ] = REMOVED_KEY; + final V ret = (V) m_data[ ptr + 1 ]; + m_data[ ptr + 1 ] = null; + return ret; + } + } + } + + public int size() + { + return m_size; + } + + private void rehash( final int newCapacity ) + { + m_threshold = (int) (newCapacity/2 * m_fillFactor); + m_mask = newCapacity/2 - 1; + m_mask2 = newCapacity - 1; + + final int oldCapacity = m_data.length; + final Object[] oldData = m_data; + + m_data = new Object[ newCapacity ]; + Arrays.fill( m_data, FREE_KEY ); + + m_size = 0; + + for ( int i = 0; i < oldCapacity; i += 2 ) { + final Object oldKey = oldData[ i ]; + if( oldKey != FREE_KEY && oldKey != REMOVED_KEY ) + put( (K)oldKey, (V)oldData[ i + 1 ]); + } + } + + /** + * Returns a list of all values + * + * @return + */ + public List keys() + { + final List result = new ArrayList<>(); + + final int length = m_data.length; + for (int i = 0; i < length; i += 2) + { + final Object o = m_data[i]; + if (o != FREE_KEY && o != REMOVED_KEY) + { + result.add((K) o); + } + } + + return result; + } + + /** + * Returns a list of all values + * + * @return + */ + public List values() + { + final List result = new ArrayList<>(); + + final int length = m_data.length; + for (int i = 0; i < length; i += 2) + { + final Object o = m_data[i]; + if (o != FREE_KEY && o != REMOVED_KEY) + { + result.add((V) m_data[i + 1]); + } + } + + return result; + } + + /** + * Clears the map, reuses the data structure by clearing it out. + * It won't shrink the underlying array! + */ + public void clear() + { + this.m_size = 0; + Arrays.fill(m_data, FREE_KEY); + } + + public int getStartIndex( final Object key ) + { + //key is not null here + return key.hashCode() & m_mask; + } + + /** Return the least power of two greater than or equal to the specified value. + * + *

Note that this function will return 1 when the argument is 0. + * + * @param x a long integer smaller than or equal to 262. + * @return the least power of two greater than or equal to the specified value. + */ + public static long nextPowerOfTwo( long x ) { + if ( x == 0 ) return 1; + x--; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + return ( x | x >> 32 ) + 1; + } + + /** Returns the least power of two smaller than or equal to 230 and larger than or equal to Math.ceil( expected / f ). + * + * @param expected the expected number of elements in a hash table. + * @param f the load factor. + * @return the minimum possible size for a backing array. + * @throws IllegalArgumentException if the necessary size is larger than 230. + */ + public static int arraySize( final int expected, final float f ) { + final long s = Math.max( 2, nextPowerOfTwo( (long)Math.ceil( expected / f ) ) ); + if ( s > (1 << 30) ) throw new IllegalArgumentException( "Too large (" + expected + " expected elements with load factor " + f + ")" ); + return (int)s; + } +} \ No newline at end of file diff --git a/src/main/java/org/htmlunit/cyberneko/util/MiniStack.java b/src/main/java/org/htmlunit/cyberneko/util/MiniStack.java new file mode 100644 index 00000000..45072b7a --- /dev/null +++ b/src/main/java/org/htmlunit/cyberneko/util/MiniStack.java @@ -0,0 +1,132 @@ +/* + * Copyright 2023 René Schwietzke + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.htmlunit.cyberneko.util; + +import java.util.Arrays; + +/** + * Extremely light stack implementation. Perfect for inlining. + * + * @author René Schwietzke + * @since 3.10.0 + */ +public class MiniStack { + // our data + private Object[] elements_; + + // our current position in the stack + private int pos_ = -1; + + /** + * Create a new empty stack with 8 elements capacity. + * + *

A reference are typically (less than 32 GB memory) + * 4 bytes. The overhead of any object is about 24 bytes, + * give or take, hence 8*4 + 24 fits a cache line of 64 bytes.

+ */ + public MiniStack() { + elements_ = new Object[8]; + } + + /** + * Empties the stack. It will not only reset the pointer but + * empty out the backing array to ensure we are not holding + * old references. + */ + public void clear() { + pos_ = -1; + + // drop all references to ensure GC + // keeping would be more efficient but + // also has sideeffects. + Arrays.fill(this.elements_, null); + } + + /** + * Resets the stack to zero but does not + * clean it. Use with caution to avoid holding + * old objects and preventing them from GC. + */ + public void reset() { + pos_ = -1; + } + + /** + * Removes and returns the last element + * + * @return the last element or null of none + */ + @SuppressWarnings("unchecked") + public E pop() { + if ( pos_ >= 0) { + final E e = (E) this.elements_[pos_]; + // ensure ref is clean to allow GC + this.elements_[pos_] = null; + this.pos_--; + + return e; + } + else { + return null; + } + } + + /** + * Returns the top/last element without removing + * it. Will return null if we don't have a last + * element. + * + * @return the top/last element if any, null otherwise + */ + @SuppressWarnings("unchecked") + public E peek() { + return pos_ >= 0 ? (E) this.elements_[pos_] : null; + } + + /** + * Add a new element on top of the stack. You can add null + * but the return value of pop and peek will become ambiguous. + * + * @param element the element to add + */ + public void push(E element) { + pos_++; + + // check if we need room, grow by about a cache line + if (pos_ == this.elements_.length) { + this.elements_ = Arrays.copyOf(this.elements_, this.elements_.length + 8); + } + + this.elements_[pos_] = element; + } + + /** + * Checks if we have any element at all on the stack. + * + * @return true if the stack holds elements, false otherwise + */ + public boolean isEmpty() { + return pos_ < 0; + } + + /** + * Returns the current size of the stack. + * + * @return the size of the stack, always >= 0 + */ + public int size() { + return pos_ + 1; + } +} diff --git a/src/main/java/org/htmlunit/cyberneko/util/SimpleArrayList.java b/src/main/java/org/htmlunit/cyberneko/util/SimpleArrayList.java new file mode 100644 index 00000000..30840676 --- /dev/null +++ b/src/main/java/org/htmlunit/cyberneko/util/SimpleArrayList.java @@ -0,0 +1,346 @@ +/* + * Copyright (c) 2005-2023 Xceptance Software Technologies GmbH + * + * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.htmlunit.cyberneko.util; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; + +/** + * Inexpensive (partial) list implementation. Not fully implemented, just what is needed. As soon as iterators and other + * things are involved, the memory savings we wanted are gone. + *

+ * Minimal checks for data correctness!! This is tuned for speed not elegance or safety. + * + * @author Rene Schwietzke + * @since 7.0.0 + */ +public class SimpleArrayList implements List +{ + private T[] data; + + private int size; + + /** + * Creates a new list wrapper from an existing one. This is not copying anything rather referencing it. Make sure + * that you understand that! + * + * @param list + */ + SimpleArrayList(final SimpleArrayList list) + { + data = list.data; + size = list.size; + } + + /** + * Create a new list with a default capacity. + * + * @param capacity + * the capacity + */ + @SuppressWarnings("unchecked") + public SimpleArrayList(final int capacity) + { + data = (T[]) new Object[capacity]; + } + + /** + * Create a new list with a default capacity. + */ + @SuppressWarnings("unchecked") + public SimpleArrayList() + { + data = (T[]) new Object[10]; + } + + /** + * Add an element to the end of the list + * + * @param element + * the element to add + * @return true if added and for this impl it is always true + */ + @SuppressWarnings("unchecked") + public boolean add(T element) + { + final int length = this.data.length; + if (this.size == length) + { + final T[] newData = (T[]) new Object[(length << 1) + 2]; + System.arraycopy(this.data, 0, newData, 0, length); + this.data = newData; + } + + this.data[this.size] = element; + this.size++; + + return true; + } + + @Override + public void add(int index, T element) + { + final int length = this.data.length; + if (this.size == length) + { + final T[] newData = (T[]) new Object[(length << 1) + 2]; + System.arraycopy(data, 0, newData, 0, length); + data = newData; + } + + // shift all to the right, if needed + System.arraycopy(this.data, index, this.data, index + 1, this.size - index); + + this.data[index] = element; + this.size++; + } + + /** + * Return an element at index. No range checks at all. + * + * @param index + * the position + * @return the element at this position + */ + public T get(int index) + { + return (T) data[index]; + } + + /** + * Returns the size of this list + */ + public int size() + { + return size; + } + + /** + * Creates an array of the elements. This is a copy operation! + * + * @return an array of the elements + */ + @Override + public Object[] toArray() + { + return Arrays.copyOf(this.data, this.size); + } + + /** + * Creates an array of the elements. This is a copy operation! + * + * @return an array of the elements + */ + @SuppressWarnings("unchecked") + @Override + public T[] toArray(T[] array) + { + return (T[]) Arrays.copyOf(this.data, this.size, array.getClass()); + } + + /** + * Clears the list by setting the size to zero. It does not release any elements for performance purposes. + */ + @Override + public void clear() + { + // are are not releasing any references, this is because of speed aka less memory + // access needed + this.size = 0; + } + + /** + * Returns view partitions on the underlying list. If the count is larger than size you get back the maximum + * possible list number with one element each. If count is 0 or smaller, we correct it to 1. + * + * @param count + * how many list do we want + * @return a list of lists + */ + public List> partition(int count) + { + final int _count; + if (count > size) + { + _count = size; + } + else + { + _count = count <= 0 ? 1 : count; + } + + final SimpleArrayList> result = new SimpleArrayList<>(count); + + final int newSize = (int) Math.ceil((double) size / (double) _count); + for (int i = 0; i < _count; i++) + { + int from = i * newSize; + int to = from + newSize - 1; + if (to >= size) + { + to = size - 1; + } + result.add(new Partition<>(this, from, to)); + } + + return result; + } + + class Partition extends SimpleArrayList + { + private final int from; + + private final int size; + + public Partition(final SimpleArrayList list, final int from, final int to) + { + super(list); + + this.from = from; + this.size = to - from + 1; + } + + public boolean add(K o) + { + throw new UnsupportedOperationException("Cannot modify the partition"); + } + + public K get(int index) + { + return (K) super.get(index + from); + } + + public int size() + { + return size; + } + + public K[] toArray() + { + throw new UnsupportedOperationException("unimplemented"); + } + + } + + @Override + public boolean isEmpty() + { + throw new UnsupportedOperationException("unimplemented"); + } + + @Override + public boolean contains(Object o) + { + throw new UnsupportedOperationException("unimplemented"); + } + + @Override + public Iterator iterator() + { + throw new UnsupportedOperationException("unimplemented"); + } + + @Override + public boolean remove(Object o) + { + throw new UnsupportedOperationException("unimplemented"); + } + + @Override + public boolean containsAll(Collection c) + { + throw new UnsupportedOperationException("unimplemented"); + } + + @Override + public boolean addAll(Collection c) + { + throw new UnsupportedOperationException("unimplemented"); + } + + @Override + public boolean addAll(int index, Collection c) + { + throw new UnsupportedOperationException("unimplemented"); + } + + @Override + public boolean removeAll(Collection c) + { + throw new UnsupportedOperationException("unimplemented"); + } + + @Override + public boolean retainAll(Collection c) + { + throw new UnsupportedOperationException("unimplemented"); + } + + @Override + public T set(int index, T element) + { + throw new UnsupportedOperationException("unimplemented"); + } + + /** + * Removes the data at index and shifts all data right of it + * + * @param index the position to clear + * @return the previous value at position index + */ + @Override + public T remove(int index) + { + final T t = this.data[index]; + System.arraycopy(this.data, index + 1, this.data, index, this.size - index - 1); + this.size--; + + return t; + } + + @Override + public int indexOf(Object o) + { + throw new UnsupportedOperationException("unimplemented"); + } + + @Override + public int lastIndexOf(Object o) + { + throw new UnsupportedOperationException("unimplemented"); + } + + @Override + public ListIterator listIterator() + { + throw new UnsupportedOperationException("unimplemented"); + } + + @Override + public ListIterator listIterator(int index) + { + throw new UnsupportedOperationException("unimplemented"); + } + + @Override + public List subList(int fromIndex, int toIndex) + { + throw new UnsupportedOperationException("unimplemented"); + } +} diff --git a/src/main/java/org/htmlunit/cyberneko/xerces/dom/AttrImpl.java b/src/main/java/org/htmlunit/cyberneko/xerces/dom/AttrImpl.java index c3f8cffa..2a69ea0d 100644 --- a/src/main/java/org/htmlunit/cyberneko/xerces/dom/AttrImpl.java +++ b/src/main/java/org/htmlunit/cyberneko/xerces/dom/AttrImpl.java @@ -103,7 +103,7 @@ public class AttrImpl extends NodeImpl implements Attr, TypeInfo { protected static final String DTD_URI = "http://www.w3.org/TR/REC-xml"; /** This can either be a String or the first child node. */ - private Object value_ = null; + private Object value_; /** Attribute name. */ protected String name; diff --git a/src/main/java/org/htmlunit/cyberneko/xerces/dom/AttributeMap.java b/src/main/java/org/htmlunit/cyberneko/xerces/dom/AttributeMap.java index 57a7b105..e64046a4 100644 --- a/src/main/java/org/htmlunit/cyberneko/xerces/dom/AttributeMap.java +++ b/src/main/java/org/htmlunit/cyberneko/xerces/dom/AttributeMap.java @@ -14,9 +14,9 @@ */ package org.htmlunit.cyberneko.xerces.dom; -import java.util.ArrayList; import java.util.List; +import org.htmlunit.cyberneko.util.SimpleArrayList; import org.w3c.dom.DOMException; import org.w3c.dom.Node; @@ -95,9 +95,12 @@ public Node setNamedItem(final Node arg) throws DOMException { else { i = -1 - i; // Insert point (may be end of list) if (null == nodes) { - nodes = new ArrayList<>(5); + nodes = new SimpleArrayList<>(1); + nodes.add(arg); + } + else { + nodes.add(i, arg); } - nodes.add(i, arg); } // notify document @@ -170,9 +173,12 @@ public Node setNamedItemNS(final Node arg) throws DOMException { else { i = -1 - i; // Insert point (may be end of list) if (null == nodes) { - nodes = new ArrayList<>(5); + nodes = new SimpleArrayList<>(1); + nodes.add(arg); + } + else { + nodes.add(i, arg); } - nodes.add(i, arg); } } // changed(true); @@ -374,7 +380,7 @@ protected void cloneContent(final NamedNodeMapImpl srcmap) { final int size = srcnodes.size(); if (size != 0) { if (nodes == null) { - nodes = new ArrayList<>(size); + nodes = new SimpleArrayList<>(size); } else { nodes.clear(); @@ -438,9 +444,12 @@ protected final int addItem(final Node arg) { else { i = -1 - i; // Insert point (may be end of list) if (null == nodes) { - nodes = new ArrayList<>(5); + nodes = new SimpleArrayList<>(1); + nodes.add(arg); + } + else { + nodes.add(i, arg); } - nodes.add(i, arg); } } diff --git a/src/main/java/org/htmlunit/cyberneko/xerces/dom/NamedNodeMapImpl.java b/src/main/java/org/htmlunit/cyberneko/xerces/dom/NamedNodeMapImpl.java index 225ee047..56ada1b0 100644 --- a/src/main/java/org/htmlunit/cyberneko/xerces/dom/NamedNodeMapImpl.java +++ b/src/main/java/org/htmlunit/cyberneko/xerces/dom/NamedNodeMapImpl.java @@ -14,9 +14,9 @@ */ package org.htmlunit.cyberneko.xerces.dom; -import java.util.ArrayList; import java.util.List; +import org.htmlunit.cyberneko.util.SimpleArrayList; import org.w3c.dom.DOMException; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; @@ -171,9 +171,12 @@ public Node setNamedItem(final Node arg) throws DOMException { else { i = -1 - i; // Insert point (may be end of list) if (null == nodes) { - nodes = new ArrayList<>(5); + nodes = new SimpleArrayList<>(1); + nodes.add(arg); + } + else { + nodes.add(i, arg); } - nodes.add(i, arg); } return previous; } @@ -209,9 +212,12 @@ public Node setNamedItemNS(final Node arg) throws DOMException { else { i = -1 - i; // Insert point (may be end of list) if (null == nodes) { - nodes = new ArrayList<>(5); + nodes = new SimpleArrayList<>(1); + nodes.add(arg); + } + else { + nodes.add(i, arg); } - nodes.add(i, arg); } } return previous; @@ -278,7 +284,7 @@ protected void cloneContent(final NamedNodeMapImpl srcmap) { final int size = srcnodes.size(); if (size != 0) { if (nodes == null) { - nodes = new ArrayList<>(size); + nodes = new SimpleArrayList<>(size); } else { nodes.clear(); @@ -448,9 +454,12 @@ protected int addItem(final Node arg) { else { i = -1 - i; // Insert point (may be end of list) if (null == nodes) { - nodes = new ArrayList<>(5); + nodes = new SimpleArrayList<>(1); + nodes.add(arg); + } + else { + nodes.add(i, arg); } - nodes.add(i, arg); } } return i; diff --git a/src/main/java/org/htmlunit/cyberneko/xerces/parsers/AbstractDOMParser.java b/src/main/java/org/htmlunit/cyberneko/xerces/parsers/AbstractDOMParser.java index e982e38f..2a1f07ff 100644 --- a/src/main/java/org/htmlunit/cyberneko/xerces/parsers/AbstractDOMParser.java +++ b/src/main/java/org/htmlunit/cyberneko/xerces/parsers/AbstractDOMParser.java @@ -31,8 +31,8 @@ import org.htmlunit.cyberneko.xerces.xni.NamespaceContext; import org.htmlunit.cyberneko.xerces.xni.QName; import org.htmlunit.cyberneko.xerces.xni.XMLAttributes; -import org.htmlunit.cyberneko.xerces.xni.XMLLocator; import org.htmlunit.cyberneko.xerces.xni.XMLString; +import org.htmlunit.cyberneko.xerces.xni.XMLLocator; import org.htmlunit.cyberneko.xerces.xni.XNIException; import org.htmlunit.cyberneko.xerces.xni.parser.XMLConfigurationException; import org.htmlunit.cyberneko.xerces.xni.parser.XMLErrorHandler; @@ -133,7 +133,7 @@ public class AbstractDOMParser extends AbstractXMLDocumentParser { protected EntityImpl fCurrentEntityDecl; /** Character buffer */ - protected final StringBuilder fStringBuffer = new StringBuilder(); + protected final XMLString fStringBuffer = new XMLString(); protected boolean fNamespaceAware; @@ -218,7 +218,7 @@ public void reset() throws XNIException { fCurrentNode = null; // reset string buffer - fStringBuffer.setLength(0); + fStringBuffer.clear(); // reset state information fInCDATASection = false; @@ -583,7 +583,7 @@ public void characters(final XMLString text, final Augmentations augs) throws XN fFirstChunk = false; } if (text.length() > 0) { - text.appendTo(fStringBuffer); + text.append(fStringBuffer); } } else { @@ -888,7 +888,7 @@ protected void setCharacterData(final boolean sawChars) { } } // reset string buffer - fStringBuffer.setLength(0); + fStringBuffer.clear(); } } } diff --git a/src/main/java/org/htmlunit/cyberneko/xerces/parsers/AbstractSAXParser.java b/src/main/java/org/htmlunit/cyberneko/xerces/parsers/AbstractSAXParser.java index 1dc5fdc9..c38c3b4a 100644 --- a/src/main/java/org/htmlunit/cyberneko/xerces/parsers/AbstractSAXParser.java +++ b/src/main/java/org/htmlunit/cyberneko/xerces/parsers/AbstractSAXParser.java @@ -23,8 +23,8 @@ import org.htmlunit.cyberneko.xerces.xni.NamespaceContext; import org.htmlunit.cyberneko.xerces.xni.QName; import org.htmlunit.cyberneko.xerces.xni.XMLAttributes; -import org.htmlunit.cyberneko.xerces.xni.XMLLocator; import org.htmlunit.cyberneko.xerces.xni.XMLString; +import org.htmlunit.cyberneko.xerces.xni.XMLLocator; import org.htmlunit.cyberneko.xerces.xni.XNIException; import org.htmlunit.cyberneko.xerces.xni.parser.XMLConfigurationException; import org.htmlunit.cyberneko.xerces.xni.parser.XMLErrorHandler; diff --git a/src/main/java/org/htmlunit/cyberneko/xerces/parsers/AbstractXMLDocumentParser.java b/src/main/java/org/htmlunit/cyberneko/xerces/parsers/AbstractXMLDocumentParser.java index 35a05c31..9bafb944 100644 --- a/src/main/java/org/htmlunit/cyberneko/xerces/parsers/AbstractXMLDocumentParser.java +++ b/src/main/java/org/htmlunit/cyberneko/xerces/parsers/AbstractXMLDocumentParser.java @@ -18,6 +18,7 @@ import org.htmlunit.cyberneko.xerces.xni.NamespaceContext; import org.htmlunit.cyberneko.xerces.xni.QName; import org.htmlunit.cyberneko.xerces.xni.XMLAttributes; +import org.htmlunit.cyberneko.xerces.xni.XMLString; import org.htmlunit.cyberneko.xerces.xni.XMLDocumentHandler; import org.htmlunit.cyberneko.xerces.xni.XMLLocator; import org.htmlunit.cyberneko.xerces.xni.XMLString; diff --git a/src/main/java/org/htmlunit/cyberneko/xerces/util/XMLAttributesImpl.java b/src/main/java/org/htmlunit/cyberneko/xerces/util/XMLAttributesImpl.java index 04b5eed9..6d9beb4b 100644 --- a/src/main/java/org/htmlunit/cyberneko/xerces/util/XMLAttributesImpl.java +++ b/src/main/java/org/htmlunit/cyberneko/xerces/util/XMLAttributesImpl.java @@ -307,13 +307,20 @@ public String getValue(final String qname) { * range. * @see #getLength */ - public String getName(final int index) { + public String getNameRawName(final int index) { if (index < 0 || index >= getLength()) { return null; } return attributes_.get(index).name_.rawname; } + /** + * Returns the full QName of the name of this attribute. + */ + public QName getName(final int index) { + return attributes_.get(index).name_; + } + // // Attributes methods // diff --git a/src/main/java/org/htmlunit/cyberneko/xerces/xni/QName.java b/src/main/java/org/htmlunit/cyberneko/xerces/xni/QName.java index c31df49d..4e064f66 100644 --- a/src/main/java/org/htmlunit/cyberneko/xerces/xni/QName.java +++ b/src/main/java/org/htmlunit/cyberneko/xerces/xni/QName.java @@ -91,6 +91,16 @@ public void setValues(final String prefix, final String localpart, final String this.uri = uri; } + // Splits a qualified name. + public QName splitQName() { + final int index = this.rawname.indexOf(':'); + if (index != -1) { + this.prefix = this.rawname.substring(0, index); + this.localpart = this.rawname.substring(index + 1); + } + return this; + } + @Override public Object clone() { return new QName(this); diff --git a/src/main/java/org/htmlunit/cyberneko/xerces/xni/XMLAttributes.java b/src/main/java/org/htmlunit/cyberneko/xerces/xni/XMLAttributes.java index e205f53c..ee864bea 100644 --- a/src/main/java/org/htmlunit/cyberneko/xerces/xni/XMLAttributes.java +++ b/src/main/java/org/htmlunit/cyberneko/xerces/xni/XMLAttributes.java @@ -114,7 +114,7 @@ public interface XMLAttributes { void setName(int attrIndex, QName attrName); /** - * Sets the fields in the given QName structure with the values of the attribute + * Gets the fields in the given QName structure with the values of the attribute * name at the specified index. * * @param attrIndex The attribute index. @@ -122,6 +122,15 @@ public interface XMLAttributes { */ void getName(int attrIndex, QName attrName); + /** + * Returns the QName structure of the name. Because QName is a modifiable + * data structure, make sure you know what you do when you take this + * shortcut route. + * + * @param attrIndex The attribute index. + */ + QName getName(int attrIndex); + /** * Look up an attribute's Namespace URI by index. * diff --git a/src/main/java/org/htmlunit/cyberneko/xerces/xni/XMLString.java b/src/main/java/org/htmlunit/cyberneko/xerces/xni/XMLString.java index 99ae5d57..c71d7fb2 100644 --- a/src/main/java/org/htmlunit/cyberneko/xerces/xni/XMLString.java +++ b/src/main/java/org/htmlunit/cyberneko/xerces/xni/XMLString.java @@ -14,203 +14,721 @@ */ package org.htmlunit.cyberneko.xerces.xni; +import java.util.Arrays; + import org.xml.sax.ContentHandler; import org.xml.sax.SAXException; import org.xml.sax.ext.LexicalHandler; /** - * This class is used as a structure to pass text contained in the underlying - * character buffer of the scanner. The offset and length fields allow the - * buffer to be re-used without creating new character arrays. - *

- * Note: Methods that are passed an XMLString structure should - * consider the contents read-only and not make any modifications to the - * contents of the buffer. The method receiving this structure should also not - * modify the offset and length if this structure (or the values of this - * structure) are passed to another method. - *

- * Note: Methods that are passed an XMLString structure are - * required to copy the information out of the buffer if it is to be saved for - * use beyond the scope of the method. The contents of the structure are - * volatile and the contents of the character buffer cannot be assured once the - * method that is passed this structure returns. Therefore, methods passed this - * structure should not save any reference to the structure or the character - * array contained in the structure. + *

This class is meant to replaces the old {@link XMLString} in all areas + * where performance and memory-efficency is key. XMLString compatibility + * remains in place in case one has used that in their own code. + * + *

This buffer is mutable and when you use it, make sure you work with + * it responsibly. In many cases, we will reuse the buffer to avoid fresh + * memory allocations, hence you have to pay attention to its usage pattern. + * It is not meant to be a general String replacement. * - * @author Eric Ye, IBM - * @author Andy Clark, IBM - * @author Ronald Brill + *

This class avoids many of the standard runtime checks that will result + * in a runtime or array exception anyway. Why check twice and raise the + * same exception? + * + * @author René Schwietzke + * @since 3.10.0 */ -public class XMLString { +public class XMLString implements CharSequence { + // our data, can grow + private char[] data_; + + // the current size of the string data + private int length_; + + // the current size of the string data + private final int growBy_; + + // how much do we grow if needed, half a cache line + public static final int CAPACITY_GROWTH = 64 / 2; + + // what is our start size? + // a cache line is 64 byte mostly, the overhead is mostly 24 bytes + // a char is two bytes, let's use one cache lines + public static final int INITIAL_CAPACITY = (64 - 24) / 2; + + // static empty version; DON'T MODIFY IT + public static final XMLString EMPTY = new XMLString(0); - private final StringBuilder builder_; + // the � character + private static final char REPLACEMENT_CHARACTER = '\uFFFD'; /** - * Constructs an XMLString. + * Constructs an XMLCharBuffer with a default size. */ public XMLString() { - builder_ = new StringBuilder(); + this.data_ = new char[INITIAL_CAPACITY]; + this.length_ = 0; + this.growBy_ = CAPACITY_GROWTH; + } + + /** + * Constructs an XMLCharBuffer with a desired size. + * + * @param startSize the size of the buffer to start with + */ + public XMLString(final int startSize) { + this(startSize, CAPACITY_GROWTH); + } + + /** + * Constructs an XMLCharBuffer with a desired size. + * + * @param startSize the size of the buffer to start with + * @param growBy by how much do we want to grow when needed + */ + public XMLString(final int startSize, final int growBy) { + this.data_ = new char[startSize]; + this.length_ = 0; + this.growBy_ = Math.max(1, growBy); + } + + /** + * Constructs an XMLCharBuffer from another buffer. Copies the data + * over. The new buffer capacity matches the length of the source. + * + * @param src the source buffer to copy from + */ + public XMLString(final XMLString src) { + this(src, 0); + } + + /** + * Constructs an XMLCharBuffer from another buffer. Copies the data + * over. You can add more capacity on top of the source length. If + * you specify 0, the capacity will match the src length. + * + * @param src the source buffer to copy from + * @param addCapacity how much capacity to add to origin length + */ + public XMLString(final XMLString src, final int addCapacity) { + this.data_ = Arrays.copyOf(src.data_, src.length_ + Math.max(0, addCapacity)); + this.length_ = src.length(); + this.growBy_ = Math.max(1, CAPACITY_GROWTH); + } + + /** + * Constructs an XMLCharBuffer from a string. To avoid + * too much allocation, we just take the string array as is and + * don't allocate extra space in the first place. + * + * @param src the string to copy from + */ + public XMLString(final String src) { + this.data_ = src.toCharArray(); + this.length_ = src.length(); + this.growBy_ = CAPACITY_GROWTH; } /** * Constructs an XMLString structure preset with the specified values. + * There will not be any room to grow, if you need that, construct an + * empty one and append. * - * @param ch The character array. + *

There are not range checks performed. Make sure your data is correct. + * + * @param ch The character array, must not be null * @param offset The offset into the character array. * @param length The length of characters from the offset. */ public XMLString(final char[] ch, final int offset, final int length) { - this(); - builder_.append(ch, offset, length); + // just as big as we need it + this(length); + append(ch, offset, length); } - public void append(final char c) { - builder_.append(c); + /** + * Check capacity and grow if needed automatically + * + * @param minimumCapacity how much space do we need at least + */ + private void ensureCapacity(final int minimumCapacity) { + if (minimumCapacity > this.data_.length) { + final int newSize = Math.max(minimumCapacity + this.growBy_, (this.data_.length << 1) + 2); + this.data_ = Arrays.copyOf(this.data_, newSize); + } } - public void append(final String str) { - builder_.append(str); + /** + * Returns the current max capacity without growth. Does not + * indicate how much capacity is already in use. Use {@link #length()} + * for that. + * + * @return the current capacity, not taken any usage into account + */ + public int capacity() { + return this.data_.length; } - public void append(final XMLString xmlStr) { - builder_.append(xmlStr.builder_); + /** + * Appends a single character to the buffer. + * + * @param c the character to append + * @return this instance + */ + public XMLString append(final char c) { + final int oldLength = this.length_++; + + // ensureCapacity is not inlined by the compiler, so put that here for the most + // called method of all appends. Duplicate code, but for a reason. + if (oldLength == this.data_.length) { + final int newSize = Math.max(oldLength + this.growBy_, (this.data_.length << 1) + 2); + this.data_ = Arrays.copyOf(this.data_, newSize); + } + + this.data_[oldLength] = c; + + return this; } - public void append(final char[] str, final int offset, final int len) { - builder_.append(str, offset, len); + /** + * Append a string to this buffer without copying the string first. + * + * @param src the string to append + * @return this instance + */ + public XMLString append(final String src) { + final int start = this.length_; + this.length_ = this.length_ + src.length(); + ensureCapacity(this.length_); + + // copy char by char because we don't get a copy for free + // from a string yet, this might change when immutable arrays + // make it into Java, but that will not be very soon + for (int i = 0; i < src.length(); i++) { + this.data_[start + i] = src.charAt(i); + } + + return this; + } + + /** + * Add another buffer to this one. + * + * @param src the buffer to append + * @return this instance + */ + public XMLString append(final XMLString src) { + final int start = this.length_; + this.length_ = this.length_ + src.length(); + ensureCapacity(this.length_); + + System.arraycopy(src.data_, 0, this.data_, start, src.length_); + + return this; } - public char charAt(final int index) { - return builder_.charAt(index); + /** + * Add data from a char array to this buffer with the ability to specify + * a range to copy from + * + * @param src the source char array + * @param offset the pos to start to copy from + * @param length the length of the data to copy + * + * @return this instance + */ + public XMLString append(final char[] src, final int offset, final int length) { + final int start = this.length_; + this.length_ = start + length; + + ensureCapacity(this.length_); + + System.arraycopy(src, offset, this.data_, start, length); + + return this; } + /** + * Returns the current length + * + * @return the length of the charbuffer data + */ public int length() { - return builder_.length(); + return length_; + } + + /** + * Tell us how much the capacity grows if needed + * + * @return the value that determines how much we grow the backing + * array in case we have to + */ + public int getGrowBy() { + return this.growBy_; + } + + /** + * Resets the buffer to 0 length. It won't resize it to avoid memory + * churn. + * + * @return this instance for fluid programming + */ + public XMLString clear() { + this.length_ = 0; + + return this; + } + + /** + * Resets the buffer to 0 length and sets the new data. This + * is a little cheaper than clear().append(c) depending on + * the where and the inlining decisions. + * + * @param c the char to set + * @return this instance for fluid programming + */ + public XMLString clearAndAppend(final char c) { + this.length_ = 0; + + if (this.data_.length > 0) { + this.data_[this.length_] = c; + this.length_++; + } + else { + // the rare case when we don't have any buffer at hand + append(c); + } + + return this; } - public boolean endsWith(final String string) { - final int l = string.length(); - if (builder_.length() < l) { + /** + * Does this buffer end with this string? If we check for + * the empty string, we get true. If we would support JDK 11, we could + * use Arrays.mismatch and be way faster. + * + * @param s the string to check the end against + * @return true of the end matches the buffer, false otherwise + */ + public boolean endsWith(final String s) { + // length does not match, cannot be the end + if (this.length_ < s.length()) { return false; } - return string.equals(builder_.substring(length() - l)); + // check the string by each char, avoids a copy of the string + final int start = this.length_ - s.length(); + + // change this to Arrays.mismatch when going JDK 11 or higher + for (int i = 0; i < s.length(); i++) { + if (this.data_[i + start] != s.charAt(i)) { + return false; + } + } + + return true; } - // Reduces the buffer to the content between start and end marker when - // only whitespaces are found before the startMarker as well as after the end - // marker - public void reduceToContent(final String startMarker, final String endMarker) { - int i = 0; - int startContent = -1; + /** + * Reduces the buffer to the content between start and end marker when + * only whitespaces are found before the startMarker as well as after the end marker. + * If both strings overlap due to identical characters such as "foo" and "oof" + * and the buffer is " foof ", we don't do anything. + * + *

If a marker is empty, it behaves like {@link java.lang.String#trim()} on that side. + * + * @param startMarker the start string to find, must not be null + * @param endMarker the end string to find, must not be null + * @return this instance + * + * @deprecated Use the new method {@link #trimToContent(String, String)} instead. + */ + public XMLString reduceToContent(final String startMarker, final String endMarker) { + return trimToContent(startMarker, endMarker); + } - final int startMarkerLength = startMarker.length(); - final int endMarkerLength = endMarker.length(); + /** + * Reduces the buffer to the content between start and end marker when + * only whitespaces are found before the startMarker as well as after the end marker. + * If both strings overlap due to identical characters such as "foo" and "oof" + * and the buffer is " foof ", we don't do anything. + * + *

If a marker is empty, it behaves like {@link java.lang.String#trim()} on that side. + * + * @param startMarker the start string to find, must not be null + * @param endMarker the end string to find, must not be null + * @return this instance + */ + public XMLString trimToContent(final String startMarker, final String endMarker) { + // if both are longer or same length than content, don't do anything + final int markerLength = startMarker.length() + endMarker.length(); + if (markerLength >= this.length_) { + return this; + } - while (i < builder_.length() - startMarkerLength - endMarkerLength) { - final char c = builder_.charAt(i); - if (Character.isWhitespace(c)) { - ++i; + // run over starting whitespaces + int sPos = 0; + for (; sPos < this.length_ - markerLength; sPos++) { + if (!Character.isWhitespace(this.data_[sPos])) { + break; } - else if (c == startMarker.charAt(0) && startMarker.equals(builder_.substring(i, i + startMarkerLength))) { - startContent = i + startMarkerLength; + } + + // run over ending whitespaces + int ePos = this.length_ - 1 ; + for (; ePos > sPos - markerLength; ePos--) { + if (!Character.isWhitespace(this.data_[ePos])) { break; } - else { - return; // start marker not found + } + + // if we have less content than marker length, give up + // this also helps when markers overlap such as + // and the string is " " + if (ePos - sPos + 1 < markerLength) { + return this; + } + + // check the start + for (int i = 0; i < startMarker.length(); i++) { + if (startMarker.charAt(i) != this.data_[i + sPos]) { + // no start match, stop and don't do anything + return this; } } - if (startContent == -1) { // start marker not found - return; + + // check the end, ePos is when the first good char + // occurred + final int endStartCheckPos = ePos - endMarker.length() + 1; + for (int i = 0; i < endMarker.length(); i++) { + if (endMarker.charAt(i) != this.data_[endStartCheckPos + i]) { + // no start match, stop and don't do anything + return this; + } } - i = builder_.length() - 1; - while (i > startContent + endMarkerLength) { - final char c = builder_.charAt(i); - if (Character.isWhitespace(c)) { - --i; + // shift left and cut length + final int newLength = ePos - sPos + 1 - markerLength; + System.arraycopy(this.data_, + sPos + startMarker.length(), + this.data_, + 0, newLength); + this.length_ = newLength; + + return this; + } + + /** + * Check if we have only whitespaces + * + * @return true if we have only whitespace, false otherwise + */ + public boolean isWhitespace() { + for (int i = 0; i < this.length_; i++) { + if (!Character.isWhitespace(this.data_[i])) { + return false; } - else if (c == endMarker.charAt(endMarkerLength - 1) - && endMarker.equals(builder_.substring(i - endMarkerLength + 1, i + 1))) { + } + return true; + } - builder_.delete(i - endMarkerLength + 1, builder_.length()); - if (startContent > 0) { - builder_.delete(0, startContent); - } - return; + /** + * Trims the string similar to {@link java.lang.String#trim()} + * + * @return a string with removed whitespace at the beginning and the end + */ + public XMLString trim() { + // clean the end first, because it is cheap + return trimTrailing().trimLeading(); + } + + /** + * Removes all whitespace before the first non-whitespace char. + * If all are whitespaces, we get an empty buffer + * + * @return this instance + */ + public XMLString trimLeading() { + // run over starting whitespace + int sPos = 0; + for (; sPos < this.length_; sPos++) { + if (!Character.isWhitespace(this.data_[sPos])) { + break; } - else { - return; // end marker not found + } + + if (sPos == 0) { + // nothing to do + return this; + } + else if (sPos == this.length_) { + // only whitespace + this.length_ = 0; + return this; + } + + // shift left + final int newLength = this.length_ - sPos; + System.arraycopy(this.data_, + sPos, + this.data_, + 0, newLength); + this.length_ = newLength; + + return this; + } + + + /** + * Removes all whitespace at the end. + * If all are whitespace, we get an empty buffer + * + * @return this instance + * + * @deprecated Use {@link #trimTrailing()} instead. + */ + public XMLString trimWhitespaceAtEnd() { + return trimTrailing(); + } + + /** + * Removes all whitespace at the end. + * If all are whitespace, we get an empty buffer + * + * @return this instance + */ + public XMLString trimTrailing() { + // run over ending whitespaces + int ePos = this.length_ - 1; + for (; ePos >= 0; ePos--) { + if (!Character.isWhitespace(this.data_[ePos])) { + break; } } + + this.length_ = ePos + 1; + + return this; + } + + /** + * Shortens the buffer by that many positions. If the count is + * larger than the length, we get just an empty buffer. If you pass in negative + * values, we are failing, likely often silently. It is all about performance and + * not a general all-purpose API. + * + * @param count a positive number, no runtime checks, if count is larger than + * length, we get length = 0 + * @return this instance + */ + public XMLString shortenBy(final int count) { + final int newLength = this.length_ - count; + this.length_ = newLength < 0 ? 0 : newLength; + + return this; } - @Deprecated + /** + * Get the characters as char array, this will be a copy! + * + * @return a copy of the underlying char darta + */ public char[] getChars() { - final char[] chars = new char[builder_.length()]; - builder_.getChars(0, builder_.length(), chars, 0); - return chars; + return Arrays.copyOf(this.data_, this.length_); } + /** + * Returns a string representation of this buffer. This will be a copy + * operation. If the buffer is emoty, we get a constant empty String back + * to avoid any overhead. + * + * @return a string of the content of this buffer + */ @Override - public XMLString clone() { - final XMLString clone = new XMLString(); - clone.builder_.append(builder_); - return clone; + public String toString() { + if (this.length_ > 0) { + return new String(this.data_, 0, this.length_); + } + else { + return ""; + } } /** - * Resets. - * */ - public XMLString clear() { - builder_.setLength(0); - return this; + * Returns the char a the given position. Will complain if + * we try to read outside the range. We do a range check here + * because we might not notice when we are within the buffer + * but outside the current length. + * + * @param index the position to read from + * @return the char at the position + * @throws IndexOutOfBoundsException + * in case one tries to read outside of valid buffer range + */ + @Override + public char charAt(final int index) + { + if (index > this.length_ - 1 || index < 0) { + throw new IndexOutOfBoundsException( + "Tried to read outside of the valid buffer data"); + } + + return this.data_[index]; } - public boolean isWhitespace() { - for (int i = 0; i < builder_.length(); i++) { - if (!Character.isWhitespace(builder_.charAt(i))) { - return false; - } + /** + * Returns the char at the given position. No checks are + * performed. It is up to the caller to make sure we + * read correctly. Reading outside of the array will + * cause an {@link IndexOutOfBoundsException} but using an + * incorrect position in the array (such as beyond length) + * might stay unnoticed! This is a performance method, + * use at your own risk. + * + * @param index the position to read from + * @return the char at the position + */ + public char unsafeCharAt(final int index) { + return this.data_[index]; + } + + /** + * Returns a content copy of this buffer + * + * @return a copy of this buffer, the capacity might differ + */ + @Override + public XMLString clone() { + return new XMLString(this); + } + + /** + * Returns a CharSequence that is a subsequence of this sequence. + * The subsequence starts with the char value at the specified index and + * ends with the char value at index end - 1. The length + * (in chars) of the + * returned sequence is end - start, so if start == end + * then an empty sequence is returned. + * + * @param start the start index, inclusive + * @param end the end index, exclusive + * + * @return the specified subsequence + * + * @throws IndexOutOfBoundsException + * if start or end are negative, + * if end is greater than length(), + * or if start is greater than end + * + * @return a charsequence of this buffer + */ + @Override + public CharSequence subSequence(final int start, final int end) { + if (start < 0) { + throw new StringIndexOutOfBoundsException(start); } - return true; + if (end > this.length_) { + throw new StringIndexOutOfBoundsException(end); + } + + final int l = end - start; + if (l < 0) { + throw new StringIndexOutOfBoundsException(l); + } + + return new String(this.data_, start, l); } - public void trimWhitespaceAtEnd() { - int i = builder_.length() - 1; + /** + * Two buffers are identical when the length and + * the content of the backing array (only for the + * data in view) are identical. + * + * @param o the object to compare with + * @return true if length and array content match, false otherwise + */ + @Override + public boolean equals(final Object o) { + if (o instanceof CharSequence) { + final CharSequence ob = (CharSequence) o; + + if (ob.length() != this.length_ ) { + return false; + } - while (i > -1) { - if (!Character.isWhitespace(builder_.charAt(i))) { - builder_.delete(i + 1, builder_.length()); - return; + // ok, in JDK 11 or up, we could use an + // Arrays.mismatch, but we cannot do that + // due to JDK 8 compatibility + for (int i = 0; i < this.length_; i++) { + if (ob.charAt(i) != this.data_[i]) { + return false; + } } - i--; + + // length and content match, be happy + return true; } - clear(); - } - public void delete(final int start, final int end) { - builder_.delete(start, end); + return false; } - public void appendTo(final StringBuilder stringBuilder) { - stringBuilder.append(builder_); + /** + * We don't cache the hashcode because we mutate often. Don't use this in + * hashmaps as key. But you can use that to look up in a hashmap against + * a string using the CharSequence interface. + * + * @return the hashcode, similar to what a normal string would deliver + */ + @Override + public int hashCode() { + int h = 0; + + for (int i = 0; i < this.length_; i++) { + h = ((h << 5) - h) + this.data_[i]; + } + + return h; } - @Override - public String toString() { - return builder_.toString(); + /** + * Append a character to an XMLCharBuffer. The character is an int value, and + * can either be a single UTF-16 character or a supplementary character + * represented by two UTF-16 code points. + * + * @param value The character value. + * @return this instance for fluid programming + * + * @throws IllegalArgumentException if the specified + * {@code codePoint} is not a valid Unicode code point. + */ + public XMLString appendCodePoint(final int value) { + if (value <= Character.MAX_VALUE) { + return this.append((char) value); + } + else { + try { + final char[] chars = Character.toChars(value); + return this.append(chars, 0, chars.length); + } + catch (final IllegalArgumentException e) { + // when value is not valid as UTF-16 + this.append(REPLACEMENT_CHARACTER); + throw e; + } + } } + // this stuff is here for performance reasons to avoid a copy + // it has been taken from the old XMLString and because there was no JavaDoc + // we still don't have any, legacy code public void characters(final ContentHandler contentHandler) throws SAXException { - contentHandler.characters(getChars(), 0, length()); + contentHandler.characters(this.data_, 0, length_); } public void ignorableWhitespace(final ContentHandler contentHandler) throws SAXException { - contentHandler.ignorableWhitespace(getChars(), 0, length()); + contentHandler.ignorableWhitespace(this.data_, 0, length_); } public void comment(final LexicalHandler lexicalHandler) throws SAXException { - lexicalHandler.comment(getChars(), 0, length()); + lexicalHandler.comment(this.data_, 0, length_); } } diff --git a/src/test/java/org/htmlunit/cyberneko/Writer.java b/src/test/java/org/htmlunit/cyberneko/Writer.java index a6317640..e411263b 100644 --- a/src/test/java/org/htmlunit/cyberneko/Writer.java +++ b/src/test/java/org/htmlunit/cyberneko/Writer.java @@ -25,8 +25,8 @@ import org.htmlunit.cyberneko.xerces.xni.NamespaceContext; import org.htmlunit.cyberneko.xerces.xni.QName; import org.htmlunit.cyberneko.xerces.xni.XMLAttributes; -import org.htmlunit.cyberneko.xerces.xni.XMLLocator; import org.htmlunit.cyberneko.xerces.xni.XMLString; +import org.htmlunit.cyberneko.xerces.xni.XMLLocator; import org.htmlunit.cyberneko.xerces.xni.XNIException; /** diff --git a/src/test/java/org/htmlunit/cyberneko/util/FastHashMapTest.java b/src/test/java/org/htmlunit/cyberneko/util/FastHashMapTest.java new file mode 100644 index 00000000..ba427173 --- /dev/null +++ b/src/test/java/org/htmlunit/cyberneko/util/FastHashMapTest.java @@ -0,0 +1,357 @@ +/* + * Copyright (c) 2005-2023 Xceptance Software Technologies GmbH + * + * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.htmlunit.cyberneko.util; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +import org.junit.jupiter.api.Test; + +public class FastHashMapTest +{ + @Test + public void happyPath() + { + final FastHashMap f = new FastHashMap<>(3, 0.5f); + f.put("a", 1); + f.put("b", 2); + f.put("c", 3); + f.put("d", 4); + f.put("e", 5); + + assertEquals(5, f.size()); + assertEquals(Integer.valueOf(1), f.get("a")); + assertEquals(Integer.valueOf(4), f.get("d")); + assertEquals(Integer.valueOf(3), f.get("c")); + assertEquals(Integer.valueOf(5), f.get("e")); + assertEquals(Integer.valueOf(2), f.get("b")); + + f.put("b", 20); + assertEquals(5, f.size()); + assertEquals(Integer.valueOf(1), f.get("a")); + assertEquals(Integer.valueOf(4), f.get("d")); + assertEquals(Integer.valueOf(20), f.get("b")); + assertEquals(Integer.valueOf(3), f.get("c")); + assertEquals(Integer.valueOf(5), f.get("e")); + } + + @Test + public void keys() + { + final FastHashMap f = new FastHashMap<>(3, 0.5f); + f.put("aa", 1); + f.put("bb", 2); + f.put("cc", 3); + f.put("dd", 4); + f.put("ee", 5); + + { + final List k = f.keys(); + assertEquals(5, k.size()); + assertTrue(k.contains("aa")); + assertTrue(k.contains("bb")); + assertTrue(k.contains("cc")); + assertTrue(k.contains("dd")); + assertTrue(k.contains("ee")); + } + + assertEquals(Integer.valueOf(3), f.remove("cc")); + f.remove("c"); + { + final List k = f.keys(); + assertEquals(4, k.size()); + assertTrue(k.contains("aa")); + assertTrue(k.contains("bb")); + assertTrue(k.contains("dd")); + assertTrue(k.contains("ee")); + } + + f.put("zz", 10); + f.remove("c"); + { + final List k = f.keys(); + assertEquals(5, k.size()); + assertTrue(k.contains("aa")); + assertTrue(k.contains("bb")); + assertTrue(k.contains("dd")); + assertTrue(k.contains("ee")); + assertTrue(k.contains("zz")); + } + + // ask for something unknown + assertNull(f.get("unknown")); + } + + @Test + public void values() + { + final FastHashMap f = new FastHashMap<>(3, 0.5f); + f.put("aa", 1); + f.put("bb", 2); + f.put("cc", 3); + f.put("dd", 4); + f.put("ee", 5); + + { + final List values = f.values(); + assertEquals(5, values.size()); + assertTrue(values.contains(1)); + assertTrue(values.contains(2)); + assertTrue(values.contains(3)); + assertTrue(values.contains(4)); + assertTrue(values.contains(5)); + } + + assertEquals(Integer.valueOf(3), f.remove("cc")); + f.remove("c"); + { + final List values = f.values(); + assertEquals(4, values.size()); + assertTrue(values.contains(1)); + assertTrue(values.contains(2)); + assertTrue(values.contains(4)); + assertTrue(values.contains(5)); + } + } + + @Test + public void remove() + { + final FastHashMap f = new FastHashMap<>(3, 0.5f); + f.put("a", 1); + f.put("b", 2); + f.put("c", 3); + f.put("d", 4); + f.put("e", 5); + + f.remove("b"); + f.remove("d"); + + assertEquals(3, f.size()); + assertEquals(Integer.valueOf(1), f.get("a")); + assertEquals(Integer.valueOf(3), f.get("c")); + assertEquals(Integer.valueOf(5), f.get("e")); + assertNull(f.get("d")); + assertNull(f.get("b")); + + // remove again + assertNull(f.remove("b")); + assertNull(f.remove("d")); + + f.put("d", 6); + f.put("b", 7); + assertEquals(Integer.valueOf(7), f.get("b")); + assertEquals(Integer.valueOf(6), f.get("d")); + } + + @Test + public void clear() + { + final FastHashMap m = new FastHashMap(); + m.put("a", 1); + assertEquals(1, m.size()); + + m.clear(); + assertEquals(0, m.size()); + assertEquals(0, m.keys().size()); + assertEquals(0, m.values().size()); + assertNull(m.get("a")); + + m.put("b", 2); + assertEquals(1, m.size()); + m.put("a", 3); + assertEquals(2, m.size()); + + m.clear(); + assertEquals(0, m.size()); + assertEquals(0, m.keys().size()); + assertEquals(0, m.values().size()); + + m.put("a", 1); + m.put("b", 2); + m.put("c", 3); + m.put("c", 3); + assertEquals(3, m.size()); + assertEquals(3, m.keys().size()); + assertEquals(3, m.values().size()); + + assertEquals(Integer.valueOf(1), m.get("a")); + assertEquals(Integer.valueOf(2), m.get("b")); + assertEquals(Integer.valueOf(3), m.get("c")); + } + + @Test + public void collision() + { + FastHashMap, String> f = new FastHashMap, String>(13, 0.5f); + IntStream.range(0, 15).forEach(i -> { + f.put(new MockKey(12, "k" + i), "v" + i); + }); + + assertEquals(15, f.size()); + + IntStream.range(0, 15).forEach(i -> { + assertEquals("v" + i, f.get(new MockKey(12, "k" + i))); + }); + + // round 2 + IntStream.range(0, 20).forEach(i -> { + f.put(new MockKey(12, "k" + i), "v" + i); + }); + + assertEquals(20, f.size()); + + IntStream.range(0, 20).forEach(i -> { + assertEquals("v" + i, f.get(new MockKey(12, "k" + i))); + }); + + // round 3 + IntStream.range(0, 10).forEach(i -> { + assertEquals("v" + i, f.remove(new MockKey(12, "k" + i))); + }); + IntStream.range(10, 20).forEach(i -> { + assertEquals("v" + i, f.get(new MockKey(12, "k" + i))); + }); + } + + /** + * Overflow initial size with collision keys. Some hash code for all keys. + */ + @Test + public void overflow() + { + final FastHashMap, Integer> m = new FastHashMap<>(5, 0.5f); + final Map, Integer> data = IntStream.range(0, 152) + .mapToObj(Integer::valueOf) + .collect( + Collectors.toMap(i -> new MockKey(1, "k" + i), + i -> i)); + + // add all + data.forEach((k, v) -> m.put(k, v)); + + // verify + data.forEach((k, v) -> assertEquals(v, m.get(k))); + assertEquals(152, m.size()); + assertEquals(152, m.keys().size()); + assertEquals(152, m.values().size()); + } + + /** + * Try to hit all slots with bad hashcodes + */ + @Test + public void hitEachSlot() + { + final FastHashMap, Integer> m = new FastHashMap<>(15, 0.9f); + + final Map, Integer> data = IntStream.range(0, 150) + .mapToObj(Integer::valueOf) + .collect( + Collectors.toMap(i -> new MockKey(i, "k1" + i), + i -> i)); + + // add the same hash codes again but other keys + data.putAll(IntStream.range(0, 150) + .mapToObj(Integer::valueOf) + .collect( + Collectors.toMap(i -> new MockKey(i, "k2" + i), + i -> i))); + // add all + data.forEach((k, v) -> m.put(k, v)); + // verify + data.forEach((k, v) -> assertEquals(v, m.get(k))); + assertEquals(300, m.size()); + assertEquals(300, m.keys().size()); + assertEquals(300, m.values().size()); + + // remove all + data.forEach((k, v) -> m.remove(k)); + // verify + assertEquals(0, m.size()); + assertEquals(0, m.keys().size()); + assertEquals(0, m.values().size()); + + // add all + final List> keys = data.keySet().stream().collect(Collectors.toList()); + keys.stream().sorted().forEach(k -> m.put(k, data.get(k))); + // put in different order + Collections.shuffle(keys); + keys.forEach(k -> m.put(k, data.get(k) + 42)); + + // verify + data.forEach((k, v) -> assertEquals(Integer.valueOf(v + 42), m.get(k))); + assertEquals(300, m.size()); + assertEquals(300, m.keys().size()); + assertEquals(300, m.values().size()); + + // remove in different order + Collections.shuffle(keys); + keys.forEach(k -> m.remove(k)); + + // verify + data.forEach((k, v) -> assertNull(m.get(k))); + assertEquals(0, m.size()); + assertEquals(0, m.keys().size()); + assertEquals(0, m.values().size()); + } + + static class MockKey> implements Comparable> + { + public final T key; + public final int hash; + + public MockKey(int hash, T key) + { + this.hash = hash; + this.key = key; + } + + @Override + public int hashCode() + { + return hash; + } + + @Override + public boolean equals(Object o) + { + MockKey t = (MockKey) o; + return hash == o.hashCode() && key.equals(t.key); + } + + @Override + public String toString() + { + return "MockKey [key=" + key + ", hash=" + hash + "]"; + } + + @Override + public int compareTo(MockKey o) + { + return o.key.compareTo(this.key); + } + + } +} + diff --git a/src/test/java/org/htmlunit/cyberneko/util/MiniStackTest.java b/src/test/java/org/htmlunit/cyberneko/util/MiniStackTest.java new file mode 100644 index 00000000..657a606c --- /dev/null +++ b/src/test/java/org/htmlunit/cyberneko/util/MiniStackTest.java @@ -0,0 +1,195 @@ +/* + * Copyright 2017-2023 Ronald Brill + * Copyright 2023 René Schwietzke + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.htmlunit.cyberneko.util; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; + +public class MiniStackTest { + @Test + public void ctr() { + final MiniStack m = new MiniStack<>(); + assertEquals(0, m.size()); + assertNull(m.pop()); + } + + @Test + public void pop() { + // empty + { + final MiniStack m = new MiniStack<>(); + assertNull(m.pop()); + } + // full + { + final MiniStack m = new MiniStack<>(); + m.push("foo"); + assertEquals("foo", m.pop()); + assertNull(m.pop()); + assertEquals(0, m.size()); + } + // two elements + { + final MiniStack m = new MiniStack<>(); + m.push("1"); + m.push("2"); + assertEquals("2", m.pop()); + assertEquals(1, m.size()); + + assertEquals("1", m.pop()); + assertEquals(0, m.size()); + assertNull(m.pop()); + } + } + + @Test + public void push() { + final String a = new String("a"); + + // empty + { + final MiniStack m = new MiniStack<>(); + m.push("a"); + assertEquals(1, m.size()); + } + // two + { + final MiniStack m = new MiniStack<>(); + m.push("foo"); + m.push(a); + m.push(a); + assertEquals(3, m.size()); + } + // grow + { + final MiniStack m = new MiniStack<>(); + for (int i = 0; i < 20; i++) { + m.push(i); + assertEquals(i + 1, m.size()); + } + assertEquals(20, m.size()); + } + } + + @Test + public void peek() { + // empty + { + final MiniStack m = new MiniStack<>(); + assertNull(m.peek()); + } + // more + { + final MiniStack m = new MiniStack<>(); + m.push("foo"); + assertEquals("foo", m.peek()); + m.push("2"); + assertEquals("2", m.peek()); + m.push("1"); + assertEquals("1", m.peek()); + } + } + + @Test + public void isEmpty() { + // empty + { + final MiniStack m = new MiniStack<>(); + assertTrue(m.isEmpty()); + } + // more + { + final MiniStack m = new MiniStack<>(); + m.push("foo"); + assertFalse(m.isEmpty()); + } + } + + + @Test + public void size() { + // empty + { + final MiniStack m = new MiniStack<>(); + assertEquals(0, m.size()); + } + // one + { + final MiniStack m = new MiniStack<>(); + m.push("foo"); + assertEquals(1, m.size()); + } + // more + { + final MiniStack m = new MiniStack<>(); + m.push("foo"); + m.push("foo"); + m.push("foo"); + m.push("foo"); + m.push("foo"); + assertEquals(5, m.size()); + } + } + + @Test + public void clear() { + // empty + { + final MiniStack m = new MiniStack<>(); + m.clear(); + assertEquals(0, m.size()); + } + // one + { + final MiniStack m = new MiniStack<>(); + m.push("foo"); + assertEquals(1, m.size()); + m.clear(); + assertEquals(0, m.size()); + assertTrue(m.isEmpty()); + assertNull(m.peek()); + assertNull(m.pop()); + } + + // we might have to open the object for a check of the backing array + } + + @Test + public void reset() { + // empty + { + final MiniStack m = new MiniStack<>(); + m.clear(); + assertEquals(0, m.size()); + } + // one + { + final MiniStack m = new MiniStack<>(); + m.push("foo"); + assertEquals(1, m.size()); + m.clear(); + assertEquals(0, m.size()); + assertTrue(m.isEmpty()); + assertNull(m.peek()); + assertNull(m.pop()); + } + } + +} diff --git a/src/test/java/org/htmlunit/cyberneko/util/SimpleArrayListTest.java b/src/test/java/org/htmlunit/cyberneko/util/SimpleArrayListTest.java new file mode 100644 index 00000000..bfb15018 --- /dev/null +++ b/src/test/java/org/htmlunit/cyberneko/util/SimpleArrayListTest.java @@ -0,0 +1,411 @@ +/* + * Copyright (c) 2005-2023 Xceptance Software Technologies GmbH + * + * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.htmlunit.cyberneko.util; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; + +import java.util.List; + +import org.junit.jupiter.api.Test; + +public class SimpleArrayListTest +{ + @Test + public void create() + { + { + final SimpleArrayList l = new SimpleArrayList<>(); + assertEquals(0, l.size()); + } + } + + @Test + public void createSized() + { + { + final SimpleArrayList l = new SimpleArrayList<>(5); + assertEquals(0, l.size()); + } + // empty start size is permitted + { + final SimpleArrayList l = new SimpleArrayList<>(0); + assertEquals(0, l.size()); + } + } + + @Test + public void fillZeroSize() + { + final SimpleArrayList l = new SimpleArrayList<>(0); + l.add("a"); + l.add("b"); + l.add("c"); + assertEquals(3, l.size()); + assertEquals("a", l.get(0)); + assertEquals("b", l.get(1)); + assertEquals("c", l.get(2)); + } + + @Test + public void fill() + { + final SimpleArrayList l = new SimpleArrayList<>(5); + l.add("a"); + l.add("b"); + l.add("c"); + l.add("d"); + l.add("e"); + assertEquals(5, l.size()); + + assertEquals("a", l.get(0)); + assertEquals("b", l.get(1)); + assertEquals("c", l.get(2)); + assertEquals("d", l.get(3)); + assertEquals("e", l.get(4)); + + // no growth + try + { + l.get(5); + fail(); + } + catch(IndexOutOfBoundsException e) + { + // yeah... expected + } + } + + @Test + public void fillAndGrow() + { + final SimpleArrayList l = new SimpleArrayList<>(2); + l.add("a"); + l.add("b"); + assertEquals(2, l.size()); + l.add("d"); // became 2 << 1 + 2 + l.add("e"); + assertEquals("d", l.get(2)); + assertEquals("e", l.get(3)); + assertEquals(4, l.size()); + + // limited growth + try + { + l.get(6); + fail("Position exists"); + } + catch(IndexOutOfBoundsException e) + { + // yeah... expected + } + } + + @Test + public void partitionHappy() + { + final SimpleArrayList list = new SimpleArrayList<>(1); + list.add(1); + list.add(2); + list.add(3); + list.add(4); + list.add(5); + list.add(6); + + List> result = list.partition(3); + assertEquals(3, result.size()); + + assertEquals(2, result.get(0).size()); + assertEquals(Integer.valueOf(1), result.get(0).get(0)); + assertEquals(Integer.valueOf(2), result.get(0).get(1)); + + assertEquals(2, result.get(1).size()); + assertEquals(Integer.valueOf(3), result.get(1).get(0)); + assertEquals(Integer.valueOf(4), result.get(1).get(1)); + + assertEquals(2, result.get(2).size()); + assertEquals(Integer.valueOf(5), result.get(2).get(0)); + assertEquals(Integer.valueOf(6), result.get(2).get(1)); + } + + @Test + public void partitionSize1() + { + final SimpleArrayList list = new SimpleArrayList<>(1); + list.add(1); + list.add(2); + list.add(3); + list.add(4); + list.add(5); + list.add(6); + + List> result = list.partition(6); + assertEquals(6, result.size()); + + assertEquals(1, result.get(0).size()); + assertEquals(Integer.valueOf(1), result.get(0).get(0)); + + assertEquals(1, result.get(1).size()); + assertEquals(Integer.valueOf(2), result.get(1).get(0)); + + assertEquals(1, result.get(2).size()); + assertEquals(Integer.valueOf(3), result.get(2).get(0)); + + assertEquals(1, result.get(3).size()); + assertEquals(Integer.valueOf(4), result.get(3).get(0)); + + assertEquals(1, result.get(4).size()); + assertEquals(Integer.valueOf(5), result.get(4).get(0)); + + assertEquals(1, result.get(5).size()); + assertEquals(Integer.valueOf(6), result.get(5).get(0)); + } + + @Test + public void partitionEndBucketNotEven() + { + + final SimpleArrayList list = new SimpleArrayList<>(1); + list.add(1); + list.add(2); + list.add(3); + list.add(4); + list.add(5); + + List> result = list.partition(3); + assertEquals(3, result.size()); + + assertEquals(2, result.get(0).size()); + assertEquals(Integer.valueOf(1), result.get(0).get(0)); + assertEquals(Integer.valueOf(2), result.get(0).get(1)); + + assertEquals(2, result.get(1).size()); + assertEquals(Integer.valueOf(3), result.get(1).get(0)); + assertEquals(Integer.valueOf(4), result.get(1).get(1)); + + assertEquals(1, result.get(2).size()); + assertEquals(Integer.valueOf(5), result.get(2).get(0)); + } + + @Test + public void partitionCountTooLarge() + { + final SimpleArrayList list = new SimpleArrayList<>(1); + list.add(1); + list.add(2); + list.add(3); + + List> result = list.partition(4); + assertEquals(3, result.size()); + + assertEquals(1, result.get(0).size()); + assertEquals(Integer.valueOf(1), result.get(0).get(0)); + + assertEquals(1, result.get(1).size()); + assertEquals(Integer.valueOf(2), result.get(1).get(0)); + + assertEquals(1, result.get(2).size()); + assertEquals(Integer.valueOf(3), result.get(2).get(0)); + + } + + @Test + public void clear() + { + final SimpleArrayList l = new SimpleArrayList<>(5); + l.add("a"); + l.add("b"); + l.add("c"); + l.add("d"); + l.add("e"); + assertEquals(5, l.size()); + + assertEquals("a", l.get(0)); + assertEquals("b", l.get(1)); + assertEquals("c", l.get(2)); + assertEquals("d", l.get(3)); + assertEquals("e", l.get(4)); + + l.clear(); + + assertEquals(0, l.size()); + + // we are not checking ranges or such... hence this now works!!! + assertEquals("a", l.get(0)); + + l.clear(); + assertEquals(0, l.size()); + l.add("e1"); + assertEquals(1, l.size()); + assertEquals("e1", l.get(0)); + + } + + @Test + public void toArray() + { + final SimpleArrayList l = new SimpleArrayList<>(4); + l.add("a"); + l.add("b"); + l.add("c"); + l.add("d"); + l.add("e"); + assertEquals(5, l.size()); + + // we will get + { + final Object[] a = l.toArray(); + assertEquals(5, a.length); + assertEquals("a", a[0]); + assertEquals("b", a[1]); + assertEquals("c", a[2]); + assertEquals("d", a[3]); + assertEquals("e", a[4]); + } + // we will get + { + final String[] a = l.toArray(new String[0]); + assertEquals(5, a.length); + assertEquals("a", a[0]); + assertEquals("b", a[1]); + assertEquals("c", a[2]); + assertEquals("d", a[3]); + assertEquals("e", a[4]); + } + } + + @Test + public void remove() + { + // remove first + { + final SimpleArrayList l = new SimpleArrayList<>(10); + l.add("a"); + l.add("b"); + l.add("c"); + assertEquals(3, l.size()); + l.remove(0); + assertEquals(2, l.size()); + assertEquals("b", l.get(0)); + assertEquals("c", l.get(1)); + } + // remove middle + { + final SimpleArrayList l = new SimpleArrayList<>(10); + l.add("a"); + l.add("b"); + l.add("c"); + assertEquals(3, l.size()); + l.remove(1); + assertEquals(2, l.size()); + assertEquals("a", l.get(0)); + assertEquals("c", l.get(1)); + } + // remove end + { + final SimpleArrayList l = new SimpleArrayList<>(10); + l.add("a"); + l.add("b"); + l.add("c"); + assertEquals(3, l.size()); + l.remove(2); + assertEquals(2, l.size()); + assertEquals("a", l.get(0)); + assertEquals("b", l.get(1)); + } + // remove last element + { + final SimpleArrayList l = new SimpleArrayList<>(10); + l.add("a"); + l.add("b"); + l.add("c"); + assertEquals(3, l.size()); + l.remove(0); + l.remove(0); + l.remove(0); + assertEquals(0, l.size()); + } + } + + @Test + public void addAt() + { + // add to empty and no size + { + final SimpleArrayList l = new SimpleArrayList<>(0); + l.add(0, "a"); + assertEquals(1, l.size()); + assertEquals("a", l.get(0)); + } + // add to empty + { + final SimpleArrayList l = new SimpleArrayList<>(); + l.add(0, "a"); + assertEquals(1, l.size()); + assertEquals("a", l.get(0)); + } + // add to end + { + final SimpleArrayList l = new SimpleArrayList<>(); + l.add("a"); + l.add(1, "b"); + assertEquals(2, l.size()); + assertEquals("a", l.get(0)); + assertEquals("b", l.get(1)); + l.add(2, "c"); + assertEquals(3, l.size()); + assertEquals("a", l.get(0)); + assertEquals("b", l.get(1)); + assertEquals("c", l.get(2)); + } + // add to start + { + final SimpleArrayList l = new SimpleArrayList<>(); + l.add("a"); + l.add(0, "b"); + assertEquals(2, l.size()); + assertEquals("b", l.get(0)); + assertEquals("a", l.get(1)); + l.add(0, "c"); + assertEquals(3, l.size()); + assertEquals("a", l.get(2)); + assertEquals("b", l.get(1)); + assertEquals("c", l.get(0)); + } + // add middle + { + final SimpleArrayList l = new SimpleArrayList<>(); + l.add("a"); + l.add("c"); + l.add(1, "b"); + assertEquals(3, l.size()); + assertEquals("a", l.get(0)); + assertEquals("b", l.get(1)); + assertEquals("c", l.get(2)); + } + // add and requires growth + { + final SimpleArrayList l = new SimpleArrayList<>(2); + l.add("a"); + l.add("c"); + l.add(1, "b"); + assertEquals(3, l.size()); + assertEquals("a", l.get(0)); + assertEquals("b", l.get(1)); + assertEquals("c", l.get(2)); + } + } +} diff --git a/src/test/java/org/htmlunit/cyberneko/xerces/xni/XMLStringLegacyTest.java b/src/test/java/org/htmlunit/cyberneko/xerces/xni/XMLStringLegacyTest.java new file mode 100644 index 00000000..15245961 --- /dev/null +++ b/src/test/java/org/htmlunit/cyberneko/xerces/xni/XMLStringLegacyTest.java @@ -0,0 +1,91 @@ +/* + * Copyright 2017-2023 Ronald Brill + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.htmlunit.cyberneko.xerces.xni; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +/** + * Unit tests for {@link XMLString}. These tests are here to ensure + * compatibility with the old XMLString implementation before version + * 3.10.0 + * + * @author Ronald Brill + */ +public class XMLStringLegacyTest { + + @Test + public void reduceToContent() { + final XMLString xmlString = new XMLString(); + + xmlString.clear().append(""); + xmlString.reduceToContent(""); + assertEquals(" hello", xmlString.toString()); + + xmlString.clear().append(" \n \n"); + xmlString.reduceToContent(""); + assertEquals(" hello", xmlString.toString()); + + xmlString.clear().append("hello"); + xmlString.reduceToContent(""); + assertEquals("hello", xmlString.toString()); + + xmlString.clear().append(""); + assertEquals(""); + xmlString.reduceToContent(""); + assertEquals("", xmlString.toString()); + } + + @Test + public void trimWhitespaceAtEnd() { + final XMLString xmlString = new XMLString(); + + xmlString.clear().append(""); + xmlString.trimWhitespaceAtEnd(); + assertEquals("", xmlString.toString()); + + xmlString.clear().append("a"); + xmlString.trimWhitespaceAtEnd(); + assertEquals("a", xmlString.toString()); + + xmlString.clear().append(" a"); + xmlString.trimWhitespaceAtEnd(); + assertEquals(" a", xmlString.toString()); + + xmlString.clear().append("a b"); + xmlString.trimWhitespaceAtEnd(); + assertEquals("a b", xmlString.toString()); + + xmlString.clear().append("a "); + xmlString.trimWhitespaceAtEnd(); + assertEquals("a", xmlString.toString()); + + xmlString.clear().append("a "); + xmlString.trimWhitespaceAtEnd(); + assertEquals("a", xmlString.toString()); + + xmlString.clear().append(" "); + xmlString.trimWhitespaceAtEnd(); + assertEquals("", xmlString.toString()); + + xmlString.clear().append(" "); + xmlString.trimWhitespaceAtEnd(); + assertEquals("", xmlString.toString()); + } +} diff --git a/src/test/java/org/htmlunit/cyberneko/xerces/xni/XMLStringTest.java b/src/test/java/org/htmlunit/cyberneko/xerces/xni/XMLStringTest.java index 6354a5fb..2b3c991d 100644 --- a/src/test/java/org/htmlunit/cyberneko/xerces/xni/XMLStringTest.java +++ b/src/test/java/org/htmlunit/cyberneko/xerces/xni/XMLStringTest.java @@ -1,5 +1,6 @@ /* * Copyright 2017-2023 Ronald Brill + * Copyright 2023 René Schwietzke * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,75 +15,1155 @@ */ package org.htmlunit.cyberneko.xerces.xni; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.Random; import org.junit.jupiter.api.Test; /** - * Unit tests for {@link XMLString}. + * Unit tests for the new {@link XMLString} which is technically a + * CharBuffer. + * * @author Ronald Brill + * @author René Schwietzke */ public class XMLStringTest { + public static final String CHAR5 = "ABCDE"; + public static final String CHAR10 = "ABCDEFGHIJ"; + public static final String CHAR15 = "ABCDEFGHIJKLMNO"; + public static final String CHAR20 = "ABCDEFGHIJKLMNOPQRST"; + public static final String CHAR25 = "ABCDEFGHIJKLMNOPQRSTUVWXY"; + + @Test + public void ctrEmpty() { + final XMLString b = new XMLString(); + assertEquals(0, b.length()); + assertEquals(XMLString.INITIAL_CAPACITY, b.capacity()); + assertEquals("", b.toString()); + } + + @Test + public void ctr_int() { + // standard + { + final XMLString b = new XMLString(42); + assertEquals(0, b.length()); + assertEquals(42, b.capacity()); + assertEquals(XMLString.CAPACITY_GROWTH, b.getGrowBy()); + assertEquals("", b.toString()); + } + // 0 + { + final XMLString b = new XMLString(0); + assertEquals(0, b.length()); + assertEquals(0, b.capacity()); + assertEquals(XMLString.CAPACITY_GROWTH, b.getGrowBy()); + assertEquals("", b.toString()); + } + } + + @Test + public void ctr_int_int() { + // standard + { + final XMLString b = new XMLString(42, 11); + assertEquals(0, b.length()); + assertEquals(42, b.capacity()); + assertEquals(11, b.getGrowBy()); + assertEquals("", b.toString()); + } + // zero is silently ignored + { + final XMLString b = new XMLString(42, 0); + assertEquals(0, b.length()); + assertEquals(42, b.capacity()); + assertEquals(1, b.getGrowBy()); + assertEquals("", b.toString()); + } + // 0 size is possible + { + final XMLString b = new XMLString(0, 3); + assertEquals(0, b.length()); + assertEquals(0, b.capacity()); + assertEquals(3, b.getGrowBy()); + assertEquals("", b.toString()); + } + } + + @Test + public void ctr_Buffer() { + // standard + { + final XMLString a = new XMLString(new XMLString(CHAR25)); + assertEquals(CHAR25, a.toString()); + assertEquals(25, a.length()); + assertEquals(25, a.capacity()); + assertEquals(XMLString.CAPACITY_GROWTH, a.getGrowBy()); + } + // empty + { + final XMLString a = new XMLString(new XMLString()); + assertEquals("", a.toString()); + assertEquals(0, a.length()); + assertEquals(0, a.capacity()); + assertEquals(XMLString.CAPACITY_GROWTH, a.getGrowBy()); + } + } + + @Test + public void ctr_xmlcharuffer_int() { + // standard + { + final XMLString a = new XMLString(new XMLString("foo"), 11); + assertEquals("foo", a.toString()); + assertEquals(3, a.length()); + assertEquals(14, a.capacity()); + assertEquals(XMLString.CAPACITY_GROWTH, a.getGrowBy()); + } + // empty + { + final XMLString a = new XMLString(new XMLString(), 5); + assertEquals("", a.toString()); + assertEquals(0, a.length()); + assertEquals(5, a.capacity()); + assertEquals(XMLString.CAPACITY_GROWTH, a.getGrowBy()); + } + } + + @Test + public void ctr_string() { + // empty + { + final XMLString a = new XMLString("".toString()); + assertEquals("", a.toString()); + assertEquals(0, a.length()); + assertEquals(0, a.capacity()); + assertEquals(XMLString.CAPACITY_GROWTH, a.getGrowBy()); + } + // standard + { + final XMLString a = new XMLString("1234".toString()); + assertEquals("1234", a.toString()); + assertEquals(4, a.length()); + assertEquals(4, a.capacity()); + assertEquals(XMLString.CAPACITY_GROWTH, a.getGrowBy()); + } + } + + + @Test + public void ctr_char_int_int() { + // empty + { + final XMLString a = new XMLString("".toCharArray(), 0, 0); + assertEquals("", a.toString()); + assertEquals(0, a.length()); + assertEquals(0, a.capacity()); + assertEquals(XMLString.CAPACITY_GROWTH, a.getGrowBy()); + } + // standard + { + final XMLString a = new XMLString("foo".toCharArray(), 0, 3); + assertEquals("foo", a.toString()); + assertEquals(3, a.length()); + assertEquals(3, a.capacity()); + assertEquals(XMLString.CAPACITY_GROWTH, a.getGrowBy()); + } + // standard + { + final XMLString a = new XMLString("foobar2".toCharArray(), 3, 3); + assertEquals("bar", a.toString()); + assertEquals(3, a.length()); + assertEquals(3, a.capacity()); + assertEquals(XMLString.CAPACITY_GROWTH, a.getGrowBy()); + } + } + + /* + * toString() + */ + @Test + public void toStringTest() { + assertEquals("", new XMLString().toString()); + assertEquals("", new XMLString(10).toString()); + assertEquals("foo", new XMLString("foobar".toCharArray(), 0, 3).toString()); + assertEquals("foobar", new XMLString("foobar".toCharArray(), 0, 6).toString()); + + final XMLString b1 = new XMLString(); + b1.append("foo"); + assertEquals("foo", b1.toString()); + b1.clear().append("bar"); + assertEquals("bar", b1.toString()); + b1.append("more than anything today in the world 0123456"); + assertEquals("barmore than anything today in the world 0123456", b1.toString()); + } + + /* + * Just the base length checks, the rest comes with append and such + * tests. + */ + @Test + public void length() { + assertEquals(0, new XMLString().length()); + assertEquals(0, new XMLString(10).length()); + + assertEquals(1, new XMLString().append('f').length()); + } + + @Test + public void capacity() { + assertEquals(20, new XMLString().capacity()); + assertEquals(20, new XMLString().append('f').capacity()); + + // let's grow and see + assertEquals(20, new XMLString().append("01234567890123456789").capacity()); + } + + @Test + public void append_char_new() { + final XMLString b = new XMLString(5); + assertEquals(0, b.length()); + assertEquals(5, b.capacity()); + + b.append('a'); + assertEquals(1, b.length()); + assertEquals(5, b.capacity()); + assertEquals("a", b.toString()); + + b.append('b'); + assertEquals(2, b.length()); + assertEquals(5, b.capacity()); + + b.append('c'); + assertEquals(3, b.length()); + assertEquals(5, b.capacity()); + + b.append('d'); + assertEquals(4, b.length()); + assertEquals(5, b.capacity()); + + b.append('e'); + assertEquals(5, b.length()); + assertEquals(5, b.capacity()); + + assertEquals("abcde", b.toString()); + + // our source of correctness + final StringBuilder sb = new StringBuilder(b.toString()); + final Random r = new Random(); + + for (int i = 0; i < 100; i++) { + final char c = CHAR25.charAt(r.nextInt(CHAR25.length())); + sb.append(c); + b.append(c); + + assertEquals(sb.toString(), b.toString()); + } + } + + @Test + public void append_charbuffer_new() { + final XMLString c0 = new XMLString(); + final XMLString c5 = new XMLString("01234"); + + // empty + { + final XMLString a = new XMLString(); + a.append(c0); + assertEquals("", a.toString()); + assertEquals(0, a.length()); + } + // self empty + { + final XMLString a = new XMLString(); + a.append(a); + assertEquals("", a.toString()); + assertEquals(0, a.length()); + } + // standard + { + final XMLString a = new XMLString(); + a.append(c5); + assertEquals(c5.toString(), a.toString()); + assertEquals(5, a.length()); + } + // self standard + { + final XMLString a = new XMLString("ABCDE"); + a.append(a); + assertEquals("ABCDEABCDE", a.toString()); + assertEquals(10, a.length()); + } + + } + + @Test + public void append_charbuffer_noResize() { + final XMLString c0 = new XMLString(); + final XMLString c5 = new XMLString("01234"); + + { + // we start sized for the data we got + final XMLString a = new XMLString(); + assertEquals(XMLString.INITIAL_CAPACITY, a.capacity()); + a.append("ABC"); + assertEquals("ABC", a.toString()); + + // no data, no change + a.append(c0); + assertEquals(XMLString.INITIAL_CAPACITY, a.capacity()); + assertEquals("ABC", a.toString()); + + // we add 5 chars, should grow once for the current + // growth + a.append(c5); + assertEquals(XMLString.INITIAL_CAPACITY, a.capacity()); + assertEquals("ABC01234", a.toString()); + assertEquals(8, a.length()); + } + } + + @Test + public void append_charbuffer_resize() { + final XMLString c5 = new XMLString("a-b-c"); + final XMLString c25 = new XMLString(CHAR25); + + { + final XMLString a = new XMLString(); + a.append(c5); + assertEquals(XMLString.INITIAL_CAPACITY, a.capacity()); + assertEquals("a-b-c", a.toString()); + assertEquals(5, a.length()); + assertEquals(20, a.capacity()); + a.append(c25); + assertEquals("a-b-c" + CHAR25, a.toString()); +// assertEquals(52, a.capacity()); + assertEquals(30, a.length()); + } + } + + @Test + public void append_string() { + // new, no resize + { + final XMLString a = new XMLString(); + a.append(CHAR5); + assertEquals(XMLString.INITIAL_CAPACITY, a.capacity()); + assertEquals(CHAR5, a.toString()); + assertEquals(5, a.length()); + } + // new, resize at once + { + final XMLString a = new XMLString(); + assertEquals(XMLString.INITIAL_CAPACITY, a.capacity()); + a.append(CHAR5 + CHAR25); +// assertEquals(52, a.capacity()); + assertEquals(CHAR5 + CHAR25, a.toString()); + assertEquals(30, a.length()); + } + // resize later + { + final XMLString a = new XMLString(); + assertEquals(XMLString.INITIAL_CAPACITY, a.capacity()); + a.append(CHAR5); + a.append(CHAR25); +// assertEquals(52, a.capacity()); + assertEquals(CHAR5 + CHAR25, a.toString()); + assertEquals(30, a.length()); + } + // empty string + { + final XMLString a = new XMLString(); + assertEquals(XMLString.INITIAL_CAPACITY, a.capacity()); + a.append(""); + a.append(""); + a.append(CHAR25); + a.append(""); +// assertEquals(52, a.capacity()); + assertEquals(CHAR25, a.toString()); + assertEquals(25, a.length()); + } + } + + @Test + public void append_char_int_int_new() { + // empty + { + final XMLString a = new XMLString(); + a.append("ABC-DEF-GHU".toCharArray(), 0, 0); + assertEquals("", a.toString()); + assertEquals(0, a.length()); + } + // standard + { + final XMLString a = new XMLString(); + a.append("ABC-DEF-GHU".toCharArray(), 0, 11); + assertEquals("ABC-DEF-GHU", a.toString()); + assertEquals(11, a.length()); + } + // standard + { + final XMLString a = new XMLString(); + a.append("ABC-DEF-GHU".toCharArray(), 1, 10); + assertEquals("BC-DEF-GHU", a.toString()); + assertEquals(10, a.length()); + } + // requires growth + { + final XMLString a = new XMLString(); + assertEquals(XMLString.INITIAL_CAPACITY, a.capacity()); + a.append(CHAR25.toCharArray(), 0, 25); +// assertEquals(52, a.capacity()); + + a.append(CHAR25.toCharArray(), 0, 25); +// assertEquals(52, a.capacity()); // still fits + assertEquals(CHAR25 + CHAR25, a.toString()); + assertEquals(50, a.length()); + + a.append(CHAR25.toCharArray(), 0, 5); +// assertEquals(84, a.capacity()); // still fits + assertEquals(CHAR25 + CHAR25 + CHAR5, a.toString()); + assertEquals(55, a.length()); + } + // append several times + { + final XMLString a = new XMLString(); + a.append("abc".toCharArray(), 0, 3); + a.append("1234".toCharArray(), 0, 4); + a.append("".toCharArray(), 0, 0); + a.append("0987654321".toCharArray(), 0, 10); + a.append("FOO--OO".toCharArray(), 3, 2); + assertEquals("abc12340987654321--", a.toString()); + assertEquals(10 + 0 + 4 + 3 + 2, a.length()); + } + } + + @Test + public void charAt() { + { + final XMLString a = new XMLString("a"); + assertEquals('a', a.charAt(0)); + } + { + final XMLString a = new XMLString("abc"); + assertEquals('a', a.charAt(0)); + assertEquals('b', a.charAt(1)); + assertEquals('c', a.charAt(2)); + } + } + + @Test + public void charAt_Errors() { + // empty + final XMLString a1 = new XMLString(); + assertThrows(IndexOutOfBoundsException.class, () -> { + a1.charAt(0); + }); + + final XMLString a2 = new XMLString(""); + assertThrows(IndexOutOfBoundsException.class, () -> { + a2.charAt(0); + }); + + final XMLString b = new XMLString("foo"); + assertThrows(IndexOutOfBoundsException.class, () -> { + b.charAt(-1); + }); + assertThrows(IndexOutOfBoundsException.class, () -> { + b.charAt(3); + }); + assertThrows(IndexOutOfBoundsException.class, () -> { + b.charAt(4); + }); + } + + @Test + public void unsafeCharAt() { + { + final XMLString a = new XMLString("a"); + assertEquals('a', a.unsafeCharAt(0)); + } + { + final XMLString a = new XMLString("abc"); + assertEquals('a', a.unsafeCharAt(0)); + assertEquals('b', a.unsafeCharAt(1)); + assertEquals('c', a.unsafeCharAt(2)); + } + } + + @Test + public void unsafeCharAt_Errors() { + // empty + final XMLString a1 = new XMLString(); + // can read any garbage + a1.unsafeCharAt(0); + + // cannot read outside the array of course + assertThrows(IndexOutOfBoundsException.class, () -> { + a1.unsafeCharAt(XMLString.INITIAL_CAPACITY); + }); + } + + @Test + public void endsWidth() { + // no size match, string to large + assertFalse(new XMLString("foo").endsWith("foobar")); + + // empty string + assertTrue(new XMLString("foobar").endsWith("")); + + // both empty + assertTrue(new XMLString("").endsWith("")); + + // both are the same size and don't match + assertFalse(new XMLString("foo").endsWith("bar")); + + // both are the same size and match + assertTrue(new XMLString("foo").endsWith("foo")); + + // first char mismatch + assertFalse(new XMLString("foobar").endsWith("car")); + + // last char mismatch + assertFalse(new XMLString("foobar").endsWith("baa")); + + // full match + assertTrue(new XMLString("foobar").endsWith("bar")); + } + + @Test + public void clear() { + // empty + { + final XMLString a = new XMLString(); + a.clear(); + assertEquals(XMLString.INITIAL_CAPACITY, a.capacity()); + assertEquals("", a.toString()); + assertEquals(0, a.length()); + } + // some stuff in it + { + final XMLString a = new XMLString(); + a.append(CHAR5); + a.clear(); + assertEquals(XMLString.INITIAL_CAPACITY, a.capacity()); + assertEquals("", a.toString()); + assertEquals(0, a.length()); + } + // repeated clear + { + final XMLString a = new XMLString(); + a.append(CHAR5); + a.clear(); + a.clear(); + assertEquals(XMLString.INITIAL_CAPACITY, a.capacity()); + assertEquals("", a.toString()); + assertEquals(0, a.length()); + } + // clear append + { + final XMLString a = new XMLString(); + a.append(CHAR5); + a.clear(); + a.append(CHAR5); + assertEquals(XMLString.INITIAL_CAPACITY, a.capacity()); + assertEquals(CHAR5, a.toString()); + assertEquals(5, a.length()); + } + } + + @Test + public void clearAndAppend() { + // empty + { + final XMLString a = new XMLString(); + a.clearAndAppend('a'); + assertEquals(XMLString.INITIAL_CAPACITY, a.capacity()); + assertEquals("a", a.toString()); + assertEquals(1, a.length()); + } + // some stuff in it + { + final XMLString a = new XMLString(); + a.append(CHAR5); + a.clearAndAppend('a'); + assertEquals(XMLString.INITIAL_CAPACITY, a.capacity()); + assertEquals("a", a.toString()); + assertEquals(1, a.length()); + } + // repeated clear + { + final XMLString a = new XMLString(); + a.append(CHAR5); + a.clearAndAppend('a'); + a.clearAndAppend('a'); + assertEquals(XMLString.INITIAL_CAPACITY, a.capacity()); + assertEquals("a", a.toString()); + assertEquals(1, a.length()); + } + // clear append + { + final XMLString a = new XMLString(); + a.append(CHAR5); + a.clearAndAppend('a'); + a.append(CHAR5); + assertEquals(XMLString.INITIAL_CAPACITY, a.capacity()); + assertEquals("a" + CHAR5, a.toString()); + assertEquals(6, a.length()); + } + // clear append on total empty + { + final XMLString a = new XMLString(); + a.clearAndAppend('a'); + assertEquals(XMLString.INITIAL_CAPACITY, a.capacity()); + assertEquals("a", a.toString()); + assertEquals(1, a.length()); + } + } @Test public void reduceToContent() { + final XMLString x = new XMLString(); + + // buffer shorter than markers + x.clear().append("foo"); + x.trimToContent(""); + assertEquals(3, x.length()); + assertEquals("foo", x.toString()); + + // only start + x.clear().append("Sfoo"); + x.trimToContent("S", "-->"); + assertEquals(4, x.length()); + assertEquals("Sfoo", x.toString()); + + // only end + x.clear().append("fooE"); + x.trimToContent("S", "E"); + assertEquals(4, x.length()); + assertEquals("fooE", x.toString()); + + // start and end, no whitespace + x.clear().append("SfooE"); + x.trimToContent("S", "E"); + assertEquals(3, x.length()); + assertEquals("foo", x.toString()); + + // start and end, only start with whitespace + x.clear().append(" SfooE"); + x.trimToContent("S", "E"); + assertEquals(3, x.length()); + assertEquals("foo", x.toString()); + + // start and end, only end with whitespace + x.clear().append("SfooE \n"); + x.trimToContent("S", "E"); + assertEquals(3, x.length()); + assertEquals("foo", x.toString()); + + // start and end, both with whitespace + x.clear().append(" \tSfooE \n"); + x.trimToContent("S", "E"); + assertEquals(3, x.length()); + assertEquals("foo", x.toString()); + + // start and end, only one whitespace each + x.clear().append(" SfooE "); + x.trimToContent("S", "E"); + assertEquals(3, x.length()); + assertEquals("foo", x.toString()); + + // start and end, both with whitespace + // no content but markers + x.clear().append(" \tSE \n"); + x.trimToContent("S", "E"); + assertEquals(0, x.length()); + assertEquals("", x.toString()); + + x.clear().append(" 1234 "); + x.trimToContent("12", "34"); + assertEquals(0, x.length()); + assertEquals("", x.toString()); + + // start and end, both with whitespace + // one char content + x.clear().append(" 1234 "); + x.trimToContent("12", "4"); + assertEquals(1, x.length()); + assertEquals("3", x.toString()); + + // start and end, both with whitespace + // content, just whitespace + x.clear().append(" 12 4 "); + x.trimToContent("12", "4"); + assertEquals(1, x.length()); + assertEquals(" ", x.toString()); + + // start and end, both with whitespace + // content, just chars + + // start and end, both with whitespace + // content, content with whitespaces + + // one char start and end + + // two chars start and end + + // empty end marker + + // empty start marker + + // empty start and end, behaves like trim, with whitespace + + // empty start and end, behaves like trim, without + + // some non ASCII stuff + + // markers are doubled + + // gives us some fancy whitespaces + + // original tests from XmlString + x.clear().append(""); + x.trimToContent(""); + assertEquals(" hello", x.toString()); + + x.clear().append(" \n \n"); + x.trimToContent(""); + assertEquals(" hello", x.toString()); + + x.clear().append("hello"); + x.trimToContent(""); + assertEquals("hello", x.toString()); + + x.clear().append(""); + assertEquals(""); + x.trimToContent(""); + assertEquals("", x.toString()); + + x.clear().append(" \n"); + x.trimToContent(""); + assertEquals(" \n", x.toString()); + } + + @Test + public void trimLeading() { final XMLString xmlString = new XMLString(); - xmlString.clear().append(""); - xmlString.reduceToContent(""); - assertEquals(" hello", xmlString.toString()); + xmlString.clear().append(""); + xmlString.trimLeading(); + assertEquals("", xmlString.toString()); + + xmlString.clear().append("a"); + xmlString.trimLeading(); + assertEquals("a", xmlString.toString()); + + xmlString.clear().append("a "); + xmlString.trimLeading(); + assertEquals("a ", xmlString.toString()); + + xmlString.clear().append("a b"); + xmlString.trimLeading(); + assertEquals("a b", xmlString.toString()); + + xmlString.clear().append(" a"); + xmlString.trimLeading(); + assertEquals("a", xmlString.toString()); - xmlString.clear().append(" \n \n"); - xmlString.reduceToContent(""); - assertEquals(" hello", xmlString.toString()); + xmlString.clear().append(" abckasd"); + xmlString.trimLeading(); + assertEquals("abckasd", xmlString.toString()); - xmlString.clear().append("hello"); - xmlString.reduceToContent(""); - assertEquals("hello", xmlString.toString()); + xmlString.clear().append(" \t a"); + xmlString.trimLeading(); + assertEquals("a", xmlString.toString()); - xmlString.clear().append(""); - assertEquals(""); - xmlString.reduceToContent(""); - assertEquals("", xmlString.toString()); + xmlString.clear().append(" "); + xmlString.trimLeading(); + assertEquals("", xmlString.toString()); } @Test - public void trimWhitespaceAtEnd() { + public void trimTrailing() { final XMLString xmlString = new XMLString(); xmlString.clear().append(""); - xmlString.trimWhitespaceAtEnd(); + xmlString.trimTrailing(); assertEquals("", xmlString.toString()); xmlString.clear().append("a"); - xmlString.trimWhitespaceAtEnd(); + xmlString.trimTrailing(); assertEquals("a", xmlString.toString()); xmlString.clear().append(" a"); - xmlString.trimWhitespaceAtEnd(); + xmlString.trimTrailing(); assertEquals(" a", xmlString.toString()); xmlString.clear().append("a b"); - xmlString.trimWhitespaceAtEnd(); + xmlString.trimTrailing(); assertEquals("a b", xmlString.toString()); xmlString.clear().append("a "); - xmlString.trimWhitespaceAtEnd(); + xmlString.trimTrailing(); assertEquals("a", xmlString.toString()); xmlString.clear().append("a "); - xmlString.trimWhitespaceAtEnd(); + xmlString.trimTrailing(); assertEquals("a", xmlString.toString()); xmlString.clear().append(" "); - xmlString.trimWhitespaceAtEnd(); + xmlString.trimTrailing(); assertEquals("", xmlString.toString()); xmlString.clear().append(" "); - xmlString.trimWhitespaceAtEnd(); + xmlString.trimTrailing(); assertEquals("", xmlString.toString()); } -} + + @Test + public void trim() { + final XMLString xmlString = new XMLString(); + + xmlString.clear().append(""); + xmlString.trim(); + assertEquals("", xmlString.toString()); + + xmlString.clear().append("a"); + xmlString.trim(); + assertEquals("a", xmlString.toString()); + + xmlString.clear().append(" a"); + xmlString.trim(); + assertEquals("a", xmlString.toString()); + + xmlString.clear().append("a b"); + xmlString.trim(); + assertEquals("a b", xmlString.toString()); + + xmlString.clear().append("a "); + xmlString.trim(); + assertEquals("a", xmlString.toString()); + + xmlString.clear().append("a "); + xmlString.trim(); + assertEquals("a", xmlString.toString()); + + xmlString.clear().append(" a "); + xmlString.trim(); + assertEquals("a", xmlString.toString()); + + xmlString.clear().append(" "); + xmlString.trim(); + assertEquals("", xmlString.toString()); + + xmlString.clear().append(" "); + xmlString.trim(); + assertEquals("", xmlString.toString()); + } + + @Test + public void shortenBy() { + // shorten empty + { + final XMLString a = new XMLString(""); + a.shortenBy(12); + assertEquals(0, a.length()); + assertEquals("", a.toString()); + } + // shorten by 0 + { + final XMLString a = new XMLString("ab"); + a.shortenBy(0); + assertEquals(2, a.length()); + assertEquals("ab", a.toString()); + } + // shorten by larger + { + final XMLString a = new XMLString("ab"); + a.shortenBy(4); + assertEquals(0, a.length()); + assertEquals("", a.toString()); + } + // shorten standard + { + final XMLString a = new XMLString("abcd"); + a.shortenBy(1); + assertEquals(3, a.length()); + assertEquals("abc", a.toString()); + } + // shorten standard + { + final XMLString a = new XMLString("abcd123"); + a.shortenBy(3); + assertEquals(4, a.length()); + assertEquals("abcd", a.toString()); + } + } + + @Test + public void cloneTest() { + { + final XMLString o = new XMLString(""); + final XMLString a = o.clone(); + assertEquals(0, a.length()); + assertEquals("", a.toString()); + assertTrue(o != a); + } + { + final XMLString o = new XMLString("abc"); + final XMLString a = o.clone(); + assertEquals(3, a.length()); + assertEquals("abc", a.toString()); + assertTrue(o != a); + } + { + final XMLString o = new XMLString(" 817 "); + final XMLString a = o.clone(); + final XMLString b = a.clone(); + final XMLString c = b.clone(); + assertEquals(5, c.length()); + assertEquals(" 817 ", c.toString()); + assertTrue(o != c); + } + } + + @Test + public void subSequence() { + { + final CharSequence o = new XMLString("").subSequence(0, 0); + assertEquals(0, o.length()); + assertEquals("", o.toString()); + } + { + final CharSequence o = new XMLString("a").subSequence(0, 1); + assertEquals(1, o.length()); + assertEquals("a", o.toString()); + } + { + final CharSequence o = new XMLString("abc").subSequence(0, 3); + assertEquals(3, o.length()); + assertEquals("abc", o.toString()); + } + { + final CharSequence o = new XMLString("abc").subSequence(1, 3); + assertEquals(2, o.length()); + assertEquals("bc", o.toString()); + } + { + final CharSequence o = new XMLString("abc").subSequence(0, 2); + assertEquals(2, o.length()); + assertEquals("ab", o.toString()); + } + { + final CharSequence o = new XMLString("abc").subSequence(1, 2); + assertEquals(1, o.length()); + assertEquals("b", o.toString()); + } + } + + @Test + public void subSequenceErrors() { + { + final CharSequence o = new XMLString(""); + assertThrows(IndexOutOfBoundsException.class, () -> { + o.subSequence(-1, 2); + }); + assertThrows(IndexOutOfBoundsException.class, () -> { + o.subSequence(0, 1); + }); + } + { + final CharSequence o = new XMLString("12345"); + assertThrows(IndexOutOfBoundsException.class, () -> { + o.subSequence(-2, 3); + }); + assertThrows(IndexOutOfBoundsException.class, () -> { + o.subSequence(0, 6); + }); + assertThrows(IndexOutOfBoundsException.class, () -> { + o.subSequence(1, 0); + }); + } + } + + @Test + public void equalsTest() { + // different types + { + final Integer a = Integer.valueOf(192); + final XMLString b = new XMLString(); + assertFalse(a.equals(b)); + assertFalse(b.equals(a)); + } + // both empty + { + final XMLString a = new XMLString(); + final XMLString b = new XMLString(); + assertTrue(a.equals(b)); + assertTrue(b.equals(a)); + } + // self + { + final XMLString a = new XMLString(); + final XMLString b = new XMLString("abc"); + assertTrue(a.equals(a)); + assertTrue(b.equals(b)); + } + // different length + { + final XMLString a = new XMLString("a"); + final XMLString b = new XMLString("ab"); + assertFalse(a.equals(b)); + assertFalse(b.equals(a)); + } + // different content, same length + { + final XMLString a = new XMLString("ac"); + final XMLString b = new XMLString("ab"); + assertFalse(a.equals(b)); + assertFalse(b.equals(a)); + } + // length 1, identical + { + final XMLString a = new XMLString("a"); + final XMLString b = new XMLString("a"); + assertTrue(a.equals(b)); + assertTrue(b.equals(a)); + } + // length 1, different + { + final XMLString a = new XMLString("b"); + final XMLString b = new XMLString("b"); + assertTrue(a.equals(b)); + assertTrue(b.equals(a)); + } + // length > 1, same + { + final XMLString a = new XMLString("81hal/&%$"); + final XMLString b = new XMLString("81hal/&%$"); + assertTrue(a.equals(b)); + assertTrue(b.equals(a)); + } + // length > 1, different + { + final XMLString a = new XMLString("b091872983"); + final XMLString b = new XMLString("b09187298_"); + assertFalse(a.equals(b)); + assertFalse(b.equals(a)); + } + + // CharSequence works too + { + final String a = new String("b091872983"); + final XMLString b = new XMLString("b091872983"); + assertFalse(a.equals(b)); // a string is not so open :) + assertTrue(b.equals(a)); + } + // CharSequence works too + { + final String a = new String("983"); + final XMLString b = new XMLString("b09187298_"); + assertFalse(a.equals(b)); + assertFalse(b.equals(a)); + } + } + + @Test + public void isWhitespace() { + { + final XMLString a = new XMLString(""); + assertTrue(a.isWhitespace()); + } + { + final XMLString a = new XMLString(" "); + assertTrue(a.isWhitespace()); + } + { + final XMLString a = new XMLString("a"); + assertFalse(a.isWhitespace()); + } + { + final XMLString a = new XMLString(" a\t \n"); + assertFalse(a.isWhitespace()); + } + { + final XMLString a = new XMLString(" \t \n"); + assertTrue(a.isWhitespace()); + } + } + + @Test + public void getChars() { + // empty + { + final XMLString a = new XMLString(""); + assertArrayEquals(new char[0], a.getChars()); + } + // normal + { + final XMLString a = new XMLString("abc"); + assertArrayEquals("abc".toCharArray(), a.getChars()); + } + // grown + { + final XMLString a = new XMLString("abc"); + a.append(CHAR25); + assertArrayEquals(("abc" + CHAR25).toCharArray(), a.getChars()); + } + } + + @Test + public void hashCodeTest() { + // empty + { + final XMLString a = new XMLString(); + assertEquals("".hashCode(), a.hashCode()); + } + // mutate + { + final XMLString a = new XMLString(); + assertEquals("".hashCode(), a.hashCode()); + a.append('a'); + assertEquals("a".hashCode(), a.hashCode()); + a.append("bc"); + assertEquals("abc".hashCode(), a.hashCode()); + } + } + + @Test + public void appendCodePoint() { + // regular code point + { + final XMLString a = new XMLString(); + a.appendCodePoint('a'); + assertEquals(1, a.length()); + assertEquals("a", a.toString()); + } + // two char code point + { + final XMLString a = new XMLString(); + a.appendCodePoint(0x30CA); + assertEquals(1, a.length()); + assertEquals("ナ", a.toString()); + } + // invalid code point + { + assertThrows(IllegalArgumentException.class, () -> { + final XMLString a = new XMLString(); + a.appendCodePoint(0x10FFFF + 42); + }); + } + } + }