Merge JDK-8200758-branch
authorherrick
Fri, 07 Dec 2018 09:46:53 -0500
branchJDK-8200758-branch
changeset 57063 1fa5c73d3c5a
parent 57062 044e7a644ee3 (current diff)
parent 52899 325c95779368 (diff)
child 57064 a7fdadf67a92
Merge
src/hotspot/share/gc/cms/vmCMSOperations.cpp
src/hotspot/share/gc/cms/vmCMSOperations.hpp
src/hotspot/share/gc/g1/vm_operations_g1.cpp
src/hotspot/share/gc/g1/vm_operations_g1.hpp
src/hotspot/share/gc/parallel/vmPSOperations.cpp
src/hotspot/share/gc/parallel/vmPSOperations.hpp
src/hotspot/share/gc/shared/vmGCOperations.cpp
src/hotspot/share/gc/shared/vmGCOperations.hpp
src/hotspot/share/runtime/vm_operations.cpp
src/hotspot/share/runtime/vm_operations.hpp
src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM964.java
src/jdk.charsets/share/classes/sun/nio/cs/ext/SimpleEUCEncoder.java
test/hotspot/jtreg/vmTestbase/nsk/stress/network/TEST.properties
test/hotspot/jtreg/vmTestbase/nsk/stress/network/network001.java
test/hotspot/jtreg/vmTestbase/nsk/stress/network/network002.java
test/hotspot/jtreg/vmTestbase/nsk/stress/network/network003.java
test/hotspot/jtreg/vmTestbase/nsk/stress/network/network004.java
test/hotspot/jtreg/vmTestbase/nsk/stress/network/network005.java
test/hotspot/jtreg/vmTestbase/nsk/stress/network/network006.java
test/jdk/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh
test/jdk/sun/security/pkcs11/nss/src/nss-3.16-with-nspr-4.10.4.tar.gz
test/jdk/sun/security/pkcs11/nss/src/nss-3.16-with-nspr-4.10.4.tar.gz.sha256
--- a/.hgtags	Thu Dec 06 16:45:26 2018 -0500
+++ b/.hgtags	Fri Dec 07 09:46:53 2018 -0500
@@ -525,3 +525,4 @@
 40098289d5804c3b5e7074bc75501a81e70d9b0d jdk-12+20
 f8fb0c86f2b3d24294d39c5685a628e1beb14ba7 jdk-12+21
 732bec44c89e8b93a38296bf690f97b7230c5b6d jdk-12+22
+eef755718cb24813031a842bbfc716a6cea18e9a jdk-12+23
--- a/make/data/charsetmapping/charsets	Thu Dec 06 16:45:26 2018 -0500
+++ b/make/data/charsetmapping/charsets	Fri Dec 07 09:46:53 2018 -0500
@@ -1554,10 +1554,11 @@
 
 charset x-IBM964 IBM964
     package sun.nio.cs.ext
-    type    source
+    type    template
     alias   cp964               # JDK historical
     alias   ibm964
     alias   ibm-964
+    alias   ibm-euctw
     alias   964
 
 charset x-IBM33722 IBM33722
@@ -1861,6 +1862,11 @@
     minmax  0x21 0x7e 0x21 0x7e
     internal true               # "internal implementation
 
+charset SimpleEUCEncoder SimpleEUCEncoder
+    package sun.nio.cs.ext
+    type    template
+    internal true
+
 ########################################################
 #
 # platform specific charsets, to be registered into spi
--- a/make/data/charsetmapping/stdcs-aix	Thu Dec 06 16:45:26 2018 -0500
+++ b/make/data/charsetmapping/stdcs-aix	Fri Dec 07 09:46:53 2018 -0500
@@ -16,6 +16,7 @@
 IBM943
 IBM943C
 IBM950
+IBM964
 IBM970
 IBM1046
 IBM1124
@@ -25,3 +26,4 @@
 ISO_8859_8
 MS1252
 TIS_620
+SimpleEUCEncoder
--- a/make/hotspot/lib/JvmDtraceObjects.gmk	Thu Dec 06 16:45:26 2018 -0500
+++ b/make/hotspot/lib/JvmDtraceObjects.gmk	Fri Dec 07 09:46:53 2018 -0500
@@ -60,6 +60,7 @@
         ciEnv.o \
         classLoadingService.o \
         compileBroker.o \
+        gcVMOperations.o \
         hashtable.o \
         instanceKlass.o \
         java.o \
@@ -74,18 +75,17 @@
         thread.o \
         unsafe.o \
         vmThread.o \
-        vmGCOperations.o \
     )
 
     ifeq ($(call check-jvm-feature, cmsgc), true)
       DTRACE_INSTRUMENTED_OBJS += $(addprefix $(JVM_OUTPUTDIR)/objs/, \
-          vmCMSOperations.o \
+          cmsVMOperations.o \
       )
     endif
 
     ifeq ($(call check-jvm-feature, parallelgc), true)
       DTRACE_INSTRUMENTED_OBJS += $(addprefix $(JVM_OUTPUTDIR)/objs/, \
-          vmPSOperations.o \
+          psVMOperations.o \
       )
     endif
 
--- a/make/jdk/src/classes/build/tools/cldrconverter/AbstractLDMLHandler.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/make/jdk/src/classes/build/tools/cldrconverter/AbstractLDMLHandler.java	Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -151,6 +151,19 @@
         }
     }
 
+    void pushStringListEntry(String qName, Attributes attributes, String key) {
+        if (!pushIfIgnored(qName, attributes)) {
+            currentContainer = new StringListEntry(qName, currentContainer, key);
+        }
+    }
+
+    void pushStringListElement(String qName, Attributes attributes, int index) {
+        if (!pushIfIgnored(qName, attributes)) {
+            currentContainer = new StringListElement(qName, currentContainer, index);
+        }
+    }
+
+
     private boolean pushIfIgnored(String qName, Attributes attributes) {
         if (isIgnored(attributes) || currentContainer instanceof IgnoredContainer) {
             pushIgnoredContainer(qName);
--- a/make/jdk/src/classes/build/tools/cldrconverter/Bundle.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/make/jdk/src/classes/build/tools/cldrconverter/Bundle.java	Fri Dec 07 09:46:53 2018 -0500
@@ -53,6 +53,10 @@
         "NumberPatterns/percent"
     };
 
+    private final static String[] COMPACT_NUMBER_PATTERN_KEYS = {
+            "short.CompactNumberPatterns",
+            "long.CompactNumberPatterns"};
+
     private final static String[] NUMBER_ELEMENT_KEYS = {
         "NumberElements/decimal",
         "NumberElements/group",
@@ -228,6 +232,16 @@
             }
         }
 
+        for (String k : COMPACT_NUMBER_PATTERN_KEYS) {
+            List<String> patterns = (List<String>) myMap.remove(k);
+            if (patterns != null) {
+                // Replace any null entry with empty strings.
+                String[] arrPatterns = patterns.stream()
+                        .map(s -> s == null ? "" : s).toArray(String[]::new);
+                myMap.put(k, arrPatterns);
+            }
+        }
+
         // if myMap has any of NUMBER_ELEMENT_KEYS, create a complete NumberElements.
         String defaultScript = (String) myMap.get("DefaultNumberingSystem");
         @SuppressWarnings("unchecked")
--- a/make/jdk/src/classes/build/tools/cldrconverter/CLDRConverter.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/make/jdk/src/classes/build/tools/cldrconverter/CLDRConverter.java	Fri Dec 07 09:46:53 2018 -0500
@@ -888,6 +888,8 @@
             copyIfPresent(map, "NumberElements", formatData);
         }
         copyIfPresent(map, "NumberPatterns", formatData);
+        copyIfPresent(map, "short.CompactNumberPatterns", formatData);
+        copyIfPresent(map, "long.CompactNumberPatterns", formatData);
 
         // put extra number elements for available scripts into formatData, if it is "root"
         if (id.equals("root")) {
--- a/make/jdk/src/classes/build/tools/cldrconverter/LDMLParseHandler.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/make/jdk/src/classes/build/tools/cldrconverter/LDMLParseHandler.java	Fri Dec 07 09:46:53 2018 -0500
@@ -52,6 +52,8 @@
     private final String id;
     private String currentContext = ""; // "format"/"stand-alone"
     private String currentWidth = ""; // "wide"/"narrow"/"abbreviated"
+    private String currentStyle = ""; // short, long for decimalFormat
+    private String compactCount = ""; // one or other for decimalFormat
 
     LDMLParseHandler(String id) {
         this.id = id;
@@ -503,13 +505,85 @@
         // Number format information
         //
         case "decimalFormatLength":
-            if (attributes.getValue("type") == null) {
-                // skipping type="short" data
-                // for FormatData
-                // copy string for later assembly into NumberPatterns
+            String type = attributes.getValue("type");
+            if (null == type) {
+                // format data for decimal number format
                 pushStringEntry(qName, attributes, "NumberPatterns/decimal");
+                currentStyle = type;
             } else {
-                pushIgnoredContainer(qName);
+                switch (type) {
+                    case "short":
+                    case "long":
+                        // considering "short" and long for
+                        // compact number formatting patterns
+                        pushKeyContainer(qName, attributes, type);
+                        currentStyle = type;
+                        break;
+                    default:
+                        pushIgnoredContainer(qName);
+                        break;
+                }
+            }
+            break;
+        case "decimalFormat":
+            if(currentStyle == null) {
+                pushContainer(qName, attributes);
+            } else {
+                switch (currentStyle) {
+                    case "short":
+                        pushStringListEntry(qName, attributes,
+                                currentStyle+".CompactNumberPatterns");
+                        break;
+                    case "long":
+                        pushStringListEntry(qName, attributes,
+                                currentStyle+".CompactNumberPatterns");
+                        break;
+                    default:
+                        pushIgnoredContainer(qName);
+                        break;
+                }
+            }
+            break;
+        case "pattern":
+            String containerName = currentContainer.getqName();
+            if (containerName.equals("decimalFormat")) {
+                if (currentStyle == null) {
+                    pushContainer(qName, attributes);
+                } else {
+                    // The compact number patterns parsing assumes that the order
+                    // of patterns are always in the increasing order of their
+                    // type attribute i.e. type = 1000...
+                    // Between the inflectional forms for a type (e.g.
+                    // count = "one" and count = "other" for type = 1000), it is
+                    // assumed that the count = "one" always appears before
+                    // count = "other"
+                    switch (currentStyle) {
+                        case "short":
+                        case "long":
+                            String count = attributes.getValue("count");
+                            // first pattern of count = "one" or count = "other"
+                            if ((count.equals("one") || count.equals("other"))
+                                    && compactCount.equals("")) {
+                                compactCount = count;
+                                pushStringListElement(qName, attributes,
+                                        (int) Math.log10(Double.parseDouble(attributes.getValue("type"))));
+                            } else if ((count.equals("one") || count.equals("other"))
+                                    && compactCount.equals(count)) {
+                                // extract patterns with similar "count"
+                                // attribute value
+                                pushStringListElement(qName, attributes,
+                                        (int) Math.log10(Double.parseDouble(attributes.getValue("type"))));
+                            } else {
+                                pushIgnoredContainer(qName);
+                            }
+                            break;
+                        default:
+                            pushIgnoredContainer(qName);
+                            break;
+                    }
+                }
+            } else {
+                pushContainer(qName, attributes);
             }
             break;
         case "currencyFormatLength":
@@ -676,10 +750,9 @@
         // "alias" for root
         case "alias":
             {
-                if (id.equals("root") &&
-                        !isIgnored(attributes) &&
-                        currentCalendarType != null &&
-                        !currentCalendarType.lname().startsWith("islamic-")) { // ignore Islamic variants
+                if (id.equals("root") && !isIgnored(attributes)
+                        && ((currentContainer.getqName().equals("decimalFormatLength"))
+                        || (currentCalendarType != null && !currentCalendarType.lname().startsWith("islamic-")))) { // ignore islamic variants
                     pushAliasEntry(qName, attributes, attributes.getValue("path"));
                 } else {
                     pushIgnoredContainer(qName);
@@ -831,6 +904,9 @@
         case "dayPeriods":
         case "eras":
             break;
+        case "decimalFormatLength": // used for compact number formatting patterns
+            keyName = type + ".CompactNumberPatterns";
+            break;
         default:
             keyName = "";
             break;
@@ -869,6 +945,14 @@
             width = path.substring(start+typeKey.length(), path.indexOf("']", start));
         }
 
+        // used for compact number formatting patterns aliases
+        typeKey = "decimalFormatLength[@type='";
+        start = path.indexOf(typeKey);
+        if (start != -1) {
+            String style = path.substring(start + typeKey.length(), path.indexOf("']", start));
+            return toJDKKey(qName, "", style);
+        }
+
         return calType + "." + toJDKKey(qName, context, width);
     }
 
@@ -926,7 +1010,11 @@
             currentContext = "";
             putIfEntry();
             break;
-
+        case "decimalFormatLength":
+            currentStyle = "";
+            compactCount = "";
+            putIfEntry();
+            break;
         default:
             putIfEntry();
         }
@@ -937,22 +1025,28 @@
         if (currentContainer instanceof AliasEntry) {
             Entry<?> entry = (Entry<?>) currentContainer;
             String containerqName = entry.getParent().getqName();
-            Set<String> keyNames = populateAliasKeys(containerqName, currentContext, currentWidth);
-            if (!keyNames.isEmpty()) {
-                for (String keyName : keyNames) {
-                    String[] tmp = keyName.split(",", 3);
-                    String calType = currentCalendarType.lname();
-                    String src = calType+"."+tmp[0];
-                    String target = getTarget(
-                                entry.getKey(),
-                                calType,
-                                tmp[1].length()>0 ? tmp[1] : currentContext,
-                                tmp[2].length()>0 ? tmp[2] : currentWidth);
-                    if (target.substring(target.lastIndexOf('.')+1).equals(containerqName)) {
-                        target = target.substring(0, target.indexOf('.'))+"."+tmp[0];
+            if (containerqName.equals("decimalFormatLength")) {
+                String srcKey = toJDKKey(containerqName, "", currentStyle);
+                String targetKey = getTarget(entry.getKey(), "", "", "");
+                CLDRConverter.aliases.put(srcKey, targetKey);
+            } else {
+                Set<String> keyNames = populateAliasKeys(containerqName, currentContext, currentWidth);
+                if (!keyNames.isEmpty()) {
+                    for (String keyName : keyNames) {
+                        String[] tmp = keyName.split(",", 3);
+                        String calType = currentCalendarType.lname();
+                        String src = calType+"."+tmp[0];
+                        String target = getTarget(
+                                    entry.getKey(),
+                                    calType,
+                                    tmp[1].length()>0 ? tmp[1] : currentContext,
+                                    tmp[2].length()>0 ? tmp[2] : currentWidth);
+                        if (target.substring(target.lastIndexOf('.')+1).equals(containerqName)) {
+                            target = target.substring(0, target.indexOf('.'))+"."+tmp[0];
+                        }
+                        CLDRConverter.aliases.put(src.replaceFirst("^gregorian.", ""),
+                                                  target.replaceFirst("^gregorian.", ""));
                     }
-                    CLDRConverter.aliases.put(src.replaceFirst("^gregorian.", ""),
-                                              target.replaceFirst("^gregorian.", ""));
                 }
             }
         } else if (currentContainer instanceof Entry) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/jdk/src/classes/build/tools/cldrconverter/StringListElement.java	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package build.tools.cldrconverter;
+
+class StringListElement extends Container {
+
+    StringListEntry list;
+    int index;
+
+    StringListElement(String qName, Container parent, int index) {
+        super(qName, parent);
+        while (!(parent instanceof StringListEntry)) {
+            parent = parent.getParent();
+        }
+        list = (StringListEntry) parent;
+        this.index = index;
+    }
+
+    @Override
+    void addCharacters(char[] characters, int start, int length) {
+        list.addCharacters(index, characters, start, length);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/jdk/src/classes/build/tools/cldrconverter/StringListEntry.java	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package build.tools.cldrconverter;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.IntStream;
+
+class StringListEntry extends Entry<List<String>> {
+
+    private List<String> value;
+
+    StringListEntry(String qName, Container parent, String key) {
+        super(qName, parent, key);
+        value = new ArrayList<>();
+    }
+
+    void addCharacters(int index, char[] characters, int start, int length) {
+        // fill with empty strings when the patterns start from index > 0
+        if (value.size() < index) {
+            IntStream.range(0, index).forEach(i -> value.add(i, ""));
+            value.add(index, new String(characters, start, length));
+        } else {
+            value.add(index, new String(characters, start, length));
+        }
+    }
+
+    @Override
+    List<String> getValue() {
+        for (String element : value) {
+            if (element != null) {
+                return value;
+            }
+        }
+        return null;
+    }
+
+}
--- a/src/hotspot/os/aix/os_aix.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/os/aix/os_aix.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -4359,7 +4359,7 @@
 static inline time_t get_mtime(const char* filename) {
   struct stat st;
   int ret = os::stat(filename, &st);
-  assert(ret == 0, "failed to stat() file '%s': %s", filename, strerror(errno));
+  assert(ret == 0, "failed to stat() file '%s': %s", filename, os::strerror(errno));
   return st.st_mtime;
 }
 
--- a/src/hotspot/os/bsd/os_bsd.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/os/bsd/os_bsd.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -3388,7 +3388,7 @@
 static inline struct timespec get_mtime(const char* filename) {
   struct stat st;
   int ret = os::stat(filename, &st);
-  assert(ret == 0, "failed to stat() file '%s': %s", filename, strerror(errno));
+  assert(ret == 0, "failed to stat() file '%s': %s", filename, os::strerror(errno));
 #ifdef __APPLE__
   return st.st_mtimespec;
 #else
--- a/src/hotspot/os/linux/os_linux.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/os/linux/os_linux.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -5946,7 +5946,7 @@
 static inline struct timespec get_mtime(const char* filename) {
   struct stat st;
   int ret = os::stat(filename, &st);
-  assert(ret == 0, "failed to stat() file '%s': %s", filename, strerror(errno));
+  assert(ret == 0, "failed to stat() file '%s': %s", filename, os::strerror(errno));
   return st.st_mtim;
 }
 
--- a/src/hotspot/os/solaris/os_solaris.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/os/solaris/os_solaris.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -1652,7 +1652,7 @@
 static inline time_t get_mtime(const char* filename) {
   struct stat st;
   int ret = os::stat(filename, &st);
-  assert(ret == 0, "failed to stat() file '%s': %s", filename, strerror(errno));
+  assert(ret == 0, "failed to stat() file '%s': %s", filename, os::strerror(errno));
   return st.st_mtime;
 }
 
--- a/src/hotspot/os/windows/os_windows.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/os/windows/os_windows.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -1563,7 +1563,7 @@
 static inline time_t get_mtime(const char* filename) {
   struct stat st;
   int ret = os::stat(filename, &st);
-  assert(ret == 0, "failed to stat() file '%s': %s", filename, strerror(errno));
+  assert(ret == 0, "failed to stat() file '%s': %s", filename, os::strerror(errno));
   return st.st_mtime;
 }
 
--- a/src/hotspot/os/windows/os_windows.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/os/windows/os_windows.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -26,6 +26,9 @@
 #define OS_WINDOWS_VM_OS_WINDOWS_HPP
 // Win32_OS defines the interface to windows operating systems
 
+// strtok_s is the Windows thread-safe equivalent of POSIX strtok_r
+#define strtok_r strtok_s
+
 // Information about the protection of the page at address '0' on this os.
 static bool zero_page_read_protected() { return true; }
 
--- a/src/hotspot/share/aot/aotCodeHeap.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/aot/aotCodeHeap.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -40,7 +40,7 @@
 #include "runtime/os.hpp"
 #include "runtime/safepointVerifiers.hpp"
 #include "runtime/sharedRuntime.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 
 bool AOTLib::_narrow_oop_shift_initialized = false;
 int  AOTLib::_narrow_oop_shift = 0;
--- a/src/hotspot/share/aot/aotCompiledMethod.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/aot/aotCompiledMethod.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -155,6 +155,10 @@
   ShouldNotReachHere(); return NULL;
 }
 
+void AOTCompiledMethod::do_unloading(bool unloading_occurred) {
+  unload_nmethod_caches(unloading_occurred);
+}
+
 bool AOTCompiledMethod::make_not_entrant_helper(int new_state) {
   // Make sure the method is not flushed in case of a safepoint in code below.
   methodHandle the_method(method());
--- a/src/hotspot/share/aot/aotCompiledMethod.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/aot/aotCompiledMethod.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -265,6 +265,7 @@
 #endif
   }
 
+  virtual void do_unloading(bool unloading_occurred);
 
 protected:
   // AOT compiled methods are not flushed
--- a/src/hotspot/share/classfile/classLoader.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/classfile/classLoader.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -1224,13 +1224,14 @@
   assert((int)strlen(class_name) == class_name_len, "invariant");
 
   static const char class_suffix[] = ".class";
+  size_t class_suffix_len = sizeof(class_suffix);
 
   char* const file_name = NEW_RESOURCE_ARRAY(char,
                                              class_name_len +
-                                             sizeof(class_suffix)); // includes term NULL
+                                             class_suffix_len); // includes term NULL
 
   strncpy(file_name, class_name, class_name_len);
-  strncpy(&file_name[class_name_len], class_suffix, sizeof(class_suffix));
+  strncpy(&file_name[class_name_len], class_suffix, class_suffix_len);
 
   return file_name;
 }
--- a/src/hotspot/share/classfile/classLoaderStats.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/classfile/classLoaderStats.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -30,7 +30,7 @@
 #include "oops/klass.hpp"
 #include "oops/oop.hpp"
 #include "oops/oopsHierarchy.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "services/diagnosticCommand.hpp"
 #include "utilities/resourceHash.hpp"
 
--- a/src/hotspot/share/classfile/verifier.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/classfile/verifier.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -36,7 +36,6 @@
 class Verifier : AllStatic {
  public:
   enum {
-    STRICTER_ACCESS_CTRL_CHECK_VERSION  = 49,
     STACKMAP_ATTRIBUTE_MAJOR_VERSION    = 50,
     INVOKEDYNAMIC_MAJOR_VERSION         = 51,
     NO_RELAX_ACCESS_CTRL_CHECK_VERSION  = 52,
--- a/src/hotspot/share/classfile/vmSymbols.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/classfile/vmSymbols.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -473,15 +473,16 @@
   // Note, DirectiveSet may not be created at this point yet since this code
   // is called from initial stub geenration code.
   char* local_list = (char*)DirectiveSet::canonicalize_disableintrinsic(DisableIntrinsic);
-
+  char* save_ptr;
   bool found = false;
-  char* token = strtok(local_list, ",");
+
+  char* token = strtok_r(local_list, ",", &save_ptr);
   while (token != NULL) {
     if (strcmp(token, vmIntrinsics::name_at(id)) == 0) {
       found = true;
       break;
     } else {
-      token = strtok(NULL, ",");
+      token = strtok_r(NULL, ",", &save_ptr);
     }
   }
 
--- a/src/hotspot/share/code/codeCache.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/code/codeCache.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -289,7 +289,7 @@
 
   // If large page support is enabled, align code heaps according to large
   // page size to make sure that code cache is covered by large pages.
-  const size_t alignment = MAX2(page_size(false), (size_t) os::vm_allocation_granularity());
+  const size_t alignment = MAX2(page_size(false, 8), (size_t) os::vm_allocation_granularity());
   non_nmethod_size = align_up(non_nmethod_size, alignment);
   profiled_size    = align_down(profiled_size, alignment);
 
@@ -314,10 +314,14 @@
   add_heap(non_profiled_space, "CodeHeap 'non-profiled nmethods'", CodeBlobType::MethodNonProfiled);
 }
 
-size_t CodeCache::page_size(bool aligned) {
+size_t CodeCache::page_size(bool aligned, size_t min_pages) {
   if (os::can_execute_large_page_memory()) {
-    return aligned ? os::page_size_for_region_aligned(ReservedCodeCacheSize, 8) :
-                     os::page_size_for_region_unaligned(ReservedCodeCacheSize, 8);
+    if (InitialCodeCacheSize < ReservedCodeCacheSize) {
+      // Make sure that the page size allows for an incremental commit of the reserved space
+      min_pages = MAX2(min_pages, (size_t)8);
+    }
+    return aligned ? os::page_size_for_region_aligned(ReservedCodeCacheSize, min_pages) :
+                     os::page_size_for_region_unaligned(ReservedCodeCacheSize, min_pages);
   } else {
     return os::vm_page_size();
   }
--- a/src/hotspot/share/code/codeCache.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/code/codeCache.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -111,7 +111,6 @@
   static CodeHeap* get_code_heap(int code_blob_type);         // Returns the CodeHeap for the given CodeBlobType
   // Returns the name of the VM option to set the size of the corresponding CodeHeap
   static const char* get_code_heap_flag_name(int code_blob_type);
-  static size_t page_size(bool aligned = true);               // Returns the page size used by the CodeCache
   static ReservedCodeSpace reserve_heap_memory(size_t size);  // Reserves one continuous chunk of memory for the CodeHeaps
 
   // Iteration
@@ -133,6 +132,7 @@
  public:
   // Initialization
   static void initialize();
+  static size_t page_size(bool aligned = true, size_t min_pages = 1); // Returns the page size used by the CodeCache
 
   static int code_heap_compare(CodeHeap* const &lhs, CodeHeap* const &rhs);
 
--- a/src/hotspot/share/code/compiledMethod.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/code/compiledMethod.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -556,6 +556,7 @@
 
 void CompiledMethod::cleanup_inline_caches(bool clean_all) {
   for (;;) {
+    ICRefillVerifier ic_refill_verifier;
     { CompiledICLocker ic_locker(this);
       if (cleanup_inline_caches_impl(false, clean_all)) {
         return;
--- a/src/hotspot/share/code/compiledMethod.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/code/compiledMethod.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -400,7 +400,7 @@
   virtual bool is_unloading() = 0;
 
   bool unload_nmethod_caches(bool class_unloading_occurred);
-  virtual void do_unloading(bool unloading_occurred) { }
+  virtual void do_unloading(bool unloading_occurred) = 0;
 
 private:
   PcDesc* find_pc_desc(address pc, bool approximate) {
--- a/src/hotspot/share/code/icBuffer.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/code/icBuffer.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -38,6 +38,7 @@
 #include "runtime/handles.inline.hpp"
 #include "runtime/mutexLocker.hpp"
 #include "runtime/stubRoutines.hpp"
+#include "runtime/thread.hpp"
 
 DEF_STUB_INTERFACE(ICStub);
 
@@ -45,7 +46,40 @@
 
 CompiledICHolder* InlineCacheBuffer::_pending_released = NULL;
 int InlineCacheBuffer::_pending_count = 0;
-DEBUG_ONLY(volatile int InlineCacheBuffer::_needs_refill = 0;)
+
+#ifdef ASSERT
+ICRefillVerifier::ICRefillVerifier()
+  : _refill_requested(false),
+    _refill_remembered(false)
+{
+  Thread* thread = Thread::current();
+  assert(thread->missed_ic_stub_refill_mark() == NULL, "nesting not supported");
+  thread->set_missed_ic_stub_refill_mark(this);
+}
+
+ICRefillVerifier::~ICRefillVerifier() {
+  assert(!_refill_requested || _refill_remembered,
+         "Forgot to refill IC stubs after failed IC transition");
+  Thread::current()->set_missed_ic_stub_refill_mark(NULL);
+}
+
+ICRefillVerifierMark::ICRefillVerifierMark(ICRefillVerifier* verifier) {
+  Thread* thread = Thread::current();
+  assert(thread->missed_ic_stub_refill_mark() == NULL, "nesting not supported");
+  thread->set_missed_ic_stub_refill_mark(this);
+}
+
+ICRefillVerifierMark::~ICRefillVerifierMark() {
+  Thread::current()->set_missed_ic_stub_refill_mark(NULL);
+}
+
+static ICRefillVerifier* current_ic_refill_verifier() {
+  Thread* current = Thread::current();
+  ICRefillVerifier* verifier = reinterpret_cast<ICRefillVerifier*>(current->missed_ic_stub_refill_mark());
+  assert(verifier != NULL, "need a verifier for safety");
+  return verifier;
+}
+#endif
 
 void ICStub::finalize() {
   if (!is_empty()) {
@@ -117,7 +151,10 @@
 
 
 void InlineCacheBuffer::refill_ic_stubs() {
-  DEBUG_ONLY(Atomic::store(0, &_needs_refill));
+#ifdef ASSERT
+  ICRefillVerifier* verifier = current_ic_refill_verifier();
+  verifier->request_remembered();
+#endif
   // we ran out of inline cache buffer space; must enter safepoint.
   // We do this by forcing a safepoint
   EXCEPTION_MARK;
@@ -135,8 +172,6 @@
 
 
 void InlineCacheBuffer::update_inline_caches() {
-  assert(_needs_refill == 0,
-         "Forgot to handle a failed IC transition requiring IC stubs");
   if (buffer()->number_of_stubs() > 0) {
     if (TraceICBuffer) {
       tty->print_cr("[updating inline caches with %d stubs]", buffer()->number_of_stubs());
@@ -161,7 +196,6 @@
   InlineCacheBuffer::initialize();
 }
 
-
 bool InlineCacheBuffer::create_transition_stub(CompiledIC *ic, void* cached_value, address entry) {
   assert(!SafepointSynchronize::is_at_safepoint(), "should not be called during a safepoint");
   assert(CompiledICLocker::is_safe(ic->instruction_address()), "mt unsafe call");
@@ -173,7 +207,10 @@
   // allocate and initialize new "out-of-line" inline-cache
   ICStub* ic_stub = new_ic_stub();
   if (ic_stub == NULL) {
-    DEBUG_ONLY(Atomic::inc(&_needs_refill));
+#ifdef ASSERT
+    ICRefillVerifier* verifier = current_ic_refill_verifier();
+    verifier->request_refill();
+#endif
     return false;
   }
 
--- a/src/hotspot/share/code/icBuffer.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/code/icBuffer.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,9 @@
 #include "code/stubs.hpp"
 #include "interpreter/bytecodes.hpp"
 #include "memory/allocation.hpp"
+#include "runtime/safepointVerifiers.hpp"
 #include "utilities/align.hpp"
+#include "utilities/debug.hpp"
 #include "utilities/macros.hpp"
 
 //
@@ -93,6 +95,43 @@
   return stub;
 }
 
+#ifdef ASSERT
+// The ICRefillVerifier class is a stack allocated RAII object used to
+// detect if a failed IC transition that required IC stub refilling has
+// been accidentally missed. It is up to the caller to in that case
+// refill IC stubs.
+class ICRefillVerifier: StackObj {
+  bool _refill_requested;
+  bool _refill_remembered;
+
+ public:
+  ICRefillVerifier();
+  ~ICRefillVerifier();
+
+  void request_refill() { _refill_requested = true; }
+  void request_remembered() { _refill_remembered = true; }
+};
+
+// The ICRefillVerifierMark is used to set the thread's current
+// ICRefillVerifier to a provided one. This is useful in particular
+// when transitioning IC stubs in parallel and refilling from the
+// master thread invoking the IC stub transitioning code.
+class ICRefillVerifierMark: StackObj {
+ public:
+  ICRefillVerifierMark(ICRefillVerifier* verifier);
+  ~ICRefillVerifierMark();
+};
+#else
+class ICRefillVerifier: StackObj {
+ public:
+  ICRefillVerifier() {}
+};
+class ICRefillVerifierMark: StackObj {
+ public:
+  ICRefillVerifierMark(ICRefillVerifier* verifier) {}
+};
+#endif
+
 class InlineCacheBuffer: public AllStatic {
  private:
   // friends
@@ -105,8 +144,6 @@
   static CompiledICHolder* _pending_released;
   static int _pending_count;
 
-  DEBUG_ONLY(static volatile int _needs_refill;)
-
   static StubQueue* buffer()                         { return _buffer;         }
 
   static ICStub* new_ic_stub();
--- a/src/hotspot/share/compiler/compilerDefinitions.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/compiler/compilerDefinitions.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -23,6 +23,7 @@
  */
 
 #include "precompiled.hpp"
+#include "code/codeCache.hpp"
 #include "runtime/globals.hpp"
 #include "runtime/globals_extension.hpp"
 #include "compiler/compilerDefinitions.hpp"
@@ -200,8 +201,10 @@
     FLAG_SET_ERGO(uintx, ReservedCodeCacheSize,
                   MIN2(CODE_CACHE_DEFAULT_LIMIT, (size_t)ReservedCodeCacheSize * 5));
   }
-  // Enable SegmentedCodeCache if TieredCompilation is enabled and ReservedCodeCacheSize >= 240M
-  if (FLAG_IS_DEFAULT(SegmentedCodeCache) && ReservedCodeCacheSize >= 240*M) {
+  // Enable SegmentedCodeCache if TieredCompilation is enabled, ReservedCodeCacheSize >= 240M
+  // and the code cache contains at least 8 pages (segmentation disables advantage of huge pages).
+  if (FLAG_IS_DEFAULT(SegmentedCodeCache) && ReservedCodeCacheSize >= 240*M &&
+      8 * CodeCache::page_size() <= ReservedCodeCacheSize) {
     FLAG_SET_ERGO(bool, SegmentedCodeCache, true);
   }
   if (!UseInterpreter) { // -Xcomp
--- a/src/hotspot/share/compiler/compilerDirectives.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/compiler/compilerDirectives.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -398,13 +398,14 @@
   size_t length = strlen(DisableIntrinsicOption);
   char* local_list = NEW_RESOURCE_ARRAY(char, length + 1);
   strncpy(local_list, DisableIntrinsicOption, length + 1);
+  char* save_ptr;
 
-  char* token = strtok(local_list, ",");
+  char* token = strtok_r(local_list, ",", &save_ptr);
   while (token != NULL) {
     if (strcmp(token, vmIntrinsics::name_at(id)) == 0) {
       return true;
     } else {
-      token = strtok(NULL, ",");
+      token = strtok_r(NULL, ",", &save_ptr);
     }
   }
 
--- a/src/hotspot/share/gc/cms/cmsCollectorPolicy.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/cms/cmsCollectorPolicy.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,9 +30,9 @@
 #include "gc/shared/collectorPolicy.hpp"
 #include "gc/shared/gcLocker.hpp"
 #include "gc/shared/gcPolicyCounters.hpp"
+#include "gc/shared/gcVMOperations.hpp"
 #include "gc/shared/generationSpec.hpp"
 #include "gc/shared/space.hpp"
-#include "gc/shared/vmGCOperations.hpp"
 #include "memory/universe.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/arguments.hpp"
--- a/src/hotspot/share/gc/cms/cmsHeap.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/cms/cmsHeap.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -24,12 +24,12 @@
 
 #include "precompiled.hpp"
 #include "gc/cms/cmsCardTable.hpp"
+#include "gc/cms/cmsVMOperations.hpp"
 #include "gc/cms/compactibleFreeListSpace.hpp"
 #include "gc/cms/concurrentMarkSweepGeneration.hpp"
 #include "gc/cms/concurrentMarkSweepThread.hpp"
 #include "gc/cms/cmsHeap.hpp"
 #include "gc/cms/parNewGeneration.hpp"
-#include "gc/cms/vmCMSOperations.hpp"
 #include "gc/shared/genCollectedHeap.hpp"
 #include "gc/shared/genMemoryPools.hpp"
 #include "gc/shared/genOopClosures.inline.hpp"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/cms/cmsVMOperations.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,254 @@
+/*
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "gc/cms/cmsHeap.hpp"
+#include "gc/cms/cmsVMOperations.hpp"
+#include "gc/cms/concurrentMarkSweepGeneration.inline.hpp"
+#include "gc/cms/concurrentMarkSweepThread.hpp"
+#include "gc/shared/gcLocker.hpp"
+#include "gc/shared/gcTimer.hpp"
+#include "gc/shared/gcTraceTime.inline.hpp"
+#include "gc/shared/isGCActiveMark.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
+#include "runtime/os.hpp"
+#include "utilities/dtrace.hpp"
+
+//////////////////////////////////////////////////////////
+// Methods in abstract class VM_CMS_Operation
+//////////////////////////////////////////////////////////
+void VM_CMS_Operation::verify_before_gc() {
+  if (VerifyBeforeGC &&
+      CMSHeap::heap()->total_collections() >= VerifyGCStartAt) {
+    GCTraceTime(Info, gc, phases, verify) tm("Verify Before", _collector->_gc_timer_cm);
+    HandleMark hm;
+    FreelistLocker x(_collector);
+    MutexLockerEx  y(_collector->bitMapLock(), Mutex::_no_safepoint_check_flag);
+    CMSHeap::heap()->prepare_for_verify();
+    Universe::verify();
+  }
+}
+
+void VM_CMS_Operation::verify_after_gc() {
+  if (VerifyAfterGC &&
+      CMSHeap::heap()->total_collections() >= VerifyGCStartAt) {
+    GCTraceTime(Info, gc, phases, verify) tm("Verify After", _collector->_gc_timer_cm);
+    HandleMark hm;
+    FreelistLocker x(_collector);
+    MutexLockerEx  y(_collector->bitMapLock(), Mutex::_no_safepoint_check_flag);
+    Universe::verify();
+  }
+}
+
+bool VM_CMS_Operation::lost_race() const {
+  if (CMSCollector::abstract_state() == CMSCollector::Idling) {
+    // We lost a race to a foreground collection
+    // -- there's nothing to do
+    return true;
+  }
+  assert(CMSCollector::abstract_state() == legal_state(),
+         "Inconsistent collector state?");
+  return false;
+}
+
+bool VM_CMS_Operation::doit_prologue() {
+  assert(Thread::current()->is_ConcurrentGC_thread(), "just checking");
+  assert(!CMSCollector::foregroundGCShouldWait(), "Possible deadlock");
+  assert(!ConcurrentMarkSweepThread::cms_thread_has_cms_token(),
+         "Possible deadlock");
+
+  Heap_lock->lock();
+  if (lost_race()) {
+    assert(_prologue_succeeded == false, "Initialized in c'tor");
+    Heap_lock->unlock();
+  } else {
+    _prologue_succeeded = true;
+  }
+  return _prologue_succeeded;
+}
+
+void VM_CMS_Operation::doit_epilogue() {
+  assert(Thread::current()->is_ConcurrentGC_thread(), "just checking");
+  assert(!CMSCollector::foregroundGCShouldWait(), "Possible deadlock");
+  assert(!ConcurrentMarkSweepThread::cms_thread_has_cms_token(),
+         "Possible deadlock");
+
+  if (Universe::has_reference_pending_list()) {
+    Heap_lock->notify_all();
+  }
+  Heap_lock->unlock();
+}
+
+//////////////////////////////////////////////////////////
+// Methods in class VM_CMS_Initial_Mark
+//////////////////////////////////////////////////////////
+void VM_CMS_Initial_Mark::doit() {
+  if (lost_race()) {
+    // Nothing to do.
+    return;
+  }
+  HS_PRIVATE_CMS_INITMARK_BEGIN();
+  GCIdMark gc_id_mark(_gc_id);
+
+  _collector->_gc_timer_cm->register_gc_pause_start("Initial Mark");
+
+  CMSHeap* heap = CMSHeap::heap();
+  GCCauseSetter gccs(heap, GCCause::_cms_initial_mark);
+
+  VM_CMS_Operation::verify_before_gc();
+
+  IsGCActiveMark x; // stop-world GC active
+  _collector->do_CMS_operation(CMSCollector::CMS_op_checkpointRootsInitial, heap->gc_cause());
+
+  VM_CMS_Operation::verify_after_gc();
+
+  _collector->_gc_timer_cm->register_gc_pause_end();
+
+  HS_PRIVATE_CMS_INITMARK_END();
+}
+
+//////////////////////////////////////////////////////////
+// Methods in class VM_CMS_Final_Remark_Operation
+//////////////////////////////////////////////////////////
+void VM_CMS_Final_Remark::doit() {
+  if (lost_race()) {
+    // Nothing to do.
+    return;
+  }
+  HS_PRIVATE_CMS_REMARK_BEGIN();
+  GCIdMark gc_id_mark(_gc_id);
+
+  _collector->_gc_timer_cm->register_gc_pause_start("Final Mark");
+
+  CMSHeap* heap = CMSHeap::heap();
+  GCCauseSetter gccs(heap, GCCause::_cms_final_remark);
+
+  VM_CMS_Operation::verify_before_gc();
+
+  IsGCActiveMark x; // stop-world GC active
+  _collector->do_CMS_operation(CMSCollector::CMS_op_checkpointRootsFinal, heap->gc_cause());
+
+  VM_CMS_Operation::verify_after_gc();
+
+  _collector->save_heap_summary();
+  _collector->_gc_timer_cm->register_gc_pause_end();
+
+  HS_PRIVATE_CMS_REMARK_END();
+}
+
+// VM operation to invoke a concurrent collection of a
+// GenCollectedHeap heap.
+void VM_GenCollectFullConcurrent::doit() {
+  assert(Thread::current()->is_VM_thread(), "Should be VM thread");
+  assert(GCLockerInvokesConcurrent || ExplicitGCInvokesConcurrent, "Unexpected");
+
+  CMSHeap* heap = CMSHeap::heap();
+  if (_gc_count_before == heap->total_collections()) {
+    // The "full" of do_full_collection call below "forces"
+    // a collection; the second arg, 0, below ensures that
+    // only the young gen is collected. XXX In the future,
+    // we'll probably need to have something in this interface
+    // to say do this only if we are sure we will not bail
+    // out to a full collection in this attempt, but that's
+    // for the future.
+    assert(SafepointSynchronize::is_at_safepoint(),
+      "We can only be executing this arm of if at a safepoint");
+    GCCauseSetter gccs(heap, _gc_cause);
+    heap->do_full_collection(heap->must_clear_all_soft_refs(), GenCollectedHeap::YoungGen);
+  } // Else no need for a foreground young gc
+  assert((_gc_count_before < heap->total_collections()) ||
+         (GCLocker::is_active() /* gc may have been skipped */
+          && (_gc_count_before == heap->total_collections())),
+         "total_collections() should be monotonically increasing");
+
+  MutexLockerEx x(FullGCCount_lock, Mutex::_no_safepoint_check_flag);
+  assert(_full_gc_count_before <= heap->total_full_collections(), "Error");
+  if (heap->total_full_collections() == _full_gc_count_before) {
+    // Nudge the CMS thread to start a concurrent collection.
+    CMSCollector::request_full_gc(_full_gc_count_before, _gc_cause);
+  } else {
+    assert(_full_gc_count_before < heap->total_full_collections(), "Error");
+    FullGCCount_lock->notify_all();  // Inform the Java thread its work is done
+  }
+}
+
+bool VM_GenCollectFullConcurrent::evaluate_at_safepoint() const {
+  Thread* thr = Thread::current();
+  assert(thr != NULL, "Unexpected tid");
+  if (!thr->is_Java_thread()) {
+    assert(thr->is_VM_thread(), "Expected to be evaluated by VM thread");
+    CMSHeap* heap = CMSHeap::heap();
+    if (_gc_count_before != heap->total_collections()) {
+      // No need to do a young gc, we'll just nudge the CMS thread
+      // in the doit() method above, to be executed soon.
+      assert(_gc_count_before < heap->total_collections(),
+             "total_collections() should be monotonically increasing");
+      return false;  // no need for foreground young gc
+    }
+  }
+  return true;       // may still need foreground young gc
+}
+
+
+void VM_GenCollectFullConcurrent::doit_epilogue() {
+  Thread* thr = Thread::current();
+  assert(thr->is_Java_thread(), "just checking");
+  JavaThread* jt = (JavaThread*)thr;
+
+  if (Universe::has_reference_pending_list()) {
+    Heap_lock->notify_all();
+  }
+  Heap_lock->unlock();
+
+  // It is fine to test whether completed collections has
+  // exceeded our request count without locking because
+  // the completion count is monotonically increasing;
+  // this will break for very long-running apps when the
+  // count overflows and wraps around. XXX fix me !!!
+  // e.g. at the rate of 1 full gc per ms, this could
+  // overflow in about 1000 years.
+  CMSHeap* heap = CMSHeap::heap();
+  if (_gc_cause != GCCause::_gc_locker &&
+      heap->total_full_collections_completed() <= _full_gc_count_before) {
+    // maybe we should change the condition to test _gc_cause ==
+    // GCCause::_java_lang_system_gc or GCCause::_dcmd_gc_run,
+    // instead of _gc_cause != GCCause::_gc_locker
+    assert(GCCause::is_user_requested_gc(_gc_cause),
+           "the only way to get here if this was a System.gc()-induced GC");
+    assert(ExplicitGCInvokesConcurrent, "Error");
+    // Now, wait for witnessing concurrent gc cycle to complete,
+    // but do so in native mode, because we want to lock the
+    // FullGCEvent_lock, which may be needed by the VM thread
+    // or by the CMS thread, so we do not want to be suspended
+    // while holding that lock.
+    ThreadToNativeFromVM native(jt);
+    MutexLockerEx ml(FullGCCount_lock, Mutex::_no_safepoint_check_flag);
+    // Either a concurrent or a stop-world full gc is sufficient
+    // witness to our request.
+    while (heap->total_full_collections_completed() <= _full_gc_count_before) {
+      FullGCCount_lock->wait(Mutex::_no_safepoint_check_flag);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/cms/cmsVMOperations.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,146 @@
+/*
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_GC_CMS_CMSVMOPERATIONS_HPP
+#define SHARE_VM_GC_CMS_CMSVMOPERATIONS_HPP
+
+#include "gc/cms/concurrentMarkSweepGeneration.hpp"
+#include "gc/shared/gcCause.hpp"
+#include "gc/shared/gcId.hpp"
+#include "gc/shared/gcVMOperations.hpp"
+#include "runtime/vmOperations.hpp"
+
+// The VM_CMS_Operation is slightly different from
+// a VM_GC_Operation -- and would not have subclassed easily
+// to VM_GC_Operation without several changes to VM_GC_Operation.
+// To minimize the changes, we have replicated some of the VM_GC_Operation
+// functionality here. We will consolidate that back by doing subclassing
+// as appropriate in Dolphin.
+//
+//  VM_Operation
+//    VM_CMS_Operation
+//    - implements the common portion of work done in support
+//      of CMS' stop-world phases (initial mark and remark).
+//
+//      VM_CMS_Initial_Mark
+//      VM_CMS_Final_Mark
+//
+
+// Forward decl.
+class CMSCollector;
+
+class VM_CMS_Operation: public VM_Operation {
+ protected:
+  CMSCollector*  _collector;                 // associated collector
+  bool           _prologue_succeeded;     // whether doit_prologue succeeded
+  uint           _gc_id;
+
+  bool lost_race() const;
+
+ public:
+  VM_CMS_Operation(CMSCollector* collector):
+    _collector(collector),
+    _prologue_succeeded(false),
+    _gc_id(GCId::current()) {}
+  ~VM_CMS_Operation() {}
+
+  // The legal collector state for executing this CMS op.
+  virtual const CMSCollector::CollectorState legal_state() const = 0;
+
+  // Whether the pending list lock needs to be held
+  virtual const bool needs_pending_list_lock() const = 0;
+
+  // Execute operations in the context of the caller,
+  // prior to execution of the vm operation itself.
+  virtual bool doit_prologue();
+  // Execute operations in the context of the caller,
+  // following completion of the vm operation.
+  virtual void doit_epilogue();
+
+  virtual bool evaluate_at_safepoint() const { return true; }
+  virtual bool is_cheap_allocated() const { return false; }
+  virtual bool allow_nested_vm_operations() const  { return false; }
+  bool prologue_succeeded() const { return _prologue_succeeded; }
+
+  void verify_before_gc();
+  void verify_after_gc();
+};
+
+
+// VM_CMS_Operation for the initial marking phase of CMS.
+class VM_CMS_Initial_Mark: public VM_CMS_Operation {
+ public:
+  VM_CMS_Initial_Mark(CMSCollector* _collector) :
+    VM_CMS_Operation(_collector) {}
+
+  virtual VMOp_Type type() const { return VMOp_CMS_Initial_Mark; }
+  virtual void doit();
+
+  virtual const CMSCollector::CollectorState legal_state() const {
+    return CMSCollector::InitialMarking;
+  }
+
+  virtual const bool needs_pending_list_lock() const {
+    return false;
+  }
+};
+
+// VM_CMS_Operation for the final remark phase of CMS.
+class VM_CMS_Final_Remark: public VM_CMS_Operation {
+ public:
+  VM_CMS_Final_Remark(CMSCollector* _collector) :
+    VM_CMS_Operation(_collector) {}
+  virtual VMOp_Type type() const { return VMOp_CMS_Final_Remark; }
+  virtual void doit();
+
+  virtual const CMSCollector::CollectorState legal_state() const {
+    return CMSCollector::FinalMarking;
+  }
+
+  virtual const bool needs_pending_list_lock() const {
+    return true;
+  }
+};
+
+
+// VM operation to invoke a concurrent collection of the heap as a
+// GenCollectedHeap heap.
+class VM_GenCollectFullConcurrent: public VM_GC_Operation {
+ public:
+  VM_GenCollectFullConcurrent(uint gc_count_before,
+                              uint full_gc_count_before,
+                              GCCause::Cause gc_cause)
+    : VM_GC_Operation(gc_count_before, gc_cause, full_gc_count_before, true /* full */)
+  {
+    assert(FullGCCount_lock != NULL, "Error");
+  }
+  ~VM_GenCollectFullConcurrent() {}
+  virtual VMOp_Type type() const { return VMOp_GenCollectFullConcurrent; }
+  virtual void doit();
+  virtual void doit_epilogue();
+  virtual bool is_cheap_allocated() const { return false; }
+  virtual bool evaluate_at_safepoint() const;
+};
+
+#endif // SHARE_VM_GC_CMS_CMSVMOPERATIONS_HPP
--- a/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -32,12 +32,12 @@
 #include "gc/cms/cmsGCStats.hpp"
 #include "gc/cms/cmsHeap.hpp"
 #include "gc/cms/cmsOopClosures.inline.hpp"
+#include "gc/cms/cmsVMOperations.hpp"
 #include "gc/cms/compactibleFreeListSpace.hpp"
 #include "gc/cms/concurrentMarkSweepGeneration.inline.hpp"
 #include "gc/cms/concurrentMarkSweepThread.hpp"
 #include "gc/cms/parNewGeneration.hpp"
 #include "gc/cms/promotionInfo.inline.hpp"
-#include "gc/cms/vmCMSOperations.hpp"
 #include "gc/serial/genMarkSweep.hpp"
 #include "gc/serial/tenuredGeneration.hpp"
 #include "gc/shared/adaptiveSizePolicy.hpp"
--- a/src/hotspot/share/gc/cms/vmCMSOperations.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,254 +0,0 @@
-/*
- * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "gc/cms/cmsHeap.hpp"
-#include "gc/cms/concurrentMarkSweepGeneration.inline.hpp"
-#include "gc/cms/concurrentMarkSweepThread.hpp"
-#include "gc/cms/vmCMSOperations.hpp"
-#include "gc/shared/gcLocker.hpp"
-#include "gc/shared/gcTimer.hpp"
-#include "gc/shared/gcTraceTime.inline.hpp"
-#include "gc/shared/isGCActiveMark.hpp"
-#include "runtime/handles.inline.hpp"
-#include "runtime/interfaceSupport.inline.hpp"
-#include "runtime/os.hpp"
-#include "utilities/dtrace.hpp"
-
-//////////////////////////////////////////////////////////
-// Methods in abstract class VM_CMS_Operation
-//////////////////////////////////////////////////////////
-void VM_CMS_Operation::verify_before_gc() {
-  if (VerifyBeforeGC &&
-      CMSHeap::heap()->total_collections() >= VerifyGCStartAt) {
-    GCTraceTime(Info, gc, phases, verify) tm("Verify Before", _collector->_gc_timer_cm);
-    HandleMark hm;
-    FreelistLocker x(_collector);
-    MutexLockerEx  y(_collector->bitMapLock(), Mutex::_no_safepoint_check_flag);
-    CMSHeap::heap()->prepare_for_verify();
-    Universe::verify();
-  }
-}
-
-void VM_CMS_Operation::verify_after_gc() {
-  if (VerifyAfterGC &&
-      CMSHeap::heap()->total_collections() >= VerifyGCStartAt) {
-    GCTraceTime(Info, gc, phases, verify) tm("Verify After", _collector->_gc_timer_cm);
-    HandleMark hm;
-    FreelistLocker x(_collector);
-    MutexLockerEx  y(_collector->bitMapLock(), Mutex::_no_safepoint_check_flag);
-    Universe::verify();
-  }
-}
-
-bool VM_CMS_Operation::lost_race() const {
-  if (CMSCollector::abstract_state() == CMSCollector::Idling) {
-    // We lost a race to a foreground collection
-    // -- there's nothing to do
-    return true;
-  }
-  assert(CMSCollector::abstract_state() == legal_state(),
-         "Inconsistent collector state?");
-  return false;
-}
-
-bool VM_CMS_Operation::doit_prologue() {
-  assert(Thread::current()->is_ConcurrentGC_thread(), "just checking");
-  assert(!CMSCollector::foregroundGCShouldWait(), "Possible deadlock");
-  assert(!ConcurrentMarkSweepThread::cms_thread_has_cms_token(),
-         "Possible deadlock");
-
-  Heap_lock->lock();
-  if (lost_race()) {
-    assert(_prologue_succeeded == false, "Initialized in c'tor");
-    Heap_lock->unlock();
-  } else {
-    _prologue_succeeded = true;
-  }
-  return _prologue_succeeded;
-}
-
-void VM_CMS_Operation::doit_epilogue() {
-  assert(Thread::current()->is_ConcurrentGC_thread(), "just checking");
-  assert(!CMSCollector::foregroundGCShouldWait(), "Possible deadlock");
-  assert(!ConcurrentMarkSweepThread::cms_thread_has_cms_token(),
-         "Possible deadlock");
-
-  if (Universe::has_reference_pending_list()) {
-    Heap_lock->notify_all();
-  }
-  Heap_lock->unlock();
-}
-
-//////////////////////////////////////////////////////////
-// Methods in class VM_CMS_Initial_Mark
-//////////////////////////////////////////////////////////
-void VM_CMS_Initial_Mark::doit() {
-  if (lost_race()) {
-    // Nothing to do.
-    return;
-  }
-  HS_PRIVATE_CMS_INITMARK_BEGIN();
-  GCIdMark gc_id_mark(_gc_id);
-
-  _collector->_gc_timer_cm->register_gc_pause_start("Initial Mark");
-
-  CMSHeap* heap = CMSHeap::heap();
-  GCCauseSetter gccs(heap, GCCause::_cms_initial_mark);
-
-  VM_CMS_Operation::verify_before_gc();
-
-  IsGCActiveMark x; // stop-world GC active
-  _collector->do_CMS_operation(CMSCollector::CMS_op_checkpointRootsInitial, heap->gc_cause());
-
-  VM_CMS_Operation::verify_after_gc();
-
-  _collector->_gc_timer_cm->register_gc_pause_end();
-
-  HS_PRIVATE_CMS_INITMARK_END();
-}
-
-//////////////////////////////////////////////////////////
-// Methods in class VM_CMS_Final_Remark_Operation
-//////////////////////////////////////////////////////////
-void VM_CMS_Final_Remark::doit() {
-  if (lost_race()) {
-    // Nothing to do.
-    return;
-  }
-  HS_PRIVATE_CMS_REMARK_BEGIN();
-  GCIdMark gc_id_mark(_gc_id);
-
-  _collector->_gc_timer_cm->register_gc_pause_start("Final Mark");
-
-  CMSHeap* heap = CMSHeap::heap();
-  GCCauseSetter gccs(heap, GCCause::_cms_final_remark);
-
-  VM_CMS_Operation::verify_before_gc();
-
-  IsGCActiveMark x; // stop-world GC active
-  _collector->do_CMS_operation(CMSCollector::CMS_op_checkpointRootsFinal, heap->gc_cause());
-
-  VM_CMS_Operation::verify_after_gc();
-
-  _collector->save_heap_summary();
-  _collector->_gc_timer_cm->register_gc_pause_end();
-
-  HS_PRIVATE_CMS_REMARK_END();
-}
-
-// VM operation to invoke a concurrent collection of a
-// GenCollectedHeap heap.
-void VM_GenCollectFullConcurrent::doit() {
-  assert(Thread::current()->is_VM_thread(), "Should be VM thread");
-  assert(GCLockerInvokesConcurrent || ExplicitGCInvokesConcurrent, "Unexpected");
-
-  CMSHeap* heap = CMSHeap::heap();
-  if (_gc_count_before == heap->total_collections()) {
-    // The "full" of do_full_collection call below "forces"
-    // a collection; the second arg, 0, below ensures that
-    // only the young gen is collected. XXX In the future,
-    // we'll probably need to have something in this interface
-    // to say do this only if we are sure we will not bail
-    // out to a full collection in this attempt, but that's
-    // for the future.
-    assert(SafepointSynchronize::is_at_safepoint(),
-      "We can only be executing this arm of if at a safepoint");
-    GCCauseSetter gccs(heap, _gc_cause);
-    heap->do_full_collection(heap->must_clear_all_soft_refs(), GenCollectedHeap::YoungGen);
-  } // Else no need for a foreground young gc
-  assert((_gc_count_before < heap->total_collections()) ||
-         (GCLocker::is_active() /* gc may have been skipped */
-          && (_gc_count_before == heap->total_collections())),
-         "total_collections() should be monotonically increasing");
-
-  MutexLockerEx x(FullGCCount_lock, Mutex::_no_safepoint_check_flag);
-  assert(_full_gc_count_before <= heap->total_full_collections(), "Error");
-  if (heap->total_full_collections() == _full_gc_count_before) {
-    // Nudge the CMS thread to start a concurrent collection.
-    CMSCollector::request_full_gc(_full_gc_count_before, _gc_cause);
-  } else {
-    assert(_full_gc_count_before < heap->total_full_collections(), "Error");
-    FullGCCount_lock->notify_all();  // Inform the Java thread its work is done
-  }
-}
-
-bool VM_GenCollectFullConcurrent::evaluate_at_safepoint() const {
-  Thread* thr = Thread::current();
-  assert(thr != NULL, "Unexpected tid");
-  if (!thr->is_Java_thread()) {
-    assert(thr->is_VM_thread(), "Expected to be evaluated by VM thread");
-    CMSHeap* heap = CMSHeap::heap();
-    if (_gc_count_before != heap->total_collections()) {
-      // No need to do a young gc, we'll just nudge the CMS thread
-      // in the doit() method above, to be executed soon.
-      assert(_gc_count_before < heap->total_collections(),
-             "total_collections() should be monotonically increasing");
-      return false;  // no need for foreground young gc
-    }
-  }
-  return true;       // may still need foreground young gc
-}
-
-
-void VM_GenCollectFullConcurrent::doit_epilogue() {
-  Thread* thr = Thread::current();
-  assert(thr->is_Java_thread(), "just checking");
-  JavaThread* jt = (JavaThread*)thr;
-
-  if (Universe::has_reference_pending_list()) {
-    Heap_lock->notify_all();
-  }
-  Heap_lock->unlock();
-
-  // It is fine to test whether completed collections has
-  // exceeded our request count without locking because
-  // the completion count is monotonically increasing;
-  // this will break for very long-running apps when the
-  // count overflows and wraps around. XXX fix me !!!
-  // e.g. at the rate of 1 full gc per ms, this could
-  // overflow in about 1000 years.
-  CMSHeap* heap = CMSHeap::heap();
-  if (_gc_cause != GCCause::_gc_locker &&
-      heap->total_full_collections_completed() <= _full_gc_count_before) {
-    // maybe we should change the condition to test _gc_cause ==
-    // GCCause::_java_lang_system_gc or GCCause::_dcmd_gc_run,
-    // instead of _gc_cause != GCCause::_gc_locker
-    assert(GCCause::is_user_requested_gc(_gc_cause),
-           "the only way to get here if this was a System.gc()-induced GC");
-    assert(ExplicitGCInvokesConcurrent, "Error");
-    // Now, wait for witnessing concurrent gc cycle to complete,
-    // but do so in native mode, because we want to lock the
-    // FullGCEvent_lock, which may be needed by the VM thread
-    // or by the CMS thread, so we do not want to be suspended
-    // while holding that lock.
-    ThreadToNativeFromVM native(jt);
-    MutexLockerEx ml(FullGCCount_lock, Mutex::_no_safepoint_check_flag);
-    // Either a concurrent or a stop-world full gc is sufficient
-    // witness to our request.
-    while (heap->total_full_collections_completed() <= _full_gc_count_before) {
-      FullGCCount_lock->wait(Mutex::_no_safepoint_check_flag);
-    }
-  }
-}
--- a/src/hotspot/share/gc/cms/vmCMSOperations.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-/*
- * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_GC_CMS_VMCMSOPERATIONS_HPP
-#define SHARE_VM_GC_CMS_VMCMSOPERATIONS_HPP
-
-#include "gc/cms/concurrentMarkSweepGeneration.hpp"
-#include "gc/shared/gcCause.hpp"
-#include "gc/shared/gcId.hpp"
-#include "gc/shared/vmGCOperations.hpp"
-#include "runtime/vm_operations.hpp"
-
-// The VM_CMS_Operation is slightly different from
-// a VM_GC_Operation -- and would not have subclassed easily
-// to VM_GC_Operation without several changes to VM_GC_Operation.
-// To minimize the changes, we have replicated some of the VM_GC_Operation
-// functionality here. We will consolidate that back by doing subclassing
-// as appropriate in Dolphin.
-//
-//  VM_Operation
-//    VM_CMS_Operation
-//    - implements the common portion of work done in support
-//      of CMS' stop-world phases (initial mark and remark).
-//
-//      VM_CMS_Initial_Mark
-//      VM_CMS_Final_Mark
-//
-
-// Forward decl.
-class CMSCollector;
-
-class VM_CMS_Operation: public VM_Operation {
- protected:
-  CMSCollector*  _collector;                 // associated collector
-  bool           _prologue_succeeded;     // whether doit_prologue succeeded
-  uint           _gc_id;
-
-  bool lost_race() const;
-
- public:
-  VM_CMS_Operation(CMSCollector* collector):
-    _collector(collector),
-    _prologue_succeeded(false),
-    _gc_id(GCId::current()) {}
-  ~VM_CMS_Operation() {}
-
-  // The legal collector state for executing this CMS op.
-  virtual const CMSCollector::CollectorState legal_state() const = 0;
-
-  // Whether the pending list lock needs to be held
-  virtual const bool needs_pending_list_lock() const = 0;
-
-  // Execute operations in the context of the caller,
-  // prior to execution of the vm operation itself.
-  virtual bool doit_prologue();
-  // Execute operations in the context of the caller,
-  // following completion of the vm operation.
-  virtual void doit_epilogue();
-
-  virtual bool evaluate_at_safepoint() const { return true; }
-  virtual bool is_cheap_allocated() const { return false; }
-  virtual bool allow_nested_vm_operations() const  { return false; }
-  bool prologue_succeeded() const { return _prologue_succeeded; }
-
-  void verify_before_gc();
-  void verify_after_gc();
-};
-
-
-// VM_CMS_Operation for the initial marking phase of CMS.
-class VM_CMS_Initial_Mark: public VM_CMS_Operation {
- public:
-  VM_CMS_Initial_Mark(CMSCollector* _collector) :
-    VM_CMS_Operation(_collector) {}
-
-  virtual VMOp_Type type() const { return VMOp_CMS_Initial_Mark; }
-  virtual void doit();
-
-  virtual const CMSCollector::CollectorState legal_state() const {
-    return CMSCollector::InitialMarking;
-  }
-
-  virtual const bool needs_pending_list_lock() const {
-    return false;
-  }
-};
-
-// VM_CMS_Operation for the final remark phase of CMS.
-class VM_CMS_Final_Remark: public VM_CMS_Operation {
- public:
-  VM_CMS_Final_Remark(CMSCollector* _collector) :
-    VM_CMS_Operation(_collector) {}
-  virtual VMOp_Type type() const { return VMOp_CMS_Final_Remark; }
-  virtual void doit();
-
-  virtual const CMSCollector::CollectorState legal_state() const {
-    return CMSCollector::FinalMarking;
-  }
-
-  virtual const bool needs_pending_list_lock() const {
-    return true;
-  }
-};
-
-
-// VM operation to invoke a concurrent collection of the heap as a
-// GenCollectedHeap heap.
-class VM_GenCollectFullConcurrent: public VM_GC_Operation {
- public:
-  VM_GenCollectFullConcurrent(uint gc_count_before,
-                              uint full_gc_count_before,
-                              GCCause::Cause gc_cause)
-    : VM_GC_Operation(gc_count_before, gc_cause, full_gc_count_before, true /* full */)
-  {
-    assert(FullGCCount_lock != NULL, "Error");
-  }
-  ~VM_GenCollectFullConcurrent() {}
-  virtual VMOp_Type type() const { return VMOp_GenCollectFullConcurrent; }
-  virtual void doit();
-  virtual void doit_epilogue();
-  virtual bool is_cheap_allocated() const { return false; }
-  virtual bool evaluate_at_safepoint() const;
-};
-
-#endif // SHARE_VM_GC_CMS_VMCMSOPERATIONS_HPP
--- a/src/hotspot/share/gc/g1/g1Allocator.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1Allocator.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -84,8 +84,6 @@
     // we allocate to in the region sets. We'll re-add it later, when
     // it's retired again.
     _g1h->old_set_remove(retained_region);
-    bool during_im = _g1h->collector_state()->in_initial_mark_gc();
-    retained_region->note_start_of_copying(during_im);
     old->set(retained_region);
     _g1h->hr_printer()->reuse(retained_region);
     evacuation_info.set_alloc_regions_used_before(retained_region->used());
--- a/src/hotspot/share/gc/g1/g1Arguments.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1Arguments.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -44,10 +44,12 @@
     size_t length = strlen(VerifyGCType);
     char* type_list = NEW_C_HEAP_ARRAY(char, length + 1, mtInternal);
     strncpy(type_list, VerifyGCType, length + 1);
-    char* token = strtok(type_list, delimiter);
+    char* save_ptr;
+
+    char* token = strtok_r(type_list, delimiter, &save_ptr);
     while (token != NULL) {
       parse_verification_type(token);
-      token = strtok(NULL, delimiter);
+      token = strtok_r(NULL, delimiter, &save_ptr);
     }
     FREE_C_HEAP_ARRAY(char, type_list);
   }
--- a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -57,10 +57,10 @@
 #include "gc/g1/g1ThreadLocalData.hpp"
 #include "gc/g1/g1YCTypes.hpp"
 #include "gc/g1/g1YoungRemSetSamplingThread.hpp"
+#include "gc/g1/g1VMOperations.hpp"
 #include "gc/g1/heapRegion.inline.hpp"
 #include "gc/g1/heapRegionRemSet.hpp"
 #include "gc/g1/heapRegionSet.inline.hpp"
-#include "gc/g1/vm_operations_g1.hpp"
 #include "gc/shared/adaptiveSizePolicy.hpp"
 #include "gc/shared/gcBehaviours.hpp"
 #include "gc/shared/gcHeapSummary.hpp"
@@ -3002,11 +3002,15 @@
         // Initialize the GC alloc regions.
         _allocator->init_gc_alloc_regions(evacuation_info);
 
-        G1ParScanThreadStateSet per_thread_states(this, workers()->active_workers(), collection_set()->young_region_length());
+        G1ParScanThreadStateSet per_thread_states(this,
+                                                  workers()->active_workers(),
+                                                  collection_set()->young_region_length(),
+                                                  collection_set()->optional_region_length());
         pre_evacuate_collection_set();
 
         // Actually do the work...
         evacuate_collection_set(&per_thread_states);
+        evacuate_optional_collection_set(&per_thread_states);
 
         post_evacuate_collection_set(evacuation_info, &per_thread_states);
 
@@ -3197,11 +3201,11 @@
   EventGCPhaseParallel event;
   G1ParScanThreadState* const pss = par_scan_state();
   pss->trim_queue();
-  event.commit(GCId::current(), pss->worker_id(), G1GCPhaseTimes::phase_name(G1GCPhaseTimes::ObjCopy));
+  event.commit(GCId::current(), pss->worker_id(), G1GCPhaseTimes::phase_name(_phase));
   do {
     EventGCPhaseParallel event;
     pss->steal_and_trim_queue(queues());
-    event.commit(GCId::current(), pss->worker_id(), G1GCPhaseTimes::phase_name(G1GCPhaseTimes::ObjCopy));
+    event.commit(GCId::current(), pss->worker_id(), G1GCPhaseTimes::phase_name(_phase));
   } while (!offer_termination());
 }
 
@@ -3256,7 +3260,7 @@
       size_t evac_term_attempts = 0;
       {
         double start = os::elapsedTime();
-        G1ParEvacuateFollowersClosure evac(_g1h, pss, _queues, &_terminator);
+        G1ParEvacuateFollowersClosure evac(_g1h, pss, _queues, &_terminator, G1GCPhaseTimes::ObjCopy);
         evac.do_void();
 
         evac_term_attempts = evac.term_attempts();
@@ -3547,7 +3551,7 @@
     G1CopyingKeepAliveClosure keep_alive(_g1h, pss);
 
     // Complete GC closure
-    G1ParEvacuateFollowersClosure drain_queue(_g1h, pss, _task_queues, _terminator);
+    G1ParEvacuateFollowersClosure drain_queue(_g1h, pss, _task_queues, _terminator, G1GCPhaseTimes::ObjCopy);
 
     // Call the reference processing task's work routine.
     _proc_task.work(worker_id, is_alive, keep_alive, drain_queue);
@@ -3719,6 +3723,145 @@
   phase_times->record_code_root_fixup_time(code_root_fixup_time_ms);
 }
 
+class G1EvacuateOptionalRegionTask : public AbstractGangTask {
+  G1CollectedHeap* _g1h;
+  G1ParScanThreadStateSet* _per_thread_states;
+  G1OptionalCSet* _optional;
+  RefToScanQueueSet* _queues;
+  ParallelTaskTerminator _terminator;
+
+  Tickspan trim_ticks(G1ParScanThreadState* pss) {
+    Tickspan copy_time = pss->trim_ticks();
+    pss->reset_trim_ticks();
+    return copy_time;
+  }
+
+  void scan_roots(G1ParScanThreadState* pss, uint worker_id) {
+    G1EvacuationRootClosures* root_cls = pss->closures();
+    G1ScanObjsDuringScanRSClosure obj_cl(_g1h, pss);
+
+    size_t scanned = 0;
+    size_t claimed = 0;
+    size_t skipped = 0;
+    size_t used_memory = 0;
+
+    Ticks    start = Ticks::now();
+    Tickspan copy_time;
+
+    for (uint i = _optional->current_index(); i < _optional->current_limit(); i++) {
+      HeapRegion* hr = _optional->region_at(i);
+      G1ScanRSForOptionalClosure scan_opt_cl(&obj_cl);
+      pss->oops_into_optional_region(hr)->oops_do(&scan_opt_cl, root_cls->raw_strong_oops());
+      copy_time += trim_ticks(pss);
+
+      G1ScanRSForRegionClosure scan_rs_cl(_g1h->g1_rem_set()->scan_state(), &obj_cl, pss, G1GCPhaseTimes::OptScanRS, worker_id);
+      scan_rs_cl.do_heap_region(hr);
+      copy_time += trim_ticks(pss);
+      scanned += scan_rs_cl.cards_scanned();
+      claimed += scan_rs_cl.cards_claimed();
+      skipped += scan_rs_cl.cards_skipped();
+
+      // Chunk lists for this region is no longer needed.
+      used_memory += pss->oops_into_optional_region(hr)->used_memory();
+    }
+
+    Tickspan scan_time = (Ticks::now() - start) - copy_time;
+    G1GCPhaseTimes* p = _g1h->g1_policy()->phase_times();
+    p->record_or_add_time_secs(G1GCPhaseTimes::OptScanRS, worker_id, scan_time.seconds());
+    p->record_or_add_time_secs(G1GCPhaseTimes::OptObjCopy, worker_id, copy_time.seconds());
+
+    p->record_or_add_thread_work_item(G1GCPhaseTimes::OptScanRS, worker_id, scanned, G1GCPhaseTimes::OptCSetScannedCards);
+    p->record_or_add_thread_work_item(G1GCPhaseTimes::OptScanRS, worker_id, claimed, G1GCPhaseTimes::OptCSetClaimedCards);
+    p->record_or_add_thread_work_item(G1GCPhaseTimes::OptScanRS, worker_id, skipped, G1GCPhaseTimes::OptCSetSkippedCards);
+    p->record_or_add_thread_work_item(G1GCPhaseTimes::OptScanRS, worker_id, used_memory, G1GCPhaseTimes::OptCSetUsedMemory);
+  }
+
+  void evacuate_live_objects(G1ParScanThreadState* pss, uint worker_id) {
+    Ticks start = Ticks::now();
+    G1ParEvacuateFollowersClosure cl(_g1h, pss, _queues, &_terminator, G1GCPhaseTimes::OptObjCopy);
+    cl.do_void();
+
+    Tickspan evac_time = (Ticks::now() - start);
+    G1GCPhaseTimes* p = _g1h->g1_policy()->phase_times();
+    p->record_or_add_time_secs(G1GCPhaseTimes::OptObjCopy, worker_id, evac_time.seconds());
+    assert(pss->trim_ticks().seconds() == 0.0, "Unexpected partial trimming done during optional evacuation");
+  }
+
+ public:
+  G1EvacuateOptionalRegionTask(G1CollectedHeap* g1h,
+                               G1ParScanThreadStateSet* per_thread_states,
+                               G1OptionalCSet* cset,
+                               RefToScanQueueSet* queues,
+                               uint n_workers) :
+    AbstractGangTask("G1 Evacuation Optional Region Task"),
+    _g1h(g1h),
+    _per_thread_states(per_thread_states),
+    _optional(cset),
+    _queues(queues),
+    _terminator(n_workers, _queues) {
+  }
+
+  void work(uint worker_id) {
+    ResourceMark rm;
+    HandleMark  hm;
+
+    G1ParScanThreadState* pss = _per_thread_states->state_for_worker(worker_id);
+    pss->set_ref_discoverer(_g1h->ref_processor_stw());
+
+    scan_roots(pss, worker_id);
+    evacuate_live_objects(pss, worker_id);
+  }
+};
+
+void G1CollectedHeap::evacuate_optional_regions(G1ParScanThreadStateSet* per_thread_states, G1OptionalCSet* ocset) {
+  class G1MarkScope : public MarkScope {};
+  G1MarkScope code_mark_scope;
+
+  G1EvacuateOptionalRegionTask task(this, per_thread_states, ocset, _task_queues, workers()->active_workers());
+  workers()->run_task(&task);
+}
+
+void G1CollectedHeap::evacuate_optional_collection_set(G1ParScanThreadStateSet* per_thread_states) {
+  G1OptionalCSet optional_cset(&_collection_set, per_thread_states);
+  if (optional_cset.is_empty()) {
+    return;
+  }
+
+  if (evacuation_failed()) {
+    return;
+  }
+
+  G1GCPhaseTimes* phase_times = g1_policy()->phase_times();
+  const double gc_start_time_ms = phase_times->cur_collection_start_sec() * 1000.0;
+
+  double start_time_sec = os::elapsedTime();
+
+  do {
+    double time_used_ms = os::elapsedTime() * 1000.0 - gc_start_time_ms;
+    double time_left_ms = MaxGCPauseMillis - time_used_ms;
+
+    if (time_left_ms < 0) {
+      log_trace(gc, ergo, cset)("Skipping %u optional regions, pause time exceeded %.3fms", optional_cset.size(), time_used_ms);
+      break;
+    }
+
+    optional_cset.prepare_evacuation(time_left_ms * _g1_policy->optional_evacuation_fraction());
+    if (optional_cset.prepare_failed()) {
+      log_trace(gc, ergo, cset)("Skipping %u optional regions, no regions can be evacuated in %.3fms", optional_cset.size(), time_left_ms);
+      break;
+    }
+
+    evacuate_optional_regions(per_thread_states, &optional_cset);
+
+    optional_cset.complete_evacuation();
+    if (optional_cset.evacuation_failed()) {
+      break;
+    }
+  } while (!optional_cset.is_empty());
+
+  phase_times->record_optional_evacuation((os::elapsedTime() - start_time_sec) * 1000.0);
+}
+
 void G1CollectedHeap::post_evacuate_collection_set(EvacuationInfo& evacuation_info, G1ParScanThreadStateSet* per_thread_states) {
   // Also cleans the card table from temporary duplicate detection information used
   // during UpdateRS/ScanRS.
@@ -4533,8 +4676,6 @@
     }
     _g1_policy->remset_tracker()->update_at_allocate(new_alloc_region);
     _hr_printer.alloc(new_alloc_region);
-    bool during_im = collector_state()->in_initial_mark_gc();
-    new_alloc_region->note_start_of_copying(during_im);
     return new_alloc_region;
   }
   return NULL;
@@ -4543,12 +4684,15 @@
 void G1CollectedHeap::retire_gc_alloc_region(HeapRegion* alloc_region,
                                              size_t allocated_bytes,
                                              InCSetState dest) {
-  bool during_im = collector_state()->in_initial_mark_gc();
-  alloc_region->note_end_of_copying(during_im);
   g1_policy()->record_bytes_copied_during_gc(allocated_bytes);
   if (dest.is_old()) {
     old_set_add(alloc_region);
   }
+
+  bool const during_im = collector_state()->in_initial_mark_gc();
+  if (during_im && allocated_bytes > 0) {
+    _cm->root_regions()->add(alloc_region);
+  }
   _hr_printer.retire(alloc_region);
 }
 
--- a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -35,6 +35,7 @@
 #include "gc/g1/g1EdenRegions.hpp"
 #include "gc/g1/g1EvacFailure.hpp"
 #include "gc/g1/g1EvacStats.hpp"
+#include "gc/g1/g1GCPhaseTimes.hpp"
 #include "gc/g1/g1HeapTransition.hpp"
 #include "gc/g1/g1HeapVerifier.hpp"
 #include "gc/g1/g1HRPrinter.hpp"
@@ -567,6 +568,9 @@
   void register_old_region_with_cset(HeapRegion* r) {
     _in_cset_fast_test.set_in_old(r->hrm_index());
   }
+  void register_optional_region_with_cset(HeapRegion* r) {
+    _in_cset_fast_test.set_optional(r->hrm_index());
+  }
   void clear_in_cset(const HeapRegion* hr) {
     _in_cset_fast_test.clear(hr);
   }
@@ -723,6 +727,8 @@
 
   // Actually do the work of evacuating the collection set.
   void evacuate_collection_set(G1ParScanThreadStateSet* per_thread_states);
+  void evacuate_optional_collection_set(G1ParScanThreadStateSet* per_thread_states);
+  void evacuate_optional_regions(G1ParScanThreadStateSet* per_thread_states, G1OptionalCSet* ocset);
 
   void pre_evacuate_collection_set();
   void post_evacuate_collection_set(EvacuationInfo& evacuation_info, G1ParScanThreadStateSet* pss);
@@ -1405,6 +1411,7 @@
   G1ParScanThreadState*         _par_scan_state;
   RefToScanQueueSet*            _queues;
   ParallelTaskTerminator*       _terminator;
+  G1GCPhaseTimes::GCParPhases   _phase;
 
   G1ParScanThreadState*   par_scan_state() { return _par_scan_state; }
   RefToScanQueueSet*      queues()         { return _queues; }
@@ -1414,10 +1421,11 @@
   G1ParEvacuateFollowersClosure(G1CollectedHeap* g1h,
                                 G1ParScanThreadState* par_scan_state,
                                 RefToScanQueueSet* queues,
-                                ParallelTaskTerminator* terminator)
+                                ParallelTaskTerminator* terminator,
+                                G1GCPhaseTimes::GCParPhases phase)
     : _start_term(0.0), _term_time(0.0), _term_attempts(0),
       _g1h(g1h), _par_scan_state(par_scan_state),
-      _queues(queues), _terminator(terminator) {}
+      _queues(queues), _terminator(terminator), _phase(phase) {}
 
   void do_void();
 
--- a/src/hotspot/share/gc/g1/g1CollectionSet.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1CollectionSet.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -23,15 +23,17 @@
  */
 
 #include "precompiled.hpp"
-#include "gc/g1/g1CollectedHeap.hpp"
+#include "gc/g1/g1CollectedHeap.inline.hpp"
 #include "gc/g1/g1CollectionSet.hpp"
 #include "gc/g1/g1CollectorState.hpp"
+#include "gc/g1/g1ParScanThreadState.hpp"
 #include "gc/g1/g1Policy.hpp"
 #include "gc/g1/heapRegion.inline.hpp"
 #include "gc/g1/heapRegionRemSet.hpp"
 #include "gc/g1/heapRegionSet.hpp"
 #include "logging/logStream.hpp"
 #include "utilities/debug.hpp"
+#include "utilities/globalDefinitions.hpp"
 #include "utilities/quickSort.hpp"
 
 G1CollectorState* G1CollectionSet::collector_state() {
@@ -60,6 +62,9 @@
   _collection_set_regions(NULL),
   _collection_set_cur_length(0),
   _collection_set_max_length(0),
+  _optional_regions(NULL),
+  _optional_region_length(0),
+  _optional_region_max_length(0),
   _bytes_used_before(0),
   _recorded_rs_lengths(0),
   _inc_build_state(Inactive),
@@ -74,6 +79,7 @@
   if (_collection_set_regions != NULL) {
     FREE_C_HEAP_ARRAY(uint, _collection_set_regions);
   }
+  free_optional_regions();
   delete _cset_chooser;
 }
 
@@ -88,6 +94,7 @@
          "Young region length %u should match collection set length " SIZE_FORMAT, young_region_length(), _collection_set_cur_length);
 
   _old_region_length      = 0;
+  _optional_region_length = 0;
 }
 
 void G1CollectionSet::initialize(uint max_region_length) {
@@ -96,6 +103,23 @@
   _collection_set_regions = NEW_C_HEAP_ARRAY(uint, max_region_length, mtGC);
 }
 
+void G1CollectionSet::initialize_optional(uint max_length) {
+  assert(_optional_regions == NULL, "Already initialized");
+  assert(_optional_region_length == 0, "Already initialized");
+  assert(_optional_region_max_length == 0, "Already initialized");
+  _optional_region_max_length = max_length;
+  _optional_regions = NEW_C_HEAP_ARRAY(HeapRegion*, _optional_region_max_length, mtGC);
+}
+
+void G1CollectionSet::free_optional_regions() {
+  _optional_region_length = 0;
+  _optional_region_max_length = 0;
+  if (_optional_regions != NULL) {
+    FREE_C_HEAP_ARRAY(HeapRegion*, _optional_regions);
+    _optional_regions = NULL;
+  }
+}
+
 void G1CollectionSet::set_recorded_rs_lengths(size_t rs_lengths) {
   _recorded_rs_lengths = rs_lengths;
 }
@@ -104,7 +128,8 @@
 void G1CollectionSet::add_old_region(HeapRegion* hr) {
   assert_at_safepoint_on_vm_thread();
 
-  assert(_inc_build_state == Active, "Precondition");
+  assert(_inc_build_state == Active || hr->index_in_opt_cset() != G1OptionalCSet::InvalidCSetIndex,
+         "Precondition, actively building cset or adding optional later on");
   assert(hr->is_old(), "the region should be old");
 
   assert(!hr->in_collection_set(), "should not already be in the CSet");
@@ -117,6 +142,22 @@
   size_t rs_length = hr->rem_set()->occupied();
   _recorded_rs_lengths += rs_length;
   _old_region_length += 1;
+
+  log_trace(gc, cset)("Added old region %d to collection set", hr->hrm_index());
+}
+
+void G1CollectionSet::add_optional_region(HeapRegion* hr) {
+  assert(!optional_is_full(), "Precondition, must have room left for this region");
+  assert(hr->is_old(), "the region should be old");
+  assert(!hr->in_collection_set(), "should not already be in the CSet");
+
+  _g1h->register_optional_region_with_cset(hr);
+
+  _optional_regions[_optional_region_length] = hr;
+  uint index = _optional_region_length++;
+  hr->set_index_in_opt_cset(index);
+
+  log_trace(gc, cset)("Added region %d to optional collection set (%u)", hr->hrm_index(), _optional_region_length);
 }
 
 // Initialize the per-collection-set information
@@ -168,6 +209,7 @@
 void G1CollectionSet::clear() {
   assert_at_safepoint_on_vm_thread();
   _collection_set_cur_length = 0;
+  _optional_region_length = 0;
 }
 
 void G1CollectionSet::iterate(HeapRegionClosure* cl) const {
@@ -396,6 +438,30 @@
   return time_remaining_ms;
 }
 
+void G1CollectionSet::add_as_old(HeapRegion* hr) {
+  cset_chooser()->pop(); // already have region via peek()
+  _g1h->old_set_remove(hr);
+  add_old_region(hr);
+}
+
+void G1CollectionSet::add_as_optional(HeapRegion* hr) {
+  assert(_optional_regions != NULL, "Must not be called before array is allocated");
+  cset_chooser()->pop(); // already have region via peek()
+  _g1h->old_set_remove(hr);
+  add_optional_region(hr);
+}
+
+bool G1CollectionSet::optional_is_full() {
+  assert(_optional_region_length <= _optional_region_max_length, "Invariant");
+  return _optional_region_length == _optional_region_max_length;
+}
+
+void G1CollectionSet::clear_optional_region(const HeapRegion* hr) {
+  assert(_optional_regions != NULL, "Must not be called before array is allocated");
+  uint index = hr->index_in_opt_cset();
+  _optional_regions[index] = NULL;
+}
+
 static int compare_region_idx(const uint a, const uint b) {
   if (a > b) {
     return 1;
@@ -409,21 +475,28 @@
 void G1CollectionSet::finalize_old_part(double time_remaining_ms) {
   double non_young_start_time_sec = os::elapsedTime();
   double predicted_old_time_ms = 0.0;
+  double predicted_optional_time_ms = 0.0;
+  double optional_threshold_ms = time_remaining_ms * _policy->optional_prediction_fraction();
+  uint expensive_region_num = 0;
 
   if (collector_state()->in_mixed_phase()) {
     cset_chooser()->verify();
     const uint min_old_cset_length = _policy->calc_min_old_cset_length();
-    const uint max_old_cset_length = _policy->calc_max_old_cset_length();
+    const uint max_old_cset_length = MAX2(min_old_cset_length, _policy->calc_max_old_cset_length());
+    bool check_time_remaining = _policy->adaptive_young_list_length();
 
-    uint expensive_region_num = 0;
-    bool check_time_remaining = _policy->adaptive_young_list_length();
+    initialize_optional(max_old_cset_length - min_old_cset_length);
+    log_debug(gc, ergo, cset)("Start adding old regions for mixed gc. min %u regions, max %u regions, "
+                              "time remaining %1.2fms, optional threshold %1.2fms",
+                              min_old_cset_length, max_old_cset_length, time_remaining_ms, optional_threshold_ms);
 
     HeapRegion* hr = cset_chooser()->peek();
     while (hr != NULL) {
-      if (old_region_length() >= max_old_cset_length) {
+      if (old_region_length() + optional_region_length() >= max_old_cset_length) {
         // Added maximum number of old regions to the CSet.
-        log_debug(gc, ergo, cset)("Finish adding old regions to CSet (old CSet region num reached max). old %u regions, max %u regions",
-                                  old_region_length(), max_old_cset_length);
+        log_debug(gc, ergo, cset)("Finish adding old regions to CSet (old CSet region num reached max). "
+                                  "old %u regions, optional %u regions",
+                                  old_region_length(), optional_region_length());
         break;
       }
 
@@ -437,69 +510,66 @@
         // reclaimable space is at or below the waste threshold. Stop
         // adding old regions to the CSet.
         log_debug(gc, ergo, cset)("Finish adding old regions to CSet (reclaimable percentage not over threshold). "
-                                  "old %u regions, max %u regions, reclaimable: " SIZE_FORMAT "B (%1.2f%%) threshold: " UINTX_FORMAT "%%",
-                                  old_region_length(), max_old_cset_length, reclaimable_bytes, reclaimable_percent, G1HeapWastePercent);
+                                  "reclaimable: " SIZE_FORMAT "%s (%1.2f%%) threshold: " UINTX_FORMAT "%%",
+                                  byte_size_in_proper_unit(reclaimable_bytes), proper_unit_for_byte_size(reclaimable_bytes),
+                                  reclaimable_percent, G1HeapWastePercent);
         break;
       }
 
       double predicted_time_ms = predict_region_elapsed_time_ms(hr);
-      if (check_time_remaining) {
-        if (predicted_time_ms > time_remaining_ms) {
-          // Too expensive for the current CSet.
-
-          if (old_region_length() >= min_old_cset_length) {
-            // We have added the minimum number of old regions to the CSet,
-            // we are done with this CSet.
-            log_debug(gc, ergo, cset)("Finish adding old regions to CSet (predicted time is too high). "
-                                      "predicted time: %1.2fms, remaining time: %1.2fms old %u regions, min %u regions",
-                                      predicted_time_ms, time_remaining_ms, old_region_length(), min_old_cset_length);
+      time_remaining_ms = MAX2(time_remaining_ms - predicted_time_ms, 0.0);
+      // Add regions to old set until we reach minimum amount
+      if (old_region_length() < min_old_cset_length) {
+        predicted_old_time_ms += predicted_time_ms;
+        add_as_old(hr);
+        // Record the number of regions added when no time remaining
+        if (time_remaining_ms == 0.0) {
+          expensive_region_num++;
+        }
+      } else {
+        // In the non-auto-tuning case, we'll finish adding regions
+        // to the CSet if we reach the minimum.
+        if (!check_time_remaining) {
+          log_debug(gc, ergo, cset)("Finish adding old regions to CSet (old CSet region num reached min).");
+          break;
+        }
+        // Keep adding regions to old set until we reach optional threshold
+        if (time_remaining_ms > optional_threshold_ms) {
+          predicted_old_time_ms += predicted_time_ms;
+          add_as_old(hr);
+        } else if (time_remaining_ms > 0) {
+          // Keep adding optional regions until time is up
+          if (!optional_is_full()) {
+            predicted_optional_time_ms += predicted_time_ms;
+            add_as_optional(hr);
+          } else {
+            log_debug(gc, ergo, cset)("Finish adding old regions to CSet (optional set full).");
             break;
           }
-
-          // We'll add it anyway given that we haven't reached the
-          // minimum number of old regions.
-          expensive_region_num += 1;
-        }
-      } else {
-        if (old_region_length() >= min_old_cset_length) {
-          // In the non-auto-tuning case, we'll finish adding regions
-          // to the CSet if we reach the minimum.
-
-          log_debug(gc, ergo, cset)("Finish adding old regions to CSet (old CSet region num reached min). old %u regions, min %u regions",
-                                    old_region_length(), min_old_cset_length);
+        } else {
+          log_debug(gc, ergo, cset)("Finish adding old regions to CSet (predicted time is too high).");
           break;
         }
       }
-
-      // We will add this region to the CSet.
-      time_remaining_ms = MAX2(time_remaining_ms - predicted_time_ms, 0.0);
-      predicted_old_time_ms += predicted_time_ms;
-      cset_chooser()->pop(); // already have region via peek()
-      _g1h->old_set_remove(hr);
-      add_old_region(hr);
-
       hr = cset_chooser()->peek();
     }
     if (hr == NULL) {
       log_debug(gc, ergo, cset)("Finish adding old regions to CSet (candidate old regions not available)");
     }
 
-    if (expensive_region_num > 0) {
-      // We print the information once here at the end, predicated on
-      // whether we added any apparently expensive regions or not, to
-      // avoid generating output per region.
-      log_debug(gc, ergo, cset)("Added expensive regions to CSet (old CSet region num not reached min)."
-                                "old: %u regions, expensive: %u regions, min: %u regions, remaining time: %1.2fms",
-                                old_region_length(), expensive_region_num, min_old_cset_length, time_remaining_ms);
-    }
-
     cset_chooser()->verify();
   }
 
   stop_incremental_building();
 
-  log_debug(gc, ergo, cset)("Finish choosing CSet. old: %u regions, predicted old region time: %1.2fms, time remaining: %1.2f",
-                            old_region_length(), predicted_old_time_ms, time_remaining_ms);
+  log_debug(gc, ergo, cset)("Finish choosing CSet regions old: %u, optional: %u, "
+                            "predicted old time: %1.2fms, predicted optional time: %1.2fms, time remaining: %1.2f",
+                            old_region_length(), optional_region_length(),
+                            predicted_old_time_ms, predicted_optional_time_ms, time_remaining_ms);
+  if (expensive_region_num > 0) {
+    log_debug(gc, ergo, cset)("CSet contains %u old regions that were added although the predicted time was too high.",
+                              expensive_region_num);
+  }
 
   double non_young_end_time_sec = os::elapsedTime();
   phase_times()->record_non_young_cset_choice_time_ms((non_young_end_time_sec - non_young_start_time_sec) * 1000.0);
@@ -507,6 +577,86 @@
   QuickSort::sort(_collection_set_regions, _collection_set_cur_length, compare_region_idx, true);
 }
 
+HeapRegion* G1OptionalCSet::region_at(uint index) {
+  return _cset->optional_region_at(index);
+}
+
+void G1OptionalCSet::prepare_evacuation(double time_limit) {
+  assert(_current_index == _current_limit, "Before prepare no regions should be ready for evac");
+
+  uint prepared_regions = 0;
+  double prediction_ms = 0;
+
+  _prepare_failed = true;
+  for (uint i = _current_index; i < _cset->optional_region_length(); i++) {
+    HeapRegion* hr = region_at(i);
+    prediction_ms += _cset->predict_region_elapsed_time_ms(hr);
+    if (prediction_ms > time_limit) {
+      log_debug(gc, cset)("Prepared %u regions for optional evacuation. Predicted time: %.3fms", prepared_regions, prediction_ms);
+      return;
+    }
+
+    // This region will be included in the next optional evacuation.
+    prepare_to_evacuate_optional_region(hr);
+    prepared_regions++;
+    _current_limit++;
+    _prepare_failed = false;
+  }
+
+  log_debug(gc, cset)("Prepared all %u regions for optional evacuation. Predicted time: %.3fms",
+                      prepared_regions, prediction_ms);
+}
+
+bool G1OptionalCSet::prepare_failed() {
+  return _prepare_failed;
+}
+
+void G1OptionalCSet::complete_evacuation() {
+  _evacuation_failed = false;
+  for (uint i = _current_index; i < _current_limit; i++) {
+    HeapRegion* hr = region_at(i);
+    _cset->clear_optional_region(hr);
+    if (hr->evacuation_failed()){
+      _evacuation_failed = true;
+    }
+  }
+  _current_index = _current_limit;
+}
+
+bool G1OptionalCSet::evacuation_failed() {
+  return _evacuation_failed;
+}
+
+G1OptionalCSet::~G1OptionalCSet() {
+  G1CollectedHeap* g1h = G1CollectedHeap::heap();
+  while (!is_empty()) {
+    // We want to return regions not evacuated to the
+    // chooser in reverse order to maintain the old order.
+    HeapRegion* hr = _cset->remove_last_optional_region();
+    assert(hr != NULL, "Should be valid region left");
+    _pset->record_unused_optional_region(hr);
+    g1h->old_set_add(hr);
+    g1h->clear_in_cset(hr);
+    hr->set_index_in_opt_cset(InvalidCSetIndex);
+    _cset->cset_chooser()->push(hr);
+  }
+  _cset->free_optional_regions();
+}
+
+uint G1OptionalCSet::size() {
+  return _cset->optional_region_length() - _current_index;
+}
+
+bool G1OptionalCSet::is_empty() {
+  return size() == 0;
+}
+
+void G1OptionalCSet::prepare_to_evacuate_optional_region(HeapRegion* hr) {
+  log_trace(gc, cset)("Adding region %u for optional evacuation", hr->hrm_index());
+  G1CollectedHeap::heap()->clear_in_cset(hr);
+  _cset->add_old_region(hr);
+}
+
 #ifdef ASSERT
 class G1VerifyYoungCSetIndicesClosure : public HeapRegionClosure {
 private:
--- a/src/hotspot/share/gc/g1/g1CollectionSet.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1CollectionSet.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -32,6 +32,7 @@
 class G1CollectedHeap;
 class G1CollectorState;
 class G1GCPhaseTimes;
+class G1ParScanThreadStateSet;
 class G1Policy;
 class G1SurvivorRegions;
 class HeapRegion;
@@ -56,6 +57,13 @@
   volatile size_t _collection_set_cur_length;
   size_t _collection_set_max_length;
 
+  // When doing mixed collections we can add old regions to the collection, which
+  // can be collected if there is enough time. We call these optional regions and
+  // the pointer to these regions are stored in the array below.
+  HeapRegion** _optional_regions;
+  uint _optional_region_length;
+  uint _optional_region_max_length;
+
   // The number of bytes in the collection set before the pause. Set from
   // the incrementally built collection set at the start of an evacuation
   // pause, and incremented in finalize_old_part() when adding old regions
@@ -106,15 +114,19 @@
   G1CollectorState* collector_state();
   G1GCPhaseTimes* phase_times();
 
-  double predict_region_elapsed_time_ms(HeapRegion* hr);
+  void verify_young_cset_indices() const NOT_DEBUG_RETURN;
+  void add_as_optional(HeapRegion* hr);
+  void add_as_old(HeapRegion* hr);
+  bool optional_is_full();
 
-  void verify_young_cset_indices() const NOT_DEBUG_RETURN;
 public:
   G1CollectionSet(G1CollectedHeap* g1h, G1Policy* policy);
   ~G1CollectionSet();
 
   // Initializes the collection set giving the maximum possible length of the collection set.
   void initialize(uint max_region_length);
+  void initialize_optional(uint max_length);
+  void free_optional_regions();
 
   CollectionSetChooser* cset_chooser();
 
@@ -131,6 +143,7 @@
   uint eden_region_length() const     { return _eden_region_length;     }
   uint survivor_region_length() const { return _survivor_region_length; }
   uint old_region_length() const      { return _old_region_length;      }
+  uint optional_region_length() const { return _optional_region_length; }
 
   // Incremental collection set support
 
@@ -175,6 +188,9 @@
   // Add old region "hr" to the collection set.
   void add_old_region(HeapRegion* hr);
 
+  // Add old region "hr" to optional collection set.
+  void add_optional_region(HeapRegion* hr);
+
   // Update information about hr in the aggregated information for
   // the incrementally built collection set.
   void update_young_region_prediction(HeapRegion* hr, size_t new_rs_length);
@@ -191,10 +207,73 @@
   void print(outputStream* st);
 #endif // !PRODUCT
 
+  double predict_region_elapsed_time_ms(HeapRegion* hr);
+
+  void clear_optional_region(const HeapRegion* hr);
+
+  HeapRegion* optional_region_at(uint i) const {
+    assert(_optional_regions != NULL, "Not yet initialized");
+    assert(i < _optional_region_length, "index %u out of bounds (%u)", i, _optional_region_length);
+    return _optional_regions[i];
+  }
+
+  HeapRegion* remove_last_optional_region() {
+    assert(_optional_regions != NULL, "Not yet initialized");
+    assert(_optional_region_length != 0, "No region to remove");
+    _optional_region_length--;
+    HeapRegion* removed = _optional_regions[_optional_region_length];
+    _optional_regions[_optional_region_length] = NULL;
+    return removed;
+  }
+
 private:
   // Update the incremental collection set information when adding a region.
   void add_young_region_common(HeapRegion* hr);
 };
 
+// Helper class to manage the optional regions in a Mixed collection.
+class G1OptionalCSet : public StackObj {
+private:
+  G1CollectionSet* _cset;
+  G1ParScanThreadStateSet* _pset;
+  uint _current_index;
+  uint _current_limit;
+  bool _prepare_failed;
+  bool _evacuation_failed;
+
+  void prepare_to_evacuate_optional_region(HeapRegion* hr);
+
+public:
+  static const uint InvalidCSetIndex = UINT_MAX;
+
+  G1OptionalCSet(G1CollectionSet* cset, G1ParScanThreadStateSet* pset) :
+    _cset(cset),
+    _pset(pset),
+    _current_index(0),
+    _current_limit(0),
+    _prepare_failed(false),
+    _evacuation_failed(false) { }
+  // The destructor returns regions to the cset-chooser and
+  // frees the optional structure in the cset.
+  ~G1OptionalCSet();
+
+  uint current_index() { return _current_index; }
+  uint current_limit() { return _current_limit; }
+
+  uint size();
+  bool is_empty();
+
+  HeapRegion* region_at(uint index);
+
+  // Prepare a set of regions for optional evacuation.
+  void prepare_evacuation(double time_left_ms);
+  bool prepare_failed();
+
+  // Complete the evacuation of the previously prepared
+  // regions by updating their state and check for failures.
+  void complete_evacuation();
+  bool evacuation_failed();
+};
+
 #endif // SHARE_VM_GC_G1_G1COLLECTIONSET_HPP
 
--- a/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -44,12 +44,12 @@
 #include "gc/shared/gcTimer.hpp"
 #include "gc/shared/gcTrace.hpp"
 #include "gc/shared/gcTraceTime.inline.hpp"
+#include "gc/shared/gcVMOperations.hpp"
 #include "gc/shared/genOopClosures.inline.hpp"
 #include "gc/shared/referencePolicy.hpp"
 #include "gc/shared/strongRootsScope.hpp"
 #include "gc/shared/suspendibleThreadSet.hpp"
 #include "gc/shared/taskqueue.inline.hpp"
-#include "gc/shared/vmGCOperations.hpp"
 #include "gc/shared/weakProcessor.inline.hpp"
 #include "include/jvm.h"
 #include "logging/log.hpp"
@@ -255,21 +255,35 @@
   _free_list = NULL;
 }
 
-G1CMRootRegions::G1CMRootRegions() :
-  _survivors(NULL), _cm(NULL), _scan_in_progress(false),
-  _should_abort(false), _claimed_survivor_index(0) { }
-
-void G1CMRootRegions::init(const G1SurvivorRegions* survivors, G1ConcurrentMark* cm) {
-  _survivors = survivors;
-  _cm = cm;
+G1CMRootRegions::G1CMRootRegions(uint const max_regions) :
+  _root_regions(NEW_C_HEAP_ARRAY(HeapRegion*, max_regions, mtGC)),
+  _max_regions(max_regions),
+  _num_root_regions(0),
+  _claimed_root_regions(0),
+  _scan_in_progress(false),
+  _should_abort(false) { }
+
+G1CMRootRegions::~G1CMRootRegions() {
+  FREE_C_HEAP_ARRAY(HeapRegion*, _max_regions);
+}
+
+void G1CMRootRegions::reset() {
+  _num_root_regions = 0;
+}
+
+void G1CMRootRegions::add(HeapRegion* hr) {
+  assert_at_safepoint();
+  size_t idx = Atomic::add((size_t)1, &_num_root_regions) - 1;
+  assert(idx < _max_regions, "Trying to add more root regions than there is space " SIZE_FORMAT, _max_regions);
+  _root_regions[idx] = hr;
 }
 
 void G1CMRootRegions::prepare_for_scan() {
   assert(!scan_in_progress(), "pre-condition");
 
-  // Currently, only survivors can be root regions.
-  _claimed_survivor_index = 0;
-  _scan_in_progress = _survivors->regions()->is_nonempty();
+  _scan_in_progress = _num_root_regions > 0;
+
+  _claimed_root_regions = 0;
   _should_abort = false;
 }
 
@@ -280,18 +294,19 @@
     return NULL;
   }
 
-  // Currently, only survivors can be root regions.
-  const GrowableArray<HeapRegion*>* survivor_regions = _survivors->regions();
-
-  int claimed_index = Atomic::add(1, &_claimed_survivor_index) - 1;
-  if (claimed_index < survivor_regions->length()) {
-    return survivor_regions->at(claimed_index);
+  if (_claimed_root_regions >= _num_root_regions) {
+    return NULL;
+  }
+
+  size_t claimed_index = Atomic::add((size_t)1, &_claimed_root_regions) - 1;
+  if (claimed_index < _num_root_regions) {
+    return _root_regions[claimed_index];
   }
   return NULL;
 }
 
 uint G1CMRootRegions::num_root_regions() const {
-  return (uint)_survivors->regions()->length();
+  return (uint)_num_root_regions;
 }
 
 void G1CMRootRegions::notify_scan_done() {
@@ -307,12 +322,10 @@
 void G1CMRootRegions::scan_finished() {
   assert(scan_in_progress(), "pre-condition");
 
-  // Currently, only survivors can be root regions.
   if (!_should_abort) {
-    assert(_claimed_survivor_index >= 0, "otherwise comparison is invalid: %d", _claimed_survivor_index);
-    assert((uint)_claimed_survivor_index >= _survivors->length(),
-           "we should have claimed all survivors, claimed index = %u, length = %u",
-           (uint)_claimed_survivor_index, _survivors->length());
+    assert(_claimed_root_regions >= num_root_regions(),
+           "we should have claimed all root regions, claimed " SIZE_FORMAT ", length = %u",
+           _claimed_root_regions, num_root_regions());
   }
 
   notify_scan_done();
@@ -353,7 +366,7 @@
 
   _heap(_g1h->reserved_region()),
 
-  _root_regions(),
+  _root_regions(_g1h->max_regions()),
 
   _global_mark_stack(),
 
@@ -406,8 +419,6 @@
 
   assert(CGC_lock != NULL, "CGC_lock must be initialized");
 
-  _root_regions.init(_g1h->survivor(), this);
-
   if (FLAG_IS_DEFAULT(ConcGCThreads) || ConcGCThreads == 0) {
     // Calculate the number of concurrent worker threads by scaling
     // the number of parallel GC threads.
@@ -728,6 +739,8 @@
   // For each region note start of marking.
   NoteStartOfMarkHRClosure startcl;
   _g1h->heap_region_iterate(&startcl);
+
+  _root_regions.reset();
 }
 
 
@@ -859,12 +872,12 @@
 }
 
 void G1ConcurrentMark::scan_root_region(HeapRegion* hr, uint worker_id) {
-  // Currently, only survivors can be root regions.
-  assert(hr->next_top_at_mark_start() == hr->bottom(), "invariant");
+  assert(hr->is_old() || (hr->is_survivor() && hr->next_top_at_mark_start() == hr->bottom()),
+         "Root regions must be old or survivor but region %u is %s", hr->hrm_index(), hr->get_type_str());
   G1RootRegionScanClosure cl(_g1h, this, worker_id);
 
   const uintx interval = PrefetchScanIntervalInBytes;
-  HeapWord* curr = hr->bottom();
+  HeapWord* curr = hr->next_top_at_mark_start();
   const HeapWord* end = hr->top();
   while (curr < end) {
     Prefetch::read(curr, interval);
--- a/src/hotspot/share/gc/g1/g1ConcurrentMark.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1ConcurrentMark.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -224,34 +224,37 @@
   template<typename Fn> void iterate(Fn fn) const PRODUCT_RETURN;
 };
 
-// Root Regions are regions that are not empty at the beginning of a
-// marking cycle and which we might collect during an evacuation pause
-// while the cycle is active. Given that, during evacuation pauses, we
-// do not copy objects that are explicitly marked, what we have to do
-// for the root regions is to scan them and mark all objects reachable
-// from them. According to the SATB assumptions, we only need to visit
-// each object once during marking. So, as long as we finish this scan
-// before the next evacuation pause, we can copy the objects from the
-// root regions without having to mark them or do anything else to them.
-//
-// Currently, we only support root region scanning once (at the start
-// of the marking cycle) and the root regions are all the survivor
-// regions populated during the initial-mark pause.
+// Root Regions are regions that contain objects from nTAMS to top. These are roots
+// for marking, i.e. their referenced objects must be kept alive to maintain the
+// SATB invariant.
+// We could scan and mark them through during the initial-mark pause, but for
+// pause time reasons we move this work to the concurrent phase.
+// We need to complete this procedure before the next GC because it might determine
+// that some of these "root objects" are dead, potentially dropping some required
+// references.
+// Root regions comprise of the complete contents of survivor regions, and any
+// objects copied into old gen during GC.
 class G1CMRootRegions {
-private:
-  const G1SurvivorRegions* _survivors;
-  G1ConcurrentMark*        _cm;
+  HeapRegion** _root_regions;
+  size_t const _max_regions;
+
+  volatile size_t _num_root_regions; // Actual number of root regions.
 
-  volatile bool            _scan_in_progress;
-  volatile bool            _should_abort;
-  volatile int             _claimed_survivor_index;
+  volatile size_t _claimed_root_regions; // Number of root regions currently claimed.
+
+  volatile bool _scan_in_progress;
+  volatile bool _should_abort;
 
   void notify_scan_done();
 
 public:
-  G1CMRootRegions();
-  // We actually do most of the initialization in this method.
-  void init(const G1SurvivorRegions* survivors, G1ConcurrentMark* cm);
+  G1CMRootRegions(uint const max_regions);
+  ~G1CMRootRegions();
+
+  // Reset the data structure to allow addition of new root regions.
+  void reset();
+
+  void add(HeapRegion* hr);
 
   // Reset the claiming / scanning of the root regions.
   void prepare_for_scan();
@@ -553,7 +556,7 @@
   // them.
   void scan_root_regions();
 
-  // Scan a single root region and mark everything reachable from it.
+  // Scan a single root region from nTAMS to top and mark everything reachable from it.
   void scan_root_region(HeapRegion* hr, uint worker_id);
 
   // Do concurrent phase of marking, to a tentative transitive closure.
@@ -593,10 +596,8 @@
   void print_on_error(outputStream* st) const;
 
   // Mark the given object on the next bitmap if it is below nTAMS.
-  // If the passed obj_size is zero, it is recalculated from the given object if
-  // needed. This is to be as lazy as possible with accessing the object's size.
-  inline bool mark_in_next_bitmap(uint worker_id, HeapRegion* const hr, oop const obj, size_t const obj_size = 0);
-  inline bool mark_in_next_bitmap(uint worker_id, oop const obj, size_t const obj_size = 0);
+  inline bool mark_in_next_bitmap(uint worker_id, HeapRegion* const hr, oop const obj);
+  inline bool mark_in_next_bitmap(uint worker_id, oop const obj);
 
   inline bool is_marked_in_next_bitmap(oop p) const;
 
--- a/src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -55,12 +55,12 @@
   return _g1h->heap_region_containing(obj)->is_old_or_humongous_or_archive();
 }
 
-inline bool G1ConcurrentMark::mark_in_next_bitmap(uint const worker_id, oop const obj, size_t const obj_size) {
+inline bool G1ConcurrentMark::mark_in_next_bitmap(uint const worker_id, oop const obj) {
   HeapRegion* const hr = _g1h->heap_region_containing(obj);
-  return mark_in_next_bitmap(worker_id, hr, obj, obj_size);
+  return mark_in_next_bitmap(worker_id, hr, obj);
 }
 
-inline bool G1ConcurrentMark::mark_in_next_bitmap(uint const worker_id, HeapRegion* const hr, oop const obj, size_t const obj_size) {
+inline bool G1ConcurrentMark::mark_in_next_bitmap(uint const worker_id, HeapRegion* const hr, oop const obj) {
   assert(hr != NULL, "just checking");
   assert(hr->is_in_reserved(obj), "Attempting to mark object at " PTR_FORMAT " that is not contained in the given region %u", p2i(obj), hr->hrm_index());
 
@@ -76,7 +76,7 @@
 
   bool success = _next_mark_bitmap->par_mark(obj_addr);
   if (success) {
-    add_to_liveness(worker_id, obj, obj_size == 0 ? obj->size() : obj_size);
+    add_to_liveness(worker_id, obj, obj->size());
   }
   return success;
 }
--- a/src/hotspot/share/gc/g1/g1ConcurrentMarkThread.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1ConcurrentMarkThread.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -31,7 +31,7 @@
 #include "gc/g1/g1MMUTracker.hpp"
 #include "gc/g1/g1Policy.hpp"
 #include "gc/g1/g1RemSet.hpp"
-#include "gc/g1/vm_operations_g1.hpp"
+#include "gc/g1/g1VMOperations.hpp"
 #include "gc/shared/concurrentGCPhaseManager.hpp"
 #include "gc/shared/gcId.hpp"
 #include "gc/shared/gcTrace.hpp"
@@ -339,7 +339,7 @@
                                 TimeHelper::counter_to_millis(mark_end - mark_start));
           mark_manager.set_phase(G1ConcurrentPhase::REMARK, false);
           CMRemark cl(_cm);
-          VM_CGC_Operation op(&cl, "Pause Remark");
+          VM_G1Concurrent op(&cl, "Pause Remark");
           VMThread::execute(&op);
           if (_cm->has_aborted()) {
             break;
@@ -370,7 +370,7 @@
 
       if (!_cm->has_aborted()) {
         CMCleanup cl_cl(_cm);
-        VM_CGC_Operation op(&cl_cl, "Pause Cleanup");
+        VM_G1Concurrent op(&cl_cl, "Pause Cleanup");
         VMThread::execute(&op);
       }
 
--- a/src/hotspot/share/gc/g1/g1EvacFailure.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1EvacFailure.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -126,7 +126,7 @@
         // explicitly and all objects in the CSet are considered
         // (implicitly) live. So, we won't mark them explicitly and
         // we'll leave them over NTAMS.
-        _cm->mark_in_next_bitmap(_worker_id, obj);
+        _cm->mark_in_next_bitmap(_worker_id, _hr, obj);
       }
       size_t obj_size = obj->size();
 
--- a/src/hotspot/share/gc/g1/g1FullGCScope.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1FullGCScope.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -31,8 +31,8 @@
 #include "gc/shared/gcTrace.hpp"
 #include "gc/shared/gcTraceTime.hpp"
 #include "gc/shared/gcTimer.hpp"
+#include "gc/shared/gcVMOperations.hpp"
 #include "gc/shared/isGCActiveMark.hpp"
-#include "gc/shared/vmGCOperations.hpp"
 #include "memory/allocation.hpp"
 #include "services/memoryService.hpp"
 
--- a/src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -73,11 +73,13 @@
     _gc_par_phases[ScanHCC] = NULL;
   }
   _gc_par_phases[ScanRS] = new WorkerDataArray<double>(max_gc_threads, "Scan RS (ms):");
+  _gc_par_phases[OptScanRS] = new WorkerDataArray<double>(max_gc_threads, "Optional Scan RS (ms):");
   _gc_par_phases[CodeRoots] = new WorkerDataArray<double>(max_gc_threads, "Code Root Scanning (ms):");
 #if INCLUDE_AOT
   _gc_par_phases[AOTCodeRoots] = new WorkerDataArray<double>(max_gc_threads, "AOT Root Scanning (ms):");
 #endif
   _gc_par_phases[ObjCopy] = new WorkerDataArray<double>(max_gc_threads, "Object Copy (ms):");
+  _gc_par_phases[OptObjCopy] = new WorkerDataArray<double>(max_gc_threads, "Optional Object Copy (ms):");
   _gc_par_phases[Termination] = new WorkerDataArray<double>(max_gc_threads, "Termination (ms):");
   _gc_par_phases[GCWorkerTotal] = new WorkerDataArray<double>(max_gc_threads, "GC Worker Total (ms):");
   _gc_par_phases[GCWorkerEnd] = new WorkerDataArray<double>(max_gc_threads, "GC Worker End (ms):");
@@ -90,6 +92,15 @@
   _scan_rs_skipped_cards = new WorkerDataArray<size_t>(max_gc_threads, "Skipped Cards:");
   _gc_par_phases[ScanRS]->link_thread_work_items(_scan_rs_skipped_cards, ScanRSSkippedCards);
 
+  _opt_cset_scanned_cards = new WorkerDataArray<size_t>(max_gc_threads, "Scanned Cards:");
+  _gc_par_phases[OptScanRS]->link_thread_work_items(_opt_cset_scanned_cards, OptCSetScannedCards);
+  _opt_cset_claimed_cards = new WorkerDataArray<size_t>(max_gc_threads, "Claimed Cards:");
+  _gc_par_phases[OptScanRS]->link_thread_work_items(_opt_cset_claimed_cards, OptCSetClaimedCards);
+  _opt_cset_skipped_cards = new WorkerDataArray<size_t>(max_gc_threads, "Skipped Cards:");
+  _gc_par_phases[OptScanRS]->link_thread_work_items(_opt_cset_skipped_cards, OptCSetSkippedCards);
+  _opt_cset_used_memory = new WorkerDataArray<size_t>(max_gc_threads, "Used Memory:");
+  _gc_par_phases[OptScanRS]->link_thread_work_items(_opt_cset_used_memory, OptCSetUsedMemory);
+
   _update_rs_processed_buffers = new WorkerDataArray<size_t>(max_gc_threads, "Processed Buffers:");
   _gc_par_phases[UpdateRS]->link_thread_work_items(_update_rs_processed_buffers, UpdateRSProcessedBuffers);
   _update_rs_scanned_cards = new WorkerDataArray<size_t>(max_gc_threads, "Scanned Cards:");
@@ -120,6 +131,7 @@
 
 void G1GCPhaseTimes::reset() {
   _cur_collection_par_time_ms = 0.0;
+  _cur_optional_evac_ms = 0.0;
   _cur_collection_code_root_fixup_time_ms = 0.0;
   _cur_strong_code_root_purge_time_ms = 0.0;
   _cur_evac_fail_recalc_used = 0.0;
@@ -227,11 +239,11 @@
   _gc_par_phases[phase]->add(worker_i, secs);
 }
 
-void G1GCPhaseTimes::record_or_add_objcopy_time_secs(uint worker_i, double secs) {
-  if (_gc_par_phases[ObjCopy]->get(worker_i) == _gc_par_phases[ObjCopy]->uninitialized()) {
-    record_time_secs(ObjCopy, worker_i, secs);
+void G1GCPhaseTimes::record_or_add_time_secs(GCParPhases phase, uint worker_i, double secs) {
+  if (_gc_par_phases[phase]->get(worker_i) == _gc_par_phases[phase]->uninitialized()) {
+    record_time_secs(phase, worker_i, secs);
   } else {
-    add_time_secs(ObjCopy, worker_i, secs);
+    add_time_secs(phase, worker_i, secs);
   }
 }
 
@@ -239,6 +251,10 @@
   _gc_par_phases[phase]->set_thread_work_item(worker_i, count, index);
 }
 
+void G1GCPhaseTimes::record_or_add_thread_work_item(GCParPhases phase, uint worker_i, size_t count, uint index) {
+  _gc_par_phases[phase]->set_or_add_thread_work_item(worker_i, count, index);
+}
+
 // return the average time for a phase in milliseconds
 double G1GCPhaseTimes::average_time_ms(GCParPhases phase) {
   return _gc_par_phases[phase]->average() * 1000.0;
@@ -348,6 +364,16 @@
   return sum_ms;
 }
 
+double G1GCPhaseTimes::print_evacuate_optional_collection_set() const {
+  const double sum_ms = _cur_optional_evac_ms;
+  if (sum_ms > 0) {
+    info_time("Evacuate Optional Collection Set", sum_ms);
+    debug_phase(_gc_par_phases[OptScanRS]);
+    debug_phase(_gc_par_phases[OptObjCopy]);
+  }
+  return sum_ms;
+}
+
 double G1GCPhaseTimes::print_evacuate_collection_set() const {
   const double sum_ms = _cur_collection_par_time_ms;
 
@@ -457,6 +483,7 @@
   double accounted_ms = 0.0;
   accounted_ms += print_pre_evacuate_collection_set();
   accounted_ms += print_evacuate_collection_set();
+  accounted_ms += print_evacuate_optional_collection_set();
   accounted_ms += print_post_evacuate_collection_set();
   print_other(accounted_ms);
 
@@ -485,11 +512,13 @@
       "UpdateRS",
       "ScanHCC",
       "ScanRS",
+      "OptScanRS",
       "CodeRoots",
 #if INCLUDE_AOT
       "AOTCodeRoots",
 #endif
       "ObjCopy",
+      "OptObjCopy",
       "Termination",
       "Other",
       "GCWorkerTotal",
@@ -561,7 +590,7 @@
     _trim_tracker.stop();
     // Exclude trim time by increasing the start time.
     _start_time += _trim_time;
-    _phase_times->record_or_add_objcopy_time_secs(_worker_id, _trim_time.seconds());
+    _phase_times->record_or_add_time_secs(G1GCPhaseTimes::ObjCopy, _worker_id, _trim_time.seconds());
   }
 }
 
--- a/src/hotspot/share/gc/g1/g1GCPhaseTimes.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1GCPhaseTimes.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -63,11 +63,13 @@
     UpdateRS,
     ScanHCC,
     ScanRS,
+    OptScanRS,
     CodeRoots,
 #if INCLUDE_AOT
     AOTCodeRoots,
 #endif
     ObjCopy,
+    OptObjCopy,
     Termination,
     Other,
     GCWorkerTotal,
@@ -92,6 +94,13 @@
     UpdateRSSkippedCards
   };
 
+  enum GCOptCSetWorkItems {
+      OptCSetScannedCards,
+      OptCSetClaimedCards,
+      OptCSetSkippedCards,
+      OptCSetUsedMemory
+  };
+
  private:
   // Markers for grouping the phases in the GCPhases enum above
   static const int GCMainParPhasesLast = GCWorkerEnd;
@@ -108,11 +117,17 @@
   WorkerDataArray<size_t>* _scan_rs_claimed_cards;
   WorkerDataArray<size_t>* _scan_rs_skipped_cards;
 
+  WorkerDataArray<size_t>* _opt_cset_scanned_cards;
+  WorkerDataArray<size_t>* _opt_cset_claimed_cards;
+  WorkerDataArray<size_t>* _opt_cset_skipped_cards;
+  WorkerDataArray<size_t>* _opt_cset_used_memory;
+
   WorkerDataArray<size_t>* _termination_attempts;
 
   WorkerDataArray<size_t>* _redirtied_cards;
 
   double _cur_collection_par_time_ms;
+  double _cur_optional_evac_ms;
   double _cur_collection_code_root_fixup_time_ms;
   double _cur_strong_code_root_purge_time_ms;
 
@@ -184,6 +199,7 @@
 
   double print_pre_evacuate_collection_set() const;
   double print_evacuate_collection_set() const;
+  double print_evacuate_optional_collection_set() const;
   double print_post_evacuate_collection_set() const;
   void print_other(double accounted_ms) const;
 
@@ -199,10 +215,12 @@
   // add a number of seconds to a phase
   void add_time_secs(GCParPhases phase, uint worker_i, double secs);
 
-  void record_or_add_objcopy_time_secs(uint worker_i, double secs);
+  void record_or_add_time_secs(GCParPhases phase, uint worker_i, double secs);
 
   void record_thread_work_item(GCParPhases phase, uint worker_i, size_t count, uint index = 0);
 
+  void record_or_add_thread_work_item(GCParPhases phase, uint worker_i, size_t count, uint index = 0);
+
   // return the average time for a phase in milliseconds
   double average_time_ms(GCParPhases phase);
 
@@ -234,6 +252,10 @@
     _cur_collection_par_time_ms = ms;
   }
 
+  void record_optional_evacuation(double ms) {
+    _cur_optional_evac_ms = ms;
+  }
+
   void record_code_root_fixup_time(double ms) {
     _cur_collection_code_root_fixup_time_ms = ms;
   }
--- a/src/hotspot/share/gc/g1/g1InCSetState.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1InCSetState.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -56,7 +56,8 @@
     // makes getting the next generation fast by a simple increment. They are also
     // used to index into arrays.
     // The negative values are used for objects requiring various special cases,
-    // for example eager reclamation of humongous objects.
+    // for example eager reclamation of humongous objects or optional regions.
+    Optional     = -2,    // The region is optional
     Humongous    = -1,    // The region is humongous
     NotInCSet    =  0,    // The region is not in the collection set.
     Young        =  1,    // The region is in the collection set and a young region.
@@ -78,10 +79,11 @@
   bool is_humongous() const            { return _value == Humongous; }
   bool is_young() const                { return _value == Young; }
   bool is_old() const                  { return _value == Old; }
+  bool is_optional() const             { return _value == Optional; }
 
 #ifdef ASSERT
   bool is_default() const              { return _value == NotInCSet; }
-  bool is_valid() const                { return (_value >= Humongous) && (_value < Num); }
+  bool is_valid() const                { return (_value >= Optional) && (_value < Num); }
   bool is_valid_gen() const            { return (_value >= Young && _value <= Old); }
 #endif
 };
@@ -101,6 +103,12 @@
  protected:
   InCSetState default_value() const { return InCSetState::NotInCSet; }
  public:
+  void set_optional(uintptr_t index) {
+    assert(get_by_index(index).is_default(),
+           "State at index " INTPTR_FORMAT " should be default but is " CSETSTATE_FORMAT, index, get_by_index(index).value());
+    set_by_index(index, InCSetState::Optional);
+  }
+
   void set_humongous(uintptr_t index) {
     assert(get_by_index(index).is_default(),
            "State at index " INTPTR_FORMAT " should be default but is " CSETSTATE_FORMAT, index, get_by_index(index).value());
--- a/src/hotspot/share/gc/g1/g1OopClosures.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1OopClosures.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -83,6 +83,16 @@
   virtual void do_oop(narrowOop* p)    { do_oop_work(p); }
 };
 
+// Used during Optional RS scanning to make sure we trim the queues in a timely manner.
+class G1ScanRSForOptionalClosure : public OopClosure {
+  G1ScanObjsDuringScanRSClosure* _scan_cl;
+public:
+  G1ScanRSForOptionalClosure(G1ScanObjsDuringScanRSClosure* cl) : _scan_cl(cl) { }
+
+  template <class T> void do_oop_work(T* p);
+  virtual void do_oop(oop* p)          { do_oop_work(p); }
+  virtual void do_oop(narrowOop* p)    { do_oop_work(p); }
+};
 
 // This closure is applied to the fields of the objects that have just been copied during evacuation.
 class G1ScanEvacuatedObjClosure : public G1ScanClosureBase {
@@ -141,11 +151,6 @@
   // during the GC (i.e., non-CSet objects). It is MT-safe.
   inline void mark_object(oop obj);
 
-  // Mark the object if it's not already marked. This is used to mark
-  // objects pointed to by roots that have been forwarded during a
-  // GC. It is MT-safe.
-  inline void mark_forwarded_object(oop from_obj, oop to_obj);
-
   G1ParCopyHelper(G1CollectedHeap* g1h,  G1ParScanThreadState* par_scan_state);
   ~G1ParCopyHelper() { }
 
--- a/src/hotspot/share/gc/g1/g1OopClosures.inline.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1OopClosures.inline.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -64,6 +64,8 @@
 inline void G1ScanClosureBase::handle_non_cset_obj_common(InCSetState const state, T* p, oop const obj) {
   if (state.is_humongous()) {
     _g1h->set_humongous_is_live(obj);
+  } else if (state.is_optional()) {
+    _par_scan_state->remember_reference_into_optional_region(p);
   }
 }
 
@@ -195,6 +197,12 @@
   }
 }
 
+template <class T>
+inline void G1ScanRSForOptionalClosure::do_oop_work(T* p) {
+  _scan_cl->do_oop_work(p);
+  _scan_cl->trim_queue_partially();
+}
+
 void G1ParCopyHelper::do_cld_barrier(oop new_obj) {
   if (_g1h->heap_region_containing(new_obj)->is_young()) {
     _scanned_cld->record_modified_oops();
@@ -208,21 +216,6 @@
   _cm->mark_in_next_bitmap(_worker_id, obj);
 }
 
-void G1ParCopyHelper::mark_forwarded_object(oop from_obj, oop to_obj) {
-  assert(from_obj->is_forwarded(), "from obj should be forwarded");
-  assert(from_obj->forwardee() == to_obj, "to obj should be the forwardee");
-  assert(from_obj != to_obj, "should not be self-forwarded");
-
-  assert(_g1h->heap_region_containing(from_obj)->in_collection_set(), "from obj should be in the CSet");
-  assert(!_g1h->heap_region_containing(to_obj)->in_collection_set(), "should not mark objects in the CSet");
-
-  // The object might be in the process of being copied by another
-  // worker so we cannot trust that its to-space image is
-  // well-formed. So we have to read its size from its from-space
-  // image which we know should not be changing.
-  _cm->mark_in_next_bitmap(_worker_id, to_obj, from_obj->size());
-}
-
 void G1ParCopyHelper::trim_queue_partially() {
   _par_scan_state->trim_queue_partially();
 }
@@ -251,11 +244,6 @@
     }
     assert(forwardee != NULL, "forwardee should not be NULL");
     RawAccess<IS_NOT_NULL>::oop_store(p, forwardee);
-    if (do_mark_object != G1MarkNone && forwardee != obj) {
-      // If the object is self-forwarded we don't need to explicitly
-      // mark it, the evacuation failure protocol will do so.
-      mark_forwarded_object(obj, forwardee);
-    }
 
     if (barrier == G1BarrierCLD) {
       do_cld_barrier(forwardee);
@@ -263,6 +251,8 @@
   } else {
     if (state.is_humongous()) {
       _g1h->set_humongous_is_live(obj);
+    } else if (state.is_optional()) {
+      _par_scan_state->remember_root_into_optional_region(p);
     }
 
     // The object is not in collection set. If we're a root scanning
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/g1/g1OopStarChunkedList.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "gc/g1/g1OopStarChunkedList.inline.hpp"
+
+G1OopStarChunkedList::~G1OopStarChunkedList() {
+  delete_list(_roots);
+  delete_list(_croots);
+  delete_list(_oops);
+  delete_list(_coops);
+}
+
+void G1OopStarChunkedList::oops_do(OopClosure* obj_cl, OopClosure* root_cl) {
+  chunks_do(_roots, root_cl);
+  chunks_do(_croots, root_cl);
+  chunks_do(_oops, obj_cl);
+  chunks_do(_coops, obj_cl);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/g1/g1OopStarChunkedList.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_GC_G1_G1OOPSTARCHUNKEDLIST_HPP
+#define SHARE_GC_G1_G1OOPSTARCHUNKEDLIST_HPP
+
+#include "oops/oopsHierarchy.hpp"
+#include "utilities/chunkedList.hpp"
+
+class OopClosure;
+
+class G1OopStarChunkedList : public CHeapObj<mtGC> {
+  size_t _used_memory;
+
+  ChunkedList<oop*, mtGC>* _roots;
+  ChunkedList<narrowOop*, mtGC>* _croots;
+  ChunkedList<oop*, mtGC>* _oops;
+  ChunkedList<narrowOop*, mtGC>* _coops;
+
+  template <typename T> void delete_list(ChunkedList<T*, mtGC>* c);
+
+  template <typename T>
+  void chunks_do(ChunkedList<T*, mtGC>* head,
+                 OopClosure* cl);
+
+  template <typename T>
+  inline void push(ChunkedList<T*, mtGC>** field, T* p);
+
+ public:
+  G1OopStarChunkedList() : _used_memory(0), _roots(NULL), _croots(NULL), _oops(NULL), _coops(NULL) {}
+  ~G1OopStarChunkedList();
+
+  size_t used_memory() { return _used_memory; }
+
+  void oops_do(OopClosure* obj_cl, OopClosure* root_cl);
+
+  inline void push_oop(oop* p);
+  inline void push_oop(narrowOop* p);
+  inline void push_root(oop* p);
+  inline void push_root(narrowOop* p);
+};
+
+#endif // SHARE_GC_G1_G1OOPSTARCHUNKEDLIST_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/g1/g1OopStarChunkedList.inline.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_GC_G1_G1OOPSTARCHUNKEDLIST_INLINE_HPP
+#define SHARE_GC_G1_G1OOPSTARCHUNKEDLIST_INLINE_HPP
+
+#include "gc/g1/g1OopStarChunkedList.hpp"
+#include "gc/g1/g1CollectedHeap.inline.hpp"
+#include "memory/allocation.inline.hpp"
+#include "memory/iterator.hpp"
+
+template <typename T>
+inline void G1OopStarChunkedList::push(ChunkedList<T*, mtGC>** field, T* p) {
+  ChunkedList<T*, mtGC>* list = *field;
+  if (list == NULL) {
+    *field = new ChunkedList<T*, mtGC>();
+    _used_memory += sizeof(ChunkedList<T*, mtGC>);
+  } else if (list->is_full()) {
+    ChunkedList<T*, mtGC>* next = new ChunkedList<T*, mtGC>();
+    next->set_next_used(list);
+    *field = next;
+    _used_memory += sizeof(ChunkedList<T*, mtGC>);
+  }
+
+  (*field)->push(p);
+}
+
+inline void G1OopStarChunkedList::push_root(narrowOop* p) {
+  push(&_croots, p);
+}
+
+inline void G1OopStarChunkedList::push_root(oop* p) {
+  push(&_roots, p);
+}
+
+inline void G1OopStarChunkedList::push_oop(narrowOop* p) {
+  push(&_coops, p);
+}
+
+inline void G1OopStarChunkedList::push_oop(oop* p) {
+  push(&_oops, p);
+}
+
+template <typename T>
+void G1OopStarChunkedList::delete_list(ChunkedList<T*, mtGC>* c) {
+  while (c != NULL) {
+    ChunkedList<T*, mtGC>* next = c->next_used();
+    delete c;
+    c = next;
+  }
+}
+
+template <typename T>
+void G1OopStarChunkedList::chunks_do(ChunkedList<T*, mtGC>* head, OopClosure* cl) {
+  for (ChunkedList<T*, mtGC>* c = head; c != NULL; c = c->next_used()) {
+    for (size_t i = 0; i < c->size(); i++) {
+      T* p = c->at(i);
+      cl->do_oop(p);
+    }
+  }
+}
+
+#endif // SHARE_GC_G1_G1OOPSTARCHUNKEDLIST_INLINE_HPP
--- a/src/hotspot/share/gc/g1/g1ParScanThreadState.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1ParScanThreadState.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -37,7 +37,10 @@
 #include "oops/oop.inline.hpp"
 #include "runtime/prefetch.inline.hpp"
 
-G1ParScanThreadState::G1ParScanThreadState(G1CollectedHeap* g1h, uint worker_id, size_t young_cset_length)
+G1ParScanThreadState::G1ParScanThreadState(G1CollectedHeap* g1h,
+                                           uint worker_id,
+                                           size_t young_cset_length,
+                                           size_t optional_cset_length)
   : _g1h(g1h),
     _refs(g1h->task_queue(worker_id)),
     _dcq(&g1h->dirty_card_queue_set()),
@@ -51,7 +54,8 @@
     _stack_trim_upper_threshold(GCDrainStackTargetSize * 2 + 1),
     _stack_trim_lower_threshold(GCDrainStackTargetSize),
     _trim_ticks(),
-    _old_gen_is_full(false)
+    _old_gen_is_full(false),
+    _num_optional_regions(optional_cset_length)
 {
   // we allocate G1YoungSurvRateNumRegions plus one entries, since
   // we "sacrifice" entry 0 to keep track of surviving bytes for
@@ -78,6 +82,8 @@
   _dest[InCSetState::Old]          = InCSetState::Old;
 
   _closures = G1EvacuationRootClosures::create_root_closures(this, _g1h);
+
+  _oops_into_optional_regions = new G1OopStarChunkedList[_num_optional_regions];
 }
 
 // Pass locally gathered statistics to global state.
@@ -97,6 +103,7 @@
   delete _plab_allocator;
   delete _closures;
   FREE_C_HEAP_ARRAY(size_t, _surviving_young_words_base);
+  delete[] _oops_into_optional_regions;
 }
 
 void G1ParScanThreadState::waste(size_t& wasted, size_t& undo_wasted) {
@@ -324,7 +331,8 @@
 G1ParScanThreadState* G1ParScanThreadStateSet::state_for_worker(uint worker_id) {
   assert(worker_id < _n_workers, "out of bounds access");
   if (_states[worker_id] == NULL) {
-    _states[worker_id] = new G1ParScanThreadState(_g1h, worker_id, _young_cset_length);
+    _states[worker_id] =
+      new G1ParScanThreadState(_g1h, worker_id, _young_cset_length, _optional_cset_length);
   }
   return _states[worker_id];
 }
@@ -351,6 +359,19 @@
   _flushed = true;
 }
 
+void G1ParScanThreadStateSet::record_unused_optional_region(HeapRegion* hr) {
+  for (uint worker_index = 0; worker_index < _n_workers; ++worker_index) {
+    G1ParScanThreadState* pss = _states[worker_index];
+
+    if (pss == NULL) {
+      continue;
+    }
+
+    size_t used_memory = pss->oops_into_optional_region(hr)->used_memory();
+    _g1h->g1_policy()->phase_times()->record_or_add_thread_work_item(G1GCPhaseTimes::OptScanRS, worker_index, used_memory, G1GCPhaseTimes::OptCSetUsedMemory);
+  }
+}
+
 oop G1ParScanThreadState::handle_evacuation_failure_par(oop old, markOop m) {
   assert(_g1h->is_in_cset(old), "Object " PTR_FORMAT " should be in the CSet", p2i(old));
 
@@ -381,11 +402,15 @@
     return forward_ptr;
   }
 }
-G1ParScanThreadStateSet::G1ParScanThreadStateSet(G1CollectedHeap* g1h, uint n_workers, size_t young_cset_length) :
+G1ParScanThreadStateSet::G1ParScanThreadStateSet(G1CollectedHeap* g1h,
+                                                 uint n_workers,
+                                                 size_t young_cset_length,
+                                                 size_t optional_cset_length) :
     _g1h(g1h),
     _states(NEW_C_HEAP_ARRAY(G1ParScanThreadState*, n_workers, mtGC)),
     _surviving_young_words_total(NEW_C_HEAP_ARRAY(size_t, young_cset_length, mtGC)),
     _young_cset_length(young_cset_length),
+    _optional_cset_length(optional_cset_length),
     _n_workers(n_workers),
     _flushed(false) {
   for (uint i = 0; i < n_workers; ++i) {
--- a/src/hotspot/share/gc/g1/g1ParScanThreadState.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1ParScanThreadState.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -37,6 +37,7 @@
 #include "oops/oop.hpp"
 #include "utilities/ticks.hpp"
 
+class G1OopStarChunkedList;
 class G1PLABAllocator;
 class G1EvacuationRootClosures;
 class HeapRegion;
@@ -87,8 +88,14 @@
     return _dest[original.value()];
   }
 
+  size_t _num_optional_regions;
+  G1OopStarChunkedList* _oops_into_optional_regions;
+
 public:
-  G1ParScanThreadState(G1CollectedHeap* g1h, uint worker_id, size_t young_cset_length);
+  G1ParScanThreadState(G1CollectedHeap* g1h,
+                       uint worker_id,
+                       size_t young_cset_length,
+                       size_t optional_cset_length);
   virtual ~G1ParScanThreadState();
 
   void set_ref_discoverer(ReferenceDiscoverer* rd) { _scanner.set_ref_discoverer(rd); }
@@ -206,6 +213,13 @@
 
   // An attempt to evacuate "obj" has failed; take necessary steps.
   oop handle_evacuation_failure_par(oop obj, markOop m);
+
+  template <typename T>
+  inline void remember_root_into_optional_region(T* p);
+  template <typename T>
+  inline void remember_reference_into_optional_region(T* p);
+
+  inline G1OopStarChunkedList* oops_into_optional_region(const HeapRegion* hr);
 };
 
 class G1ParScanThreadStateSet : public StackObj {
@@ -213,14 +227,19 @@
   G1ParScanThreadState** _states;
   size_t* _surviving_young_words_total;
   size_t _young_cset_length;
+  size_t _optional_cset_length;
   uint _n_workers;
   bool _flushed;
 
  public:
-  G1ParScanThreadStateSet(G1CollectedHeap* g1h, uint n_workers, size_t young_cset_length);
+  G1ParScanThreadStateSet(G1CollectedHeap* g1h,
+                          uint n_workers,
+                          size_t young_cset_length,
+                          size_t optional_cset_length);
   ~G1ParScanThreadStateSet();
 
   void flush();
+  void record_unused_optional_region(HeapRegion* hr);
 
   G1ParScanThreadState* state_for_worker(uint worker_id);
 
--- a/src/hotspot/share/gc/g1/g1ParScanThreadState.inline.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1ParScanThreadState.inline.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -26,6 +26,7 @@
 #define SHARE_VM_GC_G1_G1PARSCANTHREADSTATE_INLINE_HPP
 
 #include "gc/g1/g1CollectedHeap.inline.hpp"
+#include "gc/g1/g1OopStarChunkedList.inline.hpp"
 #include "gc/g1/g1ParScanThreadState.hpp"
 #include "gc/g1/g1RemSet.hpp"
 #include "oops/access.inline.hpp"
@@ -203,4 +204,23 @@
   _trim_ticks = Tickspan();
 }
 
+template <typename T>
+inline void G1ParScanThreadState::remember_root_into_optional_region(T* p) {
+  oop o = RawAccess<IS_NOT_NULL>::oop_load(p);
+  uint index = _g1h->heap_region_containing(o)->index_in_opt_cset();
+  _oops_into_optional_regions[index].push_root(p);
+}
+
+template <typename T>
+inline void G1ParScanThreadState::remember_reference_into_optional_region(T* p) {
+  oop o = RawAccess<IS_NOT_NULL>::oop_load(p);
+  uint index = _g1h->heap_region_containing(o)->index_in_opt_cset();
+  _oops_into_optional_regions[index].push_oop(p);
+  DEBUG_ONLY(verify_ref(p);)
+}
+
+G1OopStarChunkedList* G1ParScanThreadState::oops_into_optional_region(const HeapRegion* hr) {
+  return &_oops_into_optional_regions[hr->index_in_opt_cset()];
+}
+
 #endif // SHARE_VM_GC_G1_G1PARSCANTHREADSTATE_INLINE_HPP
--- a/src/hotspot/share/gc/g1/g1Policy.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1Policy.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -401,6 +401,14 @@
 
   size_t desired_survivor_size() const;
 public:
+  // Fraction used when predicting how many optional regions to include in
+  // the CSet. This fraction of the available time is used for optional regions,
+  // the rest is used to add old regions to the normal CSet.
+  double optional_prediction_fraction() { return 0.2; }
+  // Fraction used when evacuating the optional regions. This fraction of the
+  // remaining time is used to choose what regions to include in the evacuation.
+  double optional_evacuation_fraction() { return 0.75; }
+
   uint tenuring_threshold() const { return _tenuring_threshold; }
 
   uint max_survivor_regions() {
--- a/src/hotspot/share/gc/g1/g1RemSet.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1RemSet.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -311,12 +311,14 @@
 G1ScanRSForRegionClosure::G1ScanRSForRegionClosure(G1RemSetScanState* scan_state,
                                                    G1ScanObjsDuringScanRSClosure* scan_obj_on_card,
                                                    G1ParScanThreadState* pss,
+                                                   G1GCPhaseTimes::GCParPhases phase,
                                                    uint worker_i) :
   _g1h(G1CollectedHeap::heap()),
   _ct(_g1h->card_table()),
   _pss(pss),
   _scan_objs_on_card_cl(scan_obj_on_card),
   _scan_state(scan_state),
+  _phase(phase),
   _worker_i(worker_i),
   _cards_scanned(0),
   _cards_claimed(0),
@@ -402,7 +404,7 @@
 
     scan_card(mr, region_idx_for_card);
   }
-  event.commit(GCId::current(), _worker_i, G1GCPhaseTimes::phase_name(G1GCPhaseTimes::ScanRS));
+  event.commit(GCId::current(), _worker_i, G1GCPhaseTimes::phase_name(_phase));
 }
 
 void G1ScanRSForRegionClosure::scan_strong_code_roots(HeapRegion* r) {
@@ -437,7 +439,7 @@
 
 void G1RemSet::scan_rem_set(G1ParScanThreadState* pss, uint worker_i) {
   G1ScanObjsDuringScanRSClosure scan_cl(_g1h, pss);
-  G1ScanRSForRegionClosure cl(_scan_state, &scan_cl, pss, worker_i);
+  G1ScanRSForRegionClosure cl(_scan_state, &scan_cl, pss, G1GCPhaseTimes::ScanRS, worker_i);
   _g1h->collection_set_iterate_from(&cl, worker_i);
 
   G1GCPhaseTimes* p = _g1p->phase_times();
--- a/src/hotspot/share/gc/g1/g1RemSet.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1RemSet.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -28,6 +28,7 @@
 #include "gc/g1/dirtyCardQueue.hpp"
 #include "gc/g1/g1CardTable.hpp"
 #include "gc/g1/g1OopClosures.hpp"
+#include "gc/g1/g1GCPhaseTimes.hpp"
 #include "gc/g1/g1RemSetSummary.hpp"
 #include "gc/g1/heapRegion.hpp"
 #include "memory/allocation.hpp"
@@ -138,6 +139,8 @@
 
   G1RemSetScanState* _scan_state;
 
+  G1GCPhaseTimes::GCParPhases _phase;
+
   uint   _worker_i;
 
   size_t _cards_scanned;
@@ -159,6 +162,7 @@
   G1ScanRSForRegionClosure(G1RemSetScanState* scan_state,
                            G1ScanObjsDuringScanRSClosure* scan_obj_on_card,
                            G1ParScanThreadState* pss,
+                           G1GCPhaseTimes::GCParPhases phase,
                            uint worker_i);
 
   bool do_heap_region(HeapRegion* r);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/g1/g1VMOperations.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,224 @@
+/*
+ * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "gc/g1/g1CollectedHeap.inline.hpp"
+#include "gc/g1/g1ConcurrentMarkThread.inline.hpp"
+#include "gc/g1/g1Policy.hpp"
+#include "gc/g1/g1VMOperations.hpp"
+#include "gc/shared/gcId.hpp"
+#include "gc/shared/gcTimer.hpp"
+#include "gc/shared/gcTraceTime.inline.hpp"
+#include "gc/shared/isGCActiveMark.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
+
+void VM_G1CollectFull::doit() {
+  G1CollectedHeap* g1h = G1CollectedHeap::heap();
+  GCCauseSetter x(g1h, _gc_cause);
+  g1h->do_full_collection(false /* clear_all_soft_refs */);
+}
+
+VM_G1CollectForAllocation::VM_G1CollectForAllocation(size_t         word_size,
+                                                     uint           gc_count_before,
+                                                     GCCause::Cause gc_cause,
+                                                     bool           should_initiate_conc_mark,
+                                                     double         target_pause_time_ms) :
+  VM_CollectForAllocation(word_size, gc_count_before, gc_cause),
+  _pause_succeeded(false),
+  _should_initiate_conc_mark(should_initiate_conc_mark),
+  _should_retry_gc(false),
+  _target_pause_time_ms(target_pause_time_ms),
+  _old_marking_cycles_completed_before(0) {
+
+  guarantee(target_pause_time_ms > 0.0,
+            "target_pause_time_ms = %1.6lf should be positive",
+            target_pause_time_ms);
+  _gc_cause = gc_cause;
+}
+
+bool VM_G1CollectForAllocation::doit_prologue() {
+  bool res = VM_CollectForAllocation::doit_prologue();
+  if (!res) {
+    if (_should_initiate_conc_mark) {
+      // The prologue can fail for a couple of reasons. The first is that another GC
+      // got scheduled and prevented the scheduling of the initial mark GC. The
+      // second is that the GC locker may be active and the heap can't be expanded.
+      // In both cases we want to retry the GC so that the initial mark pause is
+      // actually scheduled. In the second case, however, we should stall until
+      // until the GC locker is no longer active and then retry the initial mark GC.
+      _should_retry_gc = true;
+    }
+  }
+  return res;
+}
+
+void VM_G1CollectForAllocation::doit() {
+  G1CollectedHeap* g1h = G1CollectedHeap::heap();
+  assert(!_should_initiate_conc_mark || g1h->should_do_concurrent_full_gc(_gc_cause),
+      "only a GC locker, a System.gc(), stats update, whitebox, or a hum allocation induced GC should start a cycle");
+
+  if (_word_size > 0) {
+    // An allocation has been requested. So, try to do that first.
+    _result = g1h->attempt_allocation_at_safepoint(_word_size,
+                                                   false /* expect_null_cur_alloc_region */);
+    if (_result != NULL) {
+      // If we can successfully allocate before we actually do the
+      // pause then we will consider this pause successful.
+      _pause_succeeded = true;
+      return;
+    }
+  }
+
+  GCCauseSetter x(g1h, _gc_cause);
+  if (_should_initiate_conc_mark) {
+    // It's safer to read old_marking_cycles_completed() here, given
+    // that noone else will be updating it concurrently. Since we'll
+    // only need it if we're initiating a marking cycle, no point in
+    // setting it earlier.
+    _old_marking_cycles_completed_before = g1h->old_marking_cycles_completed();
+
+    // At this point we are supposed to start a concurrent cycle. We
+    // will do so if one is not already in progress.
+    bool res = g1h->g1_policy()->force_initial_mark_if_outside_cycle(_gc_cause);
+
+    // The above routine returns true if we were able to force the
+    // next GC pause to be an initial mark; it returns false if a
+    // marking cycle is already in progress.
+    //
+    // If a marking cycle is already in progress just return and skip the
+    // pause below - if the reason for requesting this initial mark pause
+    // was due to a System.gc() then the requesting thread should block in
+    // doit_epilogue() until the marking cycle is complete.
+    //
+    // If this initial mark pause was requested as part of a humongous
+    // allocation then we know that the marking cycle must just have
+    // been started by another thread (possibly also allocating a humongous
+    // object) as there was no active marking cycle when the requesting
+    // thread checked before calling collect() in
+    // attempt_allocation_humongous(). Retrying the GC, in this case,
+    // will cause the requesting thread to spin inside collect() until the
+    // just started marking cycle is complete - which may be a while. So
+    // we do NOT retry the GC.
+    if (!res) {
+      assert(_word_size == 0, "Concurrent Full GC/Humongous Object IM shouldn't be allocating");
+      if (_gc_cause != GCCause::_g1_humongous_allocation) {
+        _should_retry_gc = true;
+      }
+      return;
+    }
+  }
+
+  // Try a partial collection of some kind.
+  _pause_succeeded = g1h->do_collection_pause_at_safepoint(_target_pause_time_ms);
+
+  if (_pause_succeeded) {
+    if (_word_size > 0) {
+      // An allocation had been requested. Do it, eventually trying a stronger
+      // kind of GC.
+      _result = g1h->satisfy_failed_allocation(_word_size, &_pause_succeeded);
+    } else {
+      bool should_upgrade_to_full = !g1h->should_do_concurrent_full_gc(_gc_cause) &&
+                                    !g1h->has_regions_left_for_allocation();
+      if (should_upgrade_to_full) {
+        // There has been a request to perform a GC to free some space. We have no
+        // information on how much memory has been asked for. In case there are
+        // absolutely no regions left to allocate into, do a maximally compacting full GC.
+        log_info(gc, ergo)("Attempting maximally compacting collection");
+        _pause_succeeded = g1h->do_full_collection(false, /* explicit gc */
+                                                   true   /* clear_all_soft_refs */);
+      }
+    }
+    guarantee(_pause_succeeded, "Elevated collections during the safepoint must always succeed.");
+  } else {
+    assert(_result == NULL, "invariant");
+    // The only reason for the pause to not be successful is that, the GC locker is
+    // active (or has become active since the prologue was executed). In this case
+    // we should retry the pause after waiting for the GC locker to become inactive.
+    _should_retry_gc = true;
+  }
+}
+
+void VM_G1CollectForAllocation::doit_epilogue() {
+  VM_CollectForAllocation::doit_epilogue();
+
+  // If the pause was initiated by a System.gc() and
+  // +ExplicitGCInvokesConcurrent, we have to wait here for the cycle
+  // that just started (or maybe one that was already in progress) to
+  // finish.
+  if (GCCause::is_user_requested_gc(_gc_cause) &&
+      _should_initiate_conc_mark) {
+    assert(ExplicitGCInvokesConcurrent,
+           "the only way to be here is if ExplicitGCInvokesConcurrent is set");
+
+    G1CollectedHeap* g1h = G1CollectedHeap::heap();
+
+    // In the doit() method we saved g1h->old_marking_cycles_completed()
+    // in the _old_marking_cycles_completed_before field. We have to
+    // wait until we observe that g1h->old_marking_cycles_completed()
+    // has increased by at least one. This can happen if a) we started
+    // a cycle and it completes, b) a cycle already in progress
+    // completes, or c) a Full GC happens.
+
+    // If the condition has already been reached, there's no point in
+    // actually taking the lock and doing the wait.
+    if (g1h->old_marking_cycles_completed() <=
+                                          _old_marking_cycles_completed_before) {
+      // The following is largely copied from CMS
+
+      Thread* thr = Thread::current();
+      assert(thr->is_Java_thread(), "invariant");
+      JavaThread* jt = (JavaThread*)thr;
+      ThreadToNativeFromVM native(jt);
+
+      MutexLockerEx x(FullGCCount_lock, Mutex::_no_safepoint_check_flag);
+      while (g1h->old_marking_cycles_completed() <=
+                                          _old_marking_cycles_completed_before) {
+        FullGCCount_lock->wait(Mutex::_no_safepoint_check_flag);
+      }
+    }
+  }
+}
+
+void VM_G1Concurrent::doit() {
+  GCIdMark gc_id_mark(_gc_id);
+  GCTraceCPUTime tcpu;
+  G1CollectedHeap* g1h = G1CollectedHeap::heap();
+  GCTraceTime(Info, gc) t(_message, g1h->concurrent_mark()->gc_timer_cm(), GCCause::_no_gc, true);
+  TraceCollectorStats tcs(g1h->g1mm()->conc_collection_counters());
+  SvcGCMarker sgcm(SvcGCMarker::CONCURRENT);
+  IsGCActiveMark x;
+  _cl->do_void();
+}
+
+bool VM_G1Concurrent::doit_prologue() {
+  Heap_lock->lock();
+  return true;
+}
+
+void VM_G1Concurrent::doit_epilogue() {
+  if (Universe::has_reference_pending_list()) {
+    Heap_lock->notify_all();
+  }
+  Heap_lock->unlock();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/g1/g1VMOperations.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_GC_G1_G1VMOPERATIONS_HPP
+#define SHARE_VM_GC_G1_G1VMOPERATIONS_HPP
+
+#include "gc/shared/gcId.hpp"
+#include "gc/shared/gcVMOperations.hpp"
+
+// VM_operations for the G1 collector.
+// VM_GC_Operation:
+//   - VM_G1Concurrent
+//   - VM_G1CollectForAllocation
+//   - VM_G1CollectFull
+
+class VM_G1CollectFull : public VM_GC_Operation {
+public:
+  VM_G1CollectFull(uint gc_count_before,
+                   uint full_gc_count_before,
+                   GCCause::Cause cause) :
+    VM_GC_Operation(gc_count_before, cause, full_gc_count_before, true) { }
+  virtual VMOp_Type type() const { return VMOp_G1CollectFull; }
+  virtual void doit();
+};
+
+class VM_G1CollectForAllocation : public VM_CollectForAllocation {
+  bool         _pause_succeeded;
+
+  bool         _should_initiate_conc_mark;
+  bool         _should_retry_gc;
+  double       _target_pause_time_ms;
+  uint         _old_marking_cycles_completed_before;
+
+public:
+  VM_G1CollectForAllocation(size_t         word_size,
+                            uint           gc_count_before,
+                            GCCause::Cause gc_cause,
+                            bool           should_initiate_conc_mark,
+                            double         target_pause_time_ms);
+  virtual VMOp_Type type() const { return VMOp_G1CollectForAllocation; }
+  virtual bool doit_prologue();
+  virtual void doit();
+  virtual void doit_epilogue();
+  bool should_retry_gc() const { return _should_retry_gc; }
+  bool pause_succeeded() { return _pause_succeeded; }
+};
+
+// Concurrent G1 stop-the-world operations such as remark and cleanup.
+class VM_G1Concurrent : public VM_Operation {
+  VoidClosure* _cl;
+  const char*  _message;
+  uint         _gc_id;
+
+public:
+  VM_G1Concurrent(VoidClosure* cl, const char* message) :
+    _cl(cl), _message(message), _gc_id(GCId::current()) { }
+  virtual VMOp_Type type() const { return VMOp_G1Concurrent; }
+  virtual void doit();
+  virtual bool doit_prologue();
+  virtual void doit_epilogue();
+};
+
+#endif // SHARE_VM_GC_G1_G1VMOPERATIONS_HPP
--- a/src/hotspot/share/gc/g1/heapRegion.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/heapRegion.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -26,6 +26,7 @@
 #include "code/nmethod.hpp"
 #include "gc/g1/g1BlockOffsetTable.inline.hpp"
 #include "gc/g1/g1CollectedHeap.inline.hpp"
+#include "gc/g1/g1CollectionSet.hpp"
 #include "gc/g1/g1HeapRegionTraceType.hpp"
 #include "gc/g1/g1OopClosures.inline.hpp"
 #include "gc/g1/heapRegion.inline.hpp"
@@ -240,7 +241,8 @@
     _containing_set(NULL),
 #endif
     _prev_marked_bytes(0), _next_marked_bytes(0), _gc_efficiency(0.0),
-    _young_index_in_cset(-1), _surv_rate_group(NULL), _age_index(-1),
+    _index_in_opt_cset(G1OptionalCSet::InvalidCSetIndex), _young_index_in_cset(-1),
+    _surv_rate_group(NULL), _age_index(-1),
     _prev_top_at_mark_start(NULL), _next_top_at_mark_start(NULL),
     _recorded_rs_length(0), _predicted_elapsed_time_ms(0)
 {
--- a/src/hotspot/share/gc/g1/heapRegion.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/heapRegion.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -250,6 +250,9 @@
   // The calculated GC efficiency of the region.
   double _gc_efficiency;
 
+  // The index in the optional regions array, if this region
+  // is considered optional during a mixed collections.
+  uint _index_in_opt_cset;
   int  _young_index_in_cset;
   SurvRateGroup* _surv_rate_group;
   int  _age_index;
@@ -526,14 +529,6 @@
   // info fields.
   inline void note_end_of_marking();
 
-  // Notify the region that it will be used as to-space during a GC
-  // and we are about to start copying objects into it.
-  inline void note_start_of_copying(bool during_initial_mark);
-
-  // Notify the region that it ceases being to-space during a GC and
-  // we will not copy objects into it any more.
-  inline void note_end_of_copying(bool during_initial_mark);
-
   // Notify the region that we are about to start processing
   // self-forwarded objects during evac failure handling.
   void note_self_forwarding_removal_start(bool during_initial_mark,
@@ -554,6 +549,9 @@
   void calc_gc_efficiency(void);
   double gc_efficiency() { return _gc_efficiency;}
 
+  uint index_in_opt_cset() const { return _index_in_opt_cset; }
+  void set_index_in_opt_cset(uint index) { _index_in_opt_cset = index; }
+
   int  young_index_in_cset() const { return _young_index_in_cset; }
   void set_young_index_in_cset(int index) {
     assert( (index == -1) || is_young(), "pre-condition" );
--- a/src/hotspot/share/gc/g1/heapRegion.inline.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/g1/heapRegion.inline.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -252,49 +252,6 @@
   _next_marked_bytes = 0;
 }
 
-inline void HeapRegion::note_start_of_copying(bool during_initial_mark) {
-  if (is_survivor()) {
-    // This is how we always allocate survivors.
-    assert(_next_top_at_mark_start == bottom(), "invariant");
-  } else {
-    if (during_initial_mark) {
-      // During initial-mark we'll explicitly mark any objects on old
-      // regions that are pointed to by roots. Given that explicit
-      // marks only make sense under NTAMS it'd be nice if we could
-      // check that condition if we wanted to. Given that we don't
-      // know where the top of this region will end up, we simply set
-      // NTAMS to the end of the region so all marks will be below
-      // NTAMS. We'll set it to the actual top when we retire this region.
-      _next_top_at_mark_start = end();
-    } else {
-      // We could have re-used this old region as to-space over a
-      // couple of GCs since the start of the concurrent marking
-      // cycle. This means that [bottom,NTAMS) will contain objects
-      // copied up to and including initial-mark and [NTAMS, top)
-      // will contain objects copied during the concurrent marking cycle.
-      assert(top() >= _next_top_at_mark_start, "invariant");
-    }
-  }
-}
-
-inline void HeapRegion::note_end_of_copying(bool during_initial_mark) {
-  if (is_survivor()) {
-    // This is how we always allocate survivors.
-    assert(_next_top_at_mark_start == bottom(), "invariant");
-  } else {
-    if (during_initial_mark) {
-      // See the comment for note_start_of_copying() for the details
-      // on this.
-      assert(_next_top_at_mark_start == end(), "pre-condition");
-      _next_top_at_mark_start = top();
-    } else {
-      // See the comment for note_start_of_copying() for the details
-      // on this.
-      assert(top() >= _next_top_at_mark_start, "invariant");
-    }
-  }
-}
-
 inline bool HeapRegion::in_collection_set() const {
   return G1CollectedHeap::heap()->is_in_cset(this);
 }
--- a/src/hotspot/share/gc/g1/vm_operations_g1.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,223 +0,0 @@
-/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "gc/g1/g1CollectedHeap.inline.hpp"
-#include "gc/g1/g1ConcurrentMarkThread.inline.hpp"
-#include "gc/g1/g1Policy.hpp"
-#include "gc/shared/gcId.hpp"
-#include "gc/g1/vm_operations_g1.hpp"
-#include "gc/shared/gcTimer.hpp"
-#include "gc/shared/gcTraceTime.inline.hpp"
-#include "gc/shared/isGCActiveMark.hpp"
-#include "runtime/interfaceSupport.inline.hpp"
-
-void VM_G1CollectFull::doit() {
-  G1CollectedHeap* g1h = G1CollectedHeap::heap();
-  GCCauseSetter x(g1h, _gc_cause);
-  g1h->do_full_collection(false /* clear_all_soft_refs */);
-}
-
-VM_G1CollectForAllocation::VM_G1CollectForAllocation(size_t         word_size,
-                                                     uint           gc_count_before,
-                                                     GCCause::Cause gc_cause,
-                                                     bool           should_initiate_conc_mark,
-                                                     double         target_pause_time_ms)
-  : VM_CollectForAllocation(word_size, gc_count_before, gc_cause),
-    _pause_succeeded(false),
-    _should_initiate_conc_mark(should_initiate_conc_mark),
-    _should_retry_gc(false),
-    _target_pause_time_ms(target_pause_time_ms),
-    _old_marking_cycles_completed_before(0) {
-  guarantee(target_pause_time_ms > 0.0,
-            "target_pause_time_ms = %1.6lf should be positive",
-            target_pause_time_ms);
-  _gc_cause = gc_cause;
-}
-
-bool VM_G1CollectForAllocation::doit_prologue() {
-  bool res = VM_CollectForAllocation::doit_prologue();
-  if (!res) {
-    if (_should_initiate_conc_mark) {
-      // The prologue can fail for a couple of reasons. The first is that another GC
-      // got scheduled and prevented the scheduling of the initial mark GC. The
-      // second is that the GC locker may be active and the heap can't be expanded.
-      // In both cases we want to retry the GC so that the initial mark pause is
-      // actually scheduled. In the second case, however, we should stall until
-      // until the GC locker is no longer active and then retry the initial mark GC.
-      _should_retry_gc = true;
-    }
-  }
-  return res;
-}
-
-void VM_G1CollectForAllocation::doit() {
-  G1CollectedHeap* g1h = G1CollectedHeap::heap();
-  assert(!_should_initiate_conc_mark || g1h->should_do_concurrent_full_gc(_gc_cause),
-      "only a GC locker, a System.gc(), stats update, whitebox, or a hum allocation induced GC should start a cycle");
-
-  if (_word_size > 0) {
-    // An allocation has been requested. So, try to do that first.
-    _result = g1h->attempt_allocation_at_safepoint(_word_size,
-                                                   false /* expect_null_cur_alloc_region */);
-    if (_result != NULL) {
-      // If we can successfully allocate before we actually do the
-      // pause then we will consider this pause successful.
-      _pause_succeeded = true;
-      return;
-    }
-  }
-
-  GCCauseSetter x(g1h, _gc_cause);
-  if (_should_initiate_conc_mark) {
-    // It's safer to read old_marking_cycles_completed() here, given
-    // that noone else will be updating it concurrently. Since we'll
-    // only need it if we're initiating a marking cycle, no point in
-    // setting it earlier.
-    _old_marking_cycles_completed_before = g1h->old_marking_cycles_completed();
-
-    // At this point we are supposed to start a concurrent cycle. We
-    // will do so if one is not already in progress.
-    bool res = g1h->g1_policy()->force_initial_mark_if_outside_cycle(_gc_cause);
-
-    // The above routine returns true if we were able to force the
-    // next GC pause to be an initial mark; it returns false if a
-    // marking cycle is already in progress.
-    //
-    // If a marking cycle is already in progress just return and skip the
-    // pause below - if the reason for requesting this initial mark pause
-    // was due to a System.gc() then the requesting thread should block in
-    // doit_epilogue() until the marking cycle is complete.
-    //
-    // If this initial mark pause was requested as part of a humongous
-    // allocation then we know that the marking cycle must just have
-    // been started by another thread (possibly also allocating a humongous
-    // object) as there was no active marking cycle when the requesting
-    // thread checked before calling collect() in
-    // attempt_allocation_humongous(). Retrying the GC, in this case,
-    // will cause the requesting thread to spin inside collect() until the
-    // just started marking cycle is complete - which may be a while. So
-    // we do NOT retry the GC.
-    if (!res) {
-      assert(_word_size == 0, "Concurrent Full GC/Humongous Object IM shouldn't be allocating");
-      if (_gc_cause != GCCause::_g1_humongous_allocation) {
-        _should_retry_gc = true;
-      }
-      return;
-    }
-  }
-
-  // Try a partial collection of some kind.
-  _pause_succeeded = g1h->do_collection_pause_at_safepoint(_target_pause_time_ms);
-
-  if (_pause_succeeded) {
-    if (_word_size > 0) {
-      // An allocation had been requested. Do it, eventually trying a stronger
-      // kind of GC.
-      _result = g1h->satisfy_failed_allocation(_word_size, &_pause_succeeded);
-    } else {
-      bool should_upgrade_to_full = !g1h->should_do_concurrent_full_gc(_gc_cause) &&
-                                    !g1h->has_regions_left_for_allocation();
-      if (should_upgrade_to_full) {
-        // There has been a request to perform a GC to free some space. We have no
-        // information on how much memory has been asked for. In case there are
-        // absolutely no regions left to allocate into, do a maximally compacting full GC.
-        log_info(gc, ergo)("Attempting maximally compacting collection");
-        _pause_succeeded = g1h->do_full_collection(false, /* explicit gc */
-                                                   true   /* clear_all_soft_refs */);
-      }
-    }
-    guarantee(_pause_succeeded, "Elevated collections during the safepoint must always succeed.");
-  } else {
-    assert(_result == NULL, "invariant");
-    // The only reason for the pause to not be successful is that, the GC locker is
-    // active (or has become active since the prologue was executed). In this case
-    // we should retry the pause after waiting for the GC locker to become inactive.
-    _should_retry_gc = true;
-  }
-}
-
-void VM_G1CollectForAllocation::doit_epilogue() {
-  VM_CollectForAllocation::doit_epilogue();
-
-  // If the pause was initiated by a System.gc() and
-  // +ExplicitGCInvokesConcurrent, we have to wait here for the cycle
-  // that just started (or maybe one that was already in progress) to
-  // finish.
-  if (GCCause::is_user_requested_gc(_gc_cause) &&
-      _should_initiate_conc_mark) {
-    assert(ExplicitGCInvokesConcurrent,
-           "the only way to be here is if ExplicitGCInvokesConcurrent is set");
-
-    G1CollectedHeap* g1h = G1CollectedHeap::heap();
-
-    // In the doit() method we saved g1h->old_marking_cycles_completed()
-    // in the _old_marking_cycles_completed_before field. We have to
-    // wait until we observe that g1h->old_marking_cycles_completed()
-    // has increased by at least one. This can happen if a) we started
-    // a cycle and it completes, b) a cycle already in progress
-    // completes, or c) a Full GC happens.
-
-    // If the condition has already been reached, there's no point in
-    // actually taking the lock and doing the wait.
-    if (g1h->old_marking_cycles_completed() <=
-                                          _old_marking_cycles_completed_before) {
-      // The following is largely copied from CMS
-
-      Thread* thr = Thread::current();
-      assert(thr->is_Java_thread(), "invariant");
-      JavaThread* jt = (JavaThread*)thr;
-      ThreadToNativeFromVM native(jt);
-
-      MutexLockerEx x(FullGCCount_lock, Mutex::_no_safepoint_check_flag);
-      while (g1h->old_marking_cycles_completed() <=
-                                          _old_marking_cycles_completed_before) {
-        FullGCCount_lock->wait(Mutex::_no_safepoint_check_flag);
-      }
-    }
-  }
-}
-
-void VM_CGC_Operation::doit() {
-  GCIdMark gc_id_mark(_gc_id);
-  GCTraceCPUTime tcpu;
-  G1CollectedHeap* g1h = G1CollectedHeap::heap();
-  GCTraceTime(Info, gc) t(_printGCMessage, g1h->concurrent_mark()->gc_timer_cm(), GCCause::_no_gc, true);
-  TraceCollectorStats tcs(g1h->g1mm()->conc_collection_counters());
-  SvcGCMarker sgcm(SvcGCMarker::CONCURRENT);
-  IsGCActiveMark x;
-  _cl->do_void();
-}
-
-bool VM_CGC_Operation::doit_prologue() {
-  Heap_lock->lock();
-  return true;
-}
-
-void VM_CGC_Operation::doit_epilogue() {
-  if (Universe::has_reference_pending_list()) {
-    Heap_lock->notify_all();
-  }
-  Heap_lock->unlock();
-}
--- a/src/hotspot/share/gc/g1/vm_operations_g1.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_GC_G1_VM_OPERATIONS_G1_HPP
-#define SHARE_VM_GC_G1_VM_OPERATIONS_G1_HPP
-
-#include "gc/shared/gcId.hpp"
-#include "gc/shared/vmGCOperations.hpp"
-
-// VM_operations for the G1 collector.
-// VM_GC_Operation:
-//   - VM_CGC_Operation
-//   - VM_G1CollectForAllocation
-//   - VM_G1CollectFull
-
-class VM_G1CollectFull: public VM_GC_Operation {
-public:
-  VM_G1CollectFull(uint gc_count_before,
-                   uint full_gc_count_before,
-                   GCCause::Cause cause)
-    : VM_GC_Operation(gc_count_before, cause, full_gc_count_before, true) { }
-  virtual VMOp_Type type() const { return VMOp_G1CollectFull; }
-  virtual void doit();
-  virtual const char* name() const {
-    return "G1 Full collection";
-  }
-};
-
-class VM_G1CollectForAllocation: public VM_CollectForAllocation {
-private:
-  bool         _pause_succeeded;
-
-  bool         _should_initiate_conc_mark;
-  bool         _should_retry_gc;
-  double       _target_pause_time_ms;
-  uint         _old_marking_cycles_completed_before;
-public:
-  VM_G1CollectForAllocation(size_t         word_size,
-                            uint           gc_count_before,
-                            GCCause::Cause gc_cause,
-                            bool           should_initiate_conc_mark,
-                            double         target_pause_time_ms);
-  virtual VMOp_Type type() const { return VMOp_G1CollectForAllocation; }
-  virtual bool doit_prologue();
-  virtual void doit();
-  virtual void doit_epilogue();
-  virtual const char* name() const {
-    return "G1 collect for allocation";
-  }
-  bool should_retry_gc() const { return _should_retry_gc; }
-  bool pause_succeeded() { return _pause_succeeded; }
-};
-
-// Concurrent GC stop-the-world operations such as remark and cleanup;
-// consider sharing these with CMS's counterparts.
-class VM_CGC_Operation: public VM_Operation {
-  VoidClosure* _cl;
-  const char*  _printGCMessage;
-  uint         _gc_id;
-
-public:
-  VM_CGC_Operation(VoidClosure* cl, const char *printGCMsg)
-    : _cl(cl), _printGCMessage(printGCMsg), _gc_id(GCId::current()) {}
-  virtual VMOp_Type type() const { return VMOp_CGC_Operation; }
-  virtual void doit();
-  virtual bool doit_prologue();
-  virtual void doit_epilogue();
-  virtual const char* name() const {
-    return "concurrent gc";
-  }
-};
-
-#endif // SHARE_VM_GC_G1_VM_OPERATIONS_G1_HPP
--- a/src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -36,7 +36,7 @@
 #include "gc/parallel/psParallelCompact.inline.hpp"
 #include "gc/parallel/psPromotionManager.hpp"
 #include "gc/parallel/psScavenge.hpp"
-#include "gc/parallel/vmPSOperations.hpp"
+#include "gc/parallel/psVMOperations.hpp"
 #include "gc/shared/gcHeapSummary.hpp"
 #include "gc/shared/gcLocker.hpp"
 #include "gc/shared/gcWhen.hpp"
--- a/src/hotspot/share/gc/parallel/psScavenge.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/parallel/psScavenge.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -57,7 +57,7 @@
 #include "runtime/handles.inline.hpp"
 #include "runtime/threadCritical.hpp"
 #include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "services/memoryService.hpp"
 #include "utilities/stack.inline.hpp"
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/parallel/psVMOperations.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "gc/parallel/parallelScavengeHeap.inline.hpp"
+#include "gc/parallel/psScavenge.hpp"
+#include "gc/parallel/psVMOperations.hpp"
+#include "gc/shared/gcLocker.hpp"
+#include "utilities/dtrace.hpp"
+
+// The following methods are used by the parallel scavenge collector
+VM_ParallelGCFailedAllocation::VM_ParallelGCFailedAllocation(size_t word_size,
+                                                             uint gc_count) :
+    VM_CollectForAllocation(word_size, gc_count, GCCause::_allocation_failure) {
+  assert(word_size != 0, "An allocation should always be requested with this operation.");
+}
+
+void VM_ParallelGCFailedAllocation::doit() {
+  SvcGCMarker sgcm(SvcGCMarker::MINOR);
+
+  ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
+
+  GCCauseSetter gccs(heap, _gc_cause);
+  _result = heap->failed_mem_allocate(_word_size);
+
+  if (_result == NULL && GCLocker::is_active_and_needs_gc()) {
+    set_gc_locked();
+  }
+}
+
+// Only used for System.gc() calls
+VM_ParallelGCSystemGC::VM_ParallelGCSystemGC(uint gc_count,
+                                             uint full_gc_count,
+                                             GCCause::Cause gc_cause) :
+  VM_GC_Operation(gc_count, gc_cause, full_gc_count, true /* full */)
+{
+}
+
+void VM_ParallelGCSystemGC::doit() {
+  SvcGCMarker sgcm(SvcGCMarker::FULL);
+
+  ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
+
+  GCCauseSetter gccs(heap, _gc_cause);
+  if (_gc_cause == GCCause::_gc_locker || _gc_cause == GCCause::_wb_young_gc
+      DEBUG_ONLY(|| _gc_cause == GCCause::_scavenge_alot)) {
+    // If (and only if) the scavenge fails, this will invoke a full gc.
+    heap->invoke_scavenge();
+  } else {
+    heap->do_full_collection(false);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/parallel/psVMOperations.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_GC_PARALLEL_PSVMOPERATIONS_HPP
+#define SHARE_VM_GC_PARALLEL_PSVMOPERATIONS_HPP
+
+#include "gc/parallel/parallelScavengeHeap.hpp"
+#include "gc/shared/gcCause.hpp"
+#include "gc/shared/gcVMOperations.hpp"
+
+class VM_ParallelGCFailedAllocation : public VM_CollectForAllocation {
+ public:
+  VM_ParallelGCFailedAllocation(size_t word_size, uint gc_count);
+
+  virtual VMOp_Type type() const {
+    return VMOp_ParallelGCFailedAllocation;
+  }
+  virtual void doit();
+};
+
+class VM_ParallelGCSystemGC: public VM_GC_Operation {
+ public:
+  VM_ParallelGCSystemGC(uint gc_count, uint full_gc_count, GCCause::Cause gc_cause);
+  virtual VMOp_Type type() const { return VMOp_ParallelGCSystemGC; }
+  virtual void doit();
+};
+
+#endif // SHARE_VM_GC_PARALLEL_PSVMOPERATIONS_HPP
--- a/src/hotspot/share/gc/parallel/vmPSOperations.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "gc/parallel/parallelScavengeHeap.inline.hpp"
-#include "gc/parallel/psScavenge.hpp"
-#include "gc/parallel/vmPSOperations.hpp"
-#include "gc/shared/gcLocker.hpp"
-#include "utilities/dtrace.hpp"
-
-// The following methods are used by the parallel scavenge collector
-VM_ParallelGCFailedAllocation::VM_ParallelGCFailedAllocation(size_t word_size,
-                                                             uint gc_count) :
-    VM_CollectForAllocation(word_size, gc_count, GCCause::_allocation_failure) {
-  assert(word_size != 0, "An allocation should always be requested with this operation.");
-}
-
-void VM_ParallelGCFailedAllocation::doit() {
-  SvcGCMarker sgcm(SvcGCMarker::MINOR);
-
-  ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
-
-  GCCauseSetter gccs(heap, _gc_cause);
-  _result = heap->failed_mem_allocate(_word_size);
-
-  if (_result == NULL && GCLocker::is_active_and_needs_gc()) {
-    set_gc_locked();
-  }
-}
-
-// Only used for System.gc() calls
-VM_ParallelGCSystemGC::VM_ParallelGCSystemGC(uint gc_count,
-                                             uint full_gc_count,
-                                             GCCause::Cause gc_cause) :
-  VM_GC_Operation(gc_count, gc_cause, full_gc_count, true /* full */)
-{
-}
-
-void VM_ParallelGCSystemGC::doit() {
-  SvcGCMarker sgcm(SvcGCMarker::FULL);
-
-  ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
-
-  GCCauseSetter gccs(heap, _gc_cause);
-  if (_gc_cause == GCCause::_gc_locker || _gc_cause == GCCause::_wb_young_gc
-      DEBUG_ONLY(|| _gc_cause == GCCause::_scavenge_alot)) {
-    // If (and only if) the scavenge fails, this will invoke a full gc.
-    heap->invoke_scavenge();
-  } else {
-    heap->do_full_collection(false);
-  }
-}
--- a/src/hotspot/share/gc/parallel/vmPSOperations.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_GC_PARALLEL_VMPSOPERATIONS_HPP
-#define SHARE_VM_GC_PARALLEL_VMPSOPERATIONS_HPP
-
-#include "gc/parallel/parallelScavengeHeap.hpp"
-#include "gc/shared/gcCause.hpp"
-#include "gc/shared/vmGCOperations.hpp"
-
-class VM_ParallelGCFailedAllocation : public VM_CollectForAllocation {
- public:
-  VM_ParallelGCFailedAllocation(size_t word_size, uint gc_count);
-
-  virtual VMOp_Type type() const {
-    return VMOp_ParallelGCFailedAllocation;
-  }
-  virtual void doit();
-};
-
-class VM_ParallelGCSystemGC: public VM_GC_Operation {
- public:
-  VM_ParallelGCSystemGC(uint gc_count, uint full_gc_count, GCCause::Cause gc_cause);
-  virtual VMOp_Type type() const { return VMOp_ParallelGCSystemGC; }
-  virtual void doit();
-};
-
-#endif // SHARE_VM_GC_PARALLEL_VMPSOPERATIONS_HPP
--- a/src/hotspot/share/gc/shared/collectedHeap.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/shared/collectedHeap.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -32,9 +32,9 @@
 #include "gc/shared/gcHeapSummary.hpp"
 #include "gc/shared/gcTrace.hpp"
 #include "gc/shared/gcTraceTime.inline.hpp"
+#include "gc/shared/gcVMOperations.hpp"
 #include "gc/shared/gcWhen.hpp"
 #include "gc/shared/memAllocator.hpp"
-#include "gc/shared/vmGCOperations.hpp"
 #include "logging/log.hpp"
 #include "memory/metaspace.hpp"
 #include "memory/resourceArea.hpp"
--- a/src/hotspot/share/gc/shared/collectorPolicy.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/shared/collectorPolicy.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -28,9 +28,9 @@
 #include "gc/shared/collectorPolicy.hpp"
 #include "gc/shared/gcLocker.hpp"
 #include "gc/shared/gcPolicyCounters.hpp"
+#include "gc/shared/gcVMOperations.hpp"
 #include "gc/shared/generationSpec.hpp"
 #include "gc/shared/space.hpp"
-#include "gc/shared/vmGCOperations.hpp"
 #include "logging/log.hpp"
 #include "memory/universe.hpp"
 #include "runtime/arguments.hpp"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/shared/gcVMOperations.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,290 @@
+/*
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "classfile/classLoader.hpp"
+#include "classfile/javaClasses.hpp"
+#include "gc/shared/allocTracer.hpp"
+#include "gc/shared/gcId.hpp"
+#include "gc/shared/gcLocker.hpp"
+#include "gc/shared/gcVMOperations.hpp"
+#include "gc/shared/genCollectedHeap.hpp"
+#include "interpreter/oopMapCache.hpp"
+#include "logging/log.hpp"
+#include "memory/oopFactory.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/init.hpp"
+#include "utilities/dtrace.hpp"
+#include "utilities/macros.hpp"
+#include "utilities/preserveException.hpp"
+#if INCLUDE_G1GC
+#include "gc/g1/g1CollectedHeap.inline.hpp"
+#include "gc/g1/g1Policy.hpp"
+#endif // INCLUDE_G1GC
+
+VM_GC_Operation::~VM_GC_Operation() {
+  CollectedHeap* ch = Universe::heap();
+  ch->soft_ref_policy()->set_all_soft_refs_clear(false);
+}
+
+// The same dtrace probe can't be inserted in two different files, so we
+// have to call it here, so it's only in one file.  Can't create new probes
+// for the other file anymore.   The dtrace probes have to remain stable.
+void VM_GC_Operation::notify_gc_begin(bool full) {
+  HOTSPOT_GC_BEGIN(
+                   full);
+  HS_DTRACE_WORKAROUND_TAIL_CALL_BUG();
+}
+
+void VM_GC_Operation::notify_gc_end() {
+  HOTSPOT_GC_END();
+  HS_DTRACE_WORKAROUND_TAIL_CALL_BUG();
+}
+
+// Allocations may fail in several threads at about the same time,
+// resulting in multiple gc requests.  We only want to do one of them.
+// In case a GC locker is active and the need for a GC is already signaled,
+// we want to skip this GC attempt altogether, without doing a futile
+// safepoint operation.
+bool VM_GC_Operation::skip_operation() const {
+  bool skip = (_gc_count_before != Universe::heap()->total_collections());
+  if (_full && skip) {
+    skip = (_full_gc_count_before != Universe::heap()->total_full_collections());
+  }
+  if (!skip && GCLocker::is_active_and_needs_gc()) {
+    skip = Universe::heap()->is_maximal_no_gc();
+    assert(!(skip && (_gc_cause == GCCause::_gc_locker)),
+           "GCLocker cannot be active when initiating GC");
+  }
+  return skip;
+}
+
+bool VM_GC_Operation::doit_prologue() {
+  assert(Thread::current()->is_Java_thread(), "just checking");
+  assert(((_gc_cause != GCCause::_no_gc) &&
+          (_gc_cause != GCCause::_no_cause_specified)), "Illegal GCCause");
+
+  // To be able to handle a GC the VM initialization needs to be completed.
+  if (!is_init_completed()) {
+    vm_exit_during_initialization(
+      err_msg("GC triggered before VM initialization completed. Try increasing "
+              "NewSize, current value " SIZE_FORMAT "%s.",
+              byte_size_in_proper_unit(NewSize),
+              proper_unit_for_byte_size(NewSize)));
+  }
+
+  // If the GC count has changed someone beat us to the collection
+  Heap_lock->lock();
+
+  // Check invocations
+  if (skip_operation()) {
+    // skip collection
+    Heap_lock->unlock();
+    _prologue_succeeded = false;
+  } else {
+    _prologue_succeeded = true;
+  }
+  return _prologue_succeeded;
+}
+
+
+void VM_GC_Operation::doit_epilogue() {
+  assert(Thread::current()->is_Java_thread(), "just checking");
+  // Clean up old interpreter OopMap entries that were replaced
+  // during the GC thread root traversal.
+  OopMapCache::cleanup_old_entries();
+  if (Universe::has_reference_pending_list()) {
+    Heap_lock->notify_all();
+  }
+  Heap_lock->unlock();
+}
+
+bool VM_GC_HeapInspection::skip_operation() const {
+  return false;
+}
+
+bool VM_GC_HeapInspection::collect() {
+  if (GCLocker::is_active()) {
+    return false;
+  }
+  Universe::heap()->collect_as_vm_thread(GCCause::_heap_inspection);
+  return true;
+}
+
+void VM_GC_HeapInspection::doit() {
+  HandleMark hm;
+  Universe::heap()->ensure_parsability(false); // must happen, even if collection does
+                                               // not happen (e.g. due to GCLocker)
+                                               // or _full_gc being false
+  if (_full_gc) {
+    if (!collect()) {
+      // The collection attempt was skipped because the gc locker is held.
+      // The following dump may then be a tad misleading to someone expecting
+      // only live objects to show up in the dump (see CR 6944195). Just issue
+      // a suitable warning in that case and do not attempt to do a collection.
+      // The latter is a subtle point, because even a failed attempt
+      // to GC will, in fact, induce one in the future, which we
+      // probably want to avoid in this case because the GC that we may
+      // be about to attempt holds value for us only
+      // if it happens now and not if it happens in the eventual
+      // future.
+      log_warning(gc)("GC locker is held; pre-dump GC was skipped");
+    }
+  }
+  HeapInspection inspect(_csv_format, _print_help, _print_class_stats,
+                         _columns);
+  inspect.heap_inspection(_out);
+}
+
+
+void VM_GenCollectForAllocation::doit() {
+  SvcGCMarker sgcm(SvcGCMarker::MINOR);
+
+  GenCollectedHeap* gch = GenCollectedHeap::heap();
+  GCCauseSetter gccs(gch, _gc_cause);
+  _result = gch->satisfy_failed_allocation(_word_size, _tlab);
+  assert(gch->is_in_reserved_or_null(_result), "result not in heap");
+
+  if (_result == NULL && GCLocker::is_active_and_needs_gc()) {
+    set_gc_locked();
+  }
+}
+
+void VM_GenCollectFull::doit() {
+  SvcGCMarker sgcm(SvcGCMarker::FULL);
+
+  GenCollectedHeap* gch = GenCollectedHeap::heap();
+  GCCauseSetter gccs(gch, _gc_cause);
+  gch->do_full_collection(gch->must_clear_all_soft_refs(), _max_generation);
+}
+
+VM_CollectForMetadataAllocation::VM_CollectForMetadataAllocation(ClassLoaderData* loader_data,
+                                                                 size_t size,
+                                                                 Metaspace::MetadataType mdtype,
+                                                                 uint gc_count_before,
+                                                                 uint full_gc_count_before,
+                                                                 GCCause::Cause gc_cause)
+    : VM_GC_Operation(gc_count_before, gc_cause, full_gc_count_before, true),
+      _result(NULL), _size(size), _mdtype(mdtype), _loader_data(loader_data) {
+  assert(_size != 0, "An allocation should always be requested with this operation.");
+  AllocTracer::send_allocation_requiring_gc_event(_size * HeapWordSize, GCId::peek());
+}
+
+// Returns true iff concurrent GCs unloads metadata.
+bool VM_CollectForMetadataAllocation::initiate_concurrent_GC() {
+#if INCLUDE_CMSGC
+  if (UseConcMarkSweepGC && CMSClassUnloadingEnabled) {
+    MetaspaceGC::set_should_concurrent_collect(true);
+    return true;
+  }
+#endif
+
+#if INCLUDE_G1GC
+  if (UseG1GC && ClassUnloadingWithConcurrentMark) {
+    G1CollectedHeap* g1h = G1CollectedHeap::heap();
+    g1h->g1_policy()->collector_state()->set_initiate_conc_mark_if_possible(true);
+
+    GCCauseSetter x(g1h, _gc_cause);
+
+    // At this point we are supposed to start a concurrent cycle. We
+    // will do so if one is not already in progress.
+    bool should_start = g1h->g1_policy()->force_initial_mark_if_outside_cycle(_gc_cause);
+
+    if (should_start) {
+      double pause_target = g1h->g1_policy()->max_pause_time_ms();
+      g1h->do_collection_pause_at_safepoint(pause_target);
+    }
+    return true;
+  }
+#endif
+
+  return false;
+}
+
+void VM_CollectForMetadataAllocation::doit() {
+  SvcGCMarker sgcm(SvcGCMarker::FULL);
+
+  CollectedHeap* heap = Universe::heap();
+  GCCauseSetter gccs(heap, _gc_cause);
+
+  // Check again if the space is available.  Another thread
+  // may have similarly failed a metadata allocation and induced
+  // a GC that freed space for the allocation.
+  if (!MetadataAllocationFailALot) {
+    _result = _loader_data->metaspace_non_null()->allocate(_size, _mdtype);
+    if (_result != NULL) {
+      return;
+    }
+  }
+
+  if (initiate_concurrent_GC()) {
+    // For CMS and G1 expand since the collection is going to be concurrent.
+    _result = _loader_data->metaspace_non_null()->expand_and_allocate(_size, _mdtype);
+    if (_result != NULL) {
+      return;
+    }
+
+    log_debug(gc)("%s full GC for Metaspace", UseConcMarkSweepGC ? "CMS" : "G1");
+  }
+
+  // Don't clear the soft refs yet.
+  heap->collect_as_vm_thread(GCCause::_metadata_GC_threshold);
+  // After a GC try to allocate without expanding.  Could fail
+  // and expansion will be tried below.
+  _result = _loader_data->metaspace_non_null()->allocate(_size, _mdtype);
+  if (_result != NULL) {
+    return;
+  }
+
+  // If still failing, allow the Metaspace to expand.
+  // See delta_capacity_until_GC() for explanation of the
+  // amount of the expansion.
+  // This should work unless there really is no more space
+  // or a MaxMetaspaceSize has been specified on the command line.
+  _result = _loader_data->metaspace_non_null()->expand_and_allocate(_size, _mdtype);
+  if (_result != NULL) {
+    return;
+  }
+
+  // If expansion failed, do a collection clearing soft references.
+  heap->collect_as_vm_thread(GCCause::_metadata_GC_clear_soft_refs);
+  _result = _loader_data->metaspace_non_null()->allocate(_size, _mdtype);
+  if (_result != NULL) {
+    return;
+  }
+
+  log_debug(gc)("After Metaspace GC failed to allocate size " SIZE_FORMAT, _size);
+
+  if (GCLocker::is_active_and_needs_gc()) {
+    set_gc_locked();
+  }
+}
+
+VM_CollectForAllocation::VM_CollectForAllocation(size_t word_size, uint gc_count_before, GCCause::Cause cause)
+    : VM_GC_Operation(gc_count_before, cause), _word_size(word_size), _result(NULL) {
+  // Only report if operation was really caused by an allocation.
+  if (_word_size != 0) {
+    AllocTracer::send_allocation_requiring_gc_event(_word_size * HeapWordSize, GCId::peek());
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/shared/gcVMOperations.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,241 @@
+/*
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_GC_SHARED_GCVMOPERATIONS_HPP
+#define SHARE_VM_GC_SHARED_GCVMOPERATIONS_HPP
+
+#include "gc/shared/collectedHeap.hpp"
+#include "gc/shared/genCollectedHeap.hpp"
+#include "memory/heapInspection.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/jniHandles.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/vmOperations.hpp"
+
+// The following class hierarchy represents
+// a set of operations (VM_Operation) related to GC.
+//
+//  VM_Operation
+//      VM_GC_Operation
+//          VM_GC_HeapInspection
+//          VM_GenCollectFull
+//          VM_GenCollectFullConcurrent
+//          VM_ParallelGCSystemGC
+//          VM_CollectForAllocation
+//              VM_GenCollectForAllocation
+//              VM_ParallelGCFailedAllocation
+//  VM_GC_Operation
+//   - implements methods common to all classes in the hierarchy:
+//     prevents multiple gc requests and manages lock on heap;
+//
+//  VM_GC_HeapInspection
+//   - prints class histogram on SIGBREAK if PrintClassHistogram
+//     is specified; and also the attach "inspectheap" operation
+//
+//  VM_CollectForAllocation
+//  VM_GenCollectForAllocation
+//  VM_ParallelGCFailedAllocation
+//   - this operation is invoked when allocation is failed;
+//     operation performs garbage collection and tries to
+//     allocate afterwards;
+//
+//  VM_GenCollectFull
+//  VM_GenCollectFullConcurrent
+//  VM_ParallelGCSystemGC
+//   - these operations preform full collection of heaps of
+//     different kind
+//
+
+class VM_GC_Operation: public VM_Operation {
+ protected:
+  uint           _gc_count_before;         // gc count before acquiring PLL
+  uint           _full_gc_count_before;    // full gc count before acquiring PLL
+  bool           _full;                    // whether a "full" collection
+  bool           _prologue_succeeded;      // whether doit_prologue succeeded
+  GCCause::Cause _gc_cause;                // the putative cause for this gc op
+  bool           _gc_locked;               // will be set if gc was locked
+
+  virtual bool skip_operation() const;
+
+ public:
+  VM_GC_Operation(uint gc_count_before,
+                  GCCause::Cause _cause,
+                  uint full_gc_count_before = 0,
+                  bool full = false) {
+    _full = full;
+    _prologue_succeeded = false;
+    _gc_count_before    = gc_count_before;
+
+    // A subclass constructor will likely overwrite the following
+    _gc_cause           = _cause;
+
+    _gc_locked = false;
+
+    _full_gc_count_before = full_gc_count_before;
+    // In ParallelScavengeHeap::mem_allocate() collections can be
+    // executed within a loop and _all_soft_refs_clear can be set
+    // true after they have been cleared by a collection and another
+    // collection started so that _all_soft_refs_clear can be true
+    // when this collection is started.  Don't assert that
+    // _all_soft_refs_clear have to be false here even though
+    // mutators have run.  Soft refs will be cleared again in this
+    // collection.
+  }
+  ~VM_GC_Operation();
+
+  // Acquire the reference synchronization lock
+  virtual bool doit_prologue();
+  // Do notifyAll (if needed) and release held lock
+  virtual void doit_epilogue();
+
+  virtual bool allow_nested_vm_operations() const  { return true; }
+  bool prologue_succeeded() const { return _prologue_succeeded; }
+
+  void set_gc_locked() { _gc_locked = true; }
+  bool gc_locked() const  { return _gc_locked; }
+
+  static void notify_gc_begin(bool full = false);
+  static void notify_gc_end();
+};
+
+
+class VM_GC_HeapInspection: public VM_GC_Operation {
+ private:
+  outputStream* _out;
+  bool _full_gc;
+  bool _csv_format; // "comma separated values" format for spreadsheet.
+  bool _print_help;
+  bool _print_class_stats;
+  const char* _columns;
+ public:
+  VM_GC_HeapInspection(outputStream* out, bool request_full_gc) :
+    VM_GC_Operation(0 /* total collections,      dummy, ignored */,
+                    GCCause::_heap_inspection /* GC Cause */,
+                    0 /* total full collections, dummy, ignored */,
+                    request_full_gc) {
+    _out = out;
+    _full_gc = request_full_gc;
+    _csv_format = false;
+    _print_help = false;
+    _print_class_stats = false;
+    _columns = NULL;
+  }
+
+  ~VM_GC_HeapInspection() {}
+  virtual VMOp_Type type() const { return VMOp_GC_HeapInspection; }
+  virtual bool skip_operation() const;
+  virtual void doit();
+  void set_csv_format(bool value) {_csv_format = value;}
+  void set_print_help(bool value) {_print_help = value;}
+  void set_print_class_stats(bool value) {_print_class_stats = value;}
+  void set_columns(const char* value) {_columns = value;}
+ protected:
+  bool collect();
+};
+
+class VM_CollectForAllocation : public VM_GC_Operation {
+ protected:
+  size_t    _word_size; // Size of object to be allocated (in number of words)
+  HeapWord* _result;    // Allocation result (NULL if allocation failed)
+
+ public:
+  VM_CollectForAllocation(size_t word_size, uint gc_count_before, GCCause::Cause cause);
+
+  HeapWord* result() const {
+    return _result;
+  }
+};
+
+class VM_GenCollectForAllocation : public VM_CollectForAllocation {
+ private:
+  bool        _tlab;                       // alloc is of a tlab.
+ public:
+  VM_GenCollectForAllocation(size_t word_size,
+                             bool tlab,
+                             uint gc_count_before)
+    : VM_CollectForAllocation(word_size, gc_count_before, GCCause::_allocation_failure),
+      _tlab(tlab) {
+    assert(word_size != 0, "An allocation should always be requested with this operation.");
+  }
+  ~VM_GenCollectForAllocation()  {}
+  virtual VMOp_Type type() const { return VMOp_GenCollectForAllocation; }
+  virtual void doit();
+};
+
+// VM operation to invoke a collection of the heap as a
+// GenCollectedHeap heap.
+class VM_GenCollectFull: public VM_GC_Operation {
+ private:
+  GenCollectedHeap::GenerationType _max_generation;
+ public:
+  VM_GenCollectFull(uint gc_count_before,
+                    uint full_gc_count_before,
+                    GCCause::Cause gc_cause,
+                    GenCollectedHeap::GenerationType max_generation)
+    : VM_GC_Operation(gc_count_before, gc_cause, full_gc_count_before, true /* full */),
+      _max_generation(max_generation) { }
+  ~VM_GenCollectFull() {}
+  virtual VMOp_Type type() const { return VMOp_GenCollectFull; }
+  virtual void doit();
+};
+
+class VM_CollectForMetadataAllocation: public VM_GC_Operation {
+ private:
+  MetaWord*                _result;
+  size_t                   _size;     // size of object to be allocated
+  Metaspace::MetadataType  _mdtype;
+  ClassLoaderData*         _loader_data;
+
+ public:
+  VM_CollectForMetadataAllocation(ClassLoaderData* loader_data,
+                                  size_t size,
+                                  Metaspace::MetadataType mdtype,
+                                  uint gc_count_before,
+                                  uint full_gc_count_before,
+                                  GCCause::Cause gc_cause);
+
+  virtual VMOp_Type type() const { return VMOp_CollectForMetadataAllocation; }
+  virtual void doit();
+  MetaWord* result() const       { return _result; }
+
+  bool initiate_concurrent_GC();
+};
+
+class SvcGCMarker : public StackObj {
+ private:
+  JvmtiGCMarker _jgcm;
+ public:
+  typedef enum { MINOR, FULL, CONCURRENT } reason_type;
+
+  SvcGCMarker(reason_type reason ) {
+    VM_GC_Operation::notify_gc_begin(reason == FULL);
+  }
+
+  ~SvcGCMarker() {
+    VM_GC_Operation::notify_gc_end();
+  }
+};
+
+#endif // SHARE_VM_GC_SHARED_GCVMOPERATIONS_HPP
--- a/src/hotspot/share/gc/shared/genCollectedHeap.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/shared/genCollectedHeap.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -42,13 +42,13 @@
 #include "gc/shared/gcPolicyCounters.hpp"
 #include "gc/shared/gcTrace.hpp"
 #include "gc/shared/gcTraceTime.inline.hpp"
+#include "gc/shared/gcVMOperations.hpp"
 #include "gc/shared/genCollectedHeap.hpp"
 #include "gc/shared/genOopClosures.inline.hpp"
 #include "gc/shared/generationSpec.hpp"
 #include "gc/shared/oopStorageParState.inline.hpp"
 #include "gc/shared/space.hpp"
 #include "gc/shared/strongRootsScope.hpp"
-#include "gc/shared/vmGCOperations.hpp"
 #include "gc/shared/weakProcessor.hpp"
 #include "gc/shared/workgroup.hpp"
 #include "memory/filemap.hpp"
--- a/src/hotspot/share/gc/shared/vmGCOperations.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,290 +0,0 @@
-/*
- * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "classfile/classLoader.hpp"
-#include "classfile/javaClasses.hpp"
-#include "gc/shared/allocTracer.hpp"
-#include "gc/shared/gcId.hpp"
-#include "gc/shared/gcLocker.hpp"
-#include "gc/shared/genCollectedHeap.hpp"
-#include "gc/shared/vmGCOperations.hpp"
-#include "interpreter/oopMapCache.hpp"
-#include "logging/log.hpp"
-#include "memory/oopFactory.hpp"
-#include "runtime/handles.inline.hpp"
-#include "runtime/init.hpp"
-#include "utilities/dtrace.hpp"
-#include "utilities/macros.hpp"
-#include "utilities/preserveException.hpp"
-#if INCLUDE_G1GC
-#include "gc/g1/g1CollectedHeap.inline.hpp"
-#include "gc/g1/g1Policy.hpp"
-#endif // INCLUDE_G1GC
-
-VM_GC_Operation::~VM_GC_Operation() {
-  CollectedHeap* ch = Universe::heap();
-  ch->soft_ref_policy()->set_all_soft_refs_clear(false);
-}
-
-// The same dtrace probe can't be inserted in two different files, so we
-// have to call it here, so it's only in one file.  Can't create new probes
-// for the other file anymore.   The dtrace probes have to remain stable.
-void VM_GC_Operation::notify_gc_begin(bool full) {
-  HOTSPOT_GC_BEGIN(
-                   full);
-  HS_DTRACE_WORKAROUND_TAIL_CALL_BUG();
-}
-
-void VM_GC_Operation::notify_gc_end() {
-  HOTSPOT_GC_END();
-  HS_DTRACE_WORKAROUND_TAIL_CALL_BUG();
-}
-
-// Allocations may fail in several threads at about the same time,
-// resulting in multiple gc requests.  We only want to do one of them.
-// In case a GC locker is active and the need for a GC is already signaled,
-// we want to skip this GC attempt altogether, without doing a futile
-// safepoint operation.
-bool VM_GC_Operation::skip_operation() const {
-  bool skip = (_gc_count_before != Universe::heap()->total_collections());
-  if (_full && skip) {
-    skip = (_full_gc_count_before != Universe::heap()->total_full_collections());
-  }
-  if (!skip && GCLocker::is_active_and_needs_gc()) {
-    skip = Universe::heap()->is_maximal_no_gc();
-    assert(!(skip && (_gc_cause == GCCause::_gc_locker)),
-           "GCLocker cannot be active when initiating GC");
-  }
-  return skip;
-}
-
-bool VM_GC_Operation::doit_prologue() {
-  assert(Thread::current()->is_Java_thread(), "just checking");
-  assert(((_gc_cause != GCCause::_no_gc) &&
-          (_gc_cause != GCCause::_no_cause_specified)), "Illegal GCCause");
-
-  // To be able to handle a GC the VM initialization needs to be completed.
-  if (!is_init_completed()) {
-    vm_exit_during_initialization(
-      err_msg("GC triggered before VM initialization completed. Try increasing "
-              "NewSize, current value " SIZE_FORMAT "%s.",
-              byte_size_in_proper_unit(NewSize),
-              proper_unit_for_byte_size(NewSize)));
-  }
-
-  // If the GC count has changed someone beat us to the collection
-  Heap_lock->lock();
-
-  // Check invocations
-  if (skip_operation()) {
-    // skip collection
-    Heap_lock->unlock();
-    _prologue_succeeded = false;
-  } else {
-    _prologue_succeeded = true;
-  }
-  return _prologue_succeeded;
-}
-
-
-void VM_GC_Operation::doit_epilogue() {
-  assert(Thread::current()->is_Java_thread(), "just checking");
-  // Clean up old interpreter OopMap entries that were replaced
-  // during the GC thread root traversal.
-  OopMapCache::cleanup_old_entries();
-  if (Universe::has_reference_pending_list()) {
-    Heap_lock->notify_all();
-  }
-  Heap_lock->unlock();
-}
-
-bool VM_GC_HeapInspection::skip_operation() const {
-  return false;
-}
-
-bool VM_GC_HeapInspection::collect() {
-  if (GCLocker::is_active()) {
-    return false;
-  }
-  Universe::heap()->collect_as_vm_thread(GCCause::_heap_inspection);
-  return true;
-}
-
-void VM_GC_HeapInspection::doit() {
-  HandleMark hm;
-  Universe::heap()->ensure_parsability(false); // must happen, even if collection does
-                                               // not happen (e.g. due to GCLocker)
-                                               // or _full_gc being false
-  if (_full_gc) {
-    if (!collect()) {
-      // The collection attempt was skipped because the gc locker is held.
-      // The following dump may then be a tad misleading to someone expecting
-      // only live objects to show up in the dump (see CR 6944195). Just issue
-      // a suitable warning in that case and do not attempt to do a collection.
-      // The latter is a subtle point, because even a failed attempt
-      // to GC will, in fact, induce one in the future, which we
-      // probably want to avoid in this case because the GC that we may
-      // be about to attempt holds value for us only
-      // if it happens now and not if it happens in the eventual
-      // future.
-      log_warning(gc)("GC locker is held; pre-dump GC was skipped");
-    }
-  }
-  HeapInspection inspect(_csv_format, _print_help, _print_class_stats,
-                         _columns);
-  inspect.heap_inspection(_out);
-}
-
-
-void VM_GenCollectForAllocation::doit() {
-  SvcGCMarker sgcm(SvcGCMarker::MINOR);
-
-  GenCollectedHeap* gch = GenCollectedHeap::heap();
-  GCCauseSetter gccs(gch, _gc_cause);
-  _result = gch->satisfy_failed_allocation(_word_size, _tlab);
-  assert(gch->is_in_reserved_or_null(_result), "result not in heap");
-
-  if (_result == NULL && GCLocker::is_active_and_needs_gc()) {
-    set_gc_locked();
-  }
-}
-
-void VM_GenCollectFull::doit() {
-  SvcGCMarker sgcm(SvcGCMarker::FULL);
-
-  GenCollectedHeap* gch = GenCollectedHeap::heap();
-  GCCauseSetter gccs(gch, _gc_cause);
-  gch->do_full_collection(gch->must_clear_all_soft_refs(), _max_generation);
-}
-
-VM_CollectForMetadataAllocation::VM_CollectForMetadataAllocation(ClassLoaderData* loader_data,
-                                                                 size_t size,
-                                                                 Metaspace::MetadataType mdtype,
-                                                                 uint gc_count_before,
-                                                                 uint full_gc_count_before,
-                                                                 GCCause::Cause gc_cause)
-    : VM_GC_Operation(gc_count_before, gc_cause, full_gc_count_before, true),
-      _result(NULL), _size(size), _mdtype(mdtype), _loader_data(loader_data) {
-  assert(_size != 0, "An allocation should always be requested with this operation.");
-  AllocTracer::send_allocation_requiring_gc_event(_size * HeapWordSize, GCId::peek());
-}
-
-// Returns true iff concurrent GCs unloads metadata.
-bool VM_CollectForMetadataAllocation::initiate_concurrent_GC() {
-#if INCLUDE_CMSGC
-  if (UseConcMarkSweepGC && CMSClassUnloadingEnabled) {
-    MetaspaceGC::set_should_concurrent_collect(true);
-    return true;
-  }
-#endif
-
-#if INCLUDE_G1GC
-  if (UseG1GC && ClassUnloadingWithConcurrentMark) {
-    G1CollectedHeap* g1h = G1CollectedHeap::heap();
-    g1h->g1_policy()->collector_state()->set_initiate_conc_mark_if_possible(true);
-
-    GCCauseSetter x(g1h, _gc_cause);
-
-    // At this point we are supposed to start a concurrent cycle. We
-    // will do so if one is not already in progress.
-    bool should_start = g1h->g1_policy()->force_initial_mark_if_outside_cycle(_gc_cause);
-
-    if (should_start) {
-      double pause_target = g1h->g1_policy()->max_pause_time_ms();
-      g1h->do_collection_pause_at_safepoint(pause_target);
-    }
-    return true;
-  }
-#endif
-
-  return false;
-}
-
-void VM_CollectForMetadataAllocation::doit() {
-  SvcGCMarker sgcm(SvcGCMarker::FULL);
-
-  CollectedHeap* heap = Universe::heap();
-  GCCauseSetter gccs(heap, _gc_cause);
-
-  // Check again if the space is available.  Another thread
-  // may have similarly failed a metadata allocation and induced
-  // a GC that freed space for the allocation.
-  if (!MetadataAllocationFailALot) {
-    _result = _loader_data->metaspace_non_null()->allocate(_size, _mdtype);
-    if (_result != NULL) {
-      return;
-    }
-  }
-
-  if (initiate_concurrent_GC()) {
-    // For CMS and G1 expand since the collection is going to be concurrent.
-    _result = _loader_data->metaspace_non_null()->expand_and_allocate(_size, _mdtype);
-    if (_result != NULL) {
-      return;
-    }
-
-    log_debug(gc)("%s full GC for Metaspace", UseConcMarkSweepGC ? "CMS" : "G1");
-  }
-
-  // Don't clear the soft refs yet.
-  heap->collect_as_vm_thread(GCCause::_metadata_GC_threshold);
-  // After a GC try to allocate without expanding.  Could fail
-  // and expansion will be tried below.
-  _result = _loader_data->metaspace_non_null()->allocate(_size, _mdtype);
-  if (_result != NULL) {
-    return;
-  }
-
-  // If still failing, allow the Metaspace to expand.
-  // See delta_capacity_until_GC() for explanation of the
-  // amount of the expansion.
-  // This should work unless there really is no more space
-  // or a MaxMetaspaceSize has been specified on the command line.
-  _result = _loader_data->metaspace_non_null()->expand_and_allocate(_size, _mdtype);
-  if (_result != NULL) {
-    return;
-  }
-
-  // If expansion failed, do a collection clearing soft references.
-  heap->collect_as_vm_thread(GCCause::_metadata_GC_clear_soft_refs);
-  _result = _loader_data->metaspace_non_null()->allocate(_size, _mdtype);
-  if (_result != NULL) {
-    return;
-  }
-
-  log_debug(gc)("After Metaspace GC failed to allocate size " SIZE_FORMAT, _size);
-
-  if (GCLocker::is_active_and_needs_gc()) {
-    set_gc_locked();
-  }
-}
-
-VM_CollectForAllocation::VM_CollectForAllocation(size_t word_size, uint gc_count_before, GCCause::Cause cause)
-    : VM_GC_Operation(gc_count_before, cause), _word_size(word_size), _result(NULL) {
-  // Only report if operation was really caused by an allocation.
-  if (_word_size != 0) {
-    AllocTracer::send_allocation_requiring_gc_event(_word_size * HeapWordSize, GCId::peek());
-  }
-}
--- a/src/hotspot/share/gc/shared/vmGCOperations.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,241 +0,0 @@
-/*
- * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_GC_SHARED_VMGCOPERATIONS_HPP
-#define SHARE_VM_GC_SHARED_VMGCOPERATIONS_HPP
-
-#include "gc/shared/collectedHeap.hpp"
-#include "gc/shared/genCollectedHeap.hpp"
-#include "memory/heapInspection.hpp"
-#include "prims/jvmtiExport.hpp"
-#include "runtime/handles.hpp"
-#include "runtime/jniHandles.hpp"
-#include "runtime/synchronizer.hpp"
-#include "runtime/vm_operations.hpp"
-
-// The following class hierarchy represents
-// a set of operations (VM_Operation) related to GC.
-//
-//  VM_Operation
-//      VM_GC_Operation
-//          VM_GC_HeapInspection
-//          VM_GenCollectFull
-//          VM_GenCollectFullConcurrent
-//          VM_ParallelGCSystemGC
-//          VM_CollectForAllocation
-//              VM_GenCollectForAllocation
-//              VM_ParallelGCFailedAllocation
-//  VM_GC_Operation
-//   - implements methods common to all classes in the hierarchy:
-//     prevents multiple gc requests and manages lock on heap;
-//
-//  VM_GC_HeapInspection
-//   - prints class histogram on SIGBREAK if PrintClassHistogram
-//     is specified; and also the attach "inspectheap" operation
-//
-//  VM_CollectForAllocation
-//  VM_GenCollectForAllocation
-//  VM_ParallelGCFailedAllocation
-//   - this operation is invoked when allocation is failed;
-//     operation performs garbage collection and tries to
-//     allocate afterwards;
-//
-//  VM_GenCollectFull
-//  VM_GenCollectFullConcurrent
-//  VM_ParallelGCSystemGC
-//   - these operations preform full collection of heaps of
-//     different kind
-//
-
-class VM_GC_Operation: public VM_Operation {
- protected:
-  uint           _gc_count_before;         // gc count before acquiring PLL
-  uint           _full_gc_count_before;    // full gc count before acquiring PLL
-  bool           _full;                    // whether a "full" collection
-  bool           _prologue_succeeded;      // whether doit_prologue succeeded
-  GCCause::Cause _gc_cause;                // the putative cause for this gc op
-  bool           _gc_locked;               // will be set if gc was locked
-
-  virtual bool skip_operation() const;
-
- public:
-  VM_GC_Operation(uint gc_count_before,
-                  GCCause::Cause _cause,
-                  uint full_gc_count_before = 0,
-                  bool full = false) {
-    _full = full;
-    _prologue_succeeded = false;
-    _gc_count_before    = gc_count_before;
-
-    // A subclass constructor will likely overwrite the following
-    _gc_cause           = _cause;
-
-    _gc_locked = false;
-
-    _full_gc_count_before = full_gc_count_before;
-    // In ParallelScavengeHeap::mem_allocate() collections can be
-    // executed within a loop and _all_soft_refs_clear can be set
-    // true after they have been cleared by a collection and another
-    // collection started so that _all_soft_refs_clear can be true
-    // when this collection is started.  Don't assert that
-    // _all_soft_refs_clear have to be false here even though
-    // mutators have run.  Soft refs will be cleared again in this
-    // collection.
-  }
-  ~VM_GC_Operation();
-
-  // Acquire the reference synchronization lock
-  virtual bool doit_prologue();
-  // Do notifyAll (if needed) and release held lock
-  virtual void doit_epilogue();
-
-  virtual bool allow_nested_vm_operations() const  { return true; }
-  bool prologue_succeeded() const { return _prologue_succeeded; }
-
-  void set_gc_locked() { _gc_locked = true; }
-  bool gc_locked() const  { return _gc_locked; }
-
-  static void notify_gc_begin(bool full = false);
-  static void notify_gc_end();
-};
-
-
-class VM_GC_HeapInspection: public VM_GC_Operation {
- private:
-  outputStream* _out;
-  bool _full_gc;
-  bool _csv_format; // "comma separated values" format for spreadsheet.
-  bool _print_help;
-  bool _print_class_stats;
-  const char* _columns;
- public:
-  VM_GC_HeapInspection(outputStream* out, bool request_full_gc) :
-    VM_GC_Operation(0 /* total collections,      dummy, ignored */,
-                    GCCause::_heap_inspection /* GC Cause */,
-                    0 /* total full collections, dummy, ignored */,
-                    request_full_gc) {
-    _out = out;
-    _full_gc = request_full_gc;
-    _csv_format = false;
-    _print_help = false;
-    _print_class_stats = false;
-    _columns = NULL;
-  }
-
-  ~VM_GC_HeapInspection() {}
-  virtual VMOp_Type type() const { return VMOp_GC_HeapInspection; }
-  virtual bool skip_operation() const;
-  virtual void doit();
-  void set_csv_format(bool value) {_csv_format = value;}
-  void set_print_help(bool value) {_print_help = value;}
-  void set_print_class_stats(bool value) {_print_class_stats = value;}
-  void set_columns(const char* value) {_columns = value;}
- protected:
-  bool collect();
-};
-
-class VM_CollectForAllocation : public VM_GC_Operation {
- protected:
-  size_t    _word_size; // Size of object to be allocated (in number of words)
-  HeapWord* _result;    // Allocation result (NULL if allocation failed)
-
- public:
-  VM_CollectForAllocation(size_t word_size, uint gc_count_before, GCCause::Cause cause);
-
-  HeapWord* result() const {
-    return _result;
-  }
-};
-
-class VM_GenCollectForAllocation : public VM_CollectForAllocation {
- private:
-  bool        _tlab;                       // alloc is of a tlab.
- public:
-  VM_GenCollectForAllocation(size_t word_size,
-                             bool tlab,
-                             uint gc_count_before)
-    : VM_CollectForAllocation(word_size, gc_count_before, GCCause::_allocation_failure),
-      _tlab(tlab) {
-    assert(word_size != 0, "An allocation should always be requested with this operation.");
-  }
-  ~VM_GenCollectForAllocation()  {}
-  virtual VMOp_Type type() const { return VMOp_GenCollectForAllocation; }
-  virtual void doit();
-};
-
-// VM operation to invoke a collection of the heap as a
-// GenCollectedHeap heap.
-class VM_GenCollectFull: public VM_GC_Operation {
- private:
-  GenCollectedHeap::GenerationType _max_generation;
- public:
-  VM_GenCollectFull(uint gc_count_before,
-                    uint full_gc_count_before,
-                    GCCause::Cause gc_cause,
-                    GenCollectedHeap::GenerationType max_generation)
-    : VM_GC_Operation(gc_count_before, gc_cause, full_gc_count_before, true /* full */),
-      _max_generation(max_generation) { }
-  ~VM_GenCollectFull() {}
-  virtual VMOp_Type type() const { return VMOp_GenCollectFull; }
-  virtual void doit();
-};
-
-class VM_CollectForMetadataAllocation: public VM_GC_Operation {
- private:
-  MetaWord*                _result;
-  size_t                   _size;     // size of object to be allocated
-  Metaspace::MetadataType  _mdtype;
-  ClassLoaderData*         _loader_data;
-
- public:
-  VM_CollectForMetadataAllocation(ClassLoaderData* loader_data,
-                                  size_t size,
-                                  Metaspace::MetadataType mdtype,
-                                  uint gc_count_before,
-                                  uint full_gc_count_before,
-                                  GCCause::Cause gc_cause);
-
-  virtual VMOp_Type type() const { return VMOp_CollectForMetadataAllocation; }
-  virtual void doit();
-  MetaWord* result() const       { return _result; }
-
-  bool initiate_concurrent_GC();
-};
-
-class SvcGCMarker : public StackObj {
- private:
-  JvmtiGCMarker _jgcm;
- public:
-  typedef enum { MINOR, FULL, CONCURRENT } reason_type;
-
-  SvcGCMarker(reason_type reason ) {
-    VM_GC_Operation::notify_gc_begin(reason == FULL);
-  }
-
-  ~SvcGCMarker() {
-    VM_GC_Operation::notify_gc_end();
-  }
-};
-
-#endif // SHARE_VM_GC_SHARED_VMGCOPERATIONS_HPP
--- a/src/hotspot/share/gc/shared/workerDataArray.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/shared/workerDataArray.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -34,7 +34,7 @@
 class WorkerDataArray  : public CHeapObj<mtGC> {
   friend class WDAPrinter;
 public:
-  static const uint MaxThreadWorkItems = 3;
+  static const uint MaxThreadWorkItems = 4;
 private:
   T*          _data;
   uint        _length;
@@ -49,6 +49,8 @@
   void link_thread_work_items(WorkerDataArray<size_t>* thread_work_items, uint index = 0);
   void set_thread_work_item(uint worker_i, size_t value, uint index = 0);
   void add_thread_work_item(uint worker_i, size_t value, uint index = 0);
+  void set_or_add_thread_work_item(uint worker_i, size_t value, uint index = 0);
+
   WorkerDataArray<size_t>* thread_work_items(uint index = 0) const {
     assert(index < MaxThreadWorkItems, "Tried to access thread work item %u max %u", index, MaxThreadWorkItems);
     return _thread_work_items[index];
--- a/src/hotspot/share/gc/shared/workerDataArray.inline.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/shared/workerDataArray.inline.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -81,6 +81,17 @@
 }
 
 template <typename T>
+void WorkerDataArray<T>::set_or_add_thread_work_item(uint worker_i, size_t value, uint index) {
+  assert(index < MaxThreadWorkItems, "Tried to access thread work item %u (max %u)", index, MaxThreadWorkItems);
+  assert(_thread_work_items[index] != NULL, "No sub count");
+  if (_thread_work_items[index]->get(worker_i) == _thread_work_items[index]->uninitialized()) {
+    _thread_work_items[index]->set(worker_i, value);
+  } else {
+    _thread_work_items[index]->add(worker_i, value);
+  }
+}
+
+template <typename T>
 void WorkerDataArray<T>::add(uint worker_i, T value) {
   assert(worker_i < _length, "Worker %d is greater than max: %d", worker_i, _length);
   assert(_data[worker_i] != uninitialized(), "No data to add to for worker %d", worker_i);
--- a/src/hotspot/share/gc/z/zDriver.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/z/zDriver.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -24,8 +24,8 @@
 #include "precompiled.hpp"
 #include "gc/shared/gcId.hpp"
 #include "gc/shared/gcLocker.hpp"
+#include "gc/shared/gcVMOperations.hpp"
 #include "gc/shared/isGCActiveMark.hpp"
-#include "gc/shared/vmGCOperations.hpp"
 #include "gc/z/zCollectedHeap.hpp"
 #include "gc/z/zDriver.hpp"
 #include "gc/z/zHeap.inline.hpp"
@@ -34,7 +34,7 @@
 #include "gc/z/zStat.hpp"
 #include "logging/log.hpp"
 #include "memory/universe.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "runtime/vmThread.hpp"
 
 static const ZStatPhaseCycle      ZPhaseCycle("Garbage Collection Cycle");
--- a/src/hotspot/share/gc/z/zErrno.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/gc/z/zErrno.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 #include "precompiled.hpp"
 #include "gc/z/zErrno.hpp"
+#include "runtime/os.inline.hpp"
 
 #include <errno.h>
 #include <string.h>
@@ -46,5 +47,5 @@
 }
 
 const char* ZErrno::to_string() const {
-  return strerror(_error);
+  return os::strerror(_error);
 }
--- a/src/hotspot/share/jfr/leakprofiler/emitEventOperation.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/jfr/leakprofiler/emitEventOperation.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -25,7 +25,7 @@
 #ifndef SHARE_VM_LEAKPROFILER_EMITEVENTOPERATION_HPP
 #define SHARE_VM_LEAKPROFILER_EMITEVENTOPERATION_HPP
 
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 
 class BFSClosure;
 class EdgeStore;
--- a/src/hotspot/share/jfr/leakprofiler/startOperation.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/jfr/leakprofiler/startOperation.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -30,7 +30,7 @@
 #include "jfr/leakprofiler/sampling/objectSampler.hpp"
 #include "jfr/recorder/service/jfrOptionSet.hpp"
 #include "logging/log.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 
 // Safepoint operation for starting leak profiler object sampler
 class StartOperation : public VM_Operation {
--- a/src/hotspot/share/jfr/leakprofiler/stopOperation.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/jfr/leakprofiler/stopOperation.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -29,7 +29,7 @@
 #include "jfr/leakprofiler/sampling/objectSampler.hpp"
 #include "jfr/recorder/service/jfrOptionSet.hpp"
 #include "logging/log.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 
 // Safepoint operation for stopping leak profiler object sampler
 class StopOperation : public VM_Operation {
--- a/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -32,8 +32,8 @@
 #include "gc/g1/g1HeapRegionEventSender.hpp"
 #include "gc/shared/gcConfiguration.hpp"
 #include "gc/shared/gcTrace.hpp"
+#include "gc/shared/gcVMOperations.hpp"
 #include "gc/shared/objectCountEventSender.hpp"
-#include "gc/shared/vmGCOperations.hpp"
 #include "jfr/jfrEvents.hpp"
 #include "jfr/periodic/jfrModuleEvent.hpp"
 #include "jfr/periodic/jfrOSInterface.hpp"
--- a/src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -49,7 +49,7 @@
 #include "runtime/safepoint.hpp"
 #include "runtime/synchronizer.hpp"
 #include "runtime/thread.inline.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 
 #ifdef COMPILER2
 #include "opto/compile.hpp"
--- a/src/hotspot/share/jfr/recorder/service/jfrRecorderService.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/jfr/recorder/service/jfrRecorderService.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -50,7 +50,7 @@
 #include "runtime/os.hpp"
 #include "runtime/safepoint.hpp"
 #include "runtime/thread.inline.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "runtime/vmThread.hpp"
 
 // set data iff *dest == NULL
--- a/src/hotspot/share/logging/logFileOutput.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/logging/logFileOutput.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -248,7 +248,7 @@
   _stream = os::fopen(_file_name, FileOpenMode);
   if (_stream == NULL) {
     errstream->print_cr("Error opening log file '%s': %s",
-                        _file_name, strerror(errno));
+                        _file_name, os::strerror(errno));
     return false;
   }
 
--- a/src/hotspot/share/memory/heapShared.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/memory/heapShared.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -71,10 +71,7 @@
 };
 // Entry fields for subgraphs archived in the open archive heap region.
 static ArchivableStaticFieldInfo open_archive_subgraph_entry_fields[] = {
-  {"jdk/internal/module/ArchivedModuleGraph",  "archivedSystemModules"},
-  {"jdk/internal/module/ArchivedModuleGraph",  "archivedModuleFinder"},
-  {"jdk/internal/module/ArchivedModuleGraph",  "archivedMainModule"},
-  {"jdk/internal/module/ArchivedModuleGraph",  "archivedConfiguration"},
+  {"jdk/internal/module/ArchivedModuleGraph",  "archivedModuleGraph"},
   {"java/util/ImmutableCollections$ListN",     "EMPTY_LIST"},
   {"java/util/ImmutableCollections$MapN",      "EMPTY_MAP"},
   {"java/util/ImmutableCollections$SetN",      "EMPTY_SET"},
--- a/src/hotspot/share/memory/metaspaceShared.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/memory/metaspaceShared.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -61,7 +61,7 @@
 #include "runtime/signature.hpp"
 #include "runtime/timerTrace.hpp"
 #include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "utilities/align.hpp"
 #include "utilities/bitMap.hpp"
 #include "utilities/defaultStream.hpp"
--- a/src/hotspot/share/memory/universe.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/memory/universe.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -72,7 +72,7 @@
 #include "runtime/synchronizer.hpp"
 #include "runtime/thread.inline.hpp"
 #include "runtime/timerTrace.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "services/memoryService.hpp"
 #include "utilities/align.hpp"
 #include "utilities/copy.hpp"
@@ -1118,8 +1118,9 @@
   size_t length = strlen(VerifySubSet);
   char* subset_list = NEW_C_HEAP_ARRAY(char, length + 1, mtInternal);
   strncpy(subset_list, VerifySubSet, length + 1);
+  char* save_ptr;
 
-  char* token = strtok(subset_list, delimiter);
+  char* token = strtok_r(subset_list, delimiter, &save_ptr);
   while (token != NULL) {
     if (strcmp(token, "threads") == 0) {
       verify_flags |= Verify_Threads;
@@ -1144,7 +1145,7 @@
     } else {
       vm_exit_during_initialization(err_msg("VerifySubSet: \'%s\' memory sub-system is unknown, please correct it", token));
     }
-    token = strtok(NULL, delimiter);
+    token = strtok_r(NULL, delimiter, &save_ptr);
   }
   FREE_C_HEAP_ARRAY(char, subset_list);
 }
--- a/src/hotspot/share/oops/generateOopMap.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/oops/generateOopMap.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -1879,7 +1879,7 @@
   constantTag tag = cp->tag_at(ldc.pool_index()); // idx is index in resolved_references
   BasicType       bt  = ldc.result_type();
 #ifdef ASSERT
-  BasicType   tag_bt = tag.is_dynamic_constant() ? bt : tag.basic_type();
+  BasicType   tag_bt = (tag.is_dynamic_constant() || tag.is_dynamic_constant_in_error()) ? bt : tag.basic_type();
   assert(bt == tag_bt, "same result");
 #endif
   CellTypeState   cts;
--- a/src/hotspot/share/opto/memnode.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/opto/memnode.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -3230,7 +3230,7 @@
   while (leading != NULL && (!leading->is_MemBar() || !leading->as_MemBar()->leading())) {
     while (leading == NULL || leading->is_top() || seen.test_set(leading->_idx)) {
       leading = NULL;
-      while (regions.size() > 0) {
+      while (regions.size() > 0 && leading == NULL) {
         Node* r = regions.node();
         uint i = regions.index();
         if (i < r->req()) {
--- a/src/hotspot/share/prims/jni.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jni.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -79,7 +79,7 @@
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/signature.hpp"
 #include "runtime/thread.inline.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "services/memTracker.hpp"
 #include "services/runtimeService.hpp"
 #include "utilities/defaultStream.hpp"
--- a/src/hotspot/share/prims/jvm.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvm.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -72,7 +72,7 @@
 #include "runtime/thread.inline.hpp"
 #include "runtime/threadSMR.hpp"
 #include "runtime/vframe.inline.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "runtime/vm_version.hpp"
 #include "services/attachListener.hpp"
 #include "services/management.hpp"
--- a/src/hotspot/share/prims/jvmtiEnvBase.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiEnvBase.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -52,7 +52,7 @@
 #include "runtime/vframe.hpp"
 #include "runtime/vframe_hp.hpp"
 #include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 
 ///////////////////////////////////////////////////////////////
 //
--- a/src/hotspot/share/prims/jvmtiEnvBase.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiEnvBase.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -33,7 +33,7 @@
 #include "runtime/fieldDescriptor.hpp"
 #include "runtime/frame.hpp"
 #include "runtime/thread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "utilities/growableArray.hpp"
 #include "utilities/macros.hpp"
 
--- a/src/hotspot/share/prims/jvmtiEnvThreadState.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiEnvThreadState.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -37,7 +37,7 @@
 #include "runtime/signature.hpp"
 #include "runtime/thread.inline.hpp"
 #include "runtime/vframe.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 
 
 ///////////////////////////////////////////////////////////////
--- a/src/hotspot/share/prims/jvmtiEventController.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiEventController.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -38,7 +38,7 @@
 #include "runtime/vframe.hpp"
 #include "runtime/vframe_hp.hpp"
 #include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 
 #ifdef JVMTI_TRACE
 #define EC_TRACE(out) do { \
--- a/src/hotspot/share/prims/jvmtiImpl.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiImpl.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -50,7 +50,7 @@
 #include "runtime/threadSMR.hpp"
 #include "runtime/vframe.hpp"
 #include "runtime/vframe_hp.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "utilities/exceptions.hpp"
 
 //
--- a/src/hotspot/share/prims/jvmtiImpl.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiImpl.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -33,7 +33,7 @@
 #include "prims/jvmtiTrace.hpp"
 #include "prims/jvmtiUtil.hpp"
 #include "runtime/stackValueCollection.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "utilities/ostream.hpp"
 
 //
--- a/src/hotspot/share/prims/jvmtiRedefineClasses.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiRedefineClasses.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -30,7 +30,7 @@
 #include "memory/resourceArea.hpp"
 #include "oops/objArrayKlass.hpp"
 #include "oops/objArrayOop.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 
 // Introduction:
 //
--- a/src/hotspot/share/prims/jvmtiTagMap.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiTagMap.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -58,7 +58,7 @@
 #include "runtime/threadSMR.hpp"
 #include "runtime/vframe.hpp"
 #include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "utilities/macros.hpp"
 #if INCLUDE_ZGC
 #include "gc/z/zGlobals.hpp"
--- a/src/hotspot/share/prims/jvmtiTrace.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiTrace.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -32,7 +32,7 @@
 #include "prims/jvmtiEventController.hpp"
 #include "prims/jvmtiUtil.hpp"
 #include "runtime/stackValueCollection.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 
 ///////////////////////////////////////////////////////////////
 //
--- a/src/hotspot/share/prims/jvmtiUtil.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiUtil.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -27,7 +27,7 @@
 #include "runtime/handles.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/interfaceSupport.inline.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "utilities/exceptions.hpp"
 
 //
--- a/src/hotspot/share/runtime/biasedLocking.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/biasedLocking.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -39,7 +39,7 @@
 #include "runtime/threadSMR.hpp"
 #include "runtime/vframe.hpp"
 #include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 
 
 static bool _biased_locking_enabled = false;
--- a/src/hotspot/share/runtime/compilationPolicy.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/compilationPolicy.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -42,7 +42,7 @@
 #include "runtime/tieredThresholdPolicy.hpp"
 #include "runtime/timer.hpp"
 #include "runtime/vframe.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "utilities/events.hpp"
 #include "utilities/globalDefinitions.hpp"
 
--- a/src/hotspot/share/runtime/compilationPolicy.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/compilationPolicy.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -28,7 +28,7 @@
 #include "code/nmethod.hpp"
 #include "compiler/compileBroker.hpp"
 #include "memory/allocation.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "utilities/growableArray.hpp"
 
 // The CompilationPolicy selects which method (if any) should be compiled.
--- a/src/hotspot/share/runtime/interfaceSupport.inline.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/interfaceSupport.inline.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -32,7 +32,7 @@
 #include "runtime/safepointMechanism.inline.hpp"
 #include "runtime/safepointVerifiers.hpp"
 #include "runtime/thread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "utilities/globalDefinitions.hpp"
 #include "utilities/macros.hpp"
 #include "utilities/preserveException.hpp"
--- a/src/hotspot/share/runtime/java.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/java.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -68,7 +68,7 @@
 #include "runtime/task.hpp"
 #include "runtime/thread.inline.hpp"
 #include "runtime/timer.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "services/memTracker.hpp"
 #include "utilities/dtrace.hpp"
 #include "utilities/globalDefinitions.hpp"
--- a/src/hotspot/share/runtime/os.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/os.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -32,7 +32,7 @@
 #include "code/codeCache.hpp"
 #include "code/icBuffer.hpp"
 #include "code/vtableStubs.hpp"
-#include "gc/shared/vmGCOperations.hpp"
+#include "gc/shared/gcVMOperations.hpp"
 #include "logging/log.hpp"
 #include "interpreter/interpreter.hpp"
 #include "logging/log.hpp"
--- a/src/hotspot/share/runtime/reflection.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/reflection.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -417,11 +417,9 @@
     under_unsafe_anonymous_host(accessee_ik, accessor_ik))
     return true;
 
-  if ((RelaxAccessControlCheck &&
+  if (RelaxAccessControlCheck &&
     accessor_ik->major_version() < Verifier::NO_RELAX_ACCESS_CTRL_CHECK_VERSION &&
-    accessee_ik->major_version() < Verifier::NO_RELAX_ACCESS_CTRL_CHECK_VERSION) ||
-    (accessor_ik->major_version() < Verifier::STRICTER_ACCESS_CTRL_CHECK_VERSION &&
-    accessee_ik->major_version() < Verifier::STRICTER_ACCESS_CTRL_CHECK_VERSION)) {
+    accessee_ik->major_version() < Verifier::NO_RELAX_ACCESS_CTRL_CHECK_VERSION) {
     return classloader_only &&
       Verifier::relax_access_for(accessor_ik->class_loader()) &&
       accessor_ik->protection_domain() == accessee_ik->protection_domain() &&
--- a/src/hotspot/share/runtime/sharedRuntime.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/sharedRuntime.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -1395,6 +1395,7 @@
   // Patching IC caches may fail if we run out if transition stubs.
   // We refill the ic stubs then and try again.
   for (;;) {
+    ICRefillVerifier ic_refill_verifier;
     bool successful = resolve_sub_helper_internal(callee_method, caller_frame, caller_nm,
                                                   is_virtual, is_optimized, receiver,
                                                   call_info, invoke_code, CHECK_(methodHandle()));
@@ -1603,10 +1604,10 @@
     // Potential change to megamorphic
 
     bool successful = inline_cache->set_to_megamorphic(&call_info, bc, needs_ic_stub_refill, CHECK_false);
+    if (needs_ic_stub_refill) {
+      return false;
+    }
     if (!successful) {
-      if (!needs_ic_stub_refill) {
-        return false;
-      }
       if (!inline_cache->set_to_clean()) {
         needs_ic_stub_refill = true;
         return false;
@@ -1690,6 +1691,7 @@
   CompiledMethod* caller_nm = cb->as_compiled_method();
 
   for (;;) {
+    ICRefillVerifier ic_refill_verifier;
     bool needs_ic_stub_refill = false;
     bool successful = handle_ic_miss_helper_internal(receiver, caller_nm, caller_frame, callee_method,
                                                      bc, call_info, needs_ic_stub_refill, CHECK_(methodHandle()));
@@ -1798,6 +1800,7 @@
       // resolve is only done once.
 
       for (;;) {
+        ICRefillVerifier ic_refill_verifier;
         if (!clear_ic_at_addr(caller_nm, call_addr, is_static_call)) {
           InlineCacheBuffer::refill_ic_stubs();
         } else {
--- a/src/hotspot/share/runtime/sweeper.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/sweeper.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -46,7 +46,7 @@
 #include "runtime/os.hpp"
 #include "runtime/sweeper.hpp"
 #include "runtime/thread.inline.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "runtime/vmThread.hpp"
 #include "utilities/events.hpp"
 #include "utilities/xmlstream.hpp"
--- a/src/hotspot/share/runtime/thread.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/thread.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -100,7 +100,7 @@
 #include "runtime/vframeArray.hpp"
 #include "runtime/vframe_hp.hpp"
 #include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "runtime/vm_version.hpp"
 #include "services/attachListener.hpp"
 #include "services/management.hpp"
@@ -231,6 +231,7 @@
   set_active_handles(NULL);
   set_free_handle_block(NULL);
   set_last_handle_mark(NULL);
+  DEBUG_ONLY(_missed_ic_stub_refill_mark = NULL);
 
   // This initial value ==> never claimed.
   _oops_do_parity = 0;
--- a/src/hotspot/share/runtime/thread.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/thread.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -328,6 +328,21 @@
   HandleMark* last_handle_mark() const          { return _last_handle_mark; }
  private:
 
+#ifdef ASSERT
+  void* _missed_ic_stub_refill_mark;
+
+ public:
+  void* missed_ic_stub_refill_mark() {
+    return _missed_ic_stub_refill_mark;
+  }
+
+  void set_missed_ic_stub_refill_mark(void* mark) {
+    _missed_ic_stub_refill_mark = mark;
+  }
+#endif
+
+ private:
+
   // debug support for checking if code does allow safepoints or not
   // GC points in the VM can happen because of allocation, invoking a VM operation, or blocking on
   // mutex, or blocking on an object synchronizer (Java locking).
--- a/src/hotspot/share/runtime/threadSMR.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/threadSMR.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -28,7 +28,7 @@
 #include "runtime/jniHandles.inline.hpp"
 #include "runtime/thread.inline.hpp"
 #include "runtime/threadSMR.inline.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "services/threadService.hpp"
 #include "utilities/copy.hpp"
 #include "utilities/globalDefinitions.hpp"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/runtime/vmOperations.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,508 @@
+/*
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "code/codeCache.hpp"
+#include "compiler/compileBroker.hpp"
+#include "gc/shared/isGCActiveMark.hpp"
+#include "logging/log.hpp"
+#include "logging/logStream.hpp"
+#include "memory/heapInspection.hpp"
+#include "memory/resourceArea.hpp"
+#include "oops/symbol.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/interfaceSupport.inline.hpp"
+#include "runtime/sweeper.hpp"
+#include "runtime/thread.inline.hpp"
+#include "runtime/threadSMR.inline.hpp"
+#include "runtime/vmOperations.hpp"
+#include "services/threadService.hpp"
+
+#define VM_OP_NAME_INITIALIZE(name) #name,
+
+const char* VM_Operation::_names[VM_Operation::VMOp_Terminating] = \
+  { VM_OPS_DO(VM_OP_NAME_INITIALIZE) };
+
+void VM_Operation::set_calling_thread(Thread* thread, ThreadPriority priority) {
+  _calling_thread = thread;
+  assert(MinPriority <= priority && priority <= MaxPriority, "sanity check");
+  _priority = priority;
+}
+
+
+void VM_Operation::evaluate() {
+  ResourceMark rm;
+  LogTarget(Debug, vmoperation) lt;
+  if (lt.is_enabled()) {
+    LogStream ls(lt);
+    ls.print("begin ");
+    print_on_error(&ls);
+    ls.cr();
+  }
+  doit();
+  if (lt.is_enabled()) {
+    LogStream ls(lt);
+    ls.print("end ");
+    print_on_error(&ls);
+    ls.cr();
+  }
+}
+
+const char* VM_Operation::mode_to_string(Mode mode) {
+  switch(mode) {
+    case _safepoint      : return "safepoint";
+    case _no_safepoint   : return "no safepoint";
+    case _concurrent     : return "concurrent";
+    case _async_safepoint: return "async safepoint";
+    default              : return "unknown";
+  }
+}
+// Called by fatal error handler.
+void VM_Operation::print_on_error(outputStream* st) const {
+  st->print("VM_Operation (" PTR_FORMAT "): ", p2i(this));
+  st->print("%s", name());
+
+  const char* mode = mode_to_string(evaluation_mode());
+  st->print(", mode: %s", mode);
+
+  if (calling_thread()) {
+    st->print(", requested by thread " PTR_FORMAT, p2i(calling_thread()));
+  }
+}
+
+void VM_ThreadStop::doit() {
+  assert(SafepointSynchronize::is_at_safepoint(), "must be at a safepoint");
+  ThreadsListHandle tlh;
+  JavaThread* target = java_lang_Thread::thread(target_thread());
+  // Note that this now allows multiple ThreadDeath exceptions to be
+  // thrown at a thread.
+  if (target != NULL && (!EnableThreadSMRExtraValidityChecks || tlh.includes(target))) {
+    // The target thread has run and has not exited yet.
+    target->send_thread_stop(throwable());
+  }
+}
+
+void VM_ClearICs::doit() {
+  if (_preserve_static_stubs) {
+    CodeCache::cleanup_inline_caches();
+  } else {
+    CodeCache::clear_inline_caches();
+  }
+}
+
+void VM_Deoptimize::doit() {
+  // We do not want any GCs to happen while we are in the middle of this VM operation
+  ResourceMark rm;
+  DeoptimizationMarker dm;
+
+  // Deoptimize all activations depending on marked nmethods
+  Deoptimization::deoptimize_dependents();
+
+  // Make the dependent methods not entrant
+  CodeCache::make_marked_nmethods_not_entrant();
+}
+
+void VM_MarkActiveNMethods::doit() {
+  NMethodSweeper::mark_active_nmethods();
+}
+
+VM_DeoptimizeFrame::VM_DeoptimizeFrame(JavaThread* thread, intptr_t* id, int reason) {
+  _thread = thread;
+  _id     = id;
+  _reason = reason;
+}
+
+
+void VM_DeoptimizeFrame::doit() {
+  assert(_reason > Deoptimization::Reason_none && _reason < Deoptimization::Reason_LIMIT, "invalid deopt reason");
+  Deoptimization::deoptimize_frame_internal(_thread, _id, (Deoptimization::DeoptReason)_reason);
+}
+
+
+#ifndef PRODUCT
+
+void VM_DeoptimizeAll::doit() {
+  DeoptimizationMarker dm;
+  JavaThreadIteratorWithHandle jtiwh;
+  // deoptimize all java threads in the system
+  if (DeoptimizeALot) {
+    for (; JavaThread *thread = jtiwh.next(); ) {
+      if (thread->has_last_Java_frame()) {
+        thread->deoptimize();
+      }
+    }
+  } else if (DeoptimizeRandom) {
+
+    // Deoptimize some selected threads and frames
+    int tnum = os::random() & 0x3;
+    int fnum =  os::random() & 0x3;
+    int tcount = 0;
+    for (; JavaThread *thread = jtiwh.next(); ) {
+      if (thread->has_last_Java_frame()) {
+        if (tcount++ == tnum)  {
+        tcount = 0;
+          int fcount = 0;
+          // Deoptimize some selected frames.
+          // Biased llocking wants a updated register map
+          for(StackFrameStream fst(thread, UseBiasedLocking); !fst.is_done(); fst.next()) {
+            if (fst.current()->can_be_deoptimized()) {
+              if (fcount++ == fnum) {
+                fcount = 0;
+                Deoptimization::deoptimize(thread, *fst.current(), fst.register_map());
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+
+void VM_ZombieAll::doit() {
+  JavaThread *thread = (JavaThread *)calling_thread();
+  assert(thread->is_Java_thread(), "must be a Java thread");
+  thread->make_zombies();
+}
+
+#endif // !PRODUCT
+
+void VM_Verify::doit() {
+  Universe::heap()->prepare_for_verify();
+  Universe::verify();
+}
+
+bool VM_PrintThreads::doit_prologue() {
+  // Get Heap_lock if concurrent locks will be dumped
+  if (_print_concurrent_locks) {
+    Heap_lock->lock();
+  }
+  return true;
+}
+
+void VM_PrintThreads::doit() {
+  Threads::print_on(_out, true, false, _print_concurrent_locks, _print_extended_info);
+}
+
+void VM_PrintThreads::doit_epilogue() {
+  if (_print_concurrent_locks) {
+    // Release Heap_lock
+    Heap_lock->unlock();
+  }
+}
+
+void VM_PrintJNI::doit() {
+  JNIHandles::print_on(_out);
+}
+
+void VM_PrintMetadata::doit() {
+  MetaspaceUtils::print_report(_out, _scale, _flags);
+}
+
+VM_FindDeadlocks::~VM_FindDeadlocks() {
+  if (_deadlocks != NULL) {
+    DeadlockCycle* cycle = _deadlocks;
+    while (cycle != NULL) {
+      DeadlockCycle* d = cycle;
+      cycle = cycle->next();
+      delete d;
+    }
+  }
+}
+
+void VM_FindDeadlocks::doit() {
+  // Update the hazard ptr in the originating thread to the current
+  // list of threads. This VM operation needs the current list of
+  // threads for proper deadlock detection and those are the
+  // JavaThreads we need to be protected when we return info to the
+  // originating thread.
+  _setter.set();
+
+  _deadlocks = ThreadService::find_deadlocks_at_safepoint(_setter.list(), _concurrent_locks);
+  if (_out != NULL) {
+    int num_deadlocks = 0;
+    for (DeadlockCycle* cycle = _deadlocks; cycle != NULL; cycle = cycle->next()) {
+      num_deadlocks++;
+      cycle->print_on_with(_setter.list(), _out);
+    }
+
+    if (num_deadlocks == 1) {
+      _out->print_cr("\nFound 1 deadlock.\n");
+      _out->flush();
+    } else if (num_deadlocks > 1) {
+      _out->print_cr("\nFound %d deadlocks.\n", num_deadlocks);
+      _out->flush();
+    }
+  }
+}
+
+VM_ThreadDump::VM_ThreadDump(ThreadDumpResult* result,
+                             int max_depth,
+                             bool with_locked_monitors,
+                             bool with_locked_synchronizers) {
+  _result = result;
+  _num_threads = 0; // 0 indicates all threads
+  _threads = NULL;
+  _result = result;
+  _max_depth = max_depth;
+  _with_locked_monitors = with_locked_monitors;
+  _with_locked_synchronizers = with_locked_synchronizers;
+}
+
+VM_ThreadDump::VM_ThreadDump(ThreadDumpResult* result,
+                             GrowableArray<instanceHandle>* threads,
+                             int num_threads,
+                             int max_depth,
+                             bool with_locked_monitors,
+                             bool with_locked_synchronizers) {
+  _result = result;
+  _num_threads = num_threads;
+  _threads = threads;
+  _result = result;
+  _max_depth = max_depth;
+  _with_locked_monitors = with_locked_monitors;
+  _with_locked_synchronizers = with_locked_synchronizers;
+}
+
+bool VM_ThreadDump::doit_prologue() {
+  if (_with_locked_synchronizers) {
+    // Acquire Heap_lock to dump concurrent locks
+    Heap_lock->lock();
+  }
+
+  return true;
+}
+
+void VM_ThreadDump::doit_epilogue() {
+  if (_with_locked_synchronizers) {
+    // Release Heap_lock
+    Heap_lock->unlock();
+  }
+}
+
+void VM_ThreadDump::doit() {
+  ResourceMark rm;
+
+  // Set the hazard ptr in the originating thread to protect the
+  // current list of threads. This VM operation needs the current list
+  // of threads for a proper dump and those are the JavaThreads we need
+  // to be protected when we return info to the originating thread.
+  _result->set_t_list();
+
+  ConcurrentLocksDump concurrent_locks(true);
+  if (_with_locked_synchronizers) {
+    concurrent_locks.dump_at_safepoint();
+  }
+
+  if (_num_threads == 0) {
+    // Snapshot all live threads
+
+    for (uint i = 0; i < _result->t_list()->length(); i++) {
+      JavaThread* jt = _result->t_list()->thread_at(i);
+      if (jt->is_exiting() ||
+          jt->is_hidden_from_external_view())  {
+        // skip terminating threads and hidden threads
+        continue;
+      }
+      ThreadConcurrentLocks* tcl = NULL;
+      if (_with_locked_synchronizers) {
+        tcl = concurrent_locks.thread_concurrent_locks(jt);
+      }
+      ThreadSnapshot* ts = snapshot_thread(jt, tcl);
+      _result->add_thread_snapshot(ts);
+    }
+  } else {
+    // Snapshot threads in the given _threads array
+    // A dummy snapshot is created if a thread doesn't exist
+
+    for (int i = 0; i < _num_threads; i++) {
+      instanceHandle th = _threads->at(i);
+      if (th() == NULL) {
+        // skip if the thread doesn't exist
+        // Add a dummy snapshot
+        _result->add_thread_snapshot(new ThreadSnapshot());
+        continue;
+      }
+
+      // Dump thread stack only if the thread is alive and not exiting
+      // and not VM internal thread.
+      JavaThread* jt = java_lang_Thread::thread(th());
+      if (jt != NULL && !_result->t_list()->includes(jt)) {
+        // _threads[i] doesn't refer to a valid JavaThread; this check
+        // is primarily for JVM_DumpThreads() which doesn't have a good
+        // way to validate the _threads array.
+        jt = NULL;
+      }
+      if (jt == NULL || /* thread not alive */
+          jt->is_exiting() ||
+          jt->is_hidden_from_external_view())  {
+        // add a NULL snapshot if skipped
+        _result->add_thread_snapshot(new ThreadSnapshot());
+        continue;
+      }
+      ThreadConcurrentLocks* tcl = NULL;
+      if (_with_locked_synchronizers) {
+        tcl = concurrent_locks.thread_concurrent_locks(jt);
+      }
+      ThreadSnapshot* ts = snapshot_thread(jt, tcl);
+      _result->add_thread_snapshot(ts);
+    }
+  }
+}
+
+ThreadSnapshot* VM_ThreadDump::snapshot_thread(JavaThread* java_thread, ThreadConcurrentLocks* tcl) {
+  ThreadSnapshot* snapshot = new ThreadSnapshot(_result->t_list(), java_thread);
+  snapshot->dump_stack_at_safepoint(_max_depth, _with_locked_monitors);
+  snapshot->set_concurrent_locks(tcl);
+  return snapshot;
+}
+
+volatile bool VM_Exit::_vm_exited = false;
+Thread * volatile VM_Exit::_shutdown_thread = NULL;
+
+int VM_Exit::set_vm_exited() {
+
+  Thread * thr_cur = Thread::current();
+
+  assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint already");
+
+  int num_active = 0;
+
+  _shutdown_thread = thr_cur;
+  _vm_exited = true;                                // global flag
+  for (JavaThreadIteratorWithHandle jtiwh; JavaThread *thr = jtiwh.next(); ) {
+    if (thr!=thr_cur && thr->thread_state() == _thread_in_native) {
+      ++num_active;
+      thr->set_terminated(JavaThread::_vm_exited);  // per-thread flag
+    }
+  }
+
+  return num_active;
+}
+
+int VM_Exit::wait_for_threads_in_native_to_block() {
+  // VM exits at safepoint. This function must be called at the final safepoint
+  // to wait for threads in _thread_in_native state to be quiescent.
+  assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint already");
+
+  Thread * thr_cur = Thread::current();
+  Monitor timer(Mutex::leaf, "VM_Exit timer", true,
+                Monitor::_safepoint_check_never);
+
+  // Compiler threads need longer wait because they can access VM data directly
+  // while in native. If they are active and some structures being used are
+  // deleted by the shutdown sequence, they will crash. On the other hand, user
+  // threads must go through native=>Java/VM transitions first to access VM
+  // data, and they will be stopped during state transition. In theory, we
+  // don't have to wait for user threads to be quiescent, but it's always
+  // better to terminate VM when current thread is the only active thread, so
+  // wait for user threads too. Numbers are in 10 milliseconds.
+  int max_wait_user_thread = 30;                  // at least 300 milliseconds
+  int max_wait_compiler_thread = 1000;            // at least 10 seconds
+
+  int max_wait = max_wait_compiler_thread;
+
+  int attempts = 0;
+  JavaThreadIteratorWithHandle jtiwh;
+  while (true) {
+    int num_active = 0;
+    int num_active_compiler_thread = 0;
+
+    jtiwh.rewind();
+    for (; JavaThread *thr = jtiwh.next(); ) {
+      if (thr!=thr_cur && thr->thread_state() == _thread_in_native) {
+        num_active++;
+        if (thr->is_Compiler_thread()) {
+          num_active_compiler_thread++;
+        }
+      }
+    }
+
+    if (num_active == 0) {
+       return 0;
+    } else if (attempts > max_wait) {
+       return num_active;
+    } else if (num_active_compiler_thread == 0 && attempts > max_wait_user_thread) {
+       return num_active;
+    }
+
+    attempts++;
+
+    MutexLockerEx ml(&timer, Mutex::_no_safepoint_check_flag);
+    timer.wait(Mutex::_no_safepoint_check_flag, 10);
+  }
+}
+
+void VM_Exit::doit() {
+  CompileBroker::set_should_block();
+
+  // Wait for a short period for threads in native to block. Any thread
+  // still executing native code after the wait will be stopped at
+  // native==>Java/VM barriers.
+  // Among 16276 JCK tests, 94% of them come here without any threads still
+  // running in native; the other 6% are quiescent within 250ms (Ultra 80).
+  wait_for_threads_in_native_to_block();
+
+  set_vm_exited();
+
+  // cleanup globals resources before exiting. exit_globals() currently
+  // cleans up outputStream resources and PerfMemory resources.
+  exit_globals();
+
+  // Check for exit hook
+  exit_hook_t exit_hook = Arguments::exit_hook();
+  if (exit_hook != NULL) {
+    // exit hook should exit.
+    exit_hook(_exit_code);
+    // ... but if it didn't, we must do it here
+    vm_direct_exit(_exit_code);
+  } else {
+    vm_direct_exit(_exit_code);
+  }
+}
+
+
+void VM_Exit::wait_if_vm_exited() {
+  if (_vm_exited &&
+      Thread::current_or_null() != _shutdown_thread) {
+    // _vm_exited is set at safepoint, and the Threads_lock is never released
+    // we will block here until the process dies
+    Threads_lock->lock_without_safepoint_check();
+    ShouldNotReachHere();
+  }
+}
+
+void VM_PrintCompileQueue::doit() {
+  CompileBroker::print_compile_queues(_out);
+}
+
+#if INCLUDE_SERVICES
+void VM_PrintClassHierarchy::doit() {
+  KlassHierarchy::print_class_hierarchy(_out, _print_interfaces, _print_subclasses, _classname);
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/runtime/vmOperations.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,512 @@
+/*
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_RUNTIME_VMOPERATIONS_HPP
+#define SHARE_VM_RUNTIME_VMOPERATIONS_HPP
+
+#include "classfile/javaClasses.hpp"
+#include "memory/allocation.hpp"
+#include "oops/oop.hpp"
+#include "runtime/thread.hpp"
+#include "runtime/threadSMR.hpp"
+#include "code/codeCache.hpp"
+
+// The following classes are used for operations
+// initiated by a Java thread but that must
+// take place in the VMThread.
+
+#define VM_OP_ENUM(type)   VMOp_##type,
+
+// Note: When new VM_XXX comes up, add 'XXX' to the template table.
+#define VM_OPS_DO(template)                       \
+  template(None)                                  \
+  template(ThreadStop)                            \
+  template(ThreadDump)                            \
+  template(PrintThreads)                          \
+  template(FindDeadlocks)                         \
+  template(ClearICs)                              \
+  template(ForceSafepoint)                        \
+  template(ForceAsyncSafepoint)                   \
+  template(Deoptimize)                            \
+  template(DeoptimizeFrame)                       \
+  template(DeoptimizeAll)                         \
+  template(ZombieAll)                             \
+  template(Verify)                                \
+  template(PrintJNI)                              \
+  template(HeapDumper)                            \
+  template(DeoptimizeTheWorld)                    \
+  template(CollectForMetadataAllocation)          \
+  template(GC_HeapInspection)                     \
+  template(GenCollectFull)                        \
+  template(GenCollectFullConcurrent)              \
+  template(GenCollectForAllocation)               \
+  template(ParallelGCFailedAllocation)            \
+  template(ParallelGCSystemGC)                    \
+  template(CMS_Initial_Mark)                      \
+  template(CMS_Final_Remark)                      \
+  template(G1CollectForAllocation)                \
+  template(G1CollectFull)                         \
+  template(G1Concurrent)                          \
+  template(ZOperation)                            \
+  template(HandshakeOneThread)                    \
+  template(HandshakeAllThreads)                   \
+  template(HandshakeFallback)                     \
+  template(EnableBiasedLocking)                   \
+  template(RevokeBias)                            \
+  template(BulkRevokeBias)                        \
+  template(PopulateDumpSharedSpace)               \
+  template(JNIFunctionTableCopier)                \
+  template(RedefineClasses)                       \
+  template(UpdateForPopTopFrame)                  \
+  template(SetFramePop)                           \
+  template(GetOwnedMonitorInfo)                   \
+  template(GetObjectMonitorUsage)                 \
+  template(GetCurrentContendedMonitor)            \
+  template(GetStackTrace)                         \
+  template(GetMultipleStackTraces)                \
+  template(GetAllStackTraces)                     \
+  template(GetThreadListStackTraces)              \
+  template(GetFrameCount)                         \
+  template(GetFrameLocation)                      \
+  template(ChangeBreakpoints)                     \
+  template(GetOrSetLocal)                         \
+  template(GetCurrentLocation)                    \
+  template(EnterInterpOnlyMode)                   \
+  template(ChangeSingleStep)                      \
+  template(HeapWalkOperation)                     \
+  template(HeapIterateOperation)                  \
+  template(ReportJavaOutOfMemory)                 \
+  template(JFRCheckpoint)                         \
+  template(Exit)                                  \
+  template(LinuxDllLoad)                          \
+  template(RotateGCLog)                           \
+  template(WhiteBoxOperation)                     \
+  template(ClassLoaderStatsOperation)             \
+  template(ClassLoaderHierarchyOperation)         \
+  template(DumpHashtable)                         \
+  template(DumpTouchedMethods)                    \
+  template(MarkActiveNMethods)                    \
+  template(PrintCompileQueue)                     \
+  template(PrintClassHierarchy)                   \
+  template(ThreadSuspend)                         \
+  template(CTWThreshold)                          \
+  template(ThreadsSuspendJVMTI)                   \
+  template(ICBufferFull)                          \
+  template(ScavengeMonitors)                      \
+  template(PrintMetadata)                         \
+  template(GTestExecuteAtSafepoint)               \
+
+class VM_Operation: public CHeapObj<mtInternal> {
+ public:
+  enum Mode {
+    _safepoint,       // blocking,        safepoint, vm_op C-heap allocated
+    _no_safepoint,    // blocking,     no safepoint, vm_op C-Heap allocated
+    _concurrent,      // non-blocking, no safepoint, vm_op C-Heap allocated
+    _async_safepoint  // non-blocking,    safepoint, vm_op C-Heap allocated
+  };
+
+  enum VMOp_Type {
+    VM_OPS_DO(VM_OP_ENUM)
+    VMOp_Terminating
+  };
+
+ private:
+  Thread*         _calling_thread;
+  ThreadPriority  _priority;
+  long            _timestamp;
+  VM_Operation*   _next;
+  VM_Operation*   _prev;
+
+  // The VM operation name array
+  static const char* _names[];
+
+ public:
+  VM_Operation()  { _calling_thread = NULL; _next = NULL; _prev = NULL; }
+  virtual ~VM_Operation() {}
+
+  // VM operation support (used by VM thread)
+  Thread* calling_thread() const                 { return _calling_thread; }
+  ThreadPriority priority()                      { return _priority; }
+  void set_calling_thread(Thread* thread, ThreadPriority priority);
+
+  long timestamp() const              { return _timestamp; }
+  void set_timestamp(long timestamp)  { _timestamp = timestamp; }
+
+  // Called by VM thread - does in turn invoke doit(). Do not override this
+  void evaluate();
+
+  // evaluate() is called by the VMThread and in turn calls doit().
+  // If the thread invoking VMThread::execute((VM_Operation*) is a JavaThread,
+  // doit_prologue() is called in that thread before transferring control to
+  // the VMThread.
+  // If doit_prologue() returns true the VM operation will proceed, and
+  // doit_epilogue() will be called by the JavaThread once the VM operation
+  // completes. If doit_prologue() returns false the VM operation is cancelled.
+  virtual void doit()                            = 0;
+  virtual bool doit_prologue()                   { return true; };
+  virtual void doit_epilogue()                   {}; // Note: Not called if mode is: _concurrent
+
+  // Type test
+  virtual bool is_methodCompiler() const         { return false; }
+
+  // Linking
+  VM_Operation *next() const                     { return _next; }
+  VM_Operation *prev() const                     { return _prev; }
+  void set_next(VM_Operation *next)              { _next = next; }
+  void set_prev(VM_Operation *prev)              { _prev = prev; }
+
+  // Configuration. Override these appropriately in subclasses.
+  virtual VMOp_Type type() const = 0;
+  virtual Mode evaluation_mode() const            { return _safepoint; }
+  virtual bool allow_nested_vm_operations() const { return false; }
+  virtual bool is_cheap_allocated() const         { return false; }
+  virtual void oops_do(OopClosure* f)              { /* do nothing */ };
+
+  // CAUTION: <don't hang yourself with following rope>
+  // If you override these methods, make sure that the evaluation
+  // of these methods is race-free and non-blocking, since these
+  // methods may be evaluated either by the mutators or by the
+  // vm thread, either concurrently with mutators or with the mutators
+  // stopped. In other words, taking locks is verboten, and if there
+  // are any races in evaluating the conditions, they'd better be benign.
+  virtual bool evaluate_at_safepoint() const {
+    return evaluation_mode() == _safepoint  ||
+           evaluation_mode() == _async_safepoint;
+  }
+  virtual bool evaluate_concurrently() const {
+    return evaluation_mode() == _concurrent ||
+           evaluation_mode() == _async_safepoint;
+  }
+
+  static const char* mode_to_string(Mode mode);
+
+  // Debugging
+  virtual void print_on_error(outputStream* st) const;
+  const char* name() const { return _names[type()]; }
+  static const char* name(int type) {
+    assert(type >= 0 && type < VMOp_Terminating, "invalid VM operation type");
+    return _names[type];
+  }
+#ifndef PRODUCT
+  void print_on(outputStream* st) const { print_on_error(st); }
+#endif
+};
+
+class VM_ThreadStop: public VM_Operation {
+ private:
+  oop     _thread;        // The Thread that the Throwable is thrown against
+  oop     _throwable;     // The Throwable thrown at the target Thread
+ public:
+  // All oops are passed as JNI handles, since there is no guarantee that a GC might happen before the
+  // VM operation is executed.
+  VM_ThreadStop(oop thread, oop throwable) {
+    _thread    = thread;
+    _throwable = throwable;
+  }
+  VMOp_Type type() const                         { return VMOp_ThreadStop; }
+  oop target_thread() const                      { return _thread; }
+  oop throwable() const                          { return _throwable;}
+  void doit();
+  // We deoptimize if top-most frame is compiled - this might require a C2I adapter to be generated
+  bool allow_nested_vm_operations() const        { return true; }
+  Mode evaluation_mode() const                   { return _async_safepoint; }
+  bool is_cheap_allocated() const                { return true; }
+
+  // GC support
+  void oops_do(OopClosure* f) {
+    f->do_oop(&_thread); f->do_oop(&_throwable);
+  }
+};
+
+class VM_ClearICs: public VM_Operation {
+ private:
+  bool _preserve_static_stubs;
+ public:
+  VM_ClearICs(bool preserve_static_stubs) { _preserve_static_stubs = preserve_static_stubs; }
+  void doit();
+  VMOp_Type type() const { return VMOp_ClearICs; }
+};
+
+// empty vm op, evaluated just to force a safepoint
+class VM_ForceSafepoint: public VM_Operation {
+ public:
+  void doit()         {}
+  VMOp_Type type() const { return VMOp_ForceSafepoint; }
+};
+
+// empty vm op, when forcing a safepoint to suspend a thread
+class VM_ThreadSuspend: public VM_ForceSafepoint {
+ public:
+  VMOp_Type type() const { return VMOp_ThreadSuspend; }
+};
+
+// empty vm op, when forcing a safepoint due to ctw threshold is reached for the sweeper
+class VM_CTWThreshold: public VM_ForceSafepoint {
+ public:
+  VMOp_Type type() const { return VMOp_CTWThreshold; }
+};
+
+// empty vm op, when forcing a safepoint to suspend threads from jvmti
+class VM_ThreadsSuspendJVMTI: public VM_ForceSafepoint {
+ public:
+  VMOp_Type type() const { return VMOp_ThreadsSuspendJVMTI; }
+};
+
+// empty vm op, when forcing a safepoint due to inline cache buffers being full
+class VM_ICBufferFull: public VM_ForceSafepoint {
+ public:
+  VMOp_Type type() const { return VMOp_ICBufferFull; }
+};
+
+// empty asynchronous vm op, when forcing a safepoint to scavenge monitors
+class VM_ScavengeMonitors: public VM_ForceSafepoint {
+ public:
+  VMOp_Type type() const                         { return VMOp_ScavengeMonitors; }
+  Mode evaluation_mode() const                   { return _async_safepoint; }
+  bool is_cheap_allocated() const                { return true; }
+};
+
+// Base class for invoking parts of a gtest in a safepoint.
+// Derived classes provide the doit method.
+// Typically also need to transition the gtest thread from native to VM.
+class VM_GTestExecuteAtSafepoint: public VM_Operation {
+ public:
+  VMOp_Type type() const                         { return VMOp_GTestExecuteAtSafepoint; }
+
+ protected:
+  VM_GTestExecuteAtSafepoint() {}
+};
+
+class VM_Deoptimize: public VM_Operation {
+ public:
+  VM_Deoptimize() {}
+  VMOp_Type type() const                        { return VMOp_Deoptimize; }
+  void doit();
+  bool allow_nested_vm_operations() const        { return true; }
+};
+
+class VM_MarkActiveNMethods: public VM_Operation {
+ public:
+  VM_MarkActiveNMethods() {}
+  VMOp_Type type() const                         { return VMOp_MarkActiveNMethods; }
+  void doit();
+  bool allow_nested_vm_operations() const        { return true; }
+};
+
+// Deopt helper that can deoptimize frames in threads other than the
+// current thread.  Only used through Deoptimization::deoptimize_frame.
+class VM_DeoptimizeFrame: public VM_Operation {
+  friend class Deoptimization;
+
+ private:
+  JavaThread* _thread;
+  intptr_t*   _id;
+  int _reason;
+  VM_DeoptimizeFrame(JavaThread* thread, intptr_t* id, int reason);
+
+ public:
+  VMOp_Type type() const                         { return VMOp_DeoptimizeFrame; }
+  void doit();
+  bool allow_nested_vm_operations() const        { return true;  }
+};
+
+#ifndef PRODUCT
+class VM_DeoptimizeAll: public VM_Operation {
+ private:
+  Klass* _dependee;
+ public:
+  VM_DeoptimizeAll() {}
+  VMOp_Type type() const                         { return VMOp_DeoptimizeAll; }
+  void doit();
+  bool allow_nested_vm_operations() const        { return true; }
+};
+
+
+class VM_ZombieAll: public VM_Operation {
+ public:
+  VM_ZombieAll() {}
+  VMOp_Type type() const                         { return VMOp_ZombieAll; }
+  void doit();
+  bool allow_nested_vm_operations() const        { return true; }
+};
+#endif // PRODUCT
+
+class VM_Verify: public VM_Operation {
+ public:
+  VMOp_Type type() const { return VMOp_Verify; }
+  void doit();
+};
+
+
+class VM_PrintThreads: public VM_Operation {
+ private:
+  outputStream* _out;
+  bool _print_concurrent_locks;
+  bool _print_extended_info;
+ public:
+  VM_PrintThreads()
+    : _out(tty), _print_concurrent_locks(PrintConcurrentLocks), _print_extended_info(false)
+  {}
+  VM_PrintThreads(outputStream* out, bool print_concurrent_locks, bool print_extended_info)
+    : _out(out), _print_concurrent_locks(print_concurrent_locks), _print_extended_info(print_extended_info)
+  {}
+  VMOp_Type type() const {
+    return VMOp_PrintThreads;
+  }
+  void doit();
+  bool doit_prologue();
+  void doit_epilogue();
+};
+
+class VM_PrintJNI: public VM_Operation {
+ private:
+  outputStream* _out;
+ public:
+  VM_PrintJNI()                         { _out = tty; }
+  VM_PrintJNI(outputStream* out)        { _out = out; }
+  VMOp_Type type() const                { return VMOp_PrintJNI; }
+  void doit();
+};
+
+class VM_PrintMetadata : public VM_Operation {
+ private:
+  outputStream* const _out;
+  const size_t        _scale;
+  const int           _flags;
+
+ public:
+  VM_PrintMetadata(outputStream* out, size_t scale, int flags)
+    : _out(out), _scale(scale), _flags(flags)
+  {};
+
+  VMOp_Type type() const  { return VMOp_PrintMetadata; }
+  void doit();
+};
+
+class DeadlockCycle;
+class VM_FindDeadlocks: public VM_Operation {
+ private:
+  bool              _concurrent_locks;
+  DeadlockCycle*    _deadlocks;
+  outputStream*     _out;
+  ThreadsListSetter _setter;  // Helper to set hazard ptr in the originating thread
+                              // which protects the JavaThreads in _deadlocks.
+
+ public:
+  VM_FindDeadlocks(bool concurrent_locks) :  _concurrent_locks(concurrent_locks), _deadlocks(NULL), _out(NULL), _setter() {};
+  VM_FindDeadlocks(outputStream* st) : _concurrent_locks(true), _deadlocks(NULL), _out(st) {};
+  ~VM_FindDeadlocks();
+
+  DeadlockCycle* result()      { return _deadlocks; };
+  VMOp_Type type() const       { return VMOp_FindDeadlocks; }
+  void doit();
+};
+
+class ThreadDumpResult;
+class ThreadSnapshot;
+class ThreadConcurrentLocks;
+
+class VM_ThreadDump : public VM_Operation {
+ private:
+  ThreadDumpResult*              _result;
+  int                            _num_threads;
+  GrowableArray<instanceHandle>* _threads;
+  int                            _max_depth;
+  bool                           _with_locked_monitors;
+  bool                           _with_locked_synchronizers;
+
+  ThreadSnapshot* snapshot_thread(JavaThread* java_thread, ThreadConcurrentLocks* tcl);
+
+ public:
+  VM_ThreadDump(ThreadDumpResult* result,
+                int max_depth,  // -1 indicates entire stack
+                bool with_locked_monitors,
+                bool with_locked_synchronizers);
+
+  VM_ThreadDump(ThreadDumpResult* result,
+                GrowableArray<instanceHandle>* threads,
+                int num_threads, // -1 indicates entire stack
+                int max_depth,
+                bool with_locked_monitors,
+                bool with_locked_synchronizers);
+
+  VMOp_Type type() const { return VMOp_ThreadDump; }
+  void doit();
+  bool doit_prologue();
+  void doit_epilogue();
+};
+
+
+class VM_Exit: public VM_Operation {
+ private:
+  int  _exit_code;
+  static volatile bool _vm_exited;
+  static Thread * volatile _shutdown_thread;
+  static void wait_if_vm_exited();
+ public:
+  VM_Exit(int exit_code) {
+    _exit_code = exit_code;
+  }
+  static int wait_for_threads_in_native_to_block();
+  static int set_vm_exited();
+  static bool vm_exited()                      { return _vm_exited; }
+  static Thread * shutdown_thread()            { return _shutdown_thread; }
+  static void block_if_vm_exited() {
+    if (_vm_exited) {
+      wait_if_vm_exited();
+    }
+  }
+  VMOp_Type type() const { return VMOp_Exit; }
+  void doit();
+};
+
+class VM_PrintCompileQueue: public VM_Operation {
+ private:
+  outputStream* _out;
+
+ public:
+  VM_PrintCompileQueue(outputStream* st) : _out(st) {}
+  VMOp_Type type() const { return VMOp_PrintCompileQueue; }
+  Mode evaluation_mode() const { return _safepoint; }
+  void doit();
+};
+
+#if INCLUDE_SERVICES
+class VM_PrintClassHierarchy: public VM_Operation {
+ private:
+  outputStream* _out;
+  bool _print_interfaces;
+  bool _print_subclasses;
+  char* _classname;
+
+ public:
+  VM_PrintClassHierarchy(outputStream* st, bool print_interfaces, bool print_subclasses, char* classname) :
+    _out(st), _print_interfaces(print_interfaces), _print_subclasses(print_subclasses),
+    _classname(classname) {}
+  VMOp_Type type() const { return VMOp_PrintClassHierarchy; }
+  void doit();
+};
+#endif // INCLUDE_SERVICES
+
+#endif // SHARE_VM_RUNTIME_VMOPERATIONS_HPP
--- a/src/hotspot/share/runtime/vmThread.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/vmThread.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -39,7 +39,7 @@
 #include "runtime/safepoint.hpp"
 #include "runtime/thread.inline.hpp"
 #include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "services/runtimeService.hpp"
 #include "utilities/dtrace.hpp"
 #include "utilities/events.hpp"
--- a/src/hotspot/share/runtime/vmThread.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/runtime/vmThread.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -27,7 +27,7 @@
 
 #include "runtime/perfData.hpp"
 #include "runtime/thread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 
 //
 // Prioritized queue of VM operations.
--- a/src/hotspot/share/runtime/vm_operations.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,508 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "classfile/symbolTable.hpp"
-#include "classfile/vmSymbols.hpp"
-#include "code/codeCache.hpp"
-#include "compiler/compileBroker.hpp"
-#include "gc/shared/isGCActiveMark.hpp"
-#include "logging/log.hpp"
-#include "logging/logStream.hpp"
-#include "memory/heapInspection.hpp"
-#include "memory/resourceArea.hpp"
-#include "oops/symbol.hpp"
-#include "runtime/arguments.hpp"
-#include "runtime/deoptimization.hpp"
-#include "runtime/frame.inline.hpp"
-#include "runtime/interfaceSupport.inline.hpp"
-#include "runtime/sweeper.hpp"
-#include "runtime/thread.inline.hpp"
-#include "runtime/threadSMR.inline.hpp"
-#include "runtime/vm_operations.hpp"
-#include "services/threadService.hpp"
-
-#define VM_OP_NAME_INITIALIZE(name) #name,
-
-const char* VM_Operation::_names[VM_Operation::VMOp_Terminating] = \
-  { VM_OPS_DO(VM_OP_NAME_INITIALIZE) };
-
-void VM_Operation::set_calling_thread(Thread* thread, ThreadPriority priority) {
-  _calling_thread = thread;
-  assert(MinPriority <= priority && priority <= MaxPriority, "sanity check");
-  _priority = priority;
-}
-
-
-void VM_Operation::evaluate() {
-  ResourceMark rm;
-  LogTarget(Debug, vmoperation) lt;
-  if (lt.is_enabled()) {
-    LogStream ls(lt);
-    ls.print("begin ");
-    print_on_error(&ls);
-    ls.cr();
-  }
-  doit();
-  if (lt.is_enabled()) {
-    LogStream ls(lt);
-    ls.print("end ");
-    print_on_error(&ls);
-    ls.cr();
-  }
-}
-
-const char* VM_Operation::mode_to_string(Mode mode) {
-  switch(mode) {
-    case _safepoint      : return "safepoint";
-    case _no_safepoint   : return "no safepoint";
-    case _concurrent     : return "concurrent";
-    case _async_safepoint: return "async safepoint";
-    default              : return "unknown";
-  }
-}
-// Called by fatal error handler.
-void VM_Operation::print_on_error(outputStream* st) const {
-  st->print("VM_Operation (" PTR_FORMAT "): ", p2i(this));
-  st->print("%s", name());
-
-  const char* mode = mode_to_string(evaluation_mode());
-  st->print(", mode: %s", mode);
-
-  if (calling_thread()) {
-    st->print(", requested by thread " PTR_FORMAT, p2i(calling_thread()));
-  }
-}
-
-void VM_ThreadStop::doit() {
-  assert(SafepointSynchronize::is_at_safepoint(), "must be at a safepoint");
-  ThreadsListHandle tlh;
-  JavaThread* target = java_lang_Thread::thread(target_thread());
-  // Note that this now allows multiple ThreadDeath exceptions to be
-  // thrown at a thread.
-  if (target != NULL && (!EnableThreadSMRExtraValidityChecks || tlh.includes(target))) {
-    // The target thread has run and has not exited yet.
-    target->send_thread_stop(throwable());
-  }
-}
-
-void VM_ClearICs::doit() {
-  if (_preserve_static_stubs) {
-    CodeCache::cleanup_inline_caches();
-  } else {
-    CodeCache::clear_inline_caches();
-  }
-}
-
-void VM_Deoptimize::doit() {
-  // We do not want any GCs to happen while we are in the middle of this VM operation
-  ResourceMark rm;
-  DeoptimizationMarker dm;
-
-  // Deoptimize all activations depending on marked nmethods
-  Deoptimization::deoptimize_dependents();
-
-  // Make the dependent methods not entrant
-  CodeCache::make_marked_nmethods_not_entrant();
-}
-
-void VM_MarkActiveNMethods::doit() {
-  NMethodSweeper::mark_active_nmethods();
-}
-
-VM_DeoptimizeFrame::VM_DeoptimizeFrame(JavaThread* thread, intptr_t* id, int reason) {
-  _thread = thread;
-  _id     = id;
-  _reason = reason;
-}
-
-
-void VM_DeoptimizeFrame::doit() {
-  assert(_reason > Deoptimization::Reason_none && _reason < Deoptimization::Reason_LIMIT, "invalid deopt reason");
-  Deoptimization::deoptimize_frame_internal(_thread, _id, (Deoptimization::DeoptReason)_reason);
-}
-
-
-#ifndef PRODUCT
-
-void VM_DeoptimizeAll::doit() {
-  DeoptimizationMarker dm;
-  JavaThreadIteratorWithHandle jtiwh;
-  // deoptimize all java threads in the system
-  if (DeoptimizeALot) {
-    for (; JavaThread *thread = jtiwh.next(); ) {
-      if (thread->has_last_Java_frame()) {
-        thread->deoptimize();
-      }
-    }
-  } else if (DeoptimizeRandom) {
-
-    // Deoptimize some selected threads and frames
-    int tnum = os::random() & 0x3;
-    int fnum =  os::random() & 0x3;
-    int tcount = 0;
-    for (; JavaThread *thread = jtiwh.next(); ) {
-      if (thread->has_last_Java_frame()) {
-        if (tcount++ == tnum)  {
-        tcount = 0;
-          int fcount = 0;
-          // Deoptimize some selected frames.
-          // Biased llocking wants a updated register map
-          for(StackFrameStream fst(thread, UseBiasedLocking); !fst.is_done(); fst.next()) {
-            if (fst.current()->can_be_deoptimized()) {
-              if (fcount++ == fnum) {
-                fcount = 0;
-                Deoptimization::deoptimize(thread, *fst.current(), fst.register_map());
-              }
-            }
-          }
-        }
-      }
-    }
-  }
-}
-
-
-void VM_ZombieAll::doit() {
-  JavaThread *thread = (JavaThread *)calling_thread();
-  assert(thread->is_Java_thread(), "must be a Java thread");
-  thread->make_zombies();
-}
-
-#endif // !PRODUCT
-
-void VM_Verify::doit() {
-  Universe::heap()->prepare_for_verify();
-  Universe::verify();
-}
-
-bool VM_PrintThreads::doit_prologue() {
-  // Get Heap_lock if concurrent locks will be dumped
-  if (_print_concurrent_locks) {
-    Heap_lock->lock();
-  }
-  return true;
-}
-
-void VM_PrintThreads::doit() {
-  Threads::print_on(_out, true, false, _print_concurrent_locks, _print_extended_info);
-}
-
-void VM_PrintThreads::doit_epilogue() {
-  if (_print_concurrent_locks) {
-    // Release Heap_lock
-    Heap_lock->unlock();
-  }
-}
-
-void VM_PrintJNI::doit() {
-  JNIHandles::print_on(_out);
-}
-
-void VM_PrintMetadata::doit() {
-  MetaspaceUtils::print_report(_out, _scale, _flags);
-}
-
-VM_FindDeadlocks::~VM_FindDeadlocks() {
-  if (_deadlocks != NULL) {
-    DeadlockCycle* cycle = _deadlocks;
-    while (cycle != NULL) {
-      DeadlockCycle* d = cycle;
-      cycle = cycle->next();
-      delete d;
-    }
-  }
-}
-
-void VM_FindDeadlocks::doit() {
-  // Update the hazard ptr in the originating thread to the current
-  // list of threads. This VM operation needs the current list of
-  // threads for proper deadlock detection and those are the
-  // JavaThreads we need to be protected when we return info to the
-  // originating thread.
-  _setter.set();
-
-  _deadlocks = ThreadService::find_deadlocks_at_safepoint(_setter.list(), _concurrent_locks);
-  if (_out != NULL) {
-    int num_deadlocks = 0;
-    for (DeadlockCycle* cycle = _deadlocks; cycle != NULL; cycle = cycle->next()) {
-      num_deadlocks++;
-      cycle->print_on_with(_setter.list(), _out);
-    }
-
-    if (num_deadlocks == 1) {
-      _out->print_cr("\nFound 1 deadlock.\n");
-      _out->flush();
-    } else if (num_deadlocks > 1) {
-      _out->print_cr("\nFound %d deadlocks.\n", num_deadlocks);
-      _out->flush();
-    }
-  }
-}
-
-VM_ThreadDump::VM_ThreadDump(ThreadDumpResult* result,
-                             int max_depth,
-                             bool with_locked_monitors,
-                             bool with_locked_synchronizers) {
-  _result = result;
-  _num_threads = 0; // 0 indicates all threads
-  _threads = NULL;
-  _result = result;
-  _max_depth = max_depth;
-  _with_locked_monitors = with_locked_monitors;
-  _with_locked_synchronizers = with_locked_synchronizers;
-}
-
-VM_ThreadDump::VM_ThreadDump(ThreadDumpResult* result,
-                             GrowableArray<instanceHandle>* threads,
-                             int num_threads,
-                             int max_depth,
-                             bool with_locked_monitors,
-                             bool with_locked_synchronizers) {
-  _result = result;
-  _num_threads = num_threads;
-  _threads = threads;
-  _result = result;
-  _max_depth = max_depth;
-  _with_locked_monitors = with_locked_monitors;
-  _with_locked_synchronizers = with_locked_synchronizers;
-}
-
-bool VM_ThreadDump::doit_prologue() {
-  if (_with_locked_synchronizers) {
-    // Acquire Heap_lock to dump concurrent locks
-    Heap_lock->lock();
-  }
-
-  return true;
-}
-
-void VM_ThreadDump::doit_epilogue() {
-  if (_with_locked_synchronizers) {
-    // Release Heap_lock
-    Heap_lock->unlock();
-  }
-}
-
-void VM_ThreadDump::doit() {
-  ResourceMark rm;
-
-  // Set the hazard ptr in the originating thread to protect the
-  // current list of threads. This VM operation needs the current list
-  // of threads for a proper dump and those are the JavaThreads we need
-  // to be protected when we return info to the originating thread.
-  _result->set_t_list();
-
-  ConcurrentLocksDump concurrent_locks(true);
-  if (_with_locked_synchronizers) {
-    concurrent_locks.dump_at_safepoint();
-  }
-
-  if (_num_threads == 0) {
-    // Snapshot all live threads
-
-    for (uint i = 0; i < _result->t_list()->length(); i++) {
-      JavaThread* jt = _result->t_list()->thread_at(i);
-      if (jt->is_exiting() ||
-          jt->is_hidden_from_external_view())  {
-        // skip terminating threads and hidden threads
-        continue;
-      }
-      ThreadConcurrentLocks* tcl = NULL;
-      if (_with_locked_synchronizers) {
-        tcl = concurrent_locks.thread_concurrent_locks(jt);
-      }
-      ThreadSnapshot* ts = snapshot_thread(jt, tcl);
-      _result->add_thread_snapshot(ts);
-    }
-  } else {
-    // Snapshot threads in the given _threads array
-    // A dummy snapshot is created if a thread doesn't exist
-
-    for (int i = 0; i < _num_threads; i++) {
-      instanceHandle th = _threads->at(i);
-      if (th() == NULL) {
-        // skip if the thread doesn't exist
-        // Add a dummy snapshot
-        _result->add_thread_snapshot(new ThreadSnapshot());
-        continue;
-      }
-
-      // Dump thread stack only if the thread is alive and not exiting
-      // and not VM internal thread.
-      JavaThread* jt = java_lang_Thread::thread(th());
-      if (jt != NULL && !_result->t_list()->includes(jt)) {
-        // _threads[i] doesn't refer to a valid JavaThread; this check
-        // is primarily for JVM_DumpThreads() which doesn't have a good
-        // way to validate the _threads array.
-        jt = NULL;
-      }
-      if (jt == NULL || /* thread not alive */
-          jt->is_exiting() ||
-          jt->is_hidden_from_external_view())  {
-        // add a NULL snapshot if skipped
-        _result->add_thread_snapshot(new ThreadSnapshot());
-        continue;
-      }
-      ThreadConcurrentLocks* tcl = NULL;
-      if (_with_locked_synchronizers) {
-        tcl = concurrent_locks.thread_concurrent_locks(jt);
-      }
-      ThreadSnapshot* ts = snapshot_thread(jt, tcl);
-      _result->add_thread_snapshot(ts);
-    }
-  }
-}
-
-ThreadSnapshot* VM_ThreadDump::snapshot_thread(JavaThread* java_thread, ThreadConcurrentLocks* tcl) {
-  ThreadSnapshot* snapshot = new ThreadSnapshot(_result->t_list(), java_thread);
-  snapshot->dump_stack_at_safepoint(_max_depth, _with_locked_monitors);
-  snapshot->set_concurrent_locks(tcl);
-  return snapshot;
-}
-
-volatile bool VM_Exit::_vm_exited = false;
-Thread * volatile VM_Exit::_shutdown_thread = NULL;
-
-int VM_Exit::set_vm_exited() {
-
-  Thread * thr_cur = Thread::current();
-
-  assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint already");
-
-  int num_active = 0;
-
-  _shutdown_thread = thr_cur;
-  _vm_exited = true;                                // global flag
-  for (JavaThreadIteratorWithHandle jtiwh; JavaThread *thr = jtiwh.next(); ) {
-    if (thr!=thr_cur && thr->thread_state() == _thread_in_native) {
-      ++num_active;
-      thr->set_terminated(JavaThread::_vm_exited);  // per-thread flag
-    }
-  }
-
-  return num_active;
-}
-
-int VM_Exit::wait_for_threads_in_native_to_block() {
-  // VM exits at safepoint. This function must be called at the final safepoint
-  // to wait for threads in _thread_in_native state to be quiescent.
-  assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint already");
-
-  Thread * thr_cur = Thread::current();
-  Monitor timer(Mutex::leaf, "VM_Exit timer", true,
-                Monitor::_safepoint_check_never);
-
-  // Compiler threads need longer wait because they can access VM data directly
-  // while in native. If they are active and some structures being used are
-  // deleted by the shutdown sequence, they will crash. On the other hand, user
-  // threads must go through native=>Java/VM transitions first to access VM
-  // data, and they will be stopped during state transition. In theory, we
-  // don't have to wait for user threads to be quiescent, but it's always
-  // better to terminate VM when current thread is the only active thread, so
-  // wait for user threads too. Numbers are in 10 milliseconds.
-  int max_wait_user_thread = 30;                  // at least 300 milliseconds
-  int max_wait_compiler_thread = 1000;            // at least 10 seconds
-
-  int max_wait = max_wait_compiler_thread;
-
-  int attempts = 0;
-  JavaThreadIteratorWithHandle jtiwh;
-  while (true) {
-    int num_active = 0;
-    int num_active_compiler_thread = 0;
-
-    jtiwh.rewind();
-    for (; JavaThread *thr = jtiwh.next(); ) {
-      if (thr!=thr_cur && thr->thread_state() == _thread_in_native) {
-        num_active++;
-        if (thr->is_Compiler_thread()) {
-          num_active_compiler_thread++;
-        }
-      }
-    }
-
-    if (num_active == 0) {
-       return 0;
-    } else if (attempts > max_wait) {
-       return num_active;
-    } else if (num_active_compiler_thread == 0 && attempts > max_wait_user_thread) {
-       return num_active;
-    }
-
-    attempts++;
-
-    MutexLockerEx ml(&timer, Mutex::_no_safepoint_check_flag);
-    timer.wait(Mutex::_no_safepoint_check_flag, 10);
-  }
-}
-
-void VM_Exit::doit() {
-  CompileBroker::set_should_block();
-
-  // Wait for a short period for threads in native to block. Any thread
-  // still executing native code after the wait will be stopped at
-  // native==>Java/VM barriers.
-  // Among 16276 JCK tests, 94% of them come here without any threads still
-  // running in native; the other 6% are quiescent within 250ms (Ultra 80).
-  wait_for_threads_in_native_to_block();
-
-  set_vm_exited();
-
-  // cleanup globals resources before exiting. exit_globals() currently
-  // cleans up outputStream resources and PerfMemory resources.
-  exit_globals();
-
-  // Check for exit hook
-  exit_hook_t exit_hook = Arguments::exit_hook();
-  if (exit_hook != NULL) {
-    // exit hook should exit.
-    exit_hook(_exit_code);
-    // ... but if it didn't, we must do it here
-    vm_direct_exit(_exit_code);
-  } else {
-    vm_direct_exit(_exit_code);
-  }
-}
-
-
-void VM_Exit::wait_if_vm_exited() {
-  if (_vm_exited &&
-      Thread::current_or_null() != _shutdown_thread) {
-    // _vm_exited is set at safepoint, and the Threads_lock is never released
-    // we will block here until the process dies
-    Threads_lock->lock_without_safepoint_check();
-    ShouldNotReachHere();
-  }
-}
-
-void VM_PrintCompileQueue::doit() {
-  CompileBroker::print_compile_queues(_out);
-}
-
-#if INCLUDE_SERVICES
-void VM_PrintClassHierarchy::doit() {
-  KlassHierarchy::print_class_hierarchy(_out, _print_interfaces, _print_subclasses, _classname);
-}
-#endif
--- a/src/hotspot/share/runtime/vm_operations.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,512 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_RUNTIME_VM_OPERATIONS_HPP
-#define SHARE_VM_RUNTIME_VM_OPERATIONS_HPP
-
-#include "classfile/javaClasses.hpp"
-#include "memory/allocation.hpp"
-#include "oops/oop.hpp"
-#include "runtime/thread.hpp"
-#include "runtime/threadSMR.hpp"
-#include "code/codeCache.hpp"
-
-// The following classes are used for operations
-// initiated by a Java thread but that must
-// take place in the VMThread.
-
-#define VM_OP_ENUM(type)   VMOp_##type,
-
-// Note: When new VM_XXX comes up, add 'XXX' to the template table.
-#define VM_OPS_DO(template)                       \
-  template(None)                                  \
-  template(ThreadStop)                            \
-  template(ThreadDump)                            \
-  template(PrintThreads)                          \
-  template(FindDeadlocks)                         \
-  template(ClearICs)                              \
-  template(ForceSafepoint)                        \
-  template(ForceAsyncSafepoint)                   \
-  template(Deoptimize)                            \
-  template(DeoptimizeFrame)                       \
-  template(DeoptimizeAll)                         \
-  template(ZombieAll)                             \
-  template(Verify)                                \
-  template(PrintJNI)                              \
-  template(HeapDumper)                            \
-  template(DeoptimizeTheWorld)                    \
-  template(CollectForMetadataAllocation)          \
-  template(GC_HeapInspection)                     \
-  template(GenCollectFull)                        \
-  template(GenCollectFullConcurrent)              \
-  template(GenCollectForAllocation)               \
-  template(ParallelGCFailedAllocation)            \
-  template(ParallelGCSystemGC)                    \
-  template(CGC_Operation)                         \
-  template(CMS_Initial_Mark)                      \
-  template(CMS_Final_Remark)                      \
-  template(G1CollectForAllocation)                \
-  template(G1CollectFull)                         \
-  template(ZOperation)                            \
-  template(HandshakeOneThread)                    \
-  template(HandshakeAllThreads)                   \
-  template(HandshakeFallback)                     \
-  template(EnableBiasedLocking)                   \
-  template(RevokeBias)                            \
-  template(BulkRevokeBias)                        \
-  template(PopulateDumpSharedSpace)               \
-  template(JNIFunctionTableCopier)                \
-  template(RedefineClasses)                       \
-  template(UpdateForPopTopFrame)                  \
-  template(SetFramePop)                           \
-  template(GetOwnedMonitorInfo)                   \
-  template(GetObjectMonitorUsage)                 \
-  template(GetCurrentContendedMonitor)            \
-  template(GetStackTrace)                         \
-  template(GetMultipleStackTraces)                \
-  template(GetAllStackTraces)                     \
-  template(GetThreadListStackTraces)              \
-  template(GetFrameCount)                         \
-  template(GetFrameLocation)                      \
-  template(ChangeBreakpoints)                     \
-  template(GetOrSetLocal)                         \
-  template(GetCurrentLocation)                    \
-  template(EnterInterpOnlyMode)                   \
-  template(ChangeSingleStep)                      \
-  template(HeapWalkOperation)                     \
-  template(HeapIterateOperation)                  \
-  template(ReportJavaOutOfMemory)                 \
-  template(JFRCheckpoint)                         \
-  template(Exit)                                  \
-  template(LinuxDllLoad)                          \
-  template(RotateGCLog)                           \
-  template(WhiteBoxOperation)                     \
-  template(ClassLoaderStatsOperation)             \
-  template(ClassLoaderHierarchyOperation)         \
-  template(DumpHashtable)                         \
-  template(DumpTouchedMethods)                    \
-  template(MarkActiveNMethods)                    \
-  template(PrintCompileQueue)                     \
-  template(PrintClassHierarchy)                   \
-  template(ThreadSuspend)                         \
-  template(CTWThreshold)                          \
-  template(ThreadsSuspendJVMTI)                   \
-  template(ICBufferFull)                          \
-  template(ScavengeMonitors)                      \
-  template(PrintMetadata)                         \
-  template(GTestExecuteAtSafepoint)               \
-
-class VM_Operation: public CHeapObj<mtInternal> {
- public:
-  enum Mode {
-    _safepoint,       // blocking,        safepoint, vm_op C-heap allocated
-    _no_safepoint,    // blocking,     no safepoint, vm_op C-Heap allocated
-    _concurrent,      // non-blocking, no safepoint, vm_op C-Heap allocated
-    _async_safepoint  // non-blocking,    safepoint, vm_op C-Heap allocated
-  };
-
-  enum VMOp_Type {
-    VM_OPS_DO(VM_OP_ENUM)
-    VMOp_Terminating
-  };
-
- private:
-  Thread*         _calling_thread;
-  ThreadPriority  _priority;
-  long            _timestamp;
-  VM_Operation*   _next;
-  VM_Operation*   _prev;
-
-  // The VM operation name array
-  static const char* _names[];
-
- public:
-  VM_Operation()  { _calling_thread = NULL; _next = NULL; _prev = NULL; }
-  virtual ~VM_Operation() {}
-
-  // VM operation support (used by VM thread)
-  Thread* calling_thread() const                 { return _calling_thread; }
-  ThreadPriority priority()                      { return _priority; }
-  void set_calling_thread(Thread* thread, ThreadPriority priority);
-
-  long timestamp() const              { return _timestamp; }
-  void set_timestamp(long timestamp)  { _timestamp = timestamp; }
-
-  // Called by VM thread - does in turn invoke doit(). Do not override this
-  void evaluate();
-
-  // evaluate() is called by the VMThread and in turn calls doit().
-  // If the thread invoking VMThread::execute((VM_Operation*) is a JavaThread,
-  // doit_prologue() is called in that thread before transferring control to
-  // the VMThread.
-  // If doit_prologue() returns true the VM operation will proceed, and
-  // doit_epilogue() will be called by the JavaThread once the VM operation
-  // completes. If doit_prologue() returns false the VM operation is cancelled.
-  virtual void doit()                            = 0;
-  virtual bool doit_prologue()                   { return true; };
-  virtual void doit_epilogue()                   {}; // Note: Not called if mode is: _concurrent
-
-  // Type test
-  virtual bool is_methodCompiler() const         { return false; }
-
-  // Linking
-  VM_Operation *next() const                     { return _next; }
-  VM_Operation *prev() const                     { return _prev; }
-  void set_next(VM_Operation *next)              { _next = next; }
-  void set_prev(VM_Operation *prev)              { _prev = prev; }
-
-  // Configuration. Override these appropriately in subclasses.
-  virtual VMOp_Type type() const = 0;
-  virtual Mode evaluation_mode() const            { return _safepoint; }
-  virtual bool allow_nested_vm_operations() const { return false; }
-  virtual bool is_cheap_allocated() const         { return false; }
-  virtual void oops_do(OopClosure* f)              { /* do nothing */ };
-
-  // CAUTION: <don't hang yourself with following rope>
-  // If you override these methods, make sure that the evaluation
-  // of these methods is race-free and non-blocking, since these
-  // methods may be evaluated either by the mutators or by the
-  // vm thread, either concurrently with mutators or with the mutators
-  // stopped. In other words, taking locks is verboten, and if there
-  // are any races in evaluating the conditions, they'd better be benign.
-  virtual bool evaluate_at_safepoint() const {
-    return evaluation_mode() == _safepoint  ||
-           evaluation_mode() == _async_safepoint;
-  }
-  virtual bool evaluate_concurrently() const {
-    return evaluation_mode() == _concurrent ||
-           evaluation_mode() == _async_safepoint;
-  }
-
-  static const char* mode_to_string(Mode mode);
-
-  // Debugging
-  virtual void print_on_error(outputStream* st) const;
-  const char* name() const { return _names[type()]; }
-  static const char* name(int type) {
-    assert(type >= 0 && type < VMOp_Terminating, "invalid VM operation type");
-    return _names[type];
-  }
-#ifndef PRODUCT
-  void print_on(outputStream* st) const { print_on_error(st); }
-#endif
-};
-
-class VM_ThreadStop: public VM_Operation {
- private:
-  oop     _thread;        // The Thread that the Throwable is thrown against
-  oop     _throwable;     // The Throwable thrown at the target Thread
- public:
-  // All oops are passed as JNI handles, since there is no guarantee that a GC might happen before the
-  // VM operation is executed.
-  VM_ThreadStop(oop thread, oop throwable) {
-    _thread    = thread;
-    _throwable = throwable;
-  }
-  VMOp_Type type() const                         { return VMOp_ThreadStop; }
-  oop target_thread() const                      { return _thread; }
-  oop throwable() const                          { return _throwable;}
-  void doit();
-  // We deoptimize if top-most frame is compiled - this might require a C2I adapter to be generated
-  bool allow_nested_vm_operations() const        { return true; }
-  Mode evaluation_mode() const                   { return _async_safepoint; }
-  bool is_cheap_allocated() const                { return true; }
-
-  // GC support
-  void oops_do(OopClosure* f) {
-    f->do_oop(&_thread); f->do_oop(&_throwable);
-  }
-};
-
-class VM_ClearICs: public VM_Operation {
- private:
-  bool _preserve_static_stubs;
- public:
-  VM_ClearICs(bool preserve_static_stubs) { _preserve_static_stubs = preserve_static_stubs; }
-  void doit();
-  VMOp_Type type() const { return VMOp_ClearICs; }
-};
-
-// empty vm op, evaluated just to force a safepoint
-class VM_ForceSafepoint: public VM_Operation {
- public:
-  void doit()         {}
-  VMOp_Type type() const { return VMOp_ForceSafepoint; }
-};
-
-// empty vm op, when forcing a safepoint to suspend a thread
-class VM_ThreadSuspend: public VM_ForceSafepoint {
- public:
-  VMOp_Type type() const { return VMOp_ThreadSuspend; }
-};
-
-// empty vm op, when forcing a safepoint due to ctw threshold is reached for the sweeper
-class VM_CTWThreshold: public VM_ForceSafepoint {
- public:
-  VMOp_Type type() const { return VMOp_CTWThreshold; }
-};
-
-// empty vm op, when forcing a safepoint to suspend threads from jvmti
-class VM_ThreadsSuspendJVMTI: public VM_ForceSafepoint {
- public:
-  VMOp_Type type() const { return VMOp_ThreadsSuspendJVMTI; }
-};
-
-// empty vm op, when forcing a safepoint due to inline cache buffers being full
-class VM_ICBufferFull: public VM_ForceSafepoint {
- public:
-  VMOp_Type type() const { return VMOp_ICBufferFull; }
-};
-
-// empty asynchronous vm op, when forcing a safepoint to scavenge monitors
-class VM_ScavengeMonitors: public VM_ForceSafepoint {
- public:
-  VMOp_Type type() const                         { return VMOp_ScavengeMonitors; }
-  Mode evaluation_mode() const                   { return _async_safepoint; }
-  bool is_cheap_allocated() const                { return true; }
-};
-
-// Base class for invoking parts of a gtest in a safepoint.
-// Derived classes provide the doit method.
-// Typically also need to transition the gtest thread from native to VM.
-class VM_GTestExecuteAtSafepoint: public VM_Operation {
- public:
-  VMOp_Type type() const                         { return VMOp_GTestExecuteAtSafepoint; }
-
- protected:
-  VM_GTestExecuteAtSafepoint() {}
-};
-
-class VM_Deoptimize: public VM_Operation {
- public:
-  VM_Deoptimize() {}
-  VMOp_Type type() const                        { return VMOp_Deoptimize; }
-  void doit();
-  bool allow_nested_vm_operations() const        { return true; }
-};
-
-class VM_MarkActiveNMethods: public VM_Operation {
- public:
-  VM_MarkActiveNMethods() {}
-  VMOp_Type type() const                         { return VMOp_MarkActiveNMethods; }
-  void doit();
-  bool allow_nested_vm_operations() const        { return true; }
-};
-
-// Deopt helper that can deoptimize frames in threads other than the
-// current thread.  Only used through Deoptimization::deoptimize_frame.
-class VM_DeoptimizeFrame: public VM_Operation {
-  friend class Deoptimization;
-
- private:
-  JavaThread* _thread;
-  intptr_t*   _id;
-  int _reason;
-  VM_DeoptimizeFrame(JavaThread* thread, intptr_t* id, int reason);
-
- public:
-  VMOp_Type type() const                         { return VMOp_DeoptimizeFrame; }
-  void doit();
-  bool allow_nested_vm_operations() const        { return true;  }
-};
-
-#ifndef PRODUCT
-class VM_DeoptimizeAll: public VM_Operation {
- private:
-  Klass* _dependee;
- public:
-  VM_DeoptimizeAll() {}
-  VMOp_Type type() const                         { return VMOp_DeoptimizeAll; }
-  void doit();
-  bool allow_nested_vm_operations() const        { return true; }
-};
-
-
-class VM_ZombieAll: public VM_Operation {
- public:
-  VM_ZombieAll() {}
-  VMOp_Type type() const                         { return VMOp_ZombieAll; }
-  void doit();
-  bool allow_nested_vm_operations() const        { return true; }
-};
-#endif // PRODUCT
-
-class VM_Verify: public VM_Operation {
- public:
-  VMOp_Type type() const { return VMOp_Verify; }
-  void doit();
-};
-
-
-class VM_PrintThreads: public VM_Operation {
- private:
-  outputStream* _out;
-  bool _print_concurrent_locks;
-  bool _print_extended_info;
- public:
-  VM_PrintThreads()
-    : _out(tty), _print_concurrent_locks(PrintConcurrentLocks), _print_extended_info(false)
-  {}
-  VM_PrintThreads(outputStream* out, bool print_concurrent_locks, bool print_extended_info)
-    : _out(out), _print_concurrent_locks(print_concurrent_locks), _print_extended_info(print_extended_info)
-  {}
-  VMOp_Type type() const {
-    return VMOp_PrintThreads;
-  }
-  void doit();
-  bool doit_prologue();
-  void doit_epilogue();
-};
-
-class VM_PrintJNI: public VM_Operation {
- private:
-  outputStream* _out;
- public:
-  VM_PrintJNI()                         { _out = tty; }
-  VM_PrintJNI(outputStream* out)        { _out = out; }
-  VMOp_Type type() const                { return VMOp_PrintJNI; }
-  void doit();
-};
-
-class VM_PrintMetadata : public VM_Operation {
- private:
-  outputStream* const _out;
-  const size_t        _scale;
-  const int           _flags;
-
- public:
-  VM_PrintMetadata(outputStream* out, size_t scale, int flags)
-    : _out(out), _scale(scale), _flags(flags)
-  {};
-
-  VMOp_Type type() const  { return VMOp_PrintMetadata; }
-  void doit();
-};
-
-class DeadlockCycle;
-class VM_FindDeadlocks: public VM_Operation {
- private:
-  bool              _concurrent_locks;
-  DeadlockCycle*    _deadlocks;
-  outputStream*     _out;
-  ThreadsListSetter _setter;  // Helper to set hazard ptr in the originating thread
-                              // which protects the JavaThreads in _deadlocks.
-
- public:
-  VM_FindDeadlocks(bool concurrent_locks) :  _concurrent_locks(concurrent_locks), _deadlocks(NULL), _out(NULL), _setter() {};
-  VM_FindDeadlocks(outputStream* st) : _concurrent_locks(true), _deadlocks(NULL), _out(st) {};
-  ~VM_FindDeadlocks();
-
-  DeadlockCycle* result()      { return _deadlocks; };
-  VMOp_Type type() const       { return VMOp_FindDeadlocks; }
-  void doit();
-};
-
-class ThreadDumpResult;
-class ThreadSnapshot;
-class ThreadConcurrentLocks;
-
-class VM_ThreadDump : public VM_Operation {
- private:
-  ThreadDumpResult*              _result;
-  int                            _num_threads;
-  GrowableArray<instanceHandle>* _threads;
-  int                            _max_depth;
-  bool                           _with_locked_monitors;
-  bool                           _with_locked_synchronizers;
-
-  ThreadSnapshot* snapshot_thread(JavaThread* java_thread, ThreadConcurrentLocks* tcl);
-
- public:
-  VM_ThreadDump(ThreadDumpResult* result,
-                int max_depth,  // -1 indicates entire stack
-                bool with_locked_monitors,
-                bool with_locked_synchronizers);
-
-  VM_ThreadDump(ThreadDumpResult* result,
-                GrowableArray<instanceHandle>* threads,
-                int num_threads, // -1 indicates entire stack
-                int max_depth,
-                bool with_locked_monitors,
-                bool with_locked_synchronizers);
-
-  VMOp_Type type() const { return VMOp_ThreadDump; }
-  void doit();
-  bool doit_prologue();
-  void doit_epilogue();
-};
-
-
-class VM_Exit: public VM_Operation {
- private:
-  int  _exit_code;
-  static volatile bool _vm_exited;
-  static Thread * volatile _shutdown_thread;
-  static void wait_if_vm_exited();
- public:
-  VM_Exit(int exit_code) {
-    _exit_code = exit_code;
-  }
-  static int wait_for_threads_in_native_to_block();
-  static int set_vm_exited();
-  static bool vm_exited()                      { return _vm_exited; }
-  static Thread * shutdown_thread()            { return _shutdown_thread; }
-  static void block_if_vm_exited() {
-    if (_vm_exited) {
-      wait_if_vm_exited();
-    }
-  }
-  VMOp_Type type() const { return VMOp_Exit; }
-  void doit();
-};
-
-class VM_PrintCompileQueue: public VM_Operation {
- private:
-  outputStream* _out;
-
- public:
-  VM_PrintCompileQueue(outputStream* st) : _out(st) {}
-  VMOp_Type type() const { return VMOp_PrintCompileQueue; }
-  Mode evaluation_mode() const { return _safepoint; }
-  void doit();
-};
-
-#if INCLUDE_SERVICES
-class VM_PrintClassHierarchy: public VM_Operation {
- private:
-  outputStream* _out;
-  bool _print_interfaces;
-  bool _print_subclasses;
-  char* _classname;
-
- public:
-  VM_PrintClassHierarchy(outputStream* st, bool print_interfaces, bool print_subclasses, char* classname) :
-    _out(st), _print_interfaces(print_interfaces), _print_subclasses(print_subclasses),
-    _classname(classname) {}
-  VMOp_Type type() const { return VMOp_PrintClassHierarchy; }
-  void doit();
-};
-#endif // INCLUDE_SERVICES
-
-#endif // SHARE_VM_RUNTIME_VM_OPERATIONS_HPP
--- a/src/hotspot/share/services/attachListener.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/services/attachListener.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -25,7 +25,7 @@
 #include "precompiled.hpp"
 #include "classfile/javaClasses.hpp"
 #include "classfile/systemDictionary.hpp"
-#include "gc/shared/vmGCOperations.hpp"
+#include "gc/shared/gcVMOperations.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/typeArrayOop.inline.hpp"
--- a/src/hotspot/share/services/diagnosticCommand.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/services/diagnosticCommand.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -28,7 +28,7 @@
 #include "classfile/classLoaderStats.hpp"
 #include "compiler/compileBroker.hpp"
 #include "compiler/directivesParser.hpp"
-#include "gc/shared/vmGCOperations.hpp"
+#include "gc/shared/gcVMOperations.hpp"
 #include "memory/metaspace/metaspaceDCmd.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/objArrayOop.inline.hpp"
--- a/src/hotspot/share/services/dtraceAttacher.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/services/dtraceAttacher.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -28,7 +28,7 @@
 #include "runtime/deoptimization.hpp"
 #include "runtime/flags/jvmFlag.hpp"
 #include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "services/dtraceAttacher.hpp"
 
 #ifdef SOLARIS
--- a/src/hotspot/share/services/heapDumper.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/services/heapDumper.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -30,7 +30,7 @@
 #include "classfile/systemDictionary.hpp"
 #include "classfile/vmSymbols.hpp"
 #include "gc/shared/gcLocker.hpp"
-#include "gc/shared/vmGCOperations.hpp"
+#include "gc/shared/gcVMOperations.hpp"
 #include "memory/allocation.inline.hpp"
 #include "memory/resourceArea.hpp"
 #include "memory/universe.hpp"
@@ -48,7 +48,7 @@
 #include "runtime/threadSMR.hpp"
 #include "runtime/vframe.hpp"
 #include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "services/heapDumper.hpp"
 #include "services/threadService.hpp"
 #include "utilities/macros.hpp"
--- a/src/hotspot/share/services/memTracker.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/services/memTracker.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -26,7 +26,7 @@
 
 #include "runtime/orderAccess.hpp"
 #include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "services/memBaseline.hpp"
 #include "services/memReporter.hpp"
 #include "services/mallocTracker.inline.hpp"
--- a/src/hotspot/share/services/nmtDCmd.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/services/nmtDCmd.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -25,7 +25,7 @@
 #include "memory/resourceArea.hpp"
 #include "runtime/mutexLocker.hpp"
 #include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "services/nmtDCmd.hpp"
 #include "services/memReporter.hpp"
 #include "services/memTracker.hpp"
--- a/src/hotspot/share/services/threadService.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/services/threadService.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -39,7 +39,7 @@
 #include "runtime/threadSMR.inline.hpp"
 #include "runtime/vframe.hpp"
 #include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "services/threadService.hpp"
 
 // TODO: we need to define a naming convention for perf counters
--- a/src/hotspot/share/utilities/vmError.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/hotspot/share/utilities/vmError.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -40,7 +40,7 @@
 #include "runtime/thread.inline.hpp"
 #include "runtime/threadSMR.hpp"
 #include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "runtime/vm_version.hpp"
 #include "runtime/flags/jvmFlag.hpp"
 #include "services/memTracker.hpp"
--- a/src/java.base/share/classes/java/io/InputStream.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/java/io/InputStream.java	Fri Dec 07 09:46:53 2018 -0500
@@ -64,8 +64,8 @@
      * <p> While the stream is open, the {@code available()}, {@code read()},
      * {@code read(byte[])}, {@code read(byte[], int, int)},
      * {@code readAllBytes()}, {@code readNBytes(byte[], int, int)},
-     * {@code readNBytes(int)}, {@code skip(long)}, and
-     * {@code transferTo()} methods all behave as if end of stream has been
+     * {@code readNBytes(int)}, {@code skip(long)}, {@code skipNBytes(long)},
+     * and {@code transferTo()} methods all behave as if end of stream has been
      * reached.  After the stream has been closed, these methods all throw
      * {@code IOException}.
      *
@@ -139,6 +139,14 @@
             }
 
             @Override
+            public void skipNBytes(long n) throws IOException {
+                ensureOpen();
+                if (n > 0) {
+                    throw new EOFException();
+                }
+            }
+
+            @Override
             public long transferTo(OutputStream out) throws IOException {
                 Objects.requireNonNull(out);
                 ensureOpen();
@@ -513,11 +521,11 @@
      * For instance, the implementation may depend on the ability to seek.
      *
      * @param      n   the number of bytes to be skipped.
-     * @return     the actual number of bytes skipped.
+     * @return     the actual number of bytes skipped which might be zero.
      * @throws     IOException  if an I/O error occurs.
+     * @see        java.io.InputStream#skipNBytes(long)
      */
     public long skip(long n) throws IOException {
-
         long remaining = n;
         int nr;
 
@@ -539,6 +547,65 @@
     }
 
     /**
+     * Skips over and discards exactly {@code n} bytes of data from this input
+     * stream.  If {@code n} is zero, then no bytes are skipped.
+     * If {@code n} is negative, then no bytes are skipped.
+     * Subclasses may handle the negative value differently.
+     *
+     * <p> This method blocks until the requested number of bytes have been
+     * skipped, end of file is reached, or an exception is thrown.
+     *
+     * <p> If end of stream is reached before the stream is at the desired
+     * position, then an {@code EOFException} is thrown.
+     *
+     * <p> If an I/O error occurs, then the input stream may be
+     * in an inconsistent state. It is strongly recommended that the
+     * stream be promptly closed if an I/O error occurs.
+     *
+     * @implNote
+     * Subclasses are encouraged to provide a more efficient implementation
+     * of this method.
+     *
+     * @implSpec
+     * If {@code n} is zero or negative, then no bytes are skipped.
+     * If {@code n} is positive, the default implementation of this method
+     * invokes {@link #skip(long) skip()} with parameter {@code n}.  If the
+     * return value of {@code skip(n)} is non-negative and less than {@code n},
+     * then {@link #read()} is invoked repeatedly until the stream is {@code n}
+     * bytes beyond its position when this method was invoked or end of stream
+     * is reached.  If the return value of {@code skip(n)} is negative or
+     * greater than {@code n}, then an {@code IOException} is thrown.  Any
+     * exception thrown by {@code skip()} or {@code read()} will be propagated.
+     *
+     * @param      n   the number of bytes to be skipped.
+     * @throws     EOFException if end of stream is encountered before the
+     *             stream can be positioned {@code n} bytes beyond its position
+     *             when this method was invoked.
+     * @throws     IOException  if the stream cannot be positioned properly or
+     *             if an I/O error occurs.
+     * @see        java.io.InputStream#skip(long)
+     */
+    public void skipNBytes(long n) throws IOException {
+        if (n > 0) {
+            long ns = skip(n);
+            if (ns >= 0 && ns < n) { // skipped too few bytes
+                // adjust number to skip
+                n -= ns;
+                // read until requested number skipped or EOS reached
+                while (n > 0 && read() != -1) {
+                    n--;
+                }
+                // if not enough skipped, then EOFE
+                if (n != 0) {
+                    throw new EOFException();
+                }
+            } else if (ns != n) { // skipped negative or too many bytes
+                throw new IOException("Unable to skip exactly");
+            }
+        }
+    }
+
+    /**
      * Returns an estimate of the number of bytes that can be read (or skipped
      * over) from this input stream without blocking, which may be 0, or 0 when
      * end of stream is detected.  The read might be on the same thread or
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.base/share/classes/java/text/CompactNumberFormat.java	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,2130 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package java.text;
+
+import java.io.IOException;
+import java.io.InvalidObjectException;
+import java.io.ObjectInputStream;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+import java.util.Objects;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
+
+
+/**
+ * <p>
+ * {@code CompactNumberFormat} is a concrete subclass of {@code NumberFormat}
+ * that formats a decimal number in its compact form.
+ *
+ * The compact number formatting is designed for the environment where the space
+ * is limited, and the formatted string can be displayed in that limited space.
+ * It is defined by LDML's specification for
+ * <a href = "http://unicode.org/reports/tr35/tr35-numbers.html#Compact_Number_Formats">
+ * Compact Number Formats</a>. A compact number formatting refers
+ * to the representation of a number in a shorter form, based on the patterns
+ * provided for a given locale.
+ *
+ * <p>
+ * For example:
+ * <br>In the {@link java.util.Locale#US US locale}, {@code 1000} can be formatted
+ * as {@code "1K"}, and {@code 1000000} as {@code "1M"}, depending upon the
+ * <a href = "#compact_number_style" >style</a> used.
+ * <br>In the {@code "hi_IN"} locale, {@code 1000} can be formatted as
+ * "1 \u0939\u091C\u093C\u093E\u0930", and {@code 50000000} as "5 \u0915.",
+ * depending upon the <a href = "#compact_number_style" >style</a> used.
+ *
+ * <p>
+ * To obtain a {@code CompactNumberFormat} for a locale, use one
+ * of the factory methods given by {@code NumberFormat} for compact number
+ * formatting. For example,
+ * {@link NumberFormat#getCompactNumberInstance(Locale, Style)}.
+ *
+ * <blockquote><pre>
+ * NumberFormat fmt = NumberFormat.getCompactNumberInstance(
+ *                             new Locale("hi", "IN"), NumberFormat.Style.SHORT);
+ * String result = fmt.format(1000);
+ * </pre></blockquote>
+ *
+ * <h3><a id="compact_number_style">Style</a></h3>
+ * <p>
+ * A number can be formatted in the compact forms with two different
+ * styles, {@link NumberFormat.Style#SHORT SHORT}
+ * and {@link NumberFormat.Style#LONG LONG}. Use
+ * {@link NumberFormat#getCompactNumberInstance(Locale, Style)} for formatting and
+ * parsing a number in {@link NumberFormat.Style#SHORT SHORT} or
+ * {@link NumberFormat.Style#LONG LONG} compact form,
+ * where the given {@code Style} parameter requests the desired
+ * format. A {@link NumberFormat.Style#SHORT SHORT} style
+ * compact number instance in the {@link java.util.Locale#US US locale} formats
+ * {@code 10000} as {@code "10K"}. However, a
+ * {@link NumberFormat.Style#LONG LONG} style instance in same locale
+ * formats {@code 10000} as {@code "10 thousand"}.
+ *
+ * <h3><a id="compact_number_patterns">Compact Number Patterns</a></h3>
+ * <p>
+ * The compact number patterns are represented in a series of patterns where each
+ * pattern is used to format a range of numbers. An example of
+ * {@link NumberFormat.Style#SHORT SHORT} styled compact number patterns
+ * for the {@link java.util.Locale#US US locale} is {@code {"", "", "", "0K",
+ * "00K", "000K", "0M", "00M", "000M", "0B", "00B", "000B", "0T", "00T", "000T"}},
+ * ranging from {@code 10}<sup>{@code 0}</sup> to {@code 10}<sup>{@code 14}</sup>.
+ * There can be any number of patterns and they are
+ * strictly index based starting from the range {@code 10}<sup>{@code 0}</sup>.
+ * For example, in the above patterns, pattern at index 3
+ * ({@code "0K"}) is used for formatting {@code number >= 1000 and number < 10000},
+ * pattern at index 4 ({@code "00K"}) is used for formatting
+ * {@code number >= 10000 and number < 100000} and so on. In most of the locales,
+ * patterns with the range
+ * {@code 10}<sup>{@code 0}</sup>-{@code 10}<sup>{@code 2}</sup> are empty
+ * strings, which implicitly means a special pattern {@code "0"}.
+ * A special pattern {@code "0"} is used for any range which does not contain
+ * a compact pattern. This special pattern can appear explicitly for any specific
+ * range, or considered as a default pattern for an empty string.
+ * <p>
+ * A compact pattern has the following syntax:
+ * <blockquote><pre>
+ * <i>Pattern:</i>
+ *         <i>PositivePattern</i>
+ *         <i>PositivePattern</i> <i>[; NegativePattern]<sub>optional</sub></i>
+ * <i>PositivePattern:</i>
+ *         <i>Prefix<sub>optional</sub></i> <i>MinimumInteger</i> <i>Suffix<sub>optional</sub></i>
+ * <i>NegativePattern:</i>
+ *        <i>Prefix<sub>optional</sub></i> <i>MinimumInteger</i> <i>Suffix<sub>optional</sub></i>
+ * <i>Prefix:</i>
+ *      Any Unicode characters except &#92;uFFFE, &#92;uFFFF, and
+ *      <a href = "DecimalFormat.html#special_pattern_character">special characters</a>
+ * <i>Suffix:</i>
+ *      Any Unicode characters except &#92;uFFFE, &#92;uFFFF, and
+ *      <a href = "DecimalFormat.html#special_pattern_character">special characters</a>
+ * <i>MinimumInteger:</i>
+ *      0
+ *      0 <i>MinimumInteger</i>
+ * </pre></blockquote>
+ *
+ * A compact pattern contains a positive and negative subpattern
+ * separated by a subpattern boundary character {@code ';' (U+003B)},
+ * for example, {@code "0K;-0K"}. Each subpattern has a prefix,
+ * minimum integer digits, and suffix. The negative subpattern
+ * is optional, if absent, then the positive subpattern prefixed with the
+ * minus sign ({@code '-' U+002D HYPHEN-MINUS}) is used as the negative
+ * subpattern. That is, {@code "0K"} alone is equivalent to {@code "0K;-0K"}.
+ * If there is an explicit negative subpattern, it serves only to specify
+ * the negative prefix and suffix. The number of minimum integer digits,
+ * and other characteristics are all the same as the positive pattern.
+ * That means that {@code "0K;-00K"} produces precisely the same behavior
+ * as {@code "0K;-0K"}.
+ *
+ * <p>
+ * Many characters in a compact pattern are taken literally, they are matched
+ * during parsing and output unchanged during formatting.
+ * <a href = "DecimalFormat.html#special_pattern_character">Special characters</a>,
+ * on the other hand, stand for other characters, strings, or classes of
+ * characters. They must be quoted, using single quote {@code ' (U+0027)}
+ * unless noted otherwise, if they are to appear in the prefix or suffix
+ * as literals. For example, 0\u0915'.'.
+ *
+ * <h3>Formatting</h3>
+ * The default formatting behavior returns a formatted string with no fractional
+ * digits, however users can use the {@link #setMinimumFractionDigits(int)}
+ * method to include the fractional part.
+ * The number {@code 1000.0} or {@code 1000} is formatted as {@code "1K"}
+ * not {@code "1.00K"} (in the {@link java.util.Locale#US US locale}). For this
+ * reason, the patterns provided for formatting contain only the minimum
+ * integer digits, prefix and/or suffix, but no fractional part.
+ * For example, patterns used are {@code {"", "", "", 0K, 00K, ...}}. If the pattern
+ * selected for formatting a number is {@code "0"} (special pattern),
+ * either explicit or defaulted, then the general number formatting provided by
+ * {@link java.text.DecimalFormat DecimalFormat}
+ * for the specified locale is used.
+ *
+ * <h3>Parsing</h3>
+ * The default parsing behavior does not allow a grouping separator until
+ * grouping used is set to {@code true} by using
+ * {@link #setGroupingUsed(boolean)}. The parsing of the fractional part
+ * depends on the {@link #isParseIntegerOnly()}. For example, if the
+ * parse integer only is set to true, then the fractional part is skipped.
+ *
+ * <h3>Rounding</h3>
+ * {@code CompactNumberFormat} provides rounding modes defined in
+ * {@link java.math.RoundingMode} for formatting.  By default, it uses
+ * {@link java.math.RoundingMode#HALF_EVEN RoundingMode.HALF_EVEN}.
+ *
+ * @see CompactNumberFormat.Style
+ * @see NumberFormat
+ * @see DecimalFormat
+ * @since 12
+ */
+public final class CompactNumberFormat extends NumberFormat {
+
+    private static final long serialVersionUID = 7128367218649234678L;
+
+    /**
+     * The patterns for compact form of numbers for this
+     * {@code CompactNumberFormat}. A possible example is
+     * {@code {"", "", "", "0K", "00K", "000K", "0M", "00M", "000M", "0B",
+     * "00B", "000B", "0T", "00T", "000T"}} ranging from
+     * {@code 10}<sup>{@code 0}</sup>-{@code 10}<sup>{@code 14}</sup>,
+     * where each pattern is used to format a range of numbers.
+     * For example, {@code "0K"} is used for formatting
+     * {@code number >= 1000 and number < 10000}, {@code "00K"} is used for
+     * formatting {@code number >= 10000 and number < 100000} and so on.
+     * This field must not be {@code null}.
+     *
+     * @serial
+     */
+    private String[] compactPatterns;
+
+    /**
+     * List of positive prefix patterns of this formatter's
+     * compact number patterns.
+     */
+    private transient List<String> positivePrefixPatterns;
+
+    /**
+     * List of negative prefix patterns of this formatter's
+     * compact number patterns.
+     */
+    private transient List<String> negativePrefixPatterns;
+
+    /**
+     * List of positive suffix patterns of this formatter's
+     * compact number patterns.
+     */
+    private transient List<String> positiveSuffixPatterns;
+
+    /**
+     * List of negative suffix patterns of this formatter's
+     * compact number patterns.
+     */
+    private transient List<String> negativeSuffixPatterns;
+
+    /**
+     * List of divisors of this formatter's compact number patterns.
+     * Divisor can be either Long or BigInteger (if the divisor value goes
+     * beyond long boundary)
+     */
+    private transient List<Number> divisors;
+
+    /**
+     * The {@code DecimalFormatSymbols} object used by this format.
+     * It contains the symbols used to format numbers. For example,
+     * the grouping separator, decimal separator, and so on.
+     * This field must not be {@code null}.
+     *
+     * @serial
+     * @see DecimalFormatSymbols
+     */
+    private DecimalFormatSymbols symbols;
+
+    /**
+     * The decimal pattern which is used for formatting the numbers
+     * matching special pattern "0". This field must not be {@code null}.
+     *
+     * @serial
+     * @see DecimalFormat
+     */
+    private final String decimalPattern;
+
+    /**
+     * A {@code DecimalFormat} used by this format for getting corresponding
+     * general number formatting behavior for compact numbers.
+     *
+     */
+    private transient DecimalFormat decimalFormat;
+
+    /**
+     * A {@code DecimalFormat} used by this format for getting general number
+     * formatting behavior for the numbers which can't be represented as compact
+     * numbers. For example, number matching the special pattern "0" are
+     * formatted through general number format pattern provided by
+     * {@link java.text.DecimalFormat DecimalFormat}
+     * for the specified locale.
+     *
+     */
+    private transient DecimalFormat defaultDecimalFormat;
+
+    /**
+     * The number of digits between grouping separators in the integer portion
+     * of a compact number. For the grouping to work while formatting, this
+     * field needs to be greater than 0 with grouping used set as true.
+     * This field must not be negative.
+     *
+     * @serial
+     */
+    private byte groupingSize = 0;
+
+    /**
+     * Returns whether the {@link #parse(String, ParsePosition)}
+     * method returns {@code BigDecimal}.
+     *
+     * @serial
+     */
+    private boolean parseBigDecimal = false;
+
+    /**
+     * The {@code RoundingMode} used in this compact number format.
+     * This field must not be {@code null}.
+     *
+     * @serial
+     */
+    private RoundingMode roundingMode = RoundingMode.HALF_EVEN;
+
+    /**
+     * Special pattern used for compact numbers
+     */
+    private static final String SPECIAL_PATTERN = "0";
+
+    /**
+     * Multiplier for compact pattern range. In
+     * the list compact patterns each compact pattern
+     * specify the range with the multiplication factor of 10
+     * of its previous compact pattern range.
+     * For example, 10^0, 10^1, 10^2, 10^3, 10^4...
+     *
+     */
+    private static final int RANGE_MULTIPLIER = 10;
+
+    /**
+     * Creates a {@code CompactNumberFormat} using the given decimal pattern,
+     * decimal format symbols and compact patterns.
+     * To obtain the instance of {@code CompactNumberFormat} with the standard
+     * compact patterns for a {@code Locale} and {@code Style},
+     * it is recommended to use the factory methods given by
+     * {@code NumberFormat} for compact number formatting. For example,
+     * {@link NumberFormat#getCompactNumberInstance(Locale, Style)}.
+     *
+     * @param decimalPattern a decimal pattern for general number formatting
+     * @param symbols the set of symbols to be used
+     * @param compactPatterns an array of
+     *        <a href = "CompactNumberFormat.html#compact_number_patterns">
+     *        compact number patterns</a>
+     * @throws NullPointerException if any of the given arguments is
+     *                                 {@code null}
+     * @throws IllegalArgumentException if the given {@code decimalPattern} or the
+     *                     {@code compactPatterns} array contains an invalid pattern
+     *                     or if a {@code null} appears in the array of compact
+     *                     patterns
+     * @see DecimalFormat#DecimalFormat(java.lang.String, DecimalFormatSymbols)
+     * @see DecimalFormatSymbols
+     */
+    public CompactNumberFormat(String decimalPattern,
+            DecimalFormatSymbols symbols, String[] compactPatterns) {
+
+        Objects.requireNonNull(decimalPattern, "decimalPattern");
+        Objects.requireNonNull(symbols, "symbols");
+        Objects.requireNonNull(compactPatterns, "compactPatterns");
+
+        this.symbols = symbols;
+        // Instantiating the DecimalFormat with "0" pattern; this acts just as a
+        // basic pattern; the properties (For example, prefix/suffix)
+        // are later computed based on the compact number formatting process.
+        decimalFormat = new DecimalFormat(SPECIAL_PATTERN, this.symbols);
+
+        // Initializing the super class state with the decimalFormat values
+        // to represent this CompactNumberFormat.
+        // For setting the digits counts, use overridden setXXX methods of this
+        // CompactNumberFormat, as it performs check with the max range allowed
+        // for compact number formatting
+        setMaximumIntegerDigits(decimalFormat.getMaximumIntegerDigits());
+        setMinimumIntegerDigits(decimalFormat.getMinimumIntegerDigits());
+        setMaximumFractionDigits(decimalFormat.getMaximumFractionDigits());
+        setMinimumFractionDigits(decimalFormat.getMinimumFractionDigits());
+
+        super.setGroupingUsed(decimalFormat.isGroupingUsed());
+        super.setParseIntegerOnly(decimalFormat.isParseIntegerOnly());
+
+        this.compactPatterns = compactPatterns;
+
+        // DecimalFormat used for formatting numbers with special pattern "0".
+        // Formatting is delegated to the DecimalFormat's number formatting
+        // with no fraction digits
+        this.decimalPattern = decimalPattern;
+        defaultDecimalFormat = new DecimalFormat(this.decimalPattern,
+                this.symbols);
+        defaultDecimalFormat.setMaximumFractionDigits(0);
+        // Process compact patterns to extract the prefixes, suffixes and
+        // divisors
+        processCompactPatterns();
+    }
+
+    /**
+     * Formats a number to produce a string representing its compact form.
+     * The number can be of any subclass of {@link java.lang.Number}.
+     * @param number     the number to format
+     * @param toAppendTo the {@code StringBuffer} to which the formatted
+     *                   text is to be appended
+     * @param fieldPosition    keeps track on the position of the field within
+     *                         the returned string. For example, for formatting
+     *                         a number {@code 123456789} in the
+     *                         {@link java.util.Locale#US US locale},
+     *                         if the given {@code fieldPosition} is
+     *                         {@link NumberFormat#INTEGER_FIELD}, the begin
+     *                         index and end index of {@code fieldPosition}
+     *                         will be set to 0 and 3, respectively for the
+     *                         output string {@code 123M}. Similarly, positions
+     *                         of the prefix and the suffix fields can be
+     *                         obtained using {@link NumberFormat.Field#PREFIX}
+     *                         and {@link NumberFormat.Field#SUFFIX} respectively.
+     * @return           the {@code StringBuffer} passed in as {@code toAppendTo}
+     * @throws           IllegalArgumentException if {@code number} is
+     *                   {@code null} or not an instance of {@code Number}
+     * @throws           NullPointerException if {@code toAppendTo} or
+     *                   {@code fieldPosition} is {@code null}
+     * @throws           ArithmeticException if rounding is needed with rounding
+     *                   mode being set to {@code RoundingMode.UNNECESSARY}
+     * @see              FieldPosition
+     */
+    @Override
+    public final StringBuffer format(Object number,
+            StringBuffer toAppendTo,
+            FieldPosition fieldPosition) {
+        if (number instanceof Long || number instanceof Integer
+                || number instanceof Short || number instanceof Byte
+                || number instanceof AtomicInteger
+                || number instanceof AtomicLong
+                || (number instanceof BigInteger
+                && ((BigInteger) number).bitLength() < 64)) {
+            return format(((Number) number).longValue(), toAppendTo,
+                    fieldPosition);
+        } else if (number instanceof BigDecimal) {
+            return format((BigDecimal) number, toAppendTo, fieldPosition);
+        } else if (number instanceof BigInteger) {
+            return format((BigInteger) number, toAppendTo, fieldPosition);
+        } else if (number instanceof Number) {
+            return format(((Number) number).doubleValue(), toAppendTo, fieldPosition);
+        } else {
+            throw new IllegalArgumentException("Cannot format "
+                    + number.getClass().getName() + " as a number");
+        }
+    }
+
+    /**
+     * Formats a double to produce a string representing its compact form.
+     * @param number    the double number to format
+     * @param result    where the text is to be appended
+     * @param fieldPosition    keeps track on the position of the field within
+     *                         the returned string. For example, to format
+     *                         a number {@code 1234567.89} in the
+     *                         {@link java.util.Locale#US US locale}
+     *                         if the given {@code fieldPosition} is
+     *                         {@link NumberFormat#INTEGER_FIELD}, the begin
+     *                         index and end index of {@code fieldPosition}
+     *                         will be set to 0 and 1, respectively for the
+     *                         output string {@code 1M}. Similarly, positions
+     *                         of the prefix and the suffix fields can be
+     *                         obtained using {@link NumberFormat.Field#PREFIX}
+     *                         and {@link NumberFormat.Field#SUFFIX} respectively.
+     * @return    the {@code StringBuffer} passed in as {@code result}
+     * @throws NullPointerException if {@code result} or
+     *            {@code fieldPosition} is {@code null}
+     * @throws ArithmeticException if rounding is needed with rounding
+     *            mode being set to {@code RoundingMode.UNNECESSARY}
+     * @see FieldPosition
+     */
+    @Override
+    public StringBuffer format(double number, StringBuffer result,
+            FieldPosition fieldPosition) {
+
+        fieldPosition.setBeginIndex(0);
+        fieldPosition.setEndIndex(0);
+        return format(number, result, fieldPosition.getFieldDelegate());
+    }
+
+    private StringBuffer format(double number, StringBuffer result,
+            FieldDelegate delegate) {
+
+        boolean nanOrInfinity = decimalFormat.handleNaN(number, result, delegate);
+        if (nanOrInfinity) {
+            return result;
+        }
+
+        boolean isNegative = ((number < 0.0)
+                || (number == 0.0 && 1 / number < 0.0));
+
+        nanOrInfinity = decimalFormat.handleInfinity(number, result, delegate, isNegative);
+        if (nanOrInfinity) {
+            return result;
+        }
+
+        // Round the double value with min fraction digits, the integer
+        // part of the rounded value is used for matching the compact
+        // number pattern
+        // For example, if roundingMode is HALF_UP with min fraction
+        // digits = 0, the number 999.6 should round up
+        // to 1000 and outputs 1K/thousand in "en_US" locale
+        DigitList dList = new DigitList();
+        dList.setRoundingMode(getRoundingMode());
+        number = isNegative ? -number : number;
+        dList.set(isNegative, number, getMinimumFractionDigits());
+
+        double roundedNumber = dList.getDouble();
+        int compactDataIndex = selectCompactPattern((long) roundedNumber);
+        if (compactDataIndex != -1) {
+            String prefix = isNegative ? negativePrefixPatterns.get(compactDataIndex)
+                    : positivePrefixPatterns.get(compactDataIndex);
+            String suffix = isNegative ? negativeSuffixPatterns.get(compactDataIndex)
+                    : positiveSuffixPatterns.get(compactDataIndex);
+
+            if (!prefix.isEmpty() || !suffix.isEmpty()) {
+                appendPrefix(result, prefix, delegate);
+                long divisor = (Long) divisors.get(compactDataIndex);
+                roundedNumber = roundedNumber / divisor;
+                decimalFormat.setDigitList(roundedNumber, isNegative, getMaximumFractionDigits());
+                decimalFormat.subformatNumber(result, delegate, isNegative,
+                        false, getMaximumIntegerDigits(), getMinimumIntegerDigits(),
+                        getMaximumFractionDigits(), getMinimumFractionDigits());
+                appendSuffix(result, suffix, delegate);
+            } else {
+                defaultDecimalFormat.doubleSubformat(number, result, delegate, isNegative);
+            }
+        } else {
+            defaultDecimalFormat.doubleSubformat(number, result, delegate, isNegative);
+        }
+        return result;
+    }
+
+    /**
+     * Formats a long to produce a string representing its compact form.
+     * @param number    the long number to format
+     * @param result    where the text is to be appended
+     * @param fieldPosition    keeps track on the position of the field within
+     *                         the returned string. For example, to format
+     *                         a number {@code 123456789} in the
+     *                         {@link java.util.Locale#US US locale},
+     *                         if the given {@code fieldPosition} is
+     *                         {@link NumberFormat#INTEGER_FIELD}, the begin
+     *                         index and end index of {@code fieldPosition}
+     *                         will be set to 0 and 3, respectively for the
+     *                         output string {@code 123M}. Similarly, positions
+     *                         of the prefix and the suffix fields can be
+     *                         obtained using {@link NumberFormat.Field#PREFIX}
+     *                         and {@link NumberFormat.Field#SUFFIX} respectively.
+     * @return       the {@code StringBuffer} passed in as {@code result}
+     * @throws       NullPointerException if {@code result} or
+     *               {@code fieldPosition} is {@code null}
+     * @throws       ArithmeticException if rounding is needed with rounding
+     *               mode being set to {@code RoundingMode.UNNECESSARY}
+     * @see FieldPosition
+     */
+    @Override
+    public StringBuffer format(long number, StringBuffer result,
+            FieldPosition fieldPosition) {
+
+        fieldPosition.setBeginIndex(0);
+        fieldPosition.setEndIndex(0);
+        return format(number, result, fieldPosition.getFieldDelegate());
+    }
+
+    private StringBuffer format(long number, StringBuffer result, FieldDelegate delegate) {
+        boolean isNegative = (number < 0);
+        if (isNegative) {
+            number = -number;
+        }
+
+        if (number < 0) { // LONG_MIN
+            BigInteger bigIntegerValue = BigInteger.valueOf(number);
+            return format(bigIntegerValue, result, delegate, true);
+        }
+
+        int compactDataIndex = selectCompactPattern(number);
+        if (compactDataIndex != -1) {
+            String prefix = isNegative ? negativePrefixPatterns.get(compactDataIndex)
+                    : positivePrefixPatterns.get(compactDataIndex);
+            String suffix = isNegative ? negativeSuffixPatterns.get(compactDataIndex)
+                    : positiveSuffixPatterns.get(compactDataIndex);
+            if (!prefix.isEmpty() || !suffix.isEmpty()) {
+                appendPrefix(result, prefix, delegate);
+                long divisor = (Long) divisors.get(compactDataIndex);
+                if ((number % divisor == 0)) {
+                    number = number / divisor;
+                    decimalFormat.setDigitList(number, isNegative, 0);
+                    decimalFormat.subformatNumber(result, delegate,
+                            isNegative, true, getMaximumIntegerDigits(),
+                            getMinimumIntegerDigits(), getMaximumFractionDigits(),
+                            getMinimumFractionDigits());
+                } else {
+                    // To avoid truncation of fractional part store
+                    // the value in double and follow double path instead of
+                    // long path
+                    double dNumber = (double) number / divisor;
+                    decimalFormat.setDigitList(dNumber, isNegative, getMaximumFractionDigits());
+                    decimalFormat.subformatNumber(result, delegate,
+                            isNegative, false, getMaximumIntegerDigits(),
+                            getMinimumIntegerDigits(), getMaximumFractionDigits(),
+                            getMinimumFractionDigits());
+                }
+                appendSuffix(result, suffix, delegate);
+            } else {
+                number = isNegative ? -number : number;
+                defaultDecimalFormat.format(number, result, delegate);
+            }
+        } else {
+            number = isNegative ? -number : number;
+            defaultDecimalFormat.format(number, result, delegate);
+        }
+        return result;
+    }
+
+    /**
+     * Formats a BigDecimal to produce a string representing its compact form.
+     * @param number    the BigDecimal number to format
+     * @param result    where the text is to be appended
+     * @param fieldPosition    keeps track on the position of the field within
+     *                         the returned string. For example, to format
+     *                         a number {@code 1234567.89} in the
+     *                         {@link java.util.Locale#US US locale},
+     *                         if the given {@code fieldPosition} is
+     *                         {@link NumberFormat#INTEGER_FIELD}, the begin
+     *                         index and end index of {@code fieldPosition}
+     *                         will be set to 0 and 1, respectively for the
+     *                         output string {@code 1M}. Similarly, positions
+     *                         of the prefix and the suffix fields can be
+     *                         obtained using {@link NumberFormat.Field#PREFIX}
+     *                         and {@link NumberFormat.Field#SUFFIX} respectively.
+     * @return        the {@code StringBuffer} passed in as {@code result}
+     * @throws        ArithmeticException if rounding is needed with rounding
+     *                mode being set to {@code RoundingMode.UNNECESSARY}
+     * @throws        NullPointerException if any of the given parameter
+     *                is {@code null}
+     * @see FieldPosition
+     */
+    private StringBuffer format(BigDecimal number, StringBuffer result,
+            FieldPosition fieldPosition) {
+
+        Objects.requireNonNull(number);
+        fieldPosition.setBeginIndex(0);
+        fieldPosition.setEndIndex(0);
+        return format(number, result, fieldPosition.getFieldDelegate());
+    }
+
+    private StringBuffer format(BigDecimal number, StringBuffer result,
+            FieldDelegate delegate) {
+
+        boolean isNegative = number.signum() == -1;
+        if (isNegative) {
+            number = number.negate();
+        }
+
+        // Round the value with min fraction digits, the integer
+        // part of the rounded value is used for matching the compact
+        // number pattern
+        // For example, If roundingMode is HALF_UP with min fraction digits = 0,
+        // the number 999.6 should round up
+        // to 1000 and outputs 1K/thousand in "en_US" locale
+        number = number.setScale(getMinimumFractionDigits(), getRoundingMode());
+
+        int compactDataIndex;
+        if (number.toBigInteger().bitLength() < 64) {
+            compactDataIndex = selectCompactPattern(number.toBigInteger().longValue());
+        } else {
+            compactDataIndex = selectCompactPattern(number.toBigInteger());
+        }
+
+        if (compactDataIndex != -1) {
+            String prefix = isNegative ? negativePrefixPatterns.get(compactDataIndex)
+                    : positivePrefixPatterns.get(compactDataIndex);
+            String suffix = isNegative ? negativeSuffixPatterns.get(compactDataIndex)
+                    : positiveSuffixPatterns.get(compactDataIndex);
+            if (!prefix.isEmpty() || !suffix.isEmpty()) {
+                appendPrefix(result, prefix, delegate);
+                Number divisor = divisors.get(compactDataIndex);
+                number = number.divide(new BigDecimal(divisor.toString()), getRoundingMode());
+                decimalFormat.setDigitList(number, isNegative, getMaximumFractionDigits());
+                decimalFormat.subformatNumber(result, delegate, isNegative,
+                        false, getMaximumIntegerDigits(), getMinimumIntegerDigits(),
+                        getMaximumFractionDigits(), getMinimumFractionDigits());
+                appendSuffix(result, suffix, delegate);
+            } else {
+                number = isNegative ? number.negate() : number;
+                defaultDecimalFormat.format(number, result, delegate);
+            }
+        } else {
+            number = isNegative ? number.negate() : number;
+            defaultDecimalFormat.format(number, result, delegate);
+        }
+        return result;
+    }
+
+    /**
+     * Formats a BigInteger to produce a string representing its compact form.
+     * @param number    the BigInteger number to format
+     * @param result    where the text is to be appended
+     * @param fieldPosition    keeps track on the position of the field within
+     *                         the returned string. For example, to format
+     *                         a number {@code 123456789} in the
+     *                         {@link java.util.Locale#US US locale},
+     *                         if the given {@code fieldPosition} is
+     *                         {@link NumberFormat#INTEGER_FIELD}, the begin index
+     *                         and end index of {@code fieldPosition} will be set
+     *                         to 0 and 3, respectively for the output string
+     *                         {@code 123M}. Similarly, positions of the
+     *                         prefix and the suffix fields can be obtained
+     *                         using {@link NumberFormat.Field#PREFIX} and
+     *                         {@link NumberFormat.Field#SUFFIX} respectively.
+     * @return        the {@code StringBuffer} passed in as {@code result}
+     * @throws        ArithmeticException if rounding is needed with rounding
+     *                mode being set to {@code RoundingMode.UNNECESSARY}
+     * @throws        NullPointerException if any of the given parameter
+     *                is {@code null}
+     * @see FieldPosition
+     */
+    private StringBuffer format(BigInteger number, StringBuffer result,
+            FieldPosition fieldPosition) {
+
+        Objects.requireNonNull(number);
+        fieldPosition.setBeginIndex(0);
+        fieldPosition.setEndIndex(0);
+        return format(number, result, fieldPosition.getFieldDelegate(), false);
+    }
+
+    private StringBuffer format(BigInteger number, StringBuffer result,
+            FieldDelegate delegate, boolean formatLong) {
+
+        boolean isNegative = number.signum() == -1;
+        if (isNegative) {
+            number = number.negate();
+        }
+
+        int compactDataIndex = selectCompactPattern(number);
+        if (compactDataIndex != -1) {
+            String prefix = isNegative ? negativePrefixPatterns.get(compactDataIndex)
+                    : positivePrefixPatterns.get(compactDataIndex);
+            String suffix = isNegative ? negativeSuffixPatterns.get(compactDataIndex)
+                    : positiveSuffixPatterns.get(compactDataIndex);
+            if (!prefix.isEmpty() || !suffix.isEmpty()) {
+                appendPrefix(result, prefix, delegate);
+                Number divisor = divisors.get(compactDataIndex);
+                if (number.mod(new BigInteger(divisor.toString()))
+                        .compareTo(BigInteger.ZERO) == 0) {
+                    number = number.divide(new BigInteger(divisor.toString()));
+
+                    decimalFormat.setDigitList(number, isNegative, 0);
+                    decimalFormat.subformatNumber(result, delegate,
+                            isNegative, true, getMaximumIntegerDigits(),
+                            getMinimumIntegerDigits(), getMaximumFractionDigits(),
+                            getMinimumFractionDigits());
+                } else {
+                    // To avoid truncation of fractional part store the value in
+                    // BigDecimal and follow BigDecimal path instead of
+                    // BigInteger path
+                    BigDecimal nDecimal = new BigDecimal(number)
+                            .divide(new BigDecimal(divisor.toString()), getRoundingMode());
+                    decimalFormat.setDigitList(nDecimal, isNegative, getMaximumFractionDigits());
+                    decimalFormat.subformatNumber(result, delegate,
+                            isNegative, false, getMaximumIntegerDigits(),
+                            getMinimumIntegerDigits(), getMaximumFractionDigits(),
+                            getMinimumFractionDigits());
+                }
+                appendSuffix(result, suffix, delegate);
+            } else {
+                number = isNegative ? number.negate() : number;
+                defaultDecimalFormat.format(number, result, delegate, formatLong);
+            }
+        } else {
+            number = isNegative ? number.negate() : number;
+            defaultDecimalFormat.format(number, result, delegate, formatLong);
+        }
+        return result;
+    }
+
+    /**
+     * Appends the {@code prefix} to the {@code result} and also set the
+     * {@code NumberFormat.Field.SIGN} and {@code NumberFormat.Field.PREFIX}
+     * field positions.
+     * @param result the resulting string, where the pefix is to be appended
+     * @param prefix prefix to append
+     * @param delegate notified of the locations of
+     *                 {@code NumberFormat.Field.SIGN} and
+     *                 {@code NumberFormat.Field.PREFIX} fields
+     */
+    private void appendPrefix(StringBuffer result, String prefix,
+            FieldDelegate delegate) {
+        append(result, expandAffix(prefix), delegate,
+                getFieldPositions(prefix, NumberFormat.Field.PREFIX));
+    }
+
+    /**
+     * Appends {@code suffix} to the {@code result} and also set the
+     * {@code NumberFormat.Field.SIGN} and {@code NumberFormat.Field.SUFFIX}
+     * field positions.
+     * @param result the resulting string, where the suffix is to be appended
+     * @param suffix suffix to append
+     * @param delegate notified of the locations of
+     *                 {@code NumberFormat.Field.SIGN} and
+     *                 {@code NumberFormat.Field.SUFFIX} fields
+     */
+    private void appendSuffix(StringBuffer result, String suffix,
+            FieldDelegate delegate) {
+        append(result, expandAffix(suffix), delegate,
+                getFieldPositions(suffix, NumberFormat.Field.SUFFIX));
+    }
+
+    /**
+     * Appends the {@code string} to the {@code result}.
+     * {@code delegate} is notified of SIGN, PREFIX and/or SUFFIX
+     * field positions.
+     * @param result the resulting string, where the text is to be appended
+     * @param string the text to append
+     * @param delegate notified of the locations of sub fields
+     * @param positions a list of {@code FieldPostion} in the given
+     *                  string
+     */
+    private void append(StringBuffer result, String string,
+            FieldDelegate delegate, List<FieldPosition> positions) {
+        if (string.length() > 0) {
+            int start = result.length();
+            result.append(string);
+            for (int counter = 0; counter < positions.size(); counter++) {
+                FieldPosition fp = positions.get(counter);
+                Format.Field attribute = fp.getFieldAttribute();
+                delegate.formatted(attribute, attribute,
+                        start + fp.getBeginIndex(),
+                        start + fp.getEndIndex(), result);
+            }
+        }
+    }
+
+    /**
+     * Expands an affix {@code pattern} into a string of literals.
+     * All characters in the pattern are literals unless prefixed by QUOTE.
+     * The character prefixed by QUOTE is replaced with its respective
+     * localized literal.
+     * @param pattern a compact number pattern affix
+     * @return an expanded affix
+     */
+    private String expandAffix(String pattern) {
+        // Return if no quoted character exists
+        if (pattern.indexOf(QUOTE) < 0) {
+            return pattern;
+        }
+        StringBuilder sb = new StringBuilder();
+        for (int index = 0; index < pattern.length();) {
+            char ch = pattern.charAt(index++);
+            if (ch == QUOTE) {
+                ch = pattern.charAt(index++);
+                if (ch == MINUS_SIGN) {
+                    ch = symbols.getMinusSign();
+                }
+            }
+            sb.append(ch);
+        }
+        return sb.toString();
+    }
+
+    /**
+     * Returns a list of {@code FieldPostion} in the given {@code pattern}.
+     * @param pattern the pattern to be parsed for {@code FieldPosition}
+     * @param field whether a PREFIX or SUFFIX field
+     * @return a list of {@code FieldPostion}
+     */
+    private List<FieldPosition> getFieldPositions(String pattern, Field field) {
+        List<FieldPosition> positions = new ArrayList<>();
+        StringBuilder affix = new StringBuilder();
+        int stringIndex = 0;
+        for (int index = 0; index < pattern.length();) {
+            char ch = pattern.charAt(index++);
+            if (ch == QUOTE) {
+                ch = pattern.charAt(index++);
+                if (ch == MINUS_SIGN) {
+                    ch = symbols.getMinusSign();
+                    FieldPosition fp = new FieldPosition(NumberFormat.Field.SIGN);
+                    fp.setBeginIndex(stringIndex);
+                    fp.setEndIndex(stringIndex + 1);
+                    positions.add(fp);
+                }
+            }
+            stringIndex++;
+            affix.append(ch);
+        }
+        if (affix.length() != 0) {
+            FieldPosition fp = new FieldPosition(field);
+            fp.setBeginIndex(0);
+            fp.setEndIndex(affix.length());
+            positions.add(fp);
+        }
+        return positions;
+    }
+
+    /**
+     * Select the index of the matched compact number pattern for
+     * the given {@code long} {@code number}.
+     *
+     * @param number number to be formatted
+     * @return index of matched compact pattern;
+     *         -1 if no compact patterns specified
+     */
+    private int selectCompactPattern(long number) {
+
+        if (compactPatterns.length == 0) {
+            return -1;
+        }
+
+        // Minimum index can be "0", max index can be "size - 1"
+        int dataIndex = number <= 1 ? 0 : (int) Math.log10(number);
+        dataIndex = Math.min(dataIndex, compactPatterns.length - 1);
+        return dataIndex;
+    }
+
+    /**
+     * Select the index of the matched compact number
+     * pattern for the given {@code BigInteger} {@code number}.
+     *
+     * @param number number to be formatted
+     * @return index of matched compact pattern;
+     *         -1 if no compact patterns specified
+     */
+    private int selectCompactPattern(BigInteger number) {
+
+        int matchedIndex = -1;
+        if (compactPatterns.length == 0) {
+            return matchedIndex;
+        }
+
+        BigInteger currentValue = BigInteger.ONE;
+
+        // For formatting a number, the greatest type less than
+        // or equal to number is used
+        for (int index = 0; index < compactPatterns.length; index++) {
+            if (number.compareTo(currentValue) > 0) {
+                // Input number is greater than current type; try matching with
+                // the next
+                matchedIndex = index;
+                currentValue = currentValue.multiply(BigInteger.valueOf(RANGE_MULTIPLIER));
+                continue;
+            }
+            if (number.compareTo(currentValue) < 0) {
+                // Current type is greater than the input number;
+                // take the previous pattern
+                break;
+            } else {
+                // Equal
+                matchedIndex = index;
+                break;
+            }
+        }
+        return matchedIndex;
+    }
+
+    /**
+     * Formats an Object producing an {@code AttributedCharacterIterator}.
+     * The returned {@code AttributedCharacterIterator} can be used
+     * to build the resulting string, as well as to determine information
+     * about the resulting string.
+     * <p>
+     * Each attribute key of the {@code AttributedCharacterIterator} will
+     * be of type {@code NumberFormat.Field}, with the attribute value
+     * being the same as the attribute key. The prefix and the suffix
+     * parts of the returned iterator (if present) are represented by
+     * the attributes {@link NumberFormat.Field#PREFIX} and
+     * {@link NumberFormat.Field#SUFFIX} respectively.
+     *
+     *
+     * @throws NullPointerException if obj is null
+     * @throws IllegalArgumentException when the Format cannot format the
+     *         given object
+     * @throws ArithmeticException if rounding is needed with rounding
+     *         mode being set to {@code RoundingMode.UNNECESSARY}
+     * @param obj The object to format
+     * @return an {@code AttributedCharacterIterator} describing the
+     *         formatted value
+     */
+    @Override
+    public AttributedCharacterIterator formatToCharacterIterator(Object obj) {
+        CharacterIteratorFieldDelegate delegate
+                = new CharacterIteratorFieldDelegate();
+        StringBuffer sb = new StringBuffer();
+
+        if (obj instanceof Double || obj instanceof Float) {
+            format(((Number) obj).doubleValue(), sb, delegate);
+        } else if (obj instanceof Long || obj instanceof Integer
+                || obj instanceof Short || obj instanceof Byte
+                || obj instanceof AtomicInteger || obj instanceof AtomicLong) {
+            format(((Number) obj).longValue(), sb, delegate);
+        } else if (obj instanceof BigDecimal) {
+            format((BigDecimal) obj, sb, delegate);
+        } else if (obj instanceof BigInteger) {
+            format((BigInteger) obj, sb, delegate, false);
+        } else if (obj == null) {
+            throw new NullPointerException(
+                    "formatToCharacterIterator must be passed non-null object");
+        } else {
+            throw new IllegalArgumentException(
+                    "Cannot format given Object as a Number");
+        }
+        return delegate.getIterator(sb.toString());
+    }
+
+    /**
+     * Computes the divisor using minimum integer digits and
+     * matched pattern index.
+     * @param minIntDigits string of 0s in compact pattern
+     * @param patternIndex index of matched compact pattern
+     * @return divisor value for the number matching the compact
+     *         pattern at given {@code patternIndex}
+     */
+    private Number computeDivisor(String minIntDigits, int patternIndex) {
+        int count = minIntDigits.length() - 1;
+        Number matchedValue;
+        // The divisor value can go above long range, if the compact patterns
+        // goes above index 18, divisor may need to be stored as BigInteger,
+        // since long can't store numbers >= 10^19,
+        if (patternIndex < 19) {
+            matchedValue = (long) Math.pow(RANGE_MULTIPLIER, patternIndex);
+        } else {
+            matchedValue = BigInteger.valueOf(RANGE_MULTIPLIER).pow(patternIndex);
+        }
+        Number divisor = matchedValue;
+        if (count != 0) {
+            if (matchedValue instanceof BigInteger) {
+                BigInteger bigValue = (BigInteger) matchedValue;
+                if (bigValue.compareTo(BigInteger.valueOf((long) Math.pow(RANGE_MULTIPLIER, count))) < 0) {
+                    throw new IllegalArgumentException("Invalid Pattern"
+                            + " [" + compactPatterns[patternIndex]
+                            + "]: min integer digits specified exceeds the limit"
+                            + " for the index " + patternIndex);
+                }
+                divisor = bigValue.divide(BigInteger.valueOf((long) Math.pow(RANGE_MULTIPLIER, count)));
+            } else {
+                long longValue = (long) matchedValue;
+                if (longValue < (long) Math.pow(RANGE_MULTIPLIER, count)) {
+                    throw new IllegalArgumentException("Invalid Pattern"
+                            + " [" + compactPatterns[patternIndex]
+                            + "]: min integer digits specified exceeds the limit"
+                            + " for the index " + patternIndex);
+                }
+                divisor = longValue / (long) Math.pow(RANGE_MULTIPLIER, count);
+            }
+        }
+        return divisor;
+    }
+
+    /**
+     * Process the series of compact patterns to compute the
+     * series of prefixes, suffixes and their respective divisor
+     * value.
+     *
+     */
+    private void processCompactPatterns() {
+        int size = compactPatterns.length;
+        positivePrefixPatterns = new ArrayList<>(size);
+        negativePrefixPatterns = new ArrayList<>(size);
+        positiveSuffixPatterns = new ArrayList<>(size);
+        negativeSuffixPatterns = new ArrayList<>(size);
+        divisors = new ArrayList<>(size);
+
+        for (int index = 0; index < size; index++) {
+            applyPattern(compactPatterns[index], index);
+        }
+    }
+
+    /**
+     * Process a compact pattern at a specific {@code index}
+     * @param pattern the compact pattern to be processed
+     * @param index index in the array of compact patterns
+     *
+     */
+    private void applyPattern(String pattern, int index) {
+
+        int start = 0;
+        boolean gotNegative = false;
+
+        String positivePrefix = "";
+        String positiveSuffix = "";
+        String negativePrefix = "";
+        String negativeSuffix = "";
+        String zeros = "";
+        for (int j = 1; j >= 0 && start < pattern.length(); --j) {
+
+            StringBuffer prefix = new StringBuffer();
+            StringBuffer suffix = new StringBuffer();
+            boolean inQuote = false;
+            // The phase ranges from 0 to 2.  Phase 0 is the prefix.  Phase 1 is
+            // the section of the pattern with digits. Phase 2 is the suffix.
+            // The separation of the characters into phases is
+            // strictly enforced; if phase 1 characters are to appear in the
+            // suffix, for example, they must be quoted.
+            int phase = 0;
+
+            // The affix is either the prefix or the suffix.
+            StringBuffer affix = prefix;
+
+            for (int pos = start; pos < pattern.length(); ++pos) {
+                char ch = pattern.charAt(pos);
+                switch (phase) {
+                    case 0:
+                    case 2:
+                        // Process the prefix / suffix characters
+                        if (inQuote) {
+                            // A quote within quotes indicates either the closing
+                            // quote or two quotes, which is a quote literal. That
+                            // is, we have the second quote in 'do' or 'don''t'.
+                            if (ch == QUOTE) {
+                                if ((pos + 1) < pattern.length()
+                                        && pattern.charAt(pos + 1) == QUOTE) {
+                                    ++pos;
+                                    affix.append("''"); // 'don''t'
+                                } else {
+                                    inQuote = false; // 'do'
+                                }
+                                continue;
+                            }
+                        } else {
+                            // Process unquoted characters seen in prefix or suffix
+                            // phase.
+                            switch (ch) {
+                                case ZERO_DIGIT:
+                                    phase = 1;
+                                    --pos; // Reprocess this character
+                                    continue;
+                                case QUOTE:
+                                    // A quote outside quotes indicates either the
+                                    // opening quote or two quotes, which is a quote
+                                    // literal. That is, we have the first quote in 'do'
+                                    // or o''clock.
+                                    if ((pos + 1) < pattern.length()
+                                            && pattern.charAt(pos + 1) == QUOTE) {
+                                        ++pos;
+                                        affix.append("''"); // o''clock
+                                    } else {
+                                        inQuote = true; // 'do'
+                                    }
+                                    continue;
+                                case SEPARATOR:
+                                    // Don't allow separators before we see digit
+                                    // characters of phase 1, and don't allow separators
+                                    // in the second pattern (j == 0).
+                                    if (phase == 0 || j == 0) {
+                                        throw new IllegalArgumentException(
+                                                "Unquoted special character '"
+                                                + ch + "' in pattern \"" + pattern + "\"");
+                                    }
+                                    start = pos + 1;
+                                    pos = pattern.length();
+                                    continue;
+                                case MINUS_SIGN:
+                                    affix.append("'-");
+                                    continue;
+                                case DECIMAL_SEPARATOR:
+                                case GROUPING_SEPARATOR:
+                                case DIGIT:
+                                case PERCENT:
+                                case PER_MILLE:
+                                case CURRENCY_SIGN:
+                                    throw new IllegalArgumentException(
+                                            "Unquoted special character '" + ch
+                                            + "' in pattern \"" + pattern + "\"");
+                                default:
+                                    break;
+                            }
+                        }
+                        // Note that if we are within quotes, or if this is an
+                        // unquoted, non-special character, then we usually fall
+                        // through to here.
+                        affix.append(ch);
+                        break;
+
+                    case 1:
+                        // The negative subpattern (j = 0) serves only to specify the
+                        // negative prefix and suffix, so all the phase 1 characters,
+                        // for example, digits, zeroDigit, groupingSeparator,
+                        // decimalSeparator, exponent are ignored
+                        if (j == 0) {
+                            while (pos < pattern.length()) {
+                                char negPatternChar = pattern.charAt(pos);
+                                if (negPatternChar == ZERO_DIGIT) {
+                                    ++pos;
+                                } else {
+                                    // Not a phase 1 character, consider it as
+                                    // suffix and parse it in phase 2
+                                    --pos; //process it again in outer loop
+                                    phase = 2;
+                                    affix = suffix;
+                                    break;
+                                }
+                            }
+                            continue;
+                        }
+                        // Consider only '0' as valid pattern char which can appear
+                        // in number part, rest can be either suffix or prefix
+                        if (ch == ZERO_DIGIT) {
+                            zeros = zeros + "0";
+                        } else {
+                            phase = 2;
+                            affix = suffix;
+                            --pos;
+                        }
+                        break;
+                }
+            }
+
+            if (inQuote) {
+                throw new IllegalArgumentException("Invalid single quote"
+                        + " in pattern \"" + pattern + "\"");
+            }
+
+            if (j == 1) {
+                positivePrefix = prefix.toString();
+                positiveSuffix = suffix.toString();
+                negativePrefix = positivePrefix;
+                negativeSuffix = positiveSuffix;
+            } else {
+                negativePrefix = prefix.toString();
+                negativeSuffix = suffix.toString();
+                gotNegative = true;
+            }
+
+            // If there is no negative pattern, or if the negative pattern is
+            // identical to the positive pattern, then prepend the minus sign to
+            // the positive pattern to form the negative pattern.
+            if (!gotNegative
+                    || (negativePrefix.equals(positivePrefix)
+                    && negativeSuffix.equals(positiveSuffix))) {
+                negativeSuffix = positiveSuffix;
+                negativePrefix = "'-" + positivePrefix;
+            }
+        }
+
+        // If no 0s are specified in a non empty pattern, it is invalid
+        if (pattern.length() != 0 && zeros.isEmpty()) {
+            throw new IllegalArgumentException("Invalid pattern"
+                    + " [" + pattern + "]: all patterns must include digit"
+                    + " placement 0s");
+        }
+
+        // Only if positive affix exists; else put empty strings
+        if (!positivePrefix.isEmpty() || !positiveSuffix.isEmpty()) {
+            positivePrefixPatterns.add(positivePrefix);
+            negativePrefixPatterns.add(negativePrefix);
+            positiveSuffixPatterns.add(positiveSuffix);
+            negativeSuffixPatterns.add(negativeSuffix);
+            divisors.add(computeDivisor(zeros, index));
+        } else {
+            positivePrefixPatterns.add("");
+            negativePrefixPatterns.add("");
+            positiveSuffixPatterns.add("");
+            negativeSuffixPatterns.add("");
+            divisors.add(1L);
+        }
+    }
+
+    private final transient DigitList digitList = new DigitList();
+    private static final int STATUS_INFINITE = 0;
+    private static final int STATUS_POSITIVE = 1;
+    private static final int STATUS_LENGTH   = 2;
+
+    private static final char ZERO_DIGIT = '0';
+    private static final char DIGIT = '#';
+    private static final char DECIMAL_SEPARATOR = '.';
+    private static final char GROUPING_SEPARATOR = ',';
+    private static final char MINUS_SIGN = '-';
+    private static final char PERCENT = '%';
+    private static final char PER_MILLE = '\u2030';
+    private static final char SEPARATOR = ';';
+    private static final char CURRENCY_SIGN = '\u00A4';
+    private static final char QUOTE = '\'';
+
+    // Expanded form of positive/negative prefix/suffix,
+    // the expanded form contains special characters in
+    // its localized form, which are used for matching
+    // while parsing a string to number
+    private transient List<String> positivePrefixes;
+    private transient List<String> negativePrefixes;
+    private transient List<String> positiveSuffixes;
+    private transient List<String> negativeSuffixes;
+
+    private void expandAffixPatterns() {
+        positivePrefixes = new ArrayList<>(compactPatterns.length);
+        negativePrefixes = new ArrayList<>(compactPatterns.length);
+        positiveSuffixes = new ArrayList<>(compactPatterns.length);
+        negativeSuffixes = new ArrayList<>(compactPatterns.length);
+        for (int index = 0; index < compactPatterns.length; index++) {
+            positivePrefixes.add(expandAffix(positivePrefixPatterns.get(index)));
+            negativePrefixes.add(expandAffix(negativePrefixPatterns.get(index)));
+            positiveSuffixes.add(expandAffix(positiveSuffixPatterns.get(index)));
+            negativeSuffixes.add(expandAffix(negativeSuffixPatterns.get(index)));
+        }
+    }
+
+    /**
+     * Parses a compact number from a string to produce a {@code Number}.
+     * <p>
+     * The method attempts to parse text starting at the index given by
+     * {@code pos}.
+     * If parsing succeeds, then the index of {@code pos} is updated
+     * to the index after the last character used (parsing does not necessarily
+     * use all characters up to the end of the string), and the parsed
+     * number is returned. The updated {@code pos} can be used to
+     * indicate the starting point for the next call to this method.
+     * If an error occurs, then the index of {@code pos} is not
+     * changed, the error index of {@code pos} is set to the index of
+     * the character where the error occurred, and {@code null} is returned.
+     * <p>
+     * The value is the numeric part in the given text multiplied
+     * by the numeric equivalent of the affix attached
+     * (For example, "K" = 1000 in {@link java.util.Locale#US US locale}).
+     * The subclass returned depends on the value of
+     * {@link #isParseBigDecimal}.
+     * <ul>
+     * <li>If {@link #isParseBigDecimal()} is false (the default),
+     *     most integer values are returned as {@code Long}
+     *     objects, no matter how they are written: {@code "17K"} and
+     *     {@code "17.000K"} both parse to {@code Long.valueOf(17000)}.
+     *     If the value cannot fit into {@code Long}, then the result is
+     *     returned as {@code Double}. This includes values with a
+     *     fractional part, infinite values, {@code NaN},
+     *     and the value -0.0.
+     *     <p>
+     *     Callers may use the {@code Number} methods {@code doubleValue},
+     *     {@code longValue}, etc., to obtain the type they want.
+     *
+     * <li>If {@link #isParseBigDecimal()} is true, values are returned
+     *     as {@code BigDecimal} objects. The special cases negative
+     *     and positive infinity and NaN are returned as {@code Double}
+     *     instances holding the values of the corresponding
+     *     {@code Double} constants.
+     * </ul>
+     * <p>
+     * {@code CompactNumberFormat} parses all Unicode characters that represent
+     * decimal digits, as defined by {@code Character.digit()}. In
+     * addition, {@code CompactNumberFormat} also recognizes as digits the ten
+     * consecutive characters starting with the localized zero digit defined in
+     * the {@code DecimalFormatSymbols} object.
+     * <p>
+     * {@code CompactNumberFormat} parse does not allow parsing scientific
+     * notations. For example, parsing a string {@code "1.05E4K"} in
+     * {@link java.util.Locale#US US locale} breaks at character 'E'
+     * and returns 1.05.
+     *
+     * @param text the string to be parsed
+     * @param pos  a {@code ParsePosition} object with index and error
+     *             index information as described above
+     * @return the parsed value, or {@code null} if the parse fails
+     * @exception  NullPointerException if {@code text} or
+     *             {@code pos} is null
+     *
+     */
+    @Override
+    public Number parse(String text, ParsePosition pos) {
+
+        Objects.requireNonNull(text);
+        Objects.requireNonNull(pos);
+
+        // Lazily expanding the affix patterns, on the first parse
+        // call on this instance
+        // If not initialized, expand and load all affixes
+        if (positivePrefixes == null) {
+            expandAffixPatterns();
+        }
+
+        // The compact number multiplier for parsed string.
+        // Its value is set on parsing prefix and suffix. For example,
+        // in the {@link java.util.Locale#US US locale} parsing {@code "1K"}
+        // sets its value to 1000, as K (thousand) is abbreviated form of 1000.
+        Number cnfMultiplier = 1L;
+
+        // Special case NaN
+        if (text.regionMatches(pos.index, symbols.getNaN(),
+                0, symbols.getNaN().length())) {
+            pos.index = pos.index + symbols.getNaN().length();
+            return Double.NaN;
+        }
+
+        int position = pos.index;
+        int oldStart = pos.index;
+        boolean gotPositive = false;
+        boolean gotNegative = false;
+        int matchedPosIndex = -1;
+        int matchedNegIndex = -1;
+        String matchedPosPrefix = "";
+        String matchedNegPrefix = "";
+        String defaultPosPrefix = defaultDecimalFormat.getPositivePrefix();
+        String defaultNegPrefix = defaultDecimalFormat.getNegativePrefix();
+        // Prefix matching
+        for (int compactIndex = 0; compactIndex < compactPatterns.length; compactIndex++) {
+            String positivePrefix = positivePrefixes.get(compactIndex);
+            String negativePrefix = negativePrefixes.get(compactIndex);
+
+            // Do not break if a match occur; there is a possibility that the
+            // subsequent affixes may match the longer subsequence in the given
+            // string.
+            // For example, matching "Mdx 3" with "M", "Md" as prefix should
+            // match with "Md"
+            boolean match = matchAffix(text, position, positivePrefix,
+                    defaultPosPrefix, matchedPosPrefix);
+            if (match) {
+                matchedPosIndex = compactIndex;
+                matchedPosPrefix = positivePrefix;
+                gotPositive = true;
+            }
+
+            match = matchAffix(text, position, negativePrefix,
+                    defaultNegPrefix, matchedNegPrefix);
+            if (match) {
+                matchedNegIndex = compactIndex;
+                matchedNegPrefix = negativePrefix;
+                gotNegative = true;
+            }
+        }
+
+        // Given text does not match the non empty valid compact prefixes
+        // check with the default prefixes
+        if (!gotPositive && !gotNegative) {
+            if (text.regionMatches(pos.index, defaultPosPrefix, 0,
+                    defaultPosPrefix.length())) {
+                // Matches the default positive prefix
+                matchedPosPrefix = defaultPosPrefix;
+                gotPositive = true;
+            }
+            if (text.regionMatches(pos.index, defaultNegPrefix, 0,
+                    defaultNegPrefix.length())) {
+                // Matches the default negative prefix
+                matchedNegPrefix = defaultNegPrefix;
+                gotNegative = true;
+            }
+        }
+
+        // If both match, take the longest one
+        if (gotPositive && gotNegative) {
+            if (matchedPosPrefix.length() > matchedNegPrefix.length()) {
+                gotNegative = false;
+            } else if (matchedPosPrefix.length() < matchedNegPrefix.length()) {
+                gotPositive = false;
+            }
+        }
+
+        // Update the position and take compact multiplier
+        // only if it matches the compact prefix, not the default
+        // prefix; else multiplier should be 1
+        if (gotPositive) {
+            position += matchedPosPrefix.length();
+            cnfMultiplier = matchedPosIndex != -1
+                    ? divisors.get(matchedPosIndex) : 1L;
+        } else if (gotNegative) {
+            position += matchedNegPrefix.length();
+            cnfMultiplier = matchedNegIndex != -1
+                    ? divisors.get(matchedNegIndex) : 1L;
+        }
+
+        digitList.setRoundingMode(getRoundingMode());
+        boolean[] status = new boolean[STATUS_LENGTH];
+
+        // Call DecimalFormat.subparseNumber() method to parse the
+        // number part of the input text
+        position = decimalFormat.subparseNumber(text, position,
+                digitList, false, false, status);
+
+        if (position == -1) {
+            // Unable to parse the number successfully
+            pos.index = oldStart;
+            pos.errorIndex = oldStart;
+            return null;
+        }
+
+        // If parse integer only is true and the parsing is broken at
+        // decimal point, then pass/ignore all digits and move pointer
+        // at the start of suffix, to process the suffix part
+        if (isParseIntegerOnly()
+                && text.charAt(position) == symbols.getDecimalSeparator()) {
+            position++; // Pass decimal character
+            for (; position < text.length(); ++position) {
+                char ch = text.charAt(position);
+                int digit = ch - symbols.getZeroDigit();
+                if (digit < 0 || digit > 9) {
+                    digit = Character.digit(ch, 10);
+                    // Parse all digit characters
+                    if (!(digit >= 0 && digit <= 9)) {
+                        break;
+                    }
+                }
+            }
+        }
+
+        // Number parsed successfully; match prefix and
+        // suffix to obtain multiplier
+        pos.index = position;
+        Number multiplier = computeParseMultiplier(text, pos,
+                gotPositive ? matchedPosPrefix : matchedNegPrefix,
+                status, gotPositive, gotNegative);
+
+        if (multiplier.longValue() == -1L) {
+            return null;
+        } else if (multiplier.longValue() != 1L) {
+            cnfMultiplier = multiplier;
+        }
+
+        // Special case INFINITY
+        if (status[STATUS_INFINITE]) {
+            if (status[STATUS_POSITIVE]) {
+                return Double.POSITIVE_INFINITY;
+            } else {
+                return Double.NEGATIVE_INFINITY;
+            }
+        }
+
+        if (isParseBigDecimal()) {
+            BigDecimal bigDecimalResult = digitList.getBigDecimal();
+
+            if (cnfMultiplier.longValue() != 1) {
+                bigDecimalResult = bigDecimalResult
+                        .multiply(new BigDecimal(cnfMultiplier.toString()));
+            }
+            if (!status[STATUS_POSITIVE]) {
+                bigDecimalResult = bigDecimalResult.negate();
+            }
+            return bigDecimalResult;
+        } else {
+            Number cnfResult;
+            if (digitList.fitsIntoLong(status[STATUS_POSITIVE], isParseIntegerOnly())) {
+                long longResult = digitList.getLong();
+                cnfResult = generateParseResult(longResult, false,
+                        longResult < 0, status, cnfMultiplier);
+            } else {
+                cnfResult = generateParseResult(digitList.getDouble(),
+                        true, false, status, cnfMultiplier);
+            }
+            return cnfResult;
+        }
+    }
+
+    /**
+     * Returns the parsed result by multiplying the parsed number
+     * with the multiplier representing the prefix and suffix.
+     *
+     * @param number parsed number component
+     * @param gotDouble whether the parsed number contains decimal
+     * @param gotLongMin whether the parsed number is Long.MIN
+     * @param status boolean status flags indicating whether the
+     *               value is infinite and whether it is positive
+     * @param cnfMultiplier compact number multiplier
+     * @return parsed result
+     */
+    private Number generateParseResult(Number number, boolean gotDouble,
+            boolean gotLongMin, boolean[] status, Number cnfMultiplier) {
+
+        if (gotDouble) {
+            if (cnfMultiplier.longValue() != 1L) {
+                double doubleResult = number.doubleValue() * cnfMultiplier.doubleValue();
+                doubleResult = (double) convertIfNegative(doubleResult, status, gotLongMin);
+                // Check if a double can be represeneted as a long
+                long longResult = (long) doubleResult;
+                gotDouble = ((doubleResult != (double) longResult)
+                        || (doubleResult == 0.0 && 1 / doubleResult < 0.0));
+                return gotDouble ? (Number) doubleResult : (Number) longResult;
+            }
+        } else {
+            if (cnfMultiplier.longValue() != 1L) {
+                Number result;
+                if ((cnfMultiplier instanceof Long) && !gotLongMin) {
+                    long longMultiplier = (long) cnfMultiplier;
+                    try {
+                        result = Math.multiplyExact(number.longValue(),
+                                longMultiplier);
+                    } catch (ArithmeticException ex) {
+                        // If number * longMultiplier can not be represented
+                        // as long return as double
+                        result = number.doubleValue() * cnfMultiplier.doubleValue();
+                    }
+                } else {
+                    // cnfMultiplier can not be stored into long or the number
+                    // part is Long.MIN, return as double
+                    result = number.doubleValue() * cnfMultiplier.doubleValue();
+                }
+                return convertIfNegative(result, status, gotLongMin);
+            }
+        }
+
+        // Default number
+        return convertIfNegative(number, status, gotLongMin);
+    }
+
+    /**
+     * Negate the parsed value if the positive status flag is false
+     * and the value is not a Long.MIN
+     * @param number parsed value
+     * @param status boolean status flags indicating whether the
+     *               value is infinite and whether it is positive
+     * @param gotLongMin whether the parsed number is Long.MIN
+     * @return the resulting value
+     */
+    private Number convertIfNegative(Number number, boolean[] status,
+            boolean gotLongMin) {
+
+        if (!status[STATUS_POSITIVE] && !gotLongMin) {
+            if (number instanceof Long) {
+                return -(long) number;
+            } else {
+                return -(double) number;
+            }
+        } else {
+            return number;
+        }
+    }
+
+    /**
+     * Attempts to match the given {@code affix} in the
+     * specified {@code text}.
+     */
+    private boolean matchAffix(String text, int position, String affix,
+            String defaultAffix, String matchedAffix) {
+
+        // Check with the compact affixes which are non empty and
+        // do not match with default affix
+        if (!affix.isEmpty() && !affix.equals(defaultAffix)) {
+            // Look ahead only for the longer match than the previous match
+            if (matchedAffix.length() < affix.length()) {
+                if (text.regionMatches(position, affix, 0, affix.length())) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Attempts to match given {@code prefix} and {@code suffix} in
+     * the specified {@code text}.
+     */
+    private boolean matchPrefixAndSuffix(String text, int position, String prefix,
+            String matchedPrefix, String defaultPrefix, String suffix,
+            String matchedSuffix, String defaultSuffix) {
+
+        // Check the compact pattern suffix only if there is a
+        // compact prefix match or a default prefix match
+        // because the compact prefix and suffix should match at the same
+        // index to obtain the multiplier.
+        // The prefix match is required because of the possibility of
+        // same prefix at multiple index, in which case matching the suffix
+        // is used to obtain the single match
+
+        if (prefix.equals(matchedPrefix)
+                || matchedPrefix.equals(defaultPrefix)) {
+            return matchAffix(text, position, suffix, defaultSuffix, matchedSuffix);
+        }
+        return false;
+    }
+
+    /**
+     * Computes multiplier by matching the given {@code matchedPrefix}
+     * and suffix in the specified {@code text} from the lists of
+     * prefixes and suffixes extracted from compact patterns.
+     *
+     * @param text the string to parse
+     * @param parsePosition the {@code ParsePosition} object representing the
+     *                      index and error index of the parse string
+     * @param matchedPrefix prefix extracted which needs to be matched to
+     *                      obtain the multiplier
+     * @param status upon return contains boolean status flags indicating
+     *               whether the value is positive
+     * @param gotPositive based on the prefix parsed; whether the number is positive
+     * @param gotNegative based on the prefix parsed; whether the number is negative
+     * @return the multiplier matching the prefix and suffix; -1 otherwise
+     */
+    private Number computeParseMultiplier(String text, ParsePosition parsePosition,
+            String matchedPrefix, boolean[] status, boolean gotPositive,
+            boolean gotNegative) {
+
+        int position = parsePosition.index;
+        boolean gotPos = false;
+        boolean gotNeg = false;
+        int matchedPosIndex = -1;
+        int matchedNegIndex = -1;
+        String matchedPosSuffix = "";
+        String matchedNegSuffix = "";
+        for (int compactIndex = 0; compactIndex < compactPatterns.length; compactIndex++) {
+            String positivePrefix = positivePrefixes.get(compactIndex);
+            String negativePrefix = negativePrefixes.get(compactIndex);
+            String positiveSuffix = positiveSuffixes.get(compactIndex);
+            String negativeSuffix = negativeSuffixes.get(compactIndex);
+
+            // Do not break if a match occur; there is a possibility that the
+            // subsequent affixes may match the longer subsequence in the given
+            // string.
+            // For example, matching "3Mdx" with "M", "Md" should match with "Md"
+            boolean match = matchPrefixAndSuffix(text, position, positivePrefix, matchedPrefix,
+                    defaultDecimalFormat.getPositivePrefix(), positiveSuffix,
+                    matchedPosSuffix, defaultDecimalFormat.getPositiveSuffix());
+            if (match) {
+                matchedPosIndex = compactIndex;
+                matchedPosSuffix = positiveSuffix;
+                gotPos = true;
+            }
+
+            match = matchPrefixAndSuffix(text, position, negativePrefix, matchedPrefix,
+                    defaultDecimalFormat.getNegativePrefix(), negativeSuffix,
+                    matchedNegSuffix, defaultDecimalFormat.getNegativeSuffix());
+            if (match) {
+                matchedNegIndex = compactIndex;
+                matchedNegSuffix = negativeSuffix;
+                gotNeg = true;
+            }
+        }
+
+        // Suffix in the given text does not match with the compact
+        // patterns suffixes; match with the default suffix
+        if (!gotPos && !gotNeg) {
+            String positiveSuffix = defaultDecimalFormat.getPositiveSuffix();
+            String negativeSuffix = defaultDecimalFormat.getNegativeSuffix();
+            if (text.regionMatches(position, positiveSuffix, 0,
+                    positiveSuffix.length())) {
+                // Matches the default positive prefix
+                matchedPosSuffix = positiveSuffix;
+                gotPos = true;
+            }
+            if (text.regionMatches(position, negativeSuffix, 0,
+                    negativeSuffix.length())) {
+                // Matches the default negative suffix
+                matchedNegSuffix = negativeSuffix;
+                gotNeg = true;
+            }
+        }
+
+        // If both matches, take the longest one
+        if (gotPos && gotNeg) {
+            if (matchedPosSuffix.length() > matchedNegSuffix.length()) {
+                gotNeg = false;
+            } else if (matchedPosSuffix.length() < matchedNegSuffix.length()) {
+                gotPos = false;
+            } else {
+                // If longest comparison fails; take the positive and negative
+                // sign of matching prefix
+                gotPos = gotPositive;
+                gotNeg = gotNegative;
+            }
+        }
+
+        // Fail if neither or both
+        if (gotPos == gotNeg) {
+            parsePosition.errorIndex = position;
+            return -1L;
+        }
+
+        Number cnfMultiplier;
+        // Update the parse position index and take compact multiplier
+        // only if it matches the compact suffix, not the default
+        // suffix; else multiplier should be 1
+        if (gotPos) {
+            parsePosition.index = position + matchedPosSuffix.length();
+            cnfMultiplier = matchedPosIndex != -1
+                    ? divisors.get(matchedPosIndex) : 1L;
+        } else {
+            parsePosition.index = position + matchedNegSuffix.length();
+            cnfMultiplier = matchedNegIndex != -1
+                    ? divisors.get(matchedNegIndex) : 1L;
+        }
+        status[STATUS_POSITIVE] = gotPos;
+        return cnfMultiplier;
+    }
+
+    /**
+     * Reconstitutes this {@code CompactNumberFormat} from a stream
+     * (that is, deserializes it) after performing some validations.
+     * This method throws InvalidObjectException, if the stream data is invalid
+     * because of the following reasons,
+     * <ul>
+     * <li> If any of the {@code decimalPattern}, {@code compactPatterns},
+     * {@code symbols} or {@code roundingMode} is {@code null}.
+     * <li> If the {@code decimalPattern} or the {@code compactPatterns} array
+     * contains an invalid pattern or if a {@code null} appears in the array of
+     * compact patterns.
+     * <li> If the {@code minimumIntegerDigits} is greater than the
+     * {@code maximumIntegerDigits} or the {@code minimumFractionDigits} is
+     * greater than the {@code maximumFractionDigits}. This check is performed
+     * by superclass's Object.
+     * <li> If any of the minimum/maximum integer/fraction digit count is
+     * negative. This check is performed by superclass's readObject.
+     * <li> If the minimum or maximum integer digit count is larger than 309 or
+     * if the minimum or maximum fraction digit count is larger than 340.
+     * <li> If the grouping size is negative or larger than 127.
+     * </ul>
+     *
+     * @param inStream the stream
+     * @throws IOException if an I/O error occurs
+     * @throws ClassNotFoundException if the class of a serialized object
+     *         could not be found
+     */
+    private void readObject(ObjectInputStream inStream) throws IOException,
+            ClassNotFoundException {
+
+        inStream.defaultReadObject();
+        if (decimalPattern == null || compactPatterns == null
+                || symbols == null || roundingMode == null) {
+            throw new InvalidObjectException("One of the 'decimalPattern',"
+                    + " 'compactPatterns', 'symbols' or 'roundingMode'"
+                    + " is null");
+        }
+
+        // Check only the maximum counts because NumberFormat.readObject has
+        // already ensured that the maximum is greater than the minimum count.
+        if (getMaximumIntegerDigits() > DecimalFormat.DOUBLE_INTEGER_DIGITS
+                || getMaximumFractionDigits() > DecimalFormat.DOUBLE_FRACTION_DIGITS) {
+            throw new InvalidObjectException("Digit count out of range");
+        }
+
+        // Check if the grouping size is negative, on an attempt to
+        // put value > 127, it wraps around, so check just negative value
+        if (groupingSize < 0) {
+            throw new InvalidObjectException("Grouping size is negative");
+        }
+
+        try {
+            processCompactPatterns();
+        } catch (IllegalArgumentException ex) {
+            throw new InvalidObjectException(ex.getMessage());
+        }
+
+        decimalFormat = new DecimalFormat(SPECIAL_PATTERN, symbols);
+        decimalFormat.setMaximumFractionDigits(getMaximumFractionDigits());
+        decimalFormat.setMinimumFractionDigits(getMinimumFractionDigits());
+        decimalFormat.setMaximumIntegerDigits(getMaximumIntegerDigits());
+        decimalFormat.setMinimumIntegerDigits(getMinimumIntegerDigits());
+        decimalFormat.setRoundingMode(getRoundingMode());
+        decimalFormat.setGroupingSize(getGroupingSize());
+        decimalFormat.setGroupingUsed(isGroupingUsed());
+        decimalFormat.setParseIntegerOnly(isParseIntegerOnly());
+
+        try {
+            defaultDecimalFormat = new DecimalFormat(decimalPattern, symbols);
+            defaultDecimalFormat.setMaximumFractionDigits(0);
+        } catch (IllegalArgumentException ex) {
+            throw new InvalidObjectException(ex.getMessage());
+        }
+
+    }
+
+    /**
+     * Sets the maximum number of digits allowed in the integer portion of a
+     * number.
+     * The maximum allowed integer range is 309, if the {@code newValue} &gt; 309,
+     * then the maximum integer digits count is set to 309. Negative input
+     * values are replaced with 0.
+     *
+     * @param newValue the maximum number of integer digits to be shown
+     * @see #getMaximumIntegerDigits()
+     */
+    @Override
+    public void setMaximumIntegerDigits(int newValue) {
+        // The maximum integer digits is checked with the allowed range before calling
+        // the DecimalFormat.setMaximumIntegerDigits, which performs the negative check
+        // on the given newValue while setting it as max integer digits.
+        // For example, if a negative value is specified, it is replaced with 0
+        decimalFormat.setMaximumIntegerDigits(Math.min(newValue,
+                DecimalFormat.DOUBLE_INTEGER_DIGITS));
+        super.setMaximumIntegerDigits(decimalFormat.getMaximumIntegerDigits());
+        if (decimalFormat.getMinimumIntegerDigits() > decimalFormat.getMaximumIntegerDigits()) {
+            decimalFormat.setMinimumIntegerDigits(decimalFormat.getMaximumIntegerDigits());
+            super.setMinimumIntegerDigits(decimalFormat.getMinimumIntegerDigits());
+        }
+    }
+
+    /**
+     * Sets the minimum number of digits allowed in the integer portion of a
+     * number.
+     * The maximum allowed integer range is 309, if the {@code newValue} &gt; 309,
+     * then the minimum integer digits count is set to 309. Negative input
+     * values are replaced with 0.
+     *
+     * @param newValue the minimum number of integer digits to be shown
+     * @see #getMinimumIntegerDigits()
+     */
+    @Override
+    public void setMinimumIntegerDigits(int newValue) {
+        // The minimum integer digits is checked with the allowed range before calling
+        // the DecimalFormat.setMinimumIntegerDigits, which performs check on the given
+        // newValue while setting it as min integer digits. For example, if a negative
+        // value is specified, it is replaced with 0
+        decimalFormat.setMinimumIntegerDigits(Math.min(newValue,
+                DecimalFormat.DOUBLE_INTEGER_DIGITS));
+        super.setMinimumIntegerDigits(decimalFormat.getMinimumIntegerDigits());
+        if (decimalFormat.getMinimumIntegerDigits() > decimalFormat.getMaximumIntegerDigits()) {
+            decimalFormat.setMaximumIntegerDigits(decimalFormat.getMinimumIntegerDigits());
+            super.setMaximumIntegerDigits(decimalFormat.getMaximumIntegerDigits());
+        }
+    }
+
+    /**
+     * Sets the minimum number of digits allowed in the fraction portion of a
+     * number.
+     * The maximum allowed fraction range is 340, if the {@code newValue} &gt; 340,
+     * then the minimum fraction digits count is set to 340. Negative input
+     * values are replaced with 0.
+     *
+     * @param newValue the minimum number of fraction digits to be shown
+     * @see #getMinimumFractionDigits()
+     */
+    @Override
+    public void setMinimumFractionDigits(int newValue) {
+        // The minimum fraction digits is checked with the allowed range before
+        // calling the DecimalFormat.setMinimumFractionDigits, which performs
+        // check on the given newValue while setting it as min fraction
+        // digits. For example, if a negative value is specified, it is
+        // replaced with 0
+        decimalFormat.setMinimumFractionDigits(Math.min(newValue,
+                DecimalFormat.DOUBLE_FRACTION_DIGITS));
+        super.setMinimumFractionDigits(decimalFormat.getMinimumFractionDigits());
+        if (decimalFormat.getMinimumFractionDigits() > decimalFormat.getMaximumFractionDigits()) {
+            decimalFormat.setMaximumFractionDigits(decimalFormat.getMinimumFractionDigits());
+            super.setMaximumFractionDigits(decimalFormat.getMaximumFractionDigits());
+        }
+    }
+
+    /**
+     * Sets the maximum number of digits allowed in the fraction portion of a
+     * number.
+     * The maximum allowed fraction range is 340, if the {@code newValue} &gt; 340,
+     * then the maximum fraction digits count is set to 340. Negative input
+     * values are replaced with 0.
+     *
+     * @param newValue the maximum number of fraction digits to be shown
+     * @see #getMaximumFractionDigits()
+     */
+    @Override
+    public void setMaximumFractionDigits(int newValue) {
+        // The maximum fraction digits is checked with the allowed range before
+        // calling the DecimalFormat.setMaximumFractionDigits, which performs
+        // check on the given newValue while setting it as max fraction digits.
+        // For example, if a negative value is specified, it is replaced with 0
+        decimalFormat.setMaximumFractionDigits(Math.min(newValue,
+                DecimalFormat.DOUBLE_FRACTION_DIGITS));
+        super.setMaximumFractionDigits(decimalFormat.getMaximumFractionDigits());
+        if (decimalFormat.getMinimumFractionDigits() > decimalFormat.getMaximumFractionDigits()) {
+            decimalFormat.setMinimumFractionDigits(decimalFormat.getMaximumFractionDigits());
+            super.setMinimumFractionDigits(decimalFormat.getMinimumFractionDigits());
+        }
+    }
+
+    /**
+     * Gets the {@link java.math.RoundingMode} used in this
+     * {@code CompactNumberFormat}.
+     *
+     * @return the {@code RoundingMode} used for this
+     *         {@code CompactNumberFormat}
+     * @see #setRoundingMode(RoundingMode)
+     */
+    @Override
+    public RoundingMode getRoundingMode() {
+        return roundingMode;
+    }
+
+    /**
+     * Sets the {@link java.math.RoundingMode} used in this
+     * {@code CompactNumberFormat}.
+     *
+     * @param roundingMode the {@code RoundingMode} to be used
+     * @see #getRoundingMode()
+     * @throws NullPointerException if {@code roundingMode} is {@code null}
+     */
+    @Override
+    public void setRoundingMode(RoundingMode roundingMode) {
+        decimalFormat.setRoundingMode(roundingMode);
+        this.roundingMode = roundingMode;
+    }
+
+    /**
+     * Returns the grouping size. Grouping size is the number of digits between
+     * grouping separators in the integer portion of a number. For example,
+     * in the compact number {@code "12,347 trillion"} for the
+     * {@link java.util.Locale#US US locale}, the grouping size is 3.
+     *
+     * @return the grouping size
+     * @see #setGroupingSize
+     * @see java.text.NumberFormat#isGroupingUsed
+     * @see java.text.DecimalFormatSymbols#getGroupingSeparator
+     */
+    public int getGroupingSize() {
+        return groupingSize;
+    }
+
+    /**
+     * Sets the grouping size. Grouping size is the number of digits between
+     * grouping separators in the integer portion of a number. For example,
+     * in the compact number {@code "12,347 trillion"} for the
+     * {@link java.util.Locale#US US locale}, the grouping size is 3. The grouping
+     * size must be greater than or equal to zero and less than or equal to 127.
+     *
+     * @param newValue the new grouping size
+     * @see #getGroupingSize
+     * @see java.text.NumberFormat#setGroupingUsed
+     * @see java.text.DecimalFormatSymbols#setGroupingSeparator
+     * @throws IllegalArgumentException if {@code newValue} is negative or
+     * larger than 127
+     */
+    public void setGroupingSize(int newValue) {
+        if (newValue < 0 || newValue > 127) {
+            throw new IllegalArgumentException(
+                    "The value passed is negative or larger than 127");
+        }
+        groupingSize = (byte) newValue;
+        decimalFormat.setGroupingSize(groupingSize);
+    }
+
+    /**
+     * Returns true if grouping is used in this format. For example, with
+     * grouping on and grouping size set to 3, the number {@code 12346567890987654}
+     * can be formatted as {@code "12,347 trillion"} in the
+     * {@link java.util.Locale#US US locale}.
+     * The grouping separator is locale dependent.
+     *
+     * @return {@code true} if grouping is used;
+     *         {@code false} otherwise
+     * @see #setGroupingUsed
+     */
+    @Override
+    public boolean isGroupingUsed() {
+        return super.isGroupingUsed();
+    }
+
+    /**
+     * Sets whether or not grouping will be used in this format.
+     *
+     * @param newValue {@code true} if grouping is used;
+     *                 {@code false} otherwise
+     * @see #isGroupingUsed
+     */
+    @Override
+    public void setGroupingUsed(boolean newValue) {
+        decimalFormat.setGroupingUsed(newValue);
+        super.setGroupingUsed(newValue);
+    }
+
+    /**
+     * Returns true if this format parses only an integer from the number
+     * component of a compact number.
+     * Parsing an integer means that only an integer is considered from the
+     * number component, prefix/suffix is still considered to compute the
+     * resulting output.
+     * For example, in the {@link java.util.Locale#US US locale}, if this method
+     * returns {@code true}, the string {@code "1234.78 thousand"} would be
+     * parsed as the value {@code 1234000} (1234 (integer part) * 1000
+     * (thousand)) and the fractional part would be skipped.
+     * The exact format accepted by the parse operation is locale dependent.
+     *
+     * @return {@code true} if compact numbers should be parsed as integers
+     *         only; {@code false} otherwise
+     */
+    @Override
+    public boolean isParseIntegerOnly() {
+        return super.isParseIntegerOnly();
+    }
+
+    /**
+     * Sets whether or not this format parses only an integer from the number
+     * component of a compact number.
+     *
+     * @param value {@code true} if compact numbers should be parsed as
+     *              integers only; {@code false} otherwise
+     * @see #isParseIntegerOnly
+     */
+    @Override
+    public void setParseIntegerOnly(boolean value) {
+        decimalFormat.setParseIntegerOnly(value);
+        super.setParseIntegerOnly(value);
+    }
+
+    /**
+     * Returns whether the {@link #parse(String, ParsePosition)}
+     * method returns {@code BigDecimal}. The default value is false.
+     *
+     * @return {@code true} if the parse method returns BigDecimal;
+     *         {@code false} otherwise
+     * @see #setParseBigDecimal
+     *
+     */
+    public boolean isParseBigDecimal() {
+        return parseBigDecimal;
+    }
+
+    /**
+     * Sets whether the {@link #parse(String, ParsePosition)}
+     * method returns {@code BigDecimal}.
+     *
+     * @param newValue {@code true} if the parse method returns BigDecimal;
+     *                 {@code false} otherwise
+     * @see #isParseBigDecimal
+     *
+     */
+    public void setParseBigDecimal(boolean newValue) {
+        parseBigDecimal = newValue;
+    }
+
+    /**
+     * Checks if this {@code CompactNumberFormat} is equal to the
+     * specified {@code obj}. The objects of type {@code CompactNumberFormat}
+     * are compared, other types return false; obeys the general contract of
+     * {@link java.lang.Object#equals(java.lang.Object) Object.equals}.
+     *
+     * @param obj the object to compare with
+     * @return true if this is equal to the other {@code CompactNumberFormat}
+     */
+    @Override
+    public boolean equals(Object obj) {
+
+        if (!super.equals(obj)) {
+            return false;
+        }
+
+        CompactNumberFormat other = (CompactNumberFormat) obj;
+        return decimalPattern.equals(other.decimalPattern)
+                && symbols.equals(other.symbols)
+                && Arrays.equals(compactPatterns, other.compactPatterns)
+                && roundingMode.equals(other.roundingMode)
+                && groupingSize == other.groupingSize
+                && parseBigDecimal == other.parseBigDecimal;
+    }
+
+    /**
+     * Returns the hash code for this {@code CompactNumberFormat} instance.
+     *
+     * @return hash code for this {@code CompactNumberFormat}
+     */
+    @Override
+    public int hashCode() {
+        return 31 * super.hashCode() +
+                Objects.hash(decimalPattern, symbols, roundingMode)
+                + Arrays.hashCode(compactPatterns) + groupingSize
+                + Boolean.hashCode(parseBigDecimal);
+    }
+
+    /**
+     * Creates and returns a copy of this {@code CompactNumberFormat}
+     * instance.
+     *
+     * @return a clone of this instance
+     */
+    @Override
+    public CompactNumberFormat clone() {
+        CompactNumberFormat other = (CompactNumberFormat) super.clone();
+        other.compactPatterns = compactPatterns.clone();
+        other.symbols = (DecimalFormatSymbols) symbols.clone();
+        return other;
+    }
+
+}
+
--- a/src/java.base/share/classes/java/text/DecimalFormat.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/java/text/DecimalFormat.java	Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -48,9 +48,6 @@
 import java.util.ArrayList;
 import java.util.Currency;
 import java.util.Locale;
-import java.util.ResourceBundle;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 import sun.util.locale.provider.LocaleProviderAdapter;
@@ -157,7 +154,7 @@
  * used. So <code>"#,##,###,####"</code> == <code>"######,####"</code> ==
  * <code>"##,####,####"</code>.
  *
- * <h4>Special Pattern Characters</h4>
+ * <h4><a id="special_pattern_character">Special Pattern Characters</a></h4>
  *
  * <p>Many characters in a pattern are taken literally; they are matched during
  * parsing and output unchanged during formatting.  Special characters, on the
@@ -572,14 +569,11 @@
      *                  mode being set to RoundingMode.UNNECESSARY
      * @return The formatted number string
      */
-    private StringBuffer format(double number, StringBuffer result,
+    StringBuffer format(double number, StringBuffer result,
                                 FieldDelegate delegate) {
-        if (Double.isNaN(number) ||
-           (Double.isInfinite(number) && multiplier == 0)) {
-            int iFieldStart = result.length();
-            result.append(symbols.getNaN());
-            delegate.formatted(INTEGER_FIELD, Field.INTEGER, Field.INTEGER,
-                               iFieldStart, result.length(), result);
+
+        boolean nanOrInfinity = handleNaN(number, result, delegate);
+        if (nanOrInfinity) {
             return result;
         }
 
@@ -599,6 +593,56 @@
             number *= multiplier;
         }
 
+        nanOrInfinity = handleInfinity(number, result, delegate, isNegative);
+        if (nanOrInfinity) {
+            return result;
+        }
+
+        if (isNegative) {
+            number = -number;
+        }
+
+        // at this point we are guaranteed a nonnegative finite number.
+        assert (number >= 0 && !Double.isInfinite(number));
+        return doubleSubformat(number, result, delegate, isNegative);
+    }
+
+    /**
+     * Checks if the given {@code number} is {@code Double.NaN}. if yes;
+     * appends the NaN symbol to the result string. The NaN string is
+     * determined by the DecimalFormatSymbols object.
+     * @param number the double number to format
+     * @param result where the text is to be appended
+     * @param delegate notified of locations of sub fields
+     * @return true, if number is a NaN; false otherwise
+     */
+    boolean handleNaN(double number, StringBuffer result,
+            FieldDelegate delegate) {
+        if (Double.isNaN(number)
+                || (Double.isInfinite(number) && multiplier == 0)) {
+            int iFieldStart = result.length();
+            result.append(symbols.getNaN());
+            delegate.formatted(INTEGER_FIELD, Field.INTEGER, Field.INTEGER,
+                    iFieldStart, result.length(), result);
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Checks if the given {@code number} is {@code Double.NEGATIVE_INFINITY}
+     * or {@code Double.POSITIVE_INFINITY}. if yes;
+     * appends the infinity string to the result string. The infinity string is
+     * determined by the DecimalFormatSymbols object.
+     * @param number the double number to format
+     * @param result where the text is to be appended
+     * @param delegate notified of locations of sub fields
+     * @param isNegative whether the given {@code number} is negative
+     * @return true, if number is a {@code Double.NEGATIVE_INFINITY} or
+     *         {@code Double.POSITIVE_INFINITY}; false otherwise
+     */
+    boolean handleInfinity(double number, StringBuffer result,
+            FieldDelegate delegate, boolean isNegative) {
         if (Double.isInfinite(number)) {
             if (isNegative) {
                 append(result, negativePrefix, delegate,
@@ -621,27 +665,24 @@
                        getPositiveSuffixFieldPositions(), Field.SIGN);
             }
 
-            return result;
-        }
-
-        if (isNegative) {
-            number = -number;
+            return true;
         }
-
-        // at this point we are guaranteed a nonnegative finite number.
-        assert(number >= 0 && !Double.isInfinite(number));
-
-        synchronized(digitList) {
+        return false;
+    }
+
+    StringBuffer doubleSubformat(double number, StringBuffer result,
+            FieldDelegate delegate, boolean isNegative) {
+        synchronized (digitList) {
             int maxIntDigits = super.getMaximumIntegerDigits();
             int minIntDigits = super.getMinimumIntegerDigits();
             int maxFraDigits = super.getMaximumFractionDigits();
             int minFraDigits = super.getMinimumFractionDigits();
 
-            digitList.set(isNegative, number, useExponentialNotation ?
-                          maxIntDigits + maxFraDigits : maxFraDigits,
-                          !useExponentialNotation);
+            digitList.set(isNegative, number, useExponentialNotation
+                    ? maxIntDigits + maxFraDigits : maxFraDigits,
+                    !useExponentialNotation);
             return subformat(result, delegate, isNegative, false,
-                       maxIntDigits, minIntDigits, maxFraDigits, minFraDigits);
+                    maxIntDigits, minIntDigits, maxFraDigits, minFraDigits);
         }
     }
 
@@ -683,7 +724,7 @@
      *                   mode being set to RoundingMode.UNNECESSARY
      * @see java.text.FieldPosition
      */
-    private StringBuffer format(long number, StringBuffer result,
+    StringBuffer format(long number, StringBuffer result,
                                FieldDelegate delegate) {
         boolean isNegative = (number < 0);
         if (isNegative) {
@@ -774,7 +815,7 @@
      *                   mode being set to RoundingMode.UNNECESSARY
      * @return The formatted number string
      */
-    private StringBuffer format(BigDecimal number, StringBuffer result,
+    StringBuffer format(BigDecimal number, StringBuffer result,
                                 FieldDelegate delegate) {
         if (multiplier != 1) {
             number = number.multiply(getBigDecimalMultiplier());
@@ -835,7 +876,7 @@
      *                   mode being set to RoundingMode.UNNECESSARY
      * @see java.text.FieldPosition
      */
-    private StringBuffer format(BigInteger number, StringBuffer result,
+    StringBuffer format(BigInteger number, StringBuffer result,
                                FieldDelegate delegate, boolean formatLong) {
         if (multiplier != 1) {
             number = number.multiply(getBigIntegerMultiplier());
@@ -917,7 +958,7 @@
         return delegate.getIterator(sb.toString());
     }
 
-    // ==== Begin fast-path formating logic for double =========================
+    // ==== Begin fast-path formatting logic for double =========================
 
     /* Fast-path formatting will be used for format(double ...) methods iff a
      * number of conditions are met (see checkAndSetFastPathStatus()):
@@ -1662,6 +1703,26 @@
 
     }
 
+    /**
+     * Sets the {@code DigitList} used by this {@code DecimalFormat}
+     * instance.
+     * @param number the number to format
+     * @param isNegative true, if the number is negative; false otherwise
+     * @param maxDigits the max digits
+     */
+    void setDigitList(Number number, boolean isNegative, int maxDigits) {
+
+        if (number instanceof Double) {
+            digitList.set(isNegative, (Double) number, maxDigits, true);
+        } else if (number instanceof BigDecimal) {
+            digitList.set(isNegative, (BigDecimal) number, maxDigits, true);
+        } else if (number instanceof Long) {
+            digitList.set(isNegative, (Long) number, maxDigits);
+        } else if (number instanceof BigInteger) {
+            digitList.set(isNegative, (BigInteger) number, maxDigits);
+        }
+    }
+
     // ======== End fast-path formating logic for double =========================
 
     /**
@@ -1669,29 +1730,59 @@
      * be filled in with the correct digits.
      */
     private StringBuffer subformat(StringBuffer result, FieldDelegate delegate,
-                                   boolean isNegative, boolean isInteger,
-                                   int maxIntDigits, int minIntDigits,
-                                   int maxFraDigits, int minFraDigits) {
-        // NOTE: This isn't required anymore because DigitList takes care of this.
-        //
-        //  // The negative of the exponent represents the number of leading
-        //  // zeros between the decimal and the first non-zero digit, for
-        //  // a value < 0.1 (e.g., for 0.00123, -fExponent == 2).  If this
-        //  // is more than the maximum fraction digits, then we have an underflow
-        //  // for the printed representation.  We recognize this here and set
-        //  // the DigitList representation to zero in this situation.
-        //
-        //  if (-digitList.decimalAt >= getMaximumFractionDigits())
-        //  {
-        //      digitList.count = 0;
-        //  }
-
+            boolean isNegative, boolean isInteger,
+            int maxIntDigits, int minIntDigits,
+            int maxFraDigits, int minFraDigits) {
+
+        // Process prefix
+        if (isNegative) {
+            append(result, negativePrefix, delegate,
+                    getNegativePrefixFieldPositions(), Field.SIGN);
+        } else {
+            append(result, positivePrefix, delegate,
+                    getPositivePrefixFieldPositions(), Field.SIGN);
+        }
+
+        // Process number
+        subformatNumber(result, delegate, isNegative, isInteger,
+                maxIntDigits, minIntDigits, maxFraDigits, minFraDigits);
+
+        // Process suffix
+        if (isNegative) {
+            append(result, negativeSuffix, delegate,
+                    getNegativeSuffixFieldPositions(), Field.SIGN);
+        } else {
+            append(result, positiveSuffix, delegate,
+                    getPositiveSuffixFieldPositions(), Field.SIGN);
+        }
+
+        return result;
+    }
+
+    /**
+     * Subformats number part using the {@code DigitList} of this
+     * {@code DecimalFormat} instance.
+     * @param result where the text is to be appended
+     * @param delegate notified of the location of sub fields
+     * @param isNegative true, if the number is negative; false otherwise
+     * @param isInteger true, if the number is an integer; false otherwise
+     * @param maxIntDigits maximum integer digits
+     * @param minIntDigits minimum integer digits
+     * @param maxFraDigits maximum fraction digits
+     * @param minFraDigits minimum fraction digits
+     */
+    void subformatNumber(StringBuffer result, FieldDelegate delegate,
+            boolean isNegative, boolean isInteger,
+            int maxIntDigits, int minIntDigits,
+            int maxFraDigits, int minFraDigits) {
+
+        char grouping = symbols.getGroupingSeparator();
         char zero = symbols.getZeroDigit();
         int zeroDelta = zero - '0'; // '0' is the DigitList representation of zero
-        char grouping = symbols.getGroupingSeparator();
+
         char decimal = isCurrencyFormat ?
-            symbols.getMonetaryDecimalSeparator() :
-            symbols.getDecimalSeparator();
+                symbols.getMonetaryDecimalSeparator() :
+                symbols.getDecimalSeparator();
 
         /* Per bug 4147706, DecimalFormat must respect the sign of numbers which
          * format as zero.  This allows sensible computations and preserves
@@ -1703,14 +1794,6 @@
             digitList.decimalAt = 0; // Normalize
         }
 
-        if (isNegative) {
-            append(result, negativePrefix, delegate,
-                   getNegativePrefixFieldPositions(), Field.SIGN);
-        } else {
-            append(result, positivePrefix, delegate,
-                   getPositivePrefixFieldPositions(), Field.SIGN);
-        }
-
         if (useExponentialNotation) {
             int iFieldStart = result.length();
             int iFieldEnd = -1;
@@ -1719,7 +1802,6 @@
             // Minimum integer digits are handled in exponential format by
             // adjusting the exponent.  For example, 0.01234 with 3 minimum
             // integer digits is "123.4E-4".
-
             // Maximum integer digits are interpreted as indicating the
             // repeating range.  This is useful for engineering notation, in
             // which the exponent is restricted to a multiple of 3.  For
@@ -1782,8 +1864,8 @@
                     fFieldStart = result.length();
                 }
                 result.append((i < digitList.count) ?
-                              (char)(digitList.digits[i] + zeroDelta) :
-                              zero);
+                        (char)(digitList.digits[i] + zeroDelta) :
+                        zero);
             }
 
             if (decimalSeparatorAlwaysShown && totalDigits == integerDigits) {
@@ -1802,17 +1884,17 @@
                 iFieldEnd = result.length();
             }
             delegate.formatted(INTEGER_FIELD, Field.INTEGER, Field.INTEGER,
-                               iFieldStart, iFieldEnd, result);
+                    iFieldStart, iFieldEnd, result);
             if (addedDecimalSeparator) {
                 delegate.formatted(Field.DECIMAL_SEPARATOR,
-                                   Field.DECIMAL_SEPARATOR,
-                                   iFieldEnd, fFieldStart, result);
+                        Field.DECIMAL_SEPARATOR,
+                        iFieldEnd, fFieldStart, result);
             }
             if (fFieldStart == -1) {
                 fFieldStart = result.length();
             }
             delegate.formatted(FRACTION_FIELD, Field.FRACTION, Field.FRACTION,
-                               fFieldStart, result.length(), result);
+                    fFieldStart, result.length(), result);
 
             // The exponent is output using the pattern-specified minimum
             // exponent digits.  There is no maximum limit to the exponent
@@ -1823,7 +1905,7 @@
             result.append(symbols.getExponentSeparator());
 
             delegate.formatted(Field.EXPONENT_SYMBOL, Field.EXPONENT_SYMBOL,
-                               fieldStart, result.length(), result);
+                    fieldStart, result.length(), result);
 
             // For zero values, we force the exponent to zero.  We
             // must do this here, and not earlier, because the value
@@ -1838,7 +1920,7 @@
                 fieldStart = result.length();
                 result.append(symbols.getMinusSign());
                 delegate.formatted(Field.EXPONENT_SIGN, Field.EXPONENT_SIGN,
-                                   fieldStart, result.length(), result);
+                        fieldStart, result.length(), result);
             }
             digitList.set(negativeExponent, exponent);
 
@@ -1849,10 +1931,10 @@
             }
             for (int i=0; i<digitList.decimalAt; ++i) {
                 result.append((i < digitList.count) ?
-                          (char)(digitList.digits[i] + zeroDelta) : zero);
+                        (char)(digitList.digits[i] + zeroDelta) : zero);
             }
             delegate.formatted(Field.EXPONENT, Field.EXPONENT, eFieldStart,
-                               result.length(), result);
+                    result.length(), result);
         } else {
             int iFieldStart = result.length();
 
@@ -1889,19 +1971,19 @@
                 // grouping separator if i==0 though; that's at the end of
                 // the integer part.
                 if (isGroupingUsed() && i>0 && (groupingSize != 0) &&
-                    (i % groupingSize == 0)) {
+                        (i % groupingSize == 0)) {
                     int gStart = result.length();
                     result.append(grouping);
                     delegate.formatted(Field.GROUPING_SEPARATOR,
-                                       Field.GROUPING_SEPARATOR, gStart,
-                                       result.length(), result);
+                            Field.GROUPING_SEPARATOR, gStart,
+                            result.length(), result);
                 }
             }
 
             // Determine whether or not there are any printable fractional
             // digits.  If we've used up the digits we know there aren't.
             boolean fractionPresent = (minFraDigits > 0) ||
-                (!isInteger && digitIndex < digitList.count);
+                    (!isInteger && digitIndex < digitList.count);
 
             // If there is no fraction present, and we haven't printed any
             // integer digits, then print a zero.  Otherwise we won't print
@@ -1911,7 +1993,7 @@
             }
 
             delegate.formatted(INTEGER_FIELD, Field.INTEGER, Field.INTEGER,
-                               iFieldStart, result.length(), result);
+                    iFieldStart, result.length(), result);
 
             // Output the decimal separator if we always do so.
             int sStart = result.length();
@@ -1921,8 +2003,8 @@
 
             if (sStart != result.length()) {
                 delegate.formatted(Field.DECIMAL_SEPARATOR,
-                                   Field.DECIMAL_SEPARATOR,
-                                   sStart, result.length(), result);
+                        Field.DECIMAL_SEPARATOR,
+                        sStart, result.length(), result);
             }
             int fFieldStart = result.length();
 
@@ -1934,7 +2016,7 @@
                 // we have an integer, so there is no fractional stuff to
                 // display, or we're out of significant digits.
                 if (i >= minFraDigits &&
-                    (isInteger || digitIndex >= digitList.count)) {
+                        (isInteger || digitIndex >= digitList.count)) {
                     break;
                 }
 
@@ -1957,18 +2039,8 @@
 
             // Record field information for caller.
             delegate.formatted(FRACTION_FIELD, Field.FRACTION, Field.FRACTION,
-                               fFieldStart, result.length(), result);
+                    fFieldStart, result.length(), result);
         }
-
-        if (isNegative) {
-            append(result, negativeSuffix, delegate,
-                   getNegativeSuffixFieldPositions(), Field.SIGN);
-        } else {
-            append(result, positiveSuffix, delegate,
-                   getPositiveSuffixFieldPositions(), Field.SIGN);
-        }
-
-        return result;
     }
 
     /**
@@ -2209,19 +2281,18 @@
      * whether the value was infinite and whether it was positive.
      */
     private final boolean subparse(String text, ParsePosition parsePosition,
-                   String positivePrefix, String negativePrefix,
-                   DigitList digits, boolean isExponent,
-                   boolean status[]) {
+                                   String positivePrefix, String negativePrefix,
+                                   DigitList digits, boolean isExponent,
+                                   boolean status[]) {
         int position = parsePosition.index;
         int oldStart = parsePosition.index;
-        int backup;
         boolean gotPositive, gotNegative;
 
         // check for positivePrefix; take longest
         gotPositive = text.regionMatches(position, positivePrefix, 0,
-                                         positivePrefix.length());
+                positivePrefix.length());
         gotNegative = text.regionMatches(position, negativePrefix, 0,
-                                         negativePrefix.length());
+                negativePrefix.length());
 
         if (gotPositive && gotNegative) {
             if (positivePrefix.length() > negativePrefix.length()) {
@@ -2240,10 +2311,75 @@
             return false;
         }
 
+        position = subparseNumber(text, position, digits, true, isExponent, status);
+        if (position == -1) {
+            parsePosition.index = oldStart;
+            parsePosition.errorIndex = oldStart;
+            return false;
+        }
+
+        // Check for suffix
+        if (!isExponent) {
+            if (gotPositive) {
+                gotPositive = text.regionMatches(position,positiveSuffix,0,
+                        positiveSuffix.length());
+            }
+            if (gotNegative) {
+                gotNegative = text.regionMatches(position,negativeSuffix,0,
+                        negativeSuffix.length());
+            }
+
+            // If both match, take longest
+            if (gotPositive && gotNegative) {
+                if (positiveSuffix.length() > negativeSuffix.length()) {
+                    gotNegative = false;
+                } else if (positiveSuffix.length() < negativeSuffix.length()) {
+                    gotPositive = false;
+                }
+            }
+
+            // Fail if neither or both
+            if (gotPositive == gotNegative) {
+                parsePosition.errorIndex = position;
+                return false;
+            }
+
+            parsePosition.index = position +
+                    (gotPositive ? positiveSuffix.length() : negativeSuffix.length()); // mark success!
+        } else {
+            parsePosition.index = position;
+        }
+
+        status[STATUS_POSITIVE] = gotPositive;
+        if (parsePosition.index == oldStart) {
+            parsePosition.errorIndex = position;
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Parses a number from the given {@code text}. The text is parsed
+     * beginning at position, until an unparseable character is seen.
+     *
+     * @param text the string to parse
+     * @param position the position at which parsing begins
+     * @param digits the DigitList to set to the parsed value
+     * @param checkExponent whether to check for exponential number
+     * @param isExponent if the exponential part is encountered
+     * @param status upon return contains boolean status flags indicating
+     *               whether the value is infinite and whether it is
+     *               positive
+     * @return returns the position of the first unparseable character or
+     *         -1 in case of no valid number parsed
+     */
+    int subparseNumber(String text, int position,
+                       DigitList digits, boolean checkExponent,
+                       boolean isExponent, boolean status[]) {
         // process digits or Inf, find decimal position
         status[STATUS_INFINITE] = false;
         if (!isExponent && text.regionMatches(position,symbols.getInfinity(),0,
-                          symbols.getInfinity().length())) {
+                symbols.getInfinity().length())) {
             position += symbols.getInfinity().length();
             status[STATUS_INFINITE] = true;
         } else {
@@ -2257,8 +2393,8 @@
             digits.decimalAt = digits.count = 0;
             char zero = symbols.getZeroDigit();
             char decimal = isCurrencyFormat ?
-                symbols.getMonetaryDecimalSeparator() :
-                symbols.getDecimalSeparator();
+                    symbols.getMonetaryDecimalSeparator() :
+                    symbols.getDecimalSeparator();
             char grouping = symbols.getGroupingSeparator();
             String exponentString = symbols.getExponentSeparator();
             boolean sawDecimal = false;
@@ -2270,7 +2406,7 @@
             // pin when the maximum allowable digits is reached.
             int digitCount = 0;
 
-            backup = -1;
+            int backup = -1;
             for (; position < text.length(); ++position) {
                 char ch = text.charAt(position);
 
@@ -2334,15 +2470,15 @@
                     // require that they be followed by a digit.  Otherwise
                     // we backup and reprocess them.
                     backup = position;
-                } else if (!isExponent && text.regionMatches(position, exponentString, 0, exponentString.length())
-                             && !sawExponent) {
+                } else if (checkExponent && !isExponent && text.regionMatches(position, exponentString, 0, exponentString.length())
+                        && !sawExponent) {
                     // Process the exponent by recursively calling this method.
-                     ParsePosition pos = new ParsePosition(position + exponentString.length());
+                    ParsePosition pos = new ParsePosition(position + exponentString.length());
                     boolean[] stat = new boolean[STATUS_LENGTH];
                     DigitList exponentDigits = new DigitList();
 
                     if (subparse(text, pos, "", Character.toString(symbols.getMinusSign()), exponentDigits, true, stat) &&
-                        exponentDigits.fitsIntoLong(stat[STATUS_POSITIVE], true)) {
+                            exponentDigits.fitsIntoLong(stat[STATUS_POSITIVE], true)) {
                         position = pos.index; // Advance past the exponent
                         exponent = (int)exponentDigits.getLong();
                         if (!stat[STATUS_POSITIVE]) {
@@ -2373,50 +2509,11 @@
             // parse "$" with pattern "$#0.00". (return index 0 and error
             // index 1).
             if (!sawDigit && digitCount == 0) {
-                parsePosition.index = oldStart;
-                parsePosition.errorIndex = oldStart;
-                return false;
+                return -1;
             }
         }
-
-        // check for suffix
-        if (!isExponent) {
-            if (gotPositive) {
-                gotPositive = text.regionMatches(position,positiveSuffix,0,
-                                                 positiveSuffix.length());
-            }
-            if (gotNegative) {
-                gotNegative = text.regionMatches(position,negativeSuffix,0,
-                                                 negativeSuffix.length());
-            }
-
-        // if both match, take longest
-        if (gotPositive && gotNegative) {
-            if (positiveSuffix.length() > negativeSuffix.length()) {
-                gotNegative = false;
-            } else if (positiveSuffix.length() < negativeSuffix.length()) {
-                gotPositive = false;
-            }
-        }
-
-        // fail if neither or both
-        if (gotPositive == gotNegative) {
-            parsePosition.errorIndex = position;
-            return false;
-        }
-
-        parsePosition.index = position +
-            (gotPositive ? positiveSuffix.length() : negativeSuffix.length()); // mark success!
-        } else {
-            parsePosition.index = position;
-        }
-
-        status[STATUS_POSITIVE] = gotPositive;
-        if (parsePosition.index == oldStart) {
-            parsePosition.errorIndex = position;
-            return false;
-        }
-        return true;
+        return position;
+
     }
 
     /**
--- a/src/java.base/share/classes/java/text/NumberFormat.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/java/text/NumberFormat.java	Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -47,13 +47,11 @@
 import java.text.spi.NumberFormatProvider;
 import java.util.Currency;
 import java.util.HashMap;
-import java.util.Hashtable;
 import java.util.Locale;
 import java.util.Map;
-import java.util.ResourceBundle;
+import java.util.Objects;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
-import java.util.spi.LocaleServiceProvider;
 import sun.util.locale.provider.LocaleProviderAdapter;
 import sun.util.locale.provider.LocaleServiceProviderPool;
 
@@ -112,9 +110,12 @@
  * Use <code>getInstance</code> or <code>getNumberInstance</code> to get the
  * normal number format. Use <code>getIntegerInstance</code> to get an
  * integer number format. Use <code>getCurrencyInstance</code> to get the
- * currency number format. And use <code>getPercentInstance</code> to get a
- * format for displaying percentages. With this format, a fraction like
- * 0.53 is displayed as 53%.
+ * currency number format. Use {@code getCompactNumberInstance} to get the
+ * compact number format to format a number in shorter form. For example,
+ * {@code 2000} can be formatted as {@code "2K"} in
+ * {@link java.util.Locale#US US locale}. Use <code>getPercentInstance</code>
+ * to get a format for displaying percentages. With this format, a fraction
+ * like 0.53 is displayed as 53%.
  *
  * <p>
  * You can also control the display of numbers with such methods as
@@ -122,9 +123,10 @@
  * If you want even more control over the format or parsing,
  * or want to give your users more control,
  * you can try casting the <code>NumberFormat</code> you get from the factory methods
- * to a <code>DecimalFormat</code>. This will work for the vast majority
- * of locales; just remember to put it in a <code>try</code> block in case you
- * encounter an unusual one.
+ * to a {@code DecimalFormat} or {@code CompactNumberFormat} depending on
+ * the factory method used. This will work for the vast majority of locales;
+ * just remember to put it in a <code>try</code> block in case you encounter
+ * an unusual one.
  *
  * <p>
  * NumberFormat and DecimalFormat are designed such that some controls
@@ -201,6 +203,7 @@
  *
  * @see          DecimalFormat
  * @see          ChoiceFormat
+ * @see          CompactNumberFormat
  * @author       Mark Davis
  * @author       Helena Shih
  * @since 1.1
@@ -472,7 +475,7 @@
      * formatting
      */
     public static final NumberFormat getInstance() {
-        return getInstance(Locale.getDefault(Locale.Category.FORMAT), NUMBERSTYLE);
+        return getInstance(Locale.getDefault(Locale.Category.FORMAT), null, NUMBERSTYLE);
     }
 
     /**
@@ -485,7 +488,7 @@
      * formatting
      */
     public static NumberFormat getInstance(Locale inLocale) {
-        return getInstance(inLocale, NUMBERSTYLE);
+        return getInstance(inLocale, null, NUMBERSTYLE);
     }
 
     /**
@@ -501,7 +504,7 @@
      * @see java.util.Locale.Category#FORMAT
      */
     public static final NumberFormat getNumberInstance() {
-        return getInstance(Locale.getDefault(Locale.Category.FORMAT), NUMBERSTYLE);
+        return getInstance(Locale.getDefault(Locale.Category.FORMAT), null, NUMBERSTYLE);
     }
 
     /**
@@ -512,7 +515,7 @@
      * formatting
      */
     public static NumberFormat getNumberInstance(Locale inLocale) {
-        return getInstance(inLocale, NUMBERSTYLE);
+        return getInstance(inLocale, null, NUMBERSTYLE);
     }
 
     /**
@@ -534,7 +537,7 @@
      * @since 1.4
      */
     public static final NumberFormat getIntegerInstance() {
-        return getInstance(Locale.getDefault(Locale.Category.FORMAT), INTEGERSTYLE);
+        return getInstance(Locale.getDefault(Locale.Category.FORMAT), null, INTEGERSTYLE);
     }
 
     /**
@@ -551,7 +554,7 @@
      * @since 1.4
      */
     public static NumberFormat getIntegerInstance(Locale inLocale) {
-        return getInstance(inLocale, INTEGERSTYLE);
+        return getInstance(inLocale, null, INTEGERSTYLE);
     }
 
     /**
@@ -566,7 +569,7 @@
      * @see java.util.Locale.Category#FORMAT
      */
     public static final NumberFormat getCurrencyInstance() {
-        return getInstance(Locale.getDefault(Locale.Category.FORMAT), CURRENCYSTYLE);
+        return getInstance(Locale.getDefault(Locale.Category.FORMAT), null, CURRENCYSTYLE);
     }
 
     /**
@@ -576,7 +579,7 @@
      * @return the {@code NumberFormat} instance for currency formatting
      */
     public static NumberFormat getCurrencyInstance(Locale inLocale) {
-        return getInstance(inLocale, CURRENCYSTYLE);
+        return getInstance(inLocale, null, CURRENCYSTYLE);
     }
 
     /**
@@ -591,7 +594,7 @@
      * @see java.util.Locale.Category#FORMAT
      */
     public static final NumberFormat getPercentInstance() {
-        return getInstance(Locale.getDefault(Locale.Category.FORMAT), PERCENTSTYLE);
+        return getInstance(Locale.getDefault(Locale.Category.FORMAT), null, PERCENTSTYLE);
     }
 
     /**
@@ -601,14 +604,14 @@
      * @return the {@code NumberFormat} instance for percentage formatting
      */
     public static NumberFormat getPercentInstance(Locale inLocale) {
-        return getInstance(inLocale, PERCENTSTYLE);
+        return getInstance(inLocale, null, PERCENTSTYLE);
     }
 
     /**
      * Returns a scientific format for the current default locale.
      */
     /*public*/ final static NumberFormat getScientificInstance() {
-        return getInstance(Locale.getDefault(Locale.Category.FORMAT), SCIENTIFICSTYLE);
+        return getInstance(Locale.getDefault(Locale.Category.FORMAT), null, SCIENTIFICSTYLE);
     }
 
     /**
@@ -617,7 +620,50 @@
      * @param inLocale the desired locale
      */
     /*public*/ static NumberFormat getScientificInstance(Locale inLocale) {
-        return getInstance(inLocale, SCIENTIFICSTYLE);
+        return getInstance(inLocale, null, SCIENTIFICSTYLE);
+    }
+
+    /**
+     * Returns a compact number format for the default
+     * {@link java.util.Locale.Category#FORMAT FORMAT} locale with
+     * {@link NumberFormat.Style#SHORT "SHORT"} format style.
+     *
+     * @return A {@code NumberFormat} instance for compact number
+     *         formatting
+     *
+     * @see CompactNumberFormat
+     * @see NumberFormat.Style
+     * @see java.util.Locale#getDefault(java.util.Locale.Category)
+     * @see java.util.Locale.Category#FORMAT
+     * @since 12
+     */
+    public static NumberFormat getCompactNumberInstance() {
+        return getInstance(Locale.getDefault(
+                Locale.Category.FORMAT), NumberFormat.Style.SHORT, COMPACTSTYLE);
+    }
+
+    /**
+     * Returns a compact number format for the specified {@link java.util.Locale locale}
+     * and {@link NumberFormat.Style formatStyle}.
+     *
+     * @param locale the desired locale
+     * @param formatStyle the style for formatting a number
+     * @return A {@code NumberFormat} instance for compact number
+     *         formatting
+     * @throws NullPointerException if {@code locale} or {@code formatStyle}
+     *                              is {@code null}
+     *
+     * @see CompactNumberFormat
+     * @see NumberFormat.Style
+     * @see java.util.Locale
+     * @since 12
+     */
+    public static NumberFormat getCompactNumberInstance(Locale locale,
+            NumberFormat.Style formatStyle) {
+
+        Objects.requireNonNull(locale);
+        Objects.requireNonNull(formatStyle);
+        return getInstance(locale, formatStyle, COMPACTSTYLE);
     }
 
     /**
@@ -900,20 +946,22 @@
     // =======================privates===============================
 
     private static NumberFormat getInstance(Locale desiredLocale,
-                                           int choice) {
+                                            Style formatStyle, int choice) {
         LocaleProviderAdapter adapter;
         adapter = LocaleProviderAdapter.getAdapter(NumberFormatProvider.class,
-                                                   desiredLocale);
-        NumberFormat numberFormat = getInstance(adapter, desiredLocale, choice);
+                desiredLocale);
+        NumberFormat numberFormat = getInstance(adapter, desiredLocale,
+                formatStyle, choice);
         if (numberFormat == null) {
             numberFormat = getInstance(LocaleProviderAdapter.forJRE(),
-                                       desiredLocale, choice);
+                    desiredLocale, formatStyle, choice);
         }
         return numberFormat;
     }
 
     private static NumberFormat getInstance(LocaleProviderAdapter adapter,
-                                            Locale locale, int choice) {
+                                            Locale locale, Style formatStyle,
+                                            int choice) {
         NumberFormatProvider provider = adapter.getNumberFormatProvider();
         NumberFormat numberFormat = null;
         switch (choice) {
@@ -929,6 +977,9 @@
         case INTEGERSTYLE:
             numberFormat = provider.getIntegerInstance(locale);
             break;
+        case COMPACTSTYLE:
+            numberFormat = provider.getCompactNumberInstance(locale, formatStyle);
+            break;
         }
         return numberFormat;
     }
@@ -1001,6 +1052,7 @@
     private static final int PERCENTSTYLE = 2;
     private static final int SCIENTIFICSTYLE = 3;
     private static final int INTEGERSTYLE = 4;
+    private static final int COMPACTSTYLE = 5;
 
     /**
      * True if the grouping (i.e. thousands) separator is used when
@@ -1276,5 +1328,43 @@
          * Constant identifying the exponent sign field.
          */
         public static final Field EXPONENT_SIGN = new Field("exponent sign");
+
+        /**
+         * Constant identifying the prefix field.
+         *
+         * @since 12
+         */
+        public static final Field PREFIX = new Field("prefix");
+
+        /**
+         * Constant identifying the suffix field.
+         *
+         * @since 12
+         */
+        public static final Field SUFFIX = new Field("suffix");
+    }
+
+    /**
+     * A number format style.
+     * <p>
+     * {@code Style} is an enum which represents the style for formatting
+     * a number within a given {@code NumberFormat} instance.
+     *
+     * @see CompactNumberFormat
+     * @see NumberFormat#getCompactNumberInstance(Locale, Style)
+     * @since 12
+     */
+    public enum Style {
+
+        /**
+         * The {@code SHORT} number format style.
+         */
+        SHORT,
+
+        /**
+         * The {@code LONG} number format style.
+         */
+        LONG
+
     }
 }
--- a/src/java.base/share/classes/java/text/spi/NumberFormatProvider.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/java/text/spi/NumberFormatProvider.java	Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -110,4 +110,37 @@
      * @see java.text.NumberFormat#getPercentInstance(java.util.Locale)
      */
     public abstract NumberFormat getPercentInstance(Locale locale);
+
+    /**
+     * Returns a new {@code NumberFormat} instance which formats
+     * a number in its compact form for the specified
+     * {@code locale} and {@code formatStyle}.
+     *
+     * @implSpec The default implementation of this method throws
+     * {@code UnSupportedOperationException}. Overriding the implementation
+     * of this method returns the compact number formatter instance
+     * of the given {@code locale} with specified {@code formatStyle}.
+     *
+     * @param locale the desired locale
+     * @param formatStyle the style for formatting a number
+     * @throws NullPointerException if {@code locale} or {@code formatStyle}
+     *     is {@code null}
+     * @throws IllegalArgumentException if {@code locale} is not
+     *     one of the locales returned from
+     *     {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
+     *     getAvailableLocales()}.
+     * @return a compact number formatter
+     *
+     * @see java.text.NumberFormat#getCompactNumberInstance(Locale,
+     *                      NumberFormat.Style)
+     * @since 12
+     */
+    public NumberFormat getCompactNumberInstance(Locale locale,
+            NumberFormat.Style formatStyle) {
+        throw new UnsupportedOperationException(
+                "The " + this.getClass().getName() + " should override this"
+                + " method to return compact number format instance of "
+                + locale + " locale and " + formatStyle + " style.");
+    }
+
 }
--- a/src/java.base/share/classes/java/util/EnumSet.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/java/util/EnumSet.java	Fri Dec 07 09:46:53 2018 -0500
@@ -463,7 +463,7 @@
 
     /**
      * Returns a
-     * <a href="../../serialized-form.html#java.util.EnumSet.SerializationProxy">
+     * <a href="{@docRoot}/serialized-form.html#java.util.EnumSet.SerializationProxy">
      * SerializationProxy</a>
      * representing the state of this instance.
      *
--- a/src/java.base/share/classes/java/util/ImmutableCollections.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/java/util/ImmutableCollections.java	Fri Dec 07 09:46:53 2018 -0500
@@ -1091,9 +1091,9 @@
      * Creates and returns an immutable collection from this proxy class.
      * The instance returned is created as if by calling one of the
      * static factory methods for
-     * <a href="List.html#immutable">List</a>,
-     * <a href="Map.html#immutable">Map</a>, or
-     * <a href="Set.html#immutable">Set</a>.
+     * <a href="List.html#unmodifiable">List</a>,
+     * <a href="Map.html#unmodifiable">Map</a>, or
+     * <a href="Set.html#unmodifiable">Set</a>.
      * This proxy class is the serial form for all immutable collection instances,
      * regardless of implementation type. This is necessary to ensure that the
      * existence of any particular implementation type is kept out of the
--- a/src/java.base/share/classes/jdk/internal/jrtfs/JrtFileSystem.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/jdk/internal/jrtfs/JrtFileSystem.java	Fri Dec 07 09:46:53 2018 -0500
@@ -106,14 +106,6 @@
     }
 
     @Override
-    @SuppressWarnings("deprecation")
-    protected void finalize() throws Throwable {
-        try {
-            cleanup();
-        } catch (IOException ignored) {}
-    }
-
-    @Override
     public FileSystemProvider provider() {
         return provider;
     }
--- a/src/java.base/share/classes/jdk/internal/module/ArchivedModuleGraph.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/jdk/internal/module/ArchivedModuleGraph.java	Fri Dec 07 09:46:53 2018 -0500
@@ -27,32 +27,40 @@
 
 import java.lang.module.Configuration;
 import java.lang.module.ModuleFinder;
+import java.util.Map;
 import java.util.Objects;
+import java.util.Set;
+
 import jdk.internal.misc.VM;
 
 /**
  * Used by ModuleBootstrap to obtain the archived system modules and finder.
  */
 final class ArchivedModuleGraph {
-    private static String archivedMainModule;
-    private static SystemModules archivedSystemModules;
-    private static ModuleFinder archivedModuleFinder;
-    private static Configuration archivedConfiguration;
+    private static ArchivedModuleGraph archivedModuleGraph;
 
-    private final SystemModules systemModules;
+    private final String mainModule;
+    private final boolean hasSplitPackages;
+    private final boolean hasIncubatorModules;
     private final ModuleFinder finder;
     private final Configuration configuration;
+    private final Map<String, Set<String>> concealedPackagesToOpen;
+    private final Map<String, Set<String>> exportedPackagesToOpen;
 
-    private ArchivedModuleGraph(SystemModules modules,
+    private ArchivedModuleGraph(String mainModule,
+                                boolean hasSplitPackages,
+                                boolean hasIncubatorModules,
                                 ModuleFinder finder,
-                                Configuration configuration) {
-        this.systemModules = modules;
+                                Configuration configuration,
+                                Map<String, Set<String>> concealedPackagesToOpen,
+                                Map<String, Set<String>> exportedPackagesToOpen) {
+        this.mainModule = mainModule;
+        this.hasSplitPackages = hasSplitPackages;
+        this.hasIncubatorModules = hasIncubatorModules;
         this.finder = finder;
         this.configuration = configuration;
-    }
-
-    SystemModules systemModules() {
-        return systemModules;
+        this.concealedPackagesToOpen = concealedPackagesToOpen;
+        this.exportedPackagesToOpen = exportedPackagesToOpen;
     }
 
     ModuleFinder finder() {
@@ -63,32 +71,54 @@
         return configuration;
     }
 
-    // A factory method that ModuleBootstrap can use to obtain the
-    // ArchivedModuleGraph.
+    Map<String, Set<String>> concealedPackagesToOpen() {
+        return concealedPackagesToOpen;
+    }
+
+    Map<String, Set<String>> exportedPackagesToOpen() {
+        return exportedPackagesToOpen;
+    }
+
+    boolean hasSplitPackages() {
+        return hasSplitPackages;
+    }
+
+    boolean hasIncubatorModules() {
+        return hasIncubatorModules;
+    }
+
+    /**
+     * Returns the ArchivedModuleGraph for the given initial module.
+     */
     static ArchivedModuleGraph get(String mainModule) {
-        if (Objects.equals(mainModule, archivedMainModule)
-                && archivedSystemModules != null
-                && archivedModuleFinder != null
-                && archivedConfiguration != null) {
-            return new ArchivedModuleGraph(archivedSystemModules,
-                                           archivedModuleFinder,
-                                           archivedConfiguration);
+        ArchivedModuleGraph graph = archivedModuleGraph;
+        if (graph != null && Objects.equals(mainModule, graph.mainModule)) {
+            return graph;
         } else {
             return null;
         }
     }
 
-    // Used at CDS dump time
+    /**
+     * Archive the module graph for the given initial module.
+     */
     static void archive(String mainModule,
-                        SystemModules systemModules,
+                        boolean hasSplitPackages,
+                        boolean hasIncubatorModules,
                         ModuleFinder finder,
-                        Configuration configuration) {
-        if (archivedMainModule != null)
+                        Configuration configuration,
+                        Map<String, Set<String>> concealedPackagesToOpen,
+                        Map<String, Set<String>> exportedPackagesToOpen) {
+        if (mainModule != null) {
             throw new UnsupportedOperationException();
-        archivedMainModule = mainModule;
-        archivedSystemModules = systemModules;
-        archivedModuleFinder = finder;
-        archivedConfiguration = configuration;
+        }
+        archivedModuleGraph = new ArchivedModuleGraph(mainModule,
+                                                      hasSplitPackages,
+                                                      hasIncubatorModules,
+                                                      finder,
+                                                      configuration,
+                                                      concealedPackagesToOpen,
+                                                      exportedPackagesToOpen);
     }
 
     static {
--- a/src/java.base/share/classes/jdk/internal/module/ModuleBootstrap.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/jdk/internal/module/ModuleBootstrap.java	Fri Dec 07 09:46:53 2018 -0500
@@ -172,6 +172,8 @@
         boolean haveModulePath = (appModulePath != null || upgradeModulePath != null);
         boolean needResolution = true;
         boolean canArchive = false;
+        boolean hasSplitPackages;
+        boolean hasIncubatorModules;
 
         // If the java heap was archived at CDS dump time and the environment
         // at dump time matches the current environment then use the archived
@@ -182,8 +184,9 @@
                 && addModules.isEmpty()
                 && limitModules.isEmpty()
                 && !isPatched) {
-            systemModules = archivedModuleGraph.systemModules();
             systemModuleFinder = archivedModuleGraph.finder();
+            hasSplitPackages = archivedModuleGraph.hasSplitPackages();
+            hasIncubatorModules = archivedModuleGraph.hasIncubatorModules();
             needResolution = (traceOutput != null);
         } else {
             if (!haveModulePath && addModules.isEmpty() && limitModules.isEmpty()) {
@@ -205,6 +208,11 @@
                 systemModules = new ExplodedSystemModules();
                 systemModuleFinder = SystemModuleFinders.ofSystem();
             }
+
+            hasSplitPackages = systemModules.hasSplitPackages();
+            hasIncubatorModules = systemModules.hasIncubatorModules();
+            // not using the archived module graph - avoid accidental use
+            archivedModuleGraph = null;
         }
 
         Counters.add("jdk.module.boot.1.systemModulesTime", t1);
@@ -395,7 +403,7 @@
         }
 
         // check for split packages in the modules mapped to the built-in loaders
-        if (systemModules.hasSplitPackages() || isPatched || haveModulePath) {
+        if (hasSplitPackages || isPatched || haveModulePath) {
             checkSplitPackages(cf, clf);
         }
 
@@ -415,7 +423,7 @@
         // Step 7: Miscellaneous
 
         // check incubating status
-        if (systemModules.hasIncubatorModules() || haveModulePath) {
+        if (hasIncubatorModules || haveModulePath) {
             checkIncubatingStatus(cf);
         }
 
@@ -423,7 +431,21 @@
         long t7 = System.nanoTime();
         addExtraReads(bootLayer);
         boolean extraExportsOrOpens = addExtraExportsAndOpens(bootLayer);
-        addIllegalAccess(upgradeModulePath, systemModules, bootLayer, extraExportsOrOpens);
+
+        Map<String, Set<String>> concealedPackagesToOpen;
+        Map<String, Set<String>> exportedPackagesToOpen;
+        if (archivedModuleGraph != null) {
+            concealedPackagesToOpen = archivedModuleGraph.concealedPackagesToOpen();
+            exportedPackagesToOpen = archivedModuleGraph.exportedPackagesToOpen();
+        } else {
+            concealedPackagesToOpen = systemModules.concealedPackagesToOpen();
+            exportedPackagesToOpen = systemModules.exportedPackagesToOpen();
+        }
+        addIllegalAccess(upgradeModulePath,
+                         concealedPackagesToOpen,
+                         exportedPackagesToOpen,
+                         bootLayer,
+                         extraExportsOrOpens);
         Counters.add("jdk.module.boot.7.adjustModulesTime", t7);
 
         // save module finders for later use
@@ -436,8 +458,13 @@
         // Module graph can be archived at CDS dump time. Only allow the
         // unnamed module case for now.
         if (canArchive && (mainModule == null)) {
-            ArchivedModuleGraph.archive(mainModule, systemModules,
-                                        systemModuleFinder, cf);
+            ArchivedModuleGraph.archive(mainModule,
+                                        hasSplitPackages,
+                                        hasIncubatorModules,
+                                        systemModuleFinder,
+                                        cf,
+                                        concealedPackagesToOpen,
+                                        exportedPackagesToOpen);
         }
 
         // total time to initialize
@@ -738,7 +765,8 @@
      * of system modules in the boot layer to code in unnamed modules.
      */
     private static void addIllegalAccess(ModuleFinder upgradeModulePath,
-                                         SystemModules systemModules,
+                                         Map<String, Set<String>> concealedPackagesToOpen,
+                                         Map<String, Set<String>> exportedPackagesToOpen,
                                          ModuleLayer bootLayer,
                                          boolean extraExportsOrOpens) {
         String value = getAndRemoveProperty("jdk.module.illegalAccess");
@@ -764,13 +792,11 @@
         IllegalAccessLogger.Builder builder
             = new IllegalAccessLogger.Builder(mode, System.err);
 
-        Map<String, Set<String>> map1 = systemModules.concealedPackagesToOpen();
-        Map<String, Set<String>> map2 = systemModules.exportedPackagesToOpen();
-        if (map1.isEmpty() && map2.isEmpty()) {
+        if (concealedPackagesToOpen.isEmpty() && exportedPackagesToOpen.isEmpty()) {
             // need to generate (exploded build)
             IllegalAccessMaps maps = IllegalAccessMaps.generate(limitedFinder());
-            map1 = maps.concealedPackagesToOpen();
-            map2 = maps.exportedPackagesToOpen();
+            concealedPackagesToOpen = maps.concealedPackagesToOpen();
+            exportedPackagesToOpen = maps.exportedPackagesToOpen();
         }
 
         // open specific packages in the system modules
@@ -789,8 +815,8 @@
                 continue;
             }
 
-            Set<String> concealedPackages = map1.getOrDefault(name, Set.of());
-            Set<String> exportedPackages = map2.getOrDefault(name, Set.of());
+            Set<String> concealedPackages = concealedPackagesToOpen.getOrDefault(name, Set.of());
+            Set<String> exportedPackages = exportedPackagesToOpen.getOrDefault(name, Set.of());
 
             // refresh the set of concealed and exported packages if needed
             if (extraExportsOrOpens) {
--- a/src/java.base/share/classes/jdk/internal/util/SystemProps.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/jdk/internal/util/SystemProps.java	Fri Dec 07 09:46:53 2018 -0500
@@ -152,16 +152,18 @@
                                       String format) {
         // Do not override command line setting
         String baseValue = cmdProps.getProperty(base);
-        if (baseValue == null) {
-            // Not overridden on the command line; define the properties if there are platform defined values
+        if (baseValue != null) {
+            return;     // Do not override value from the command line
+        }
+
+        // Not overridden on the command line; define the properties if there are platform defined values
+        if (display != null) {
+            cmdProps.put(base, display);
             baseValue = display;
         }
-        if (baseValue != null) {
-            cmdProps.put(base, baseValue);
-        }
 
         /* user.xxx.display property */
-        String disp = base + ".display";
+        String disp = base.concat(".display");
         String dispValue = cmdProps.getProperty(disp);
         if (dispValue == null && display != null && !display.equals(baseValue)) {
             // Create the property only if different from the base property
@@ -169,7 +171,7 @@
         }
 
         /* user.xxx.format property */
-        String fmt = base + ".format";
+        String fmt = base.concat(".format");
         String fmtValue = cmdProps.getProperty(fmt);
         if (fmtValue == null && format != null && !format.equals(baseValue)) {
             // Create the property only if different than the base property
--- a/src/java.base/share/classes/sun/security/ssl/SSLSessionImpl.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/sun/security/ssl/SSLSessionImpl.java	Fri Dec 07 09:46:53 2018 -0500
@@ -176,7 +176,11 @@
 
     /*
      * Record a new session, using a given cipher spec, session ID,
-     * and creation time
+     * and creation time.
+     * Note: For the unmodifiable collections and lists we are creating new
+     * collections as inputs to avoid potential deep nesting of
+     * unmodifiable collections that can cause StackOverflowErrors
+     * (see JDK-6323374).
      */
     SSLSessionImpl(HandshakeContext hc,
             CipherSuite cipherSuite, SessionId id, long creationTime) {
@@ -187,10 +191,11 @@
         this.port = hc.conContext.transport.getPeerPort();
         this.localSupportedSignAlgs = hc.localSupportedSignAlgs == null ?
                 Collections.emptySet() :
-                Collections.unmodifiableCollection(hc.localSupportedSignAlgs);
+                Collections.unmodifiableCollection(
+                        new ArrayList<>(hc.localSupportedSignAlgs));
         this.serverNameIndication = hc.negotiatedServerName;
-        this.requestedServerNames = Collections.<SNIServerName>unmodifiableList(
-                hc.getRequestedServerNames());
+        this.requestedServerNames = Collections.unmodifiableList(
+                new ArrayList<>(hc.getRequestedServerNames()));
         if (hc.sslConfig.isClientMode) {
             this.useExtendedMasterSecret =
                 (hc.handshakeExtensions.get(
@@ -219,10 +224,8 @@
         this.host = baseSession.getPeerHost();
         this.port = baseSession.getPeerPort();
         this.localSupportedSignAlgs =
-            baseSession.localSupportedSignAlgs == null ?
-                Collections.emptySet() :
-                Collections.unmodifiableCollection(
-                        baseSession.localSupportedSignAlgs);
+                baseSession.localSupportedSignAlgs == null ?
+                Collections.emptySet() : baseSession.localSupportedSignAlgs;
         this.peerSupportedSignAlgs =
                 baseSession.getPeerSupportedSignatureAlgorithms();
         this.serverNameIndication = baseSession.serverNameIndication;
--- a/src/java.base/share/classes/sun/security/ssl/ServerNameExtension.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/sun/security/ssl/ServerNameExtension.java	Fri Dec 07 09:46:53 2018 -0500
@@ -82,9 +82,15 @@
                                                     // +2: Name length
         final List<SNIServerName> serverNames;
 
+        /*
+         * Note: For the unmodifiable collection we are creating new
+         * collections as inputs to avoid potential deep nesting of
+         * unmodifiable collections that can cause StackOverflowErrors
+         * (see JDK-6323374).
+         */
         private CHServerNamesSpec(List<SNIServerName> serverNames) {
-            this.serverNames =
-                    Collections.<SNIServerName>unmodifiableList(serverNames);
+            this.serverNames = Collections.<SNIServerName>unmodifiableList(
+                    new ArrayList<>(serverNames));
         }
 
         private CHServerNamesSpec(ByteBuffer buffer) throws IOException {
--- a/src/java.base/share/classes/sun/text/resources/FormatData.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/sun/text/resources/FormatData.java	Fri Dec 07 09:46:53 2018 -0500
@@ -796,6 +796,44 @@
                     "NaN",
                 }
             },
+            { "short.CompactNumberPatterns",
+                new String[] {
+                    "",
+                    "",
+                    "",
+                    "0K",
+                    "00K",
+                    "000K",
+                    "0M",
+                    "00M",
+                    "000M",
+                    "0B",
+                    "00B",
+                    "000B",
+                    "0T",
+                    "00T",
+                    "000T",
+                }
+            },
+            { "long.CompactNumberPatterns",
+                new String[] {
+                    "",
+                    "",
+                    "",
+                    "0 thousand",
+                    "00 thousand",
+                    "000 thousand",
+                    "0 million",
+                    "00 million",
+                    "000 million",
+                    "0 billion",
+                    "00 billion",
+                    "000 billion",
+                    "0 trillion",
+                    "00 trillion",
+                    "000 trillion",
+                }
+            },
             { "TimePatterns",
                 new String[] {
                     "h:mm:ss a z",        // full time pattern
--- a/src/java.base/share/classes/sun/util/locale/provider/LocaleResources.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/sun/util/locale/provider/LocaleResources.java	Fri Dec 07 09:46:53 2018 -0500
@@ -43,6 +43,7 @@
 import java.lang.ref.ReferenceQueue;
 import java.lang.ref.SoftReference;
 import java.text.MessageFormat;
+import java.text.NumberFormat;
 import java.util.Calendar;
 import java.util.HashSet;
 import java.util.LinkedHashSet;
@@ -88,6 +89,7 @@
     private static final String ZONE_IDS_CACHEKEY = "ZID";
     private static final String CALENDAR_NAMES = "CALN.";
     private static final String NUMBER_PATTERNS_CACHEKEY = "NP";
+    private static final String COMPACT_NUMBER_PATTERNS_CACHEKEY = "CNP";
     private static final String DATE_TIME_PATTERN = "DTP.";
 
     // TimeZoneNamesBundle exemplar city prefix
@@ -479,6 +481,32 @@
     }
 
     /**
+     * Returns the compact number format patterns.
+     * @param formatStyle the style for formatting a number
+     * @return an array of compact number patterns
+     */
+    @SuppressWarnings("unchecked")
+    public String[] getCNPatterns(NumberFormat.Style formatStyle) {
+
+        Objects.requireNonNull(formatStyle);
+        String[] compactNumberPatterns = null;
+        removeEmptyReferences();
+        String width = (formatStyle == NumberFormat.Style.LONG) ? "long" : "short";
+        String cacheKey = width + "." + COMPACT_NUMBER_PATTERNS_CACHEKEY;
+        ResourceReference data = cache.get(cacheKey);
+        if (data == null || ((compactNumberPatterns
+                = (String[]) data.get()) == null)) {
+            ResourceBundle resource = localeData.getNumberFormatData(locale);
+            compactNumberPatterns = (String[]) resource
+                    .getObject(width + ".CompactNumberPatterns");
+            cache.put(cacheKey, new ResourceReference(cacheKey,
+                    (Object) compactNumberPatterns, referenceQueue));
+        }
+        return compactNumberPatterns;
+    }
+
+
+    /**
      * Returns the FormatData resource bundle of this LocaleResources.
      * The FormatData should be used only for accessing extra
      * resources required by JSR 310.
--- a/src/java.base/share/classes/sun/util/locale/provider/NumberFormatProviderImpl.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/classes/sun/util/locale/provider/NumberFormatProviderImpl.java	Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -40,12 +40,14 @@
 
 package sun.util.locale.provider;
 
+import java.text.CompactNumberFormat;
 import java.text.DecimalFormat;
 import java.text.DecimalFormatSymbols;
 import java.text.NumberFormat;
 import java.text.spi.NumberFormatProvider;
 import java.util.Currency;
 import java.util.Locale;
+import java.util.Objects;
 import java.util.Set;
 
 /**
@@ -225,6 +227,49 @@
         }
     }
 
+    /**
+     * Returns a new {@code NumberFormat} instance which formats
+     * a number in its compact form for the specified
+     * {@code locale} and {@code formatStyle}.
+     *
+     * @param locale the desired locale
+     * @param formatStyle the style for formatting a number
+     * @throws NullPointerException if {@code locale} or {@code formatStyle}
+     *     is {@code null}
+     * @throws IllegalArgumentException if {@code locale} isn't
+     *     one of the locales returned from
+     *     {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
+     *     getAvailableLocales()}.
+     * @return a compact number formatter
+     *
+     * @see java.text.NumberFormat#getCompactNumberInstance(Locale,
+     *                      NumberFormat.Style)
+     * @since 12
+     */
+    @Override
+    public NumberFormat getCompactNumberInstance(Locale locale,
+            NumberFormat.Style formatStyle) {
+
+        Objects.requireNonNull(locale);
+        Objects.requireNonNull(formatStyle);
+
+        // Check for region override
+        Locale override = locale.getUnicodeLocaleType("nu") == null
+                ? CalendarDataUtility.findRegionOverride(locale)
+                : locale;
+
+        LocaleProviderAdapter adapter = LocaleProviderAdapter.forType(type);
+        LocaleResources resource = adapter.getLocaleResources(override);
+
+        String[] numberPatterns = resource.getNumberPatterns();
+        DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(override);
+        String[] cnPatterns = resource.getCNPatterns(formatStyle);
+
+        CompactNumberFormat format = new CompactNumberFormat(numberPatterns[0],
+                symbols, cnPatterns);
+        return format;
+    }
+
     @Override
     public Set<String> getAvailableLanguageTags() {
         return langtags;
--- a/src/java.base/share/man/java.1	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/java.base/share/man/java.1	Fri Dec 07 09:46:53 2018 -0500
@@ -1396,11 +1396,6 @@
 \fB\-XX:NativeMemoryTracking\fR)\&. By default, this option is disabled and native memory tracking data is not printed\&.
 .RE
 .PP
-\-XX:+RelaxAccessControlCheck
-.RS 4
-Decreases the amount of access control checks in the verifier\&. By default, this option is disabled, and it is ignored (that is, treated as disabled) for classes with a recent bytecode version\&. You can enable it for classes with older versions of the bytecode\&.
-.RE
-.PP
 \-XX:+ShowMessageBoxOnError
 .RS 4
 Enables displaying of a dialog box when the JVM experiences an irrecoverable error\&. This prevents the JVM from exiting and keeps the process active so that you can attach a debugger to it to investigate the cause of the error\&. By default, this option is disabled\&.
--- a/src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM33722.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM33722.java	Fri Dec 07 09:46:53 2018 -0500
@@ -1,6 +1,6 @@
 
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -36,6 +36,7 @@
 import java.nio.charset.CharsetEncoder;
 import java.nio.charset.CoderResult;
 import sun.nio.cs.HistoricallyNamedCharset;
+import sun.nio.cs.*;
 
 public class IBM33722
     extends Charset
--- a/src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM964.java	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10532 +0,0 @@
-
-/*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.CharBuffer;
-import java.nio.ByteBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CoderResult;
-import sun.nio.cs.HistoricallyNamedCharset;
-
-public class IBM964
-    extends Charset
-    implements HistoricallyNamedCharset
-{
-
-    public IBM964() {
-        super("x-IBM964", ExtendedCharsets.aliasesFor("x-IBM964"));
-    }
-
-    public String historicalName() {
-        return "Cp964";
-    }
-
-    public boolean contains(Charset cs) {
-        return (cs instanceof IBM964);
-    }
-
-    public CharsetDecoder newDecoder() {
-        return new Decoder(this);
-    }
-
-    public CharsetEncoder newEncoder() {
-        return new Encoder(this);
-    }
-
-    protected static class Decoder extends CharsetDecoder {
-        private final int SS2 =  0x8E;
-        private final int SS3 =  0x8F;
-
-        private String mappingTableG2;
-
-        public Decoder(Charset cs) {
-                super(cs, 1.0f, 1.0f);
-        }
-
-        private CoderResult decodeArrayLoop(ByteBuffer src, CharBuffer dst) {
-            byte[] sa = src.array();
-            int sp = src.arrayOffset() + src.position();
-            int sl = src.arrayOffset() + src.limit();
-            assert (sp <= sl);
-            sp = (sp <= sl ? sp : sl);
-            char[] da = dst.array();
-            int dp = dst.arrayOffset() + dst.position();
-            int dl = dst.arrayOffset() + dst.limit();
-            assert (dp <= dl);
-            dp = (dp <= dl ? dp : dl);
-
-            try {
-            while (sp < sl) {
-                int byte1, byte2;
-                int inputSize = 1;
-                char outputChar = '\uFFFD';
-                byte1 = sa[sp] & 0xff;
-
-                if (byte1 == SS2) {
-                    if (sl - sp < 4) {
-                        return CoderResult.UNDERFLOW;
-                    }
-                    byte1 = sa[sp + 1] & 0xff;
-                    inputSize = 2;
-                    if ( byte1 == 0xa2)
-                        mappingTableG2 = mappingTableG2a2;
-                    else if ( byte1 == 0xac)
-                        mappingTableG2 = mappingTableG2ac;
-                    else if ( byte1 == 0xad)
-                        mappingTableG2 = mappingTableG2ad;
-                    else
-                        return CoderResult.malformedForLength(2);
-                    byte1 = sa[sp + 2] & 0xff;
-                    if ( byte1 < 0xa1 || byte1 > 0xfe) {
-                        return CoderResult.malformedForLength(3);
-                    }
-                    byte2 = sa[sp + 3] & 0xff;
-                    if ( byte2 < 0xa1 || byte2 > 0xfe) {
-                      return CoderResult.malformedForLength(4);
-                    }
-                    inputSize = 4;
-                    outputChar = mappingTableG2.charAt(((byte1 - 0xa1) * 94) + byte2 - 0xa1);
-                } else if(byte1 == SS3 ) {
-                    return CoderResult.malformedForLength(1);
-                } else if ( byte1 <= 0x9f ) {                // valid single byte
-                    outputChar = byteToCharTable.charAt(byte1);
-                } else if (byte1 < 0xa1 || byte1 > 0xfe) {   // invalid range?
-                    return CoderResult.malformedForLength(1);
-                } else {                                     // G1
-                    if (sl - sp < 2) {
-                        return CoderResult.UNDERFLOW;
-                    }
-                    byte2 = sa[sp + 1] & 0xff;
-                    inputSize = 2;
-                    if ( byte2 < 0xa1 || byte2 > 0xfe) {
-                        return CoderResult.malformedForLength(2);
-                    }
-                    outputChar = mappingTableG1.charAt(((byte1 - 0xa1) * 94) + byte2 - 0xa1);
-                }
-                if  (outputChar == '\uFFFD')
-                    return CoderResult.unmappableForLength(inputSize);
-                if (dl - dp < 1)
-                    return CoderResult.OVERFLOW;
-                da[dp++] = outputChar;
-                sp += inputSize;
-            }
-            return CoderResult.UNDERFLOW;
-            } finally {
-                src.position(sp - src.arrayOffset());
-                dst.position(dp - dst.arrayOffset());
-            }
-        }
-
-        private CoderResult decodeBufferLoop(ByteBuffer src, CharBuffer dst) {
-            int mark = src.position();
-            try {
-                while (src.hasRemaining()) {
-                    int byte1, byte2;
-                    int inputSize = 1;
-                    char outputChar = '\uFFFD';
-                    byte1 = src.get() & 0xff;
-
-                    if (byte1 == SS2) {
-                        if (src.remaining() < 3)
-                            return CoderResult.UNDERFLOW;
-                        byte1 = src.get() & 0xff;
-                        inputSize = 2;
-                        if ( byte1 == 0xa2)
-                            mappingTableG2 = mappingTableG2a2;
-                        else if ( byte1 == 0xac)
-                            mappingTableG2 = mappingTableG2ac;
-                        else if ( byte1 == 0xad)
-                          mappingTableG2 = mappingTableG2ad;
-                        else
-                            return CoderResult.malformedForLength(2);
-                        byte1 = src.get() & 0xff;
-                        if ( byte1 < 0xa1 || byte1 > 0xfe)
-                            return CoderResult.malformedForLength(3);
-                        byte2 = src.get() & 0xff;
-                        if ( byte2 < 0xa1 || byte2 > 0xfe)
-                            return CoderResult.malformedForLength(4);
-                        inputSize = 4;
-                        outputChar = mappingTableG2.charAt(((byte1 - 0xa1) * 94) + byte2 - 0xa1);
-                    } else if (byte1 == SS3 ) {
-                        return CoderResult.malformedForLength(1);
-                    } else if ( byte1 <= 0x9f ) {                // valid single byte
-                        outputChar = byteToCharTable.charAt(byte1);
-                    } else if (byte1 < 0xa1 || byte1 > 0xfe) {   // invalid range?
-                        return CoderResult.malformedForLength(1);
-                    } else {                                     // G1
-                        if (src.remaining() < 1)
-                            return CoderResult.UNDERFLOW;
-                        byte2 = src.get() & 0xff;
-                        if ( byte2 < 0xa1 || byte2 > 0xfe) {
-                            return CoderResult.malformedForLength(2);
-                        }
-                        inputSize = 2;
-                        outputChar = mappingTableG1.charAt(((byte1 - 0xa1) * 94) + byte2 - 0xa1);
-                    }
-
-                    if (outputChar == '\uFFFD')
-                        return CoderResult.unmappableForLength(inputSize);
-                    if (!dst.hasRemaining())
-                        return CoderResult.OVERFLOW;
-                    dst.put(outputChar);
-                    mark += inputSize;
-                }
-                return CoderResult.UNDERFLOW;
-            } finally {
-                    src.position(mark);
-            }
-        }
-
-        protected CoderResult decodeLoop(ByteBuffer src, CharBuffer dst) {
-            if (true && src.hasArray() && dst.hasArray())
-                return decodeArrayLoop(src, dst);
-            else
-                return decodeBufferLoop(src, dst);
-        }
-
-        private final static String byteToCharTable;
-        private final static String mappingTableG1;
-        private final static String mappingTableG2a2;
-        private final static String mappingTableG2ac;
-        private final static String mappingTableG2ad;
-
-        static {
-            byteToCharTable =
-                "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
-                "\u0008\u0009\n\u000B\u000C\r\u000E\u000F" +
-                "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
-                "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
-                "\u0020\u0021\"\u0023\u0024\u0025\u0026\u0027" +
-                "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
-                "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
-                "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
-                "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
-                "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
-                "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
-                "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
-                "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
-                "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
-                "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
-                "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
-                "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
-                "\u0088\u0089\u008A\u008B\u008C\u008D\uFFFD\uFFFD" +
-                "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +
-                "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F"
-                ;
-            mappingTableG1 =
-                "\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A" +
-                "\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52" +
-                "\u00B7\uFE54\uFE55\uFE56\uFE57\uFE31\u2014\uFE32" +
-                "\uFE58\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35" +
-                "\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39" +
-                "\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D" +
-                "\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41" +
-                "\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A\uFE5B" +
-                "\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D" +
-                "\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\u00A7" +
-                "\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605" +
-                "\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105" +
-                "\u203E\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E" +
-                "\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\u00D7" +
-                "\u00F7\u00B1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267" +
-                "\u2260\u221E\u2252\u2261\uFE62\uFE63\uFE64\uFE65" +
-                "\uFE66\u223C\u2229\u222A\u22A5\u2220\u221F\u22BF" +
-                "\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642" +
-                "\u2295\u2299\u2191\u2193\u2192\u2190\u2196\u2197" +
-                "\u2199\u2198\u2225\uFF5C\uFF0F\uFF3C\u2215\uFE68" +
-                "\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103" +
-                "\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E" +
-                "\u33CE\u33A1\u338E\u338F\u33C4\u00B0\u5159\u515B" +
-                "\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581" +
-                "\u2582\u2583\u2584\u2585\u2586\u2587\u2588\u258F" +
-                "\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534" +
-                "\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C" +
-                "\u2510\u2514\u2518\u256D\u256E\u2570\u256F\u2550" +
-                "\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571" +
-                "\u2572\u2573\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFF10\uFF11\uFF12\uFF13\uFF14\uFF15" +
-                "\uFF16\uFF17\uFF18\uFF19\u2160\u2161\u2162\u2163" +
-                "\u2164\u2165\u2166\u2167\u2168\u2169\u3021\u3022" +
-                "\u3023\u3024\u3025\u3026\u3027\u3028\u3029\u5341" +
-                "\u5344\u5345\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26" +
-                "\uFF27\uFF28\uFF29\uFF2A\uFF2B\uFF2C\uFF2D\uFF2E" +
-                "\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36" +
-                "\uFF37\uFF38\uFF39\uFF3A\uFF41\uFF42\uFF43\uFF44" +
-                "\uFF45\uFF46\uFF47\uFF48\uFF49\uFF4A\uFF4B\uFF4C" +
-                "\uFF4D\uFF4E\uFF4F\uFF50\uFF51\uFF52\uFF53\uFF54" +
-                "\uFF55\uFF56\uFF57\uFF58\uFF59\uFF5A\u0391\u0392" +
-                "\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A" +
-                "\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3" +
-                "\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2" +
-                "\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA" +
-                "\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3" +
-                "\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u3105\u3106" +
-                "\u3107\u3108\u3109\u310A\u310B\u310C\u310D\u310E" +
-                "\u310F\u3110\u3111\u3112\u3113\u3114\u3115\u3116" +
-                "\u3117\u3118\u3119\u311A\u311B\u311C\u311D\u311E" +
-                "\u311F\u3120\u3121\u3122\u3123\u3124\u3125\u3126" +
-                "\u3127\u3128\u3129\u02D9\u02C9\u02CA\u02C7\u02CB" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2460\u2461" +
-                "\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469" +
-                "\u2474\u2475\u2476\u2477\u2478\u2479\u247A\u247B" +
-                "\u247C\u247D\u2170\u2171\u2172\u2173\u2174\u2175" +
-                "\u2176\u2177\u2178\u2179\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\u4E00\u4E28\u4E36\u4E3F" +
-                "\u4E59\u4E85\u4E8C\u4EA0\u4EBA\u513F\u5165\u516B" +
-                "\u5182\u5196\u51AB\u51E0\u51F5\u5200\u529B\u52F9" +
-                "\u5315\u531A\u5338\u5341\u535C\u5369\u5382\u53B6" +
-                "\u53C8\u53E3\u56D7\u571F\u58EB\u590A\u5915\u5927" +
-                "\u5973\u5B50\u5B80\u5BF8\u5C0F\u5C22\u5C38\u5C6E" +
-                "\u5C71\u5DDB\u5DE5\u5DF1\u5DFE\u5E72\u5E7A\u5E7F" +
-                "\u5EF4\u5EFE\u5F0B\u5F13\u5F50\u5F61\u5F73\u5FC3" +
-                "\u6208\u6236\u624B\u652F\u6534\u6587\u6597\u65A4" +
-                "\u65B9\u65E0\u65E5\u66F0\u6708\u6728\u6B20\u6B62" +
-                "\u6B79\u6BB3\u6BCB\u6BD4\u6BDB\u6C0F\u6C14\u6C34" +
-                "\u706B\u722A\u7236\u723B\u723F\u7247\u7259\u725B" +
-                "\u72AC\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528" +
-                "\u7530\u758B\u7592\u7676\u767D\u76AE\u76BF\u76EE" +
-                "\u77DB\u77E2\u77F3\u793A\u79B8\u79BE\u7A74\u7ACB" +
-                "\u7AF9\u7C73\u7CF8\u7F36\u7F51\u7F8A\u7FBD\u8001" +
-                "\u800C\u8012\u8033\u807F\u8089\u81E3\u81EA\u81F3" +
-                "\u81FC\u820C\u821B\u821F\u826E\u8272\u8278\u864D" +
-                "\u866B\u8840\u884C\u8863\u897E\u898B\u89D2\u8A00" +
-                "\u8C37\u8C46\u8C55\u8C78\u8C9D\u8D64\u8D70\u8DB3" +
-                "\u8EAB\u8ECA\u8F9B\u8FB0\u8FB5\u9091\u9149\u91C6" +
-                "\u91CC\u91D1\u9577\u9580\u961C\u96B6\u96B9\u96E8" +
-                "\u9752\u975E\u9762\u9769\u97CB\u97ED\u97F3\u9801" +
-                "\u98A8\u98DB\u98DF\u9996\u9999\u99AC\u9AA8\u9AD8" +
-                "\u9ADF\u9B25\u9B2F\u9B32\u9B3C\u9B5A\u9CE5\u9E75" +
-                "\u9E7F\u9EA5\u9EBB\u9EC3\u9ECD\u9ED1\u9EF9\u9EFD" +
-                "\u9F0E\u9F13\u9F20\u9F3B\u9F4A\u9F52\u9F8D\u9F9C" +
-                "\u9FA0\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2400\u2401" +
-                "\u2402\u2403\u2404\u2405\u2406\u2407\u2408\u2409" +
-                "\u240A\u240B\u240C\u240D\u240E\u240F\u2410\u2411" +
-                "\u2412\u2413\u2414\u2415\u2416\u2417\u2418\u2419" +
-                "\u241A\u241B\u241C\u241D\u241E\u241F\u2421\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D" +
-                "\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200" +
-                "\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B" +
-                "\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F" +
-                "\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9" +
-                "\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51" +
-                "\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5" +
-                "\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13" +
-                "\u624D\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B" +
-                "\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1" +
-                "\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4" +
-                "\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6" +
-                "\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339" +
-                "\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD" +
-                "\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24" +
-                "\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3" +
-                "\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4" +
-                "\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79" +
-                "\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236" +
-                "\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19\u4E16" +
-                "\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5" +
-                "\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9" +
-                "\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA" +
-                "\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D" +
-                "\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB" +
-                "\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC" +
-                "\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0" +
-                "\u53E5\u53ED\u53FB\u56DB\u56DA\u5916\u592E\u5931" +
-                "\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6" +
-                "\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5" +
-                "\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E" +
-                "\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10" +
-                "\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC" +
-                "\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532" +
-                "\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2" +
-                "\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52" +
-                "\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09" +
-                "\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2" +
-                "\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149" +
-                "\u5147\u5146\u5148\u5168\u5171\u518D\u51B0\u5217" +
-                "\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320" +
-                "\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401" +
-                "\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406" +
-                "\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D" +
-                "\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984" +
-                "\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58" +
-                "\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE" +
-                "\u5E06\u5E76\u5E74\u5F0F\u5F1B\u5FD9\u5FD6\u620E" +
-                "\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9" +
-                "\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734" +
-                "\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57" +
-                "\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D" +
-                "\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8" +
-                "\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033" +
-                "\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC" +
-                "\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840" +
-                "\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F" +
-                "\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50" +
-                "\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46" +
-                "\u4F63\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D" +
-                "\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7" +
-                "\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA" +
-                "\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E" +
-                "\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442" +
-                "\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435" +
-                "\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C" +
-                "\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D" +
-                "\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E" +
-                "\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D" +
-                "\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B" +
-                "\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E" +
-                "\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87" +
-                "\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79" +
-                "\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA" +
-                "\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289" +
-                "\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F" +
-                "\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B" +
-                "\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751" +
-                "\u675C\u6756\u675E\u6749\u6746\u6760\u6753\u6757" +
-                "\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89" +
-                "\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68" +
-                "\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86" +
-                "\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D" +
-                "\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C" +
-                "\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0" +
-                "\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098" +
-                "\u809B\u809A\u80B2\u826F\u8292\u828B\u828D\u898B" +
-                "\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70" +
-                "\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5" +
-                "\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149" +
-                "\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26" +
-                "\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F" +
-                "\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86" +
-                "\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E" +
-                "\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177" +
-                "\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A" +
-                "\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354" +
-                "\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4" +
-                "\u53D7\u5473\u5475\u5496\u5478\u5495\u5480\u547B" +
-                "\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476" +
-                "\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA" +
-                "\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C" +
-                "\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB" +
-                "\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB" +
-                "\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64" +
-                "\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A" +
-                "\u5C48\u5C45\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB" +
-                "\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11" +
-                "\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26" +
-                "\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0" +
-                "\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016" +
-                "\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216" +
-                "\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4" +
-                "\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4" +
-                "\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7" +
-                "\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6" +
-                "\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613" +
-                "\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A" +
-                "\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C" +
-                "\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F" +
-                "\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A" +
-                "\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3" +
-                "\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE" +
-                "\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9" +
-                "\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1" +
-                "\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0\u7095" +
-                "\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248" +
-                "\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9" +
-                "\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A" +
-                "\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940" +
-                "\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54" +
-                "\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1" +
-                "\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D" +
-                "\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1" +
-                "\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7" +
-                "\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1" +
-                "\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580" +
-                "\u961C\u9640\u963F\u963B\u9644\u9642\u96B9\u96E8" +
-                "\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF" +
-                "\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8" +
-                "\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA" +
-                "\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E" +
-                "\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9" +
-                "\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC" +
-                "\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7" +
-                "\u54C2\u54BD\u54AA\u54C1\u54C4\u54C8\u54AF\u54AB" +
-                "\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B" +
-                "\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951" +
-                "\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8" +
-                "\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69" +
-                "\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F" +
-                "\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F" +
-                "\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88" +
-                "\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D" +
-                "\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062" +
-                "\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC" +
-                "\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307" +
-                "\u62F1\u62F7\u62EF\u62EC\u62FE\u62F4\u6311\u6302" +
-                "\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620" +
-                "\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF" +
-                "\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5" +
-                "\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8" +
-                "\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2" +
-                "\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9" +
-                "\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E" +
-                "\u6D17\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39" +
-                "\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB" +
-                "\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4" +
-                "\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7" +
-                "\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D" +
-                "\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2" +
-                "\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3" +
-                "\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC" +
-                "\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949" +
-                "\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F" +
-                "\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09" +
-                "\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8010\u800D" +
-                "\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC" +
-                "\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222" +
-                "\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5" +
-                "\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4" +
-                "\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679" +
-                "\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02" +
-                "\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC" +
-                "\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5\u8FED\u8FEB\u8FE4" +
-                "\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD" +
-                "\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB" +
-                "\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999" +
-                "\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025" +
-                "\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012" +
-                "\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B" +
-                "\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B" +
-                "\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6" +
-                "\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F" +
-                "\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC" +
-                "\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1" +
-                "\u5509\u54EE\u54EA\u54E6\u5527\u5507\u54FD\u550F" +
-                "\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F" +
-                "\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B" +
-                "\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09" +
-                "\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5" +
-                "\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD" +
-                "\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE" +
-                "\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91" +
-                "\u5F90\u6059\u6063\u6065\u6050\u6055\u606D\u6069" +
-                "\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085" +
-                "\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F" +
-                "\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D" +
-                "\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599" +
-                "\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C" +
-                "\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838" +
-                "\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3" +
-                "\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C" +
-                "\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89" +
-                "\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A" +
-                "\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93" +
-                "\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A" +
-                "\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9" +
-                "\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8" +
-                "\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE" +
-                "\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7" +
-                "\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B" +
-                "\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728" +
-                "\u77E9\u7830\u7827\u7838\u781D\u7834\u7837\u7825" +
-                "\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F" +
-                "\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7" +
-                "\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06" +
-                "\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22" +
-                "\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B" +
-                "\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8004\u8018" +
-                "\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0" +
-                "\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD" +
-                "\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A" +
-                "\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A" +
-                "\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339" +
-                "\u8336\u8317\u8340\u8331\u8328\u8343\u8654\u868A" +
-                "\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870" +
-                "\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E" +
-                "\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11" +
-                "\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2" +
-                "\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA" +
-                "\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD" +
-                "\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC" +
-                "\u91D9\u9583\u9662\u9663\u9661\u965B\u965D\u9664" +
-                "\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25" +
-                "\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043" +
-                "\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075" +
-                "\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195" +
-                "\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310" +
-                "\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546" +
-                "\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531" +
-                "\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C" +
-                "\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709" +
-                "\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802" +
-                "\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49" +
-                "\u5A66\u5A6A\u5A40\u5A3C\u5A62\u5A5A\u5A46\u5A4A" +
-                "\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09" +
-                "\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E" +
-                "\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24" +
-                "\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7" +
-                "\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C" +
-                "\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0" +
-                "\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4" +
-                "\u60E6\u60BD\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8" +
-                "\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B" +
-                "\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377" +
-                "\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B" +
-                "\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392" +
-                "\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556" +
-                "\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554" +
-                "\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D" +
-                "\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B" +
-                "\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1" +
-                "\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885" +
-                "\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA" +
-                "\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2" +
-                "\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB" +
-                "\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5" +
-                "\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA" +
-                "\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF" +
-                "\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D" +
-                "\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405" +
-                "\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6\u74F7" +
-                "\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4" +
-                "\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB" +
-                "\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843" +
-                "\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20" +
-                "\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92" +
-                "\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C" +
-                "\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31" +
-                "\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A" +
-                "\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124" +
-                "\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398" +
-                "\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393" +
-                "\u8389\u83A0\u8377\u837B\u837C\u8386\u83A7\u8655" +
-                "\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB" +
-                "\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892" +
-                "\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23" +
-                "\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A" +
-                "\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66" +
-                "\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017" +
-                "\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F" +
-                "\u9022\u9016\u901B\u9014\u90E8\u90ED\u90FD\u9157" +
-                "\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589" +
-                "\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677" +
-                "\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803" +
-                "\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D" +
-                "\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700" +
-                "\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB" +
-                "\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D" +
-                "\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583" +
-                "\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC" +
-                "\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A" +
-                "\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9" +
-                "\u58FA\u5960\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7" +
-                "\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B" +
-                "\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D" +
-                "\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C" +
-                "\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6" +
-                "\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4" +
-                "\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F" +
-                "\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6" +
-                "\u63CD\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE" +
-                "\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E" +
-                "\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670" +
-                "\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE" +
-                "\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7" +
-                "\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2" +
-                "\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA" +
-                "\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC" +
-                "\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21" +
-                "\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B" +
-                "\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34" +
-                "\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB\u6E89" +
-                "\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119" +
-                "\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C" +
-                "\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A" +
-                "\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B" +
-                "\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB" +
-                "\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696" +
-                "\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F" +
-                "\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98\u7A97\u7A96" +
-                "\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54" +
-                "\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50" +
-                "\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62" +
-                "\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085" +
-                "\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E" +
-                "\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8" +
-                "\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4" +
-                "\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA" +
-                "\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B" +
-                "\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE" +
-                "\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60" +
-                "\u8A55\u8A5E\u8A3C\u8A41\u8A54\u8A5B\u8A50\u8A46" +
-                "\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC" +
-                "\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6" +
-                "\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB" +
-                "\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC" +
-                "\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102" +
-                "\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215" +
-                "\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594" +
-                "\u958F\u958B\u9591\u9593\u9592\u958E\u968A\u968E" +
-                "\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1" +
-                "\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805" +
-                "\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED" +
-                "\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5" +
-                "\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF" +
-                "\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2" +
-                "\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC" +
-                "\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5" +
-                "\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858" +
-                "\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862" +
-                "\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD" +
-                "\u5ABC\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79" +
-                "\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F" +
-                "\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E" +
-                "\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106" +
-                "\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D" +
-                "\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416" +
-                "\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687" +
-                "\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D" +
-                "\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A" +
-                "\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963" +
-                "\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2" +
-                "\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5" +
-                "\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C" +
-                "\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169" +
-                "\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165" +
-                "\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345" +
-                "\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441" +
-                "\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0" +
-                "\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE" +
-                "\u76DF\u775B\u776B\u7766\u775E\u7763\u7779\u776A" +
-                "\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0" +
-                "\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F" +
-                "\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20" +
-                "\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60" +
-                "\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91" +
-                "\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9" +
-                "\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170" +
-                "\u8178\u8165\u816E\u8173\u816B\u8179\u817A\u8166" +
-                "\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466" +
-                "\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463" +
-                "\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713" +
-                "\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706" +
-                "\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD" +
-                "\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72" +
-                "\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0" +
-                "\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B" +
-                "\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8" +
-                "\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8" +
-                "\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03" +
-                "\u8F09\u8EFE\u8F0A\u8F9F\u8FB2\u904B\u904A\u9053" +
-                "\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E" +
-                "\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A" +
-                "\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E" +
-                "\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245" +
-                "\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD" +
-                "\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756" +
-                "\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C" +
-                "\u98FC\u98F4\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1" +
-                "\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5" +
-                "\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE" +
-                "\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE" +
-                "\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D" +
-                "\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718" +
-                "\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885" +
-                "\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1" +
-                "\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE" +
-                "\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF" +
-                "\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57" +
-                "\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147" +
-                "\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158" +
-                "\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F" +
-                "\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1" +
-                "\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995" +
-                "\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB" +
-                "\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3" +
-                "\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4" +
-                "\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22\u6EFF" +
-                "\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B" +
-                "\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7" +
-                "\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292" +
-                "\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D" +
-                "\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1" +
-                "\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7" +
-                "\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31" +
-                "\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75" +
-                "\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9" +
-                "\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0" +
-                "\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5" +
-                "\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC\u7F70\u7FE0\u7FE1" +
-                "\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188" +
-                "\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E" +
-                "\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2" +
-                "\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1" +
-                "\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718" +
-                "\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8" +
-                "\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3" +
-                "\u8A8D\u8AA1\u8A93\u8AA4\u8AAA\u8AA5\u8AA8\u8A98" +
-                "\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1" +
-                "\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15" +
-                "\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E" +
-                "\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178" +
-                "\u9177\u9174\u9278\u92AC\u9280\u9285\u9298\u9296" +
-                "\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8" +
-                "\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC" +
-                "\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF" +
-                "\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0" +
-                "\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B" +
-                "\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108" +
-                "\u5109\u5105\u51DC\u5287\u5288\u5289\u528D\u528A" +
-                "\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634" +
-                "\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630" +
-                "\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6" +
-                "\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE" +
-                "\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62" +
-                "\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0" +
-                "\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D" +
-                "\u6155\u6182\u617C\u6170\u616B\u617E\u61A7\u6190" +
-                "\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E" +
-                "\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0" +
-                "\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB" +
-                "\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578" +
-                "\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01" +
-                "\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02" +
-                "\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6" +
-                "\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D" +
-                "\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97" +
-                "\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1" +
-                "\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483" +
-                "\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626" +
-                "\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C" +
-                "\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5" +
-                "\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B" +
-                "\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7" +
-                "\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB" +
-                "\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9" +
-                "\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF\u7FE9" +
-                "\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517" +
-                "\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523" +
-                "\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774" +
-                "\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C" +
-                "\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915" +
-                "\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8" +
-                "\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6" +
-                "\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6" +
-                "\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1" +
-                "\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F" +
-                "\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F" +
-                "\u8F29\u8F26\u8F2A\u8F1C\u8F1E\u8F25\u9069\u906E" +
-                "\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187" +
-                "\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92E4" +
-                "\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD" +
-                "\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B" +
-                "\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912" +
-                "\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2" +
-                "\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77" +
-                "\u9B6F\u9D06\u9D09\u9D03\u9EA9\u9EBE\u9ECE\u58A8" +
-                "\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA" +
-                "\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669" +
-                "\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C" +
-                "\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D" +
-                "\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9" +
-                "\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5" +
-                "\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2" +
-                "\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9" +
-                "\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59" +
-                "\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47" +
-                "\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1" +
-                "\u6FA1\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9" +
-                "\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2" +
-                "\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4" +
-                "\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C" +
-                "\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E" +
-                "\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D" +
-                "\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9" +
-                "\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A" +
-                "\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10" +
-                "\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9" +
-                "\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548" +
-                "\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783" +
-                "\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925" +
-                "\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1" +
-                "\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7" +
-                "\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4" +
-                "\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F" +
-                "\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072" +
-                "\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333" +
-                "\u932F\u9322\u92FC\u932B\u9304\u931A\u9310\u9326" +
-                "\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA" +
-                "\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B" +
-                "\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D" +
-                "\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A" +
-                "\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28" +
-                "\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8" +
-                "\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5" +
-                "\u568E\u5680\u5690\u5685\u5687\u568F\u58D5\u58D3" +
-                "\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68" +
-                "\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9" +
-                "\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA" +
-                "\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED" +
-                "\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2" +
-                "\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C" +
-                "\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB" +
-                "\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5" +
-                "\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED" +
-                "\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9" +
-                "\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3" +
-                "\u77AA\u77B0\u77AC\u77A7\u77AD\u77EF\u78F7\u78FA" +
-                "\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07" +
-                "\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE" +
-                "\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37" +
-                "\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34" +
-                "\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC" +
-                "\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA" +
-                "\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209" +
-                "\u8271\u85AA\u8584\u857E\u859C\u8591\u8594\u85AF" +
-                "\u859B\u8587\u85A8\u858A\u85A6\u8667\u87C0\u87D1" +
-                "\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB" +
-                "\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17" +
-                "\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41" +
-                "\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8" +
-                "\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45" +
-                "\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139" +
-                "\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A" +
-                "\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A" +
-                "\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8" +
-                "\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935" +
-                "\u9A01\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F" +
-                "\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B" +
-                "\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5E\u61E3" +
-                "\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7" +
-                "\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8" +
-                "\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B" +
-                "\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE" +
-                "\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658" +
-                "\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61" +
-                "\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E" +
-                "\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61" +
-                "\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD" +
-                "\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0" +
-                "\u85BA\u85B9\u87EF\u87EC\u87F2\u87E0\u8986\u89B2" +
-                "\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59" +
-                "\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D" +
-                "\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A" +
-                "\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A" +
-                "\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9" +
-                "\u96DB\u96DE\u9724\u97A3\u97A6\u97AD\u97F9\u984D" +
-                "\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D" +
-                "\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E" +
-                "\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D" +
-                "\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u56A8\u58DE" +
-                "\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6" +
-                "\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA" +
-                "\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018" +
-                "\u7206\u720D\u7258\u72A2\u7378\u737A\u74BD\u74CA" +
-                "\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1" +
-                "\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40" +
-                "\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7E73\u7F85\u7FB6" +
-                "\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4" +
-                "\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960" +
-                "\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A" +
-                "\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72" +
-                "\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD" +
-                "\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3" +
-                "\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4" +
-                "\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761" +
-                "\u97DC\u97FB\u985E\u9858\u985B\u98BC\u9945\u9949" +
-                "\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89" +
-                "\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4" +
-                "\u52F8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43" +
-                "\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519" +
-                "\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B" +
-                "\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7" +
-                "\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D" +
-                "\u7E7C\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9" +
-                "\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815" +
-                "\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F" +
-                "\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4" +
-                "\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952" +
-                "\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D" +
-                "\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137" +
-                "\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC" +
-                "\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA" +
-                "\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3" +
-                "\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823" +
-                "\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74\u8B77" +
-                "\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA" +
-                "\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2" +
-                "\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45" +
-                "\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25" +
-                "\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C" +
-                "\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F" +
-                "\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051" +
-                "\u7058\u7380\u74E4\u758A\u766E\u766C\u79B3\u7C60" +
-                "\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80" +
-                "\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451" +
-                "\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55" +
-                "\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3" +
-                "\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200" +
-                "\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64" +
-                "\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F" +
-                "\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768" +
-                "\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1" +
-                "\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9" +
-                "\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836" +
-                "\u8839\u8862\u8B93\u8B92\u8B96\u8277\u8D1B\u91C0" +
-                "\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22" +
-                "\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77" +
-                "\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0" +
-                "\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23" +
-                "\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65" +
-                "\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77" +
-                "\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31" +
-                "\u9E1B\u9E1E\u7C72\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD"
-                ;
-            mappingTableG2a2 =
-                "\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47" +
-                "\u4E8D\u56D7\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E" +
-                "\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9" +
-                "\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC" +
-                "\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1" +
-                "\u4EDD\u4EDA\u520C\u5209\u531C\u534C\u5722\u5723" +
-                "\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73" +
-                "\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15\u6C36" +
-                "\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A" +
-                "\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00" +
-                "\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04" +
-                "\u4EF4\u4F12\u51B1\u5213\u5210\u52A6\u5322\u531F" +
-                "\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734" +
-                "\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F" +
-                "\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF" +
-                "\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF" +
-                "\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260" +
-                "\u625A\u6265\u6537\u65EF\u65EE\u673E\u6739\u6738" +
-                "\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52" +
-                "\u6C5C\u6C4F\u6C4A\u6C54\u6C4B\u6C4C\u7071\u725E" +
-                "\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278" +
-                "\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097" +
-                "\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56" +
-                "\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52" +
-                "\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F" +
-                "\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363" +
-                "\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445" +
-                "\u5419\u541C\u5425\u5418\u543D\u544F\u5441\u5428" +
-                "\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C" +
-                "\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0" +
-                "\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E" +
-                "\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89" +
-                "\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E" +
-                "\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78" +
-                "\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3" +
-                "\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000" +
-                "\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287" +
-                "\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D" +
-                "\u6272\u6274\u65F0\u65F4\u65F3\u65F2\u65F5\u6745" +
-                "\u6747\u6759\u6755\u674C\u6748\u675D\u674D\u675A" +
-                "\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84" +
-                "\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87" +
-                "\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074" +
-                "\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA" +
-                "\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539" +
-                "\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090" +
-                "\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293" +
-                "\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1" +
-                "\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D" +
-                "\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76" +
-                "\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A" +
-                "\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92" +
-                "\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235" +
-                "\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C" +
-                "\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488" +
-                "\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D" +
-                "\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7" +
-                "\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776" +
-                "\u5780\u5775\u577B\u5773\u5774\u5762\u5768\u577D" +
-                "\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC" +
-                "\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0" +
-                "\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44" +
-                "\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC" +
-                "\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5" +
-                "\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22" +
-                "\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5" +
-                "\u602D\u6026\u6019\u6032\u600B\u6034\u600A\u6017" +
-                "\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E" +
-                "\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD" +
-                "\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3" +
-                "\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB" +
-                "\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B" +
-                "\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785" +
-                "\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784" +
-                "\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783" +
-                "\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E" +
-                "\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6" +
-                "\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3" +
-                "\u6CC6\u6CED\u6CF2\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D" +
-                "\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9" +
-                "\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086" +
-                "\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6" +
-                "\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC" +
-                "\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC" +
-                "\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598" +
-                "\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9" +
-                "\u77FB\u77FA\u77F7\u7942\u793F\u79C5\u7A78\u7A7B" +
-                "\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8" +
-                "\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298" +
-                "\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4" +
-                "\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2" +
-                "\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3" +
-                "\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3" +
-                "\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5" +
-                "\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9" +
-                "\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9" +
-                "\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397" +
-                "\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF" +
-                "\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6" +
-                "\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0" +
-                "\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B" +
-                "\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4" +
-                "\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD" +
-                "\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB" +
-                "\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8" +
-                "\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB\u5CDE" +
-                "\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF" +
-                "\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22" +
-                "\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3" +
-                "\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054" +
-                "\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C" +
-                "\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E" +
-                "\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303" +
-                "\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313" +
-                "\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA" +
-                "\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622" +
-                "\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F" +
-                "\u6710\u67C1\u67F2\u67C8\u67BA\u67DC\u67BB\u67F8" +
-                "\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5" +
-                "\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9" +
-                "\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC" +
-                "\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA" +
-                "\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0" +
-                "\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F" +
-                "\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A" +
-                "\u6D11\u6D00\u6D1D\u6D42\u6D01\u6D18\u6D37\u6D03" +
-                "\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09" +
-                "\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4" +
-                "\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273" +
-                "\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6" +
-                "\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6" +
-                "\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6" +
-                "\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7" +
-                "\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A" +
-                "\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812" +
-                "\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A" +
-                "\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6" +
-                "\u79CE\u7A80\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78" +
-                "\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58" +
-                "\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037" +
-                "\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5" +
-                "\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7" +
-                "\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9" +
-                "\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4" +
-                "\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0" +
-                "\u82EA\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674" +
-                "\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3" +
-                "\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1" +
-                "\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8" +
-                "\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E" +
-                "\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5" +
-                "\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C" +
-                "\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194" +
-                "\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A" +
-                "\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E" +
-                "\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A" +
-                "\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1\u550A" +
-                "\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701" +
-                "\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD" +
-                "\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1" +
-                "\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F" +
-                "\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC" +
-                "\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7" +
-                "\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC" +
-                "\u5F33\u5F30\u5F67\u605D\u605A\u6067\u6041\u60A2" +
-                "\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B" +
-                "\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310" +
-                "\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339" +
-                "\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354" +
-                "\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357" +
-                "\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2" +
-                "\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A" +
-                "\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831" +
-                "\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834" +
-                "\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A" +
-                "\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D" +
-                "\u8082\u6B88\u6BE6\u6BE4\u6BE8\u6BE3\u6BE2\u6BE7" +
-                "\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92" +
-                "\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F" +
-                "\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F" +
-                "\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84" +
-                "\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3" +
-                "\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE" +
-                "\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE" +
-                "\u70E1\u7242\u7278\u7277\u7276\u7300\u72FA\u72F4" +
-                "\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5" +
-                "\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB" +
-                "\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF" +
-                "\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB" +
-                "\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D" +
-                "\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719" +
-                "\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F" +
-                "\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831" +
-                "\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB" +
-                "\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD" +
-                "\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8" +
-                "\u7B10\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E" +
-                "\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D" +
-                "\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13" +
-                "\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60" +
-                "\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016" +
-                "\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB" +
-                "\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319" +
-                "\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322" +
-                "\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316" +
-                "\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C" +
-                "\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652" +
-                "\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697" +
-                "\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7" +
-                "\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844" +
-                "\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F" +
-                "\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B" +
-                "\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1" +
-                "\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC" +
-                "\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5" +
-                "\u90D8\u90DB\u90D7\u90DC\u90E4\u9150\u914E\u914F" +
-                "\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF" +
-                "\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053" +
-                "\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A" +
-                "\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064" +
-                "\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B" +
-                "\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575" +
-                "\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562" +
-                "\u5536\u5535\u5530\u5552\u5545\u550C\u5532\u5565" +
-                "\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A" +
-                "\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800" +
-                "\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807" +
-                "\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC" +
-                "\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D" +
-                "\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38" +
-                "\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64" +
-                "\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E" +
-                "\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51" +
-                "\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59" +
-                "\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D" +
-                "\u5D26\u5D25\u5D0F\u5D30\u5D12\u5D23\u5D1F\u5D2E" +
-                "\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36" +
-                "\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE" +
-                "\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD" +
-                "\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD" +
-                "\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E" +
-                "\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390" +
-                "\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4" +
-                "\u633B\u639F\u6378\u6385\u6381\u6391\u638D\u6370" +
-                "\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662" +
-                "\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE" +
-                "\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874" +
-                "\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA" +
-                "\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889" +
-                "\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36" +
-                "\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C" +
-                "\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9" +
-                "\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF" +
-                "\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA" +
-                "\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9" +
-                "\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB" +
-                "\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104" +
-                "\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8" +
-                "\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F" +
-                "\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF" +
-                "\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401" +
-                "\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B" +
-                "\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF\u75CB" +
-                "\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F" +
-                "\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B" +
-                "\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826" +
-                "\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B" +
-                "\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94" +
-                "\u7A90\u7B35\u7B3B\u7B34\u7B25\u7B30\u7B22\u7B24" +
-                "\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F" +
-                "\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3" +
-                "\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29" +
-                "\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63" +
-                "\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0" +
-                "\u7FD1\u7FC7\u7FCF\u7FC9\u801F\u801E\u801B\u8047" +
-                "\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F" +
-                "\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211" +
-                "\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3" +
-                "\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381" +
-                "\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C" +
-                "\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388" +
-                "\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u8659" +
-                "\u8656\u86BF\u86B7\u86C2\u86C1\u86C5\u86BA\u86B0" +
-                "\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC" +
-                "\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2" +
-                "\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899" +
-                "\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982" +
-                "\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39" +
-                "\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79" +
-                "\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD" +
-                "\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C" +
-                "\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3" +
-                "\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153" +
-                "\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9" +
-                "\u91EA\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588" +
-                "\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804" +
-                "\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3" +
-                "\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082" +
-                "\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591" +
-                "\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588" +
-                "\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C" +
-                "\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837" +
-                "\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825" +
-                "\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838" +
-                "\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A" +
-                "\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95" +
-                "\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9" +
-                "\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA" +
-                "\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30" +
-                "\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51" +
-                "\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59" +
-                "\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40" +
-                "\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9" +
-                "\u60B9\u60CC\u60E2\u60CE\u60C4\u6114\u60F2\u610A" +
-                "\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1" +
-                "\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A" +
-                "\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3" +
-                "\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5" +
-                "\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3" +
-                "\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9" +
-                "\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C" +
-                "\u659D\u659E\u65AE\u65D0\u65D2\u667C\u666C\u667B" +
-                "\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3" +
-                "\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6" +
-                "\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1" +
-                "\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6" +
-                "\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A" +
-                "\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1" +
-                "\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B" +
-                "\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0" +
-                "\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49" +
-                "\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41" +
-                "\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B" +
-                "\u6E03\u6E2E\u6E5E\u6E68\u6E5C\u6E61\u6E31\u6E28" +
-                "\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65" +
-                "\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66" +
-                "\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E" +
-                "\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A" +
-                "\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B" +
-                "\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332" +
-                "\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430" +
-                "\u742B\u7416\u741A\u7421\u742D\u7431\u7424\u7423" +
-                "\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C" +
-                "\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7" +
-                "\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745" +
-                "\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864" +
-                "\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869" +
-                "\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02" +
-                "\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A" +
-                "\u7B47\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45" +
-                "\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53" +
-                "\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52" +
-                "\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65" +
-                "\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050" +
-                "\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D" +
-                "\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204" +
-                "\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423" +
-                "\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410" +
-                "\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5" +
-                "\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9" +
-                "\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3\u83D5" +
-                "\u83FA\u83C7\u83D1\u83EA\u8413\u839A\u83C3\u83EC" +
-                "\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE" +
-                "\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD" +
-                "\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848" +
-                "\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE" +
-                "\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995" +
-                "\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39" +
-                "\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48" +
-                "\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA" +
-                "\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8" +
-                "\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9" +
-                "\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA\u8EF9\u8EE6" +
-                "\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1" +
-                "\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C" +
-                "\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100" +
-                "\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160" +
-                "\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C" +
-                "\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202" +
-                "\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D" +
-                "\u958C\u9590\u9687\u967E\u9688\u9689\u9683\u9680" +
-                "\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E" +
-                "\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6" +
-                "\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8" +
-                "\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6" +
-                "\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB" +
-                "\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4" +
-                "\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6" +
-                "\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868" +
-                "\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D" +
-                "\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7" +
-                "\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF" +
-                "\u5AC8\u5ABB\u5AC6\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6" +
-                "\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33" +
-                "\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68" +
-                "\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B" +
-                "\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD" +
-                "\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E" +
-                "\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223" +
-                "\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409" +
-                "\u6420\u6424\u6433\u6443\u641F\u6415\u6418\u6439" +
-                "\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441" +
-                "\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B" +
-                "\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3" +
-                "\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694" +
-                "\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971" +
-                "\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A" +
-                "\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0" +
-                "\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958" +
-                "\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F" +
-                "\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45" +
-                "\u6B43\u6B42\u6B48\u6B41\u6B9B\u6BFB\u6BFC\u6BF9" +
-                "\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F" +
-                "\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD" +
-                "\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF" +
-                "\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E" +
-                "\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97" +
-                "\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141" +
-                "\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158" +
-                "\u7143\u714B\u7170\u715F\u7150\u7153\u7144\u714D" +
-                "\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C" +
-                "\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A" +
-                "\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E" +
-                "\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD" +
-                "\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7" +
-                "\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED" +
-                "\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760" +
-                "\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D" +
-                "\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885" +
-                "\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B" +
-                "\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12" +
-                "\u7A17\u7A15\u7A22\u7A13\u7A1B\u7A10\u7AA3\u7AA2" +
-                "\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72" +
-                "\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63" +
-                "\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F" +
-                "\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94" +
-                "\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C" +
-                "\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160" +
-                "\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E" +
-                "\u8176\u8167\u816F\u8144\u8161\u821D\u8249\u8244" +
-                "\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479" +
-                "\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430" +
-                "\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507" +
-                "\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432" +
-                "\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F" +
-                "\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E" +
-                "\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B" +
-                "\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C" +
-                "\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701" +
-                "\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE" +
-                "\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5" +
-                "\u89E4\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86" +
-                "\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83" +
-                "\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64" +
-                "\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91" +
-                "\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92" +
-                "\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3" +
-                "\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01" +
-                "\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F" +
-                "\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116" +
-                "\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230" +
-                "\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A" +
-                "\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236" +
-                "\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E" +
-                "\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B" +
-                "\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8" +
-                "\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E" +
-                "\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD" +
-                "\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6" +
-                "\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4" +
-                "\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0\u51D8\u5280" +
-                "\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C" +
-                "\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA" +
-                "\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898" +
-                "\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891" +
-                "\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE" +
-                "\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED" +
-                "\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD" +
-                "\u5AD9\u5AE8\u5ADF\u5B77\u5BE0\u5BE3\u5C63\u5D82" +
-                "\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89" +
-                "\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59" +
-                "\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9" +
-                "\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128" +
-                "\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C" +
-                "\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A" +
-                "\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B" +
-                "\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466" +
-                "\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460" +
-                "\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477" +
-                "\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722" +
-                "\u69B1\u69B6\u69C9\u69A0\u69CE\u6996\u69B0\u69AC" +
-                "\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE" +
-                "\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA" +
-                "\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9" +
-                "\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D" +
-                "\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE" +
-                "\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E" +
-                "\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12" +
-                "\u6EED\u6F0A\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40" +
-                "\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05" +
-                "\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D" +
-                "\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185" +
-                "\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253" +
-                "\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462" +
-                "\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502" +
-                "\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611" +
-                "\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E" +
-                "\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD" +
-                "\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2" +
-                "\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993" +
-                "\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F" +
-                "\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C" +
-                "\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E" +
-                "\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF" +
-                "\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1" +
-                "\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC" +
-                "\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9" +
-                "\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE\u8024" +
-                "\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C" +
-                "\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE" +
-                "\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD" +
-                "\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2" +
-                "\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6" +
-                "\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB" +
-                "\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740" +
-                "\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741" +
-                "\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712" +
-                "\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724" +
-                "\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA" +
-                "\u88FE\u88EE\u88FC\u88F6\u88FB\u88F0\u88EC\u88EB" +
-                "\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB" +
-                "\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69" +
-                "\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D" +
-                "\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00" +
-                "\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120" +
-                "\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A" +
-                "\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A" +
-                "\u92A0\u9294\u92AA\u928D\u92A6\u929A\u92AB\u9279" +
-                "\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2" +
-                "\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7" +
-                "\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1" +
-                "\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782" +
-                "\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD" +
-                "\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9" +
-                "\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7" +
-                "\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5" +
-                "\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6" +
-                "\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1" +
-                "\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649" +
-                "\u5646\u5658\u565A\u5640\u5633\u563D\u562C\u563E" +
-                "\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0" +
-                "\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4" +
-                "\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01" +
-                "\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92" +
-                "\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E" +
-                "\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1" +
-                "\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2" +
-                "\u6189\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA" +
-                "\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496" +
-                "\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C" +
-                "\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579" +
-                "\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7" +
-                "\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15" +
-                "\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D" +
-                "\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40" +
-                "\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04" +
-                "\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16" +
-                "\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF" +
-                "\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92\u6F8D" +
-                "\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76" +
-                "\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94" +
-                "\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90" +
-                "\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A" +
-                "\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9" +
-                "\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C" +
-                "\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F" +
-                "\u7360\u735D\u735B\u7361\u735A\u7359\u7362\u7487" +
-                "\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C" +
-                "\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D" +
-                "\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E" +
-                "\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF" +
-                "\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9" +
-                "\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39" +
-                "\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE" +
-                "\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB" +
-                "\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA" +
-                "\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC" +
-                "\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8" +
-                "\u8064\u8067\u81A3\u819F\u819E\u8195\u81A2\u8199" +
-                "\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251" +
-                "\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D" +
-                "\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508" +
-                "\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3" +
-                "\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D" +
-                "\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7" +
-                "\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B" +
-                "\u8519\u852F\u8662\u8756\u8763\u8764\u8777\u87E1" +
-                "\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751" +
-                "\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F" +
-                "\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775" +
-                "\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B" +
-                "\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909" +
-                "\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6" +
-                "\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE" +
-                "\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E" +
-                "\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD" +
-                "\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25" +
-                "\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26" +
-                "\u8E27\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A" +
-                "\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17" +
-                "\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129" +
-                "\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181" +
-                "\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9" +
-                "\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD" +
-                "\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6" +
-                "\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3" +
-                "\u92B5\u92E1\u9325\u92C6\u92B4\u957C\u95AC\u95AB" +
-                "\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702" +
-                "\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D" +
-                "\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908" +
-                "\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD" +
-                "\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB" +
-                "\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1" +
-                "\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75" +
-                "\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF" +
-                "\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04" +
-                "\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A" +
-                "\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E\u5673" +
-                "\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B" +
-                "\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6" +
-                "\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16" +
-                "\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9" +
-                "\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD" +
-                "\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7" +
-                "\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u5FBB\u619D\u61A8" +
-                "\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA\u61BF" +
-                "\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD" +
-                "\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C" +
-                "\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD" +
-                "\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67" +
-                "\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51" +
-                "\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50" +
-                "\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56" +
-                "\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7" +
-                "\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD" +
-                "\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4" +
-                "\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA" +
-                "\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8\u6FA2\u6FC9\u6FAB" +
-                "\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8" +
-                "\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF" +
-                "\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E" +
-                "\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F" +
-                "\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580" +
-                "\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632" +
-                "\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B" +
-                "\u77A2\u77A3\u7795\u7799\u7797\u78DD\u78E9\u78E5" +
-                "\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF" +
-                "\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5" +
-                "\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5" +
-                "\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB" +
-                "\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12" +
-                "\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C" +
-                "\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14" +
-                "\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF" +
-                "\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5" +
-                "\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2" +
-                "\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553" +
-                "\u8561\u8558\u8540\u8546\u8564\u8541\u8562\u8544" +
-                "\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E" +
-                "\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554" +
-                "\u8565\u856C\u8663\u8665\u8664\u87A4\u879B\u878F" +
-                "\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779" +
-                "\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794" +
-                "\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E" +
-                "\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F" +
-                "\u89F1\u8AE0\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14" +
-                "\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF" +
-                "\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1" +
-                "\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E" +
-                "\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30" +
-                "\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37" +
-                "\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135" +
-                "\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E" +
-                "\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B" +
-                "\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB" +
-                "\u931D\u92FA\u9313\u92F9\u92F7\u9334\u9302\u9324" +
-                "\u92FF\u9329\u9339\u9335\u932A\u9314\u930C\u930B" +
-                "\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE" +
-                "\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4" +
-                "\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8" +
-                "\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E" +
-                "\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9" +
-                "\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9" +
-                "\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B" +
-                "\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95\u9B7D\u9B88" +
-                "\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18" +
-                "\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE" +
-                "\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125" +
-                "\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D" +
-                "\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6" +
-                "\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C" +
-                "\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7" +
-                "\u5E6C\u5E6A\u5FBE\u61C3\u61B5\u61BC\u61E7\u61E0" +
-                "\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB" +
-                "\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D" +
-                "\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E" +
-                "\u6A87\u6A93\u6A8E\u6A95\u6A83\u6AA8\u6AA4\u6A91" +
-                "\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD" +
-                "\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED" +
-                "\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1" +
-                "\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E" +
-                "\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1" +
-                "\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643" +
-                "\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2" +
-                "\u77B7\u77B6\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD" +
-                "\u7902\u78FB\u78FC\u78FF\u78F2\u7905\u78F9\u78FE" +
-                "\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54" +
-                "\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00" +
-                "\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09" +
-                "\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10" +
-                "\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38" +
-                "\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B" +
-                "\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4" +
-                "\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7" +
-                "\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F" +
-                "\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A" +
-                "\u859E\u8577\u857C\u8589\u85A1\u857A\u8578\u8557" +
-                "\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2" +
-                "\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F" +
-                "\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9" +
-                "\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7" +
-                "\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD" +
-                "\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952" +
-                "\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E" +
-                "\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12" +
-                "\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A" +
-                "\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9" +
-                "\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43" +
-                "\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199" +
-                "\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364" +
-                "\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350" +
-                "\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357" +
-                "\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E" +
-                "\u9363\u9367\u934E\u9359\u95C7\u95C0\u95C9\u95C3" +
-                "\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718" +
-                "\u971D\u9719\u979A\u97A1\u979C\u979E\u979D\u97D5" +
-                "\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843" +
-                "\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D" +
-                "\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4" +
-                "\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC" +
-                "\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A" +
-                "\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86" +
-                "\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E" +
-                "\u9D2F\u9D31\u9D38\u9D30\u9D45\u9D42\u9D43\u9D3E" +
-                "\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D" +
-                "\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22" +
-                "\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697" +
-                "\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0" +
-                "\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA" +
-                "\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8" +
-                "\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8" +
-                "\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7" +
-                "\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C" +
-                "\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB" +
-                "\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203" +
-                "\u71FD\u7376\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6" +
-                "\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650" +
-                "\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA" +
-                "\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD" +
-                "\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D" +
-                "\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50" +
-                "\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57" +
-                "\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2" +
-                "\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2" +
-                "\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE" +
-                "\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7" +
-                "\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA" +
-                "\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED" +
-                "\u87D8\u87E3\u87D7\u87D9\u8801\u87F4\u87E8\u87DD" +
-                "\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949" +
-                "\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F" +
-                "\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E" +
-                "\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98" +
-                "\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60" +
-                "\u8E57\u8E56\u8E5E\u8E65\u8E67\u8E5B\u8E5A\u8E61" +
-                "\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128" +
-                "\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA" +
-                "\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7" +
-                "\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F" +
-                "\u9380\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4" +
-                "\u93A3\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2" +
-                "\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE" +
-                "\u97A8\u97AB\u97A4\u97AA\u97A2\u97A5\u97D7\u97D9" +
-                "\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941" +
-                "\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11" +
-                "\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04" +
-                "\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6" +
-                "\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4" +
-                "\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B" +
-                "\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58" +
-                "\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25" +
-                "\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135" +
-                "\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA" +
-                "\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F" +
-                "\u5DC3\u5E70\u5FBF\u61FB\u6507\u6510\u650D\u6509" +
-                "\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0" +
-                "\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB" +
-                "\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027" +
-                "\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017" +
-                "\u7024\u701C\u720C\u720A\u7207\u7202\u7205\u72A5" +
-                "\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3" +
-                "\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B" +
-                "\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33" +
-                "\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75" +
-                "\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68" +
-                "\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078" +
-                "\u81D7\u81D5\u820B\u8264\u8261\u8263\u85EB\u85F1" +
-                "\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2" +
-                "\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6" +
-                "\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7" +
-                "\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A" +
-                "\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958" +
-                "\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48" +
-                "\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55\u8B51" +
-                "\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06" +
-                "\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78" +
-                "\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F" +
-                "\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE" +
-                "\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC" +
-                "\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5" +
-                "\u93C4\u93CE\u93C0\u93D2\u93A5\u93E7\u957D\u95DA" +
-                "\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726\u97B3" +
-                "\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D" +
-                "\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943" +
-                "\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B" +
-                "\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2" +
-                "\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0" +
-                "\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC" +
-                "\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81" +
-                "\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B" +
-                "\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85" +
-                "\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68" +
-                "\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D" +
-                "\u9F56\u9F57\u9F58\u5337\u56B2\u56B5\u56B3\u58E3" +
-                "\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9" +
-                "\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4" +
-                "\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF" +
-                "\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038" +
-                "\u703F\u703A\u7039\u702A\u7040\u703B\u7033\u7041" +
-                "\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA" +
-                "\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925" +
-                "\u7923\u7927\u7928\u7924\u7929\u79B2\u7A6E\u7A6C" +
-                "\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE" +
-                "\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB" +
-                "\u81D9\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B" +
-                "\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819" +
-                "\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9" +
-                "\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67" +
-                "\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57" +
-                "\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5" +
-                "\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414" +
-                "\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400" +
-                "\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8" +
-                "\u943C\u940A\u93FF\u93FC\u940C\u93F6\u9411\u9406" +
-                "\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD" +
-                "\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950" +
-                "\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31" +
-                "\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7" +
-                "\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7" +
-                "\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17" +
-                "\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98" +
-                "\u9D90\u9D9B\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1" +
-                "\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96" +
-                "\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7" +
-                "\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59" +
-                "\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE" +
-                "\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02" +
-                "\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048" +
-                "\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517" +
-                "\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2" +
-                "\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB" +
-                "\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C" +
-                "\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625" +
-                "\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A" +
-                "\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45" +
-                "\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E" +
-                "\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B" +
-                "\u9436\u9429\u943D\u9430\u9439\u942A\u9437\u942C" +
-                "\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF" +
-                "\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39" +
-                "\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A\u9A3F\u9ACD" +
-                "\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D" +
-                "\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7" +
-                "\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5" +
-                "\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8" +
-                "\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C" +
-                "\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E" +
-                "\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971" +
-                "\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526" +
-                "\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057" +
-                "\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9" +
-                "\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57" +
-                "\u7C5C\u7C59\u7C5B\u7C5A\u7CF4\u7CF1\u7E91\u7F4F" +
-                "\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632" +
-                "\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF" +
-                "\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F" +
-                "\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97" +
-                "\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F" +
-                "\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A" +
-                "\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C" +
-                "\u9A4F\u9A48\u9A4A\u9A49\u9A52\u9A50\u9AD0\u9B19" +
-                "\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44" +
-                "\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D" +
-                "\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC" +
-                "\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5" +
-                "\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B" +
-                "\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D" +
-                "\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525" +
-                "\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A" +
-                "\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66" +
-                "\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B" +
-                "\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973" +
-                "\u89FE\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98" +
-                "\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E" +
-                "\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20" +
-                "\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59" +
-                "\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8" +
-                "\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2" +
-                "\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2" +
-                "\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F" +
-                "\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D" +
-                "\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060" +
-                "\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A" +
-                "\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B" +
-                "\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD" +
-                "\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747" +
-                "\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66" +
-                "\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06" +
-                "\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0" +
-                "\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8" +
-                "\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8" +
-                "\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A\u7E98\u7E9B" +
-                "\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A" +
-                "\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3" +
-                "\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F" +
-                "\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12" +
-                "\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A" +
-                "\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3" +
-                "\u9474\u9478\u9476\u9475\u9A60\u9B2E\u9C74\u9C73" +
-                "\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A\u9FA4\u7068" +
-                "\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C" +
-                "\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB" +
-                "\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207" +
-                "\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69" +
-                "\u9A68\u9E19\u864B\u8B9F\u9483\u9C79\u9EB7\u7675" +
-                "\u9A6B\u9C7A\u9E1D\u7069\u706A\u7229\u9EA4\u9F7E" +
-                "\u9F49\u9F98\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD"
-                ;
-            mappingTableG2ac =
-                "\uE000\uE001\uE002\uE003\uE004\uE005\uE006\uE007" +
-                "\uE008\uE009\uE00A\uE00B\uE00C\uE00D\uE00E\uE00F" +
-                "\uE010\uE011\uE012\uE013\uE014\uE015\uE016\uE017" +
-                "\uE018\uE019\uE01A\uE01B\uE01C\uE01D\uE01E\uE01F" +
-                "\uE020\uE021\uE022\uE023\uE024\uE025\uE026\uE027" +
-                "\uE028\uE029\uE02A\uE02B\uE02C\uE02D\uE02E\uE02F" +
-                "\uE030\uE031\uE032\uE033\uE034\uE035\uE036\uE037" +
-                "\uE038\uE039\uE03A\uE03B\uE03C\uE03D\uE03E\uE03F" +
-                "\uE040\uE041\uE042\uE043\uE044\uE045\uE046\uE047" +
-                "\uE048\uE049\uE04A\uE04B\uE04C\uE04D\uE04E\uE04F" +
-                "\uE050\uE051\uE052\uE053\uE054\uE055\uE056\uE057" +
-                "\uE058\uE059\uE05A\uE05B\uE05C\uE05D\uE05E\uE05F" +
-                "\uE060\uE061\uE062\uE063\uE064\uE065\uE066\uE067" +
-                "\uE068\uE069\uE06A\uE06B\uE06C\uE06D\uE06E\uE06F" +
-                "\uE070\uE071\uE072\uE073\uE074\uE075\uE076\uE077" +
-                "\uE078\uE079\uE07A\uE07B\uE07C\uE07D\uE07E\uE07F" +
-                "\uE080\uE081\uE082\uE083\uE084\uE085\uE086\uE087" +
-                "\uE088\uE089\uE08A\uE08B\uE08C\uE08D\uE08E\uE08F" +
-                "\uE090\uE091\uE092\uE093\uE094\uE095\uE096\uE097" +
-                "\uE098\uE099\uE09A\uE09B\uE09C\uE09D\uE09E\uE09F" +
-                "\uE0A0\uE0A1\uE0A2\uE0A3\uE0A4\uE0A5\uE0A6\uE0A7" +
-                "\uE0A8\uE0A9\uE0AA\uE0AB\uE0AC\uE0AD\uE0AE\uE0AF" +
-                "\uE0B0\uE0B1\uE0B2\uE0B3\uE0B4\uE0B5\uE0B6\uE0B7" +
-                "\uE0B8\uE0B9\uE0BA\uE0BB\uE0BC\uE0BD\uE0BE\uE0BF" +
-                "\uE0C0\uE0C1\uE0C2\uE0C3\uE0C4\uE0C5\uE0C6\uE0C7" +
-                "\uE0C8\uE0C9\uE0CA\uE0CB\uE0CC\uE0CD\uE0CE\uE0CF" +
-                "\uE0D0\uE0D1\uE0D2\uE0D3\uE0D4\uE0D5\uE0D6\uE0D7" +
-                "\uE0D8\uE0D9\uE0DA\uE0DB\uE0DC\uE0DD\uE0DE\uE0DF" +
-                "\uE0E0\uE0E1\uE0E2\uE0E3\uE0E4\uE0E5\uE0E6\uE0E7" +
-                "\uE0E8\uE0E9\uE0EA\uE0EB\uE0EC\uE0ED\uE0EE\uE0EF" +
-                "\uE0F0\uE0F1\uE0F2\uE0F3\uE0F4\uE0F5\uE0F6\uE0F7" +
-                "\uE0F8\uE0F9\uE0FA\uE0FB\uE0FC\uE0FD\uE0FE\uE0FF" +
-                "\uE100\uE101\uE102\uE103\uE104\uE105\uE106\uE107" +
-                "\uE108\uE109\uE10A\uE10B\uE10C\uE10D\uE10E\uE10F" +
-                "\uE110\uE111\uE112\uE113\uE114\uE115\uE116\uE117" +
-                "\uE118\uE119\uE11A\uE11B\uE11C\uE11D\uE11E\uE11F" +
-                "\uE120\uE121\uE122\uE123\uE124\uE125\uE126\uE127" +
-                "\uE128\uE129\uE12A\uE12B\uE12C\uE12D\uE12E\uE12F" +
-                "\uE130\uE131\uE132\uE133\uE134\uE135\uE136\uE137" +
-                "\uE138\uE139\uE13A\uE13B\uE13C\uE13D\uE13E\uE13F" +
-                "\uE140\uE141\uE142\uE143\uE144\uE145\uE146\uE147" +
-                "\uE148\uE149\uE14A\uE14B\uE14C\uE14D\uE14E\uE14F" +
-                "\uE150\uE151\uE152\uE153\uE154\uE155\uE156\uE157" +
-                "\uE158\uE159\uE15A\uE15B\uE15C\uE15D\uE15E\uE15F" +
-                "\uE160\uE161\uE162\uE163\uE164\uE165\uE166\uE167" +
-                "\uE168\uE169\uE16A\uE16B\uE16C\uE16D\uE16E\uE16F" +
-                "\uE170\uE171\uE172\uE173\uE174\uE175\uE176\uE177" +
-                "\uE178\uE179\uE17A\uE17B\uE17C\uE17D\uE17E\uE17F" +
-                "\uE180\uE181\uE182\uE183\uE184\uE185\uE186\uE187" +
-                "\uE188\uE189\uE18A\uE18B\uE18C\uE18D\uE18E\uE18F" +
-                "\uE190\uE191\uE192\uE193\uE194\uE195\uE196\uE197" +
-                "\uE198\uE199\uE19A\uE19B\uE19C\uE19D\uE19E\uE19F" +
-                "\uE1A0\uE1A1\uE1A2\uE1A3\uE1A4\uE1A5\uE1A6\uE1A7" +
-                "\uE1A8\uE1A9\uE1AA\uE1AB\uE1AC\uE1AD\uE1AE\uE1AF" +
-                "\uE1B0\uE1B1\uE1B2\uE1B3\uE1B4\uE1B5\uE1B6\uE1B7" +
-                "\uE1B8\uE1B9\uE1BA\uE1BB\uE1BC\uE1BD\uE1BE\uE1BF" +
-                "\uE1C0\uE1C1\uE1C2\uE1C3\uE1C4\uE1C5\uE1C6\uE1C7" +
-                "\uE1C8\uE1C9\uE1CA\uE1CB\uE1CC\uE1CD\uE1CE\uE1CF" +
-                "\uE1D0\uE1D1\uE1D2\uE1D3\uE1D4\uE1D5\uE1D6\uE1D7" +
-                "\uE1D8\uE1D9\uE1DA\uE1DB\uE1DC\uE1DD\uE1DE\uE1DF" +
-                "\uE1E0\uE1E1\uE1E2\uE1E3\uE1E4\uE1E5\uE1E6\uE1E7" +
-                "\uE1E8\uE1E9\uE1EA\uE1EB\uE1EC\uE1ED\uE1EE\uE1EF" +
-                "\uE1F0\uE1F1\uE1F2\uE1F3\uE1F4\uE1F5\uE1F6\uE1F7" +
-                "\uE1F8\uE1F9\uE1FA\uE1FB\uE1FC\uE1FD\uE1FE\uE1FF" +
-                "\uE200\uE201\uE202\uE203\uE204\uE205\uE206\uE207" +
-                "\uE208\uE209\uE20A\uE20B\uE20C\uE20D\uE20E\uE20F" +
-                "\uE210\uE211\uE212\uE213\uE214\uE215\uE216\uE217" +
-                "\uE218\uE219\uE21A\uE21B\uE21C\uE21D\uE21E\uE21F" +
-                "\uE220\uE221\uE222\uE223\uE224\uE225\uE226\uE227" +
-                "\uE228\uE229\uE22A\uE22B\uE22C\uE22D\uE22E\uE22F" +
-                "\uE230\uE231\uE232\uE233\uE234\uE235\uE236\uE237" +
-                "\uE238\uE239\uE23A\uE23B\uE23C\uE23D\uE23E\uE23F" +
-                "\uE240\uE241\uE242\uE243\uE244\uE245\uE246\uE247" +
-                "\uE248\uE249\uE24A\uE24B\uE24C\uE24D\uE24E\uE24F" +
-                "\uE250\uE251\uE252\uE253\uE254\uE255\uE256\uE257" +
-                "\uE258\uE259\uE25A\uE25B\uE25C\uE25D\uE25E\uE25F" +
-                "\uE260\uE261\uE262\uE263\uE264\uE265\uE266\uE267" +
-                "\uE268\uE269\uE26A\uE26B\uE26C\uE26D\uE26E\uE26F" +
-                "\uE270\uE271\uE272\uE273\uE274\uE275\uE276\uE277" +
-                "\uE278\uE279\uE27A\uE27B\uE27C\uE27D\uE27E\uE27F" +
-                "\uE280\uE281\uE282\uE283\uE284\uE285\uE286\uE287" +
-                "\uE288\uE289\uE28A\uE28B\uE28C\uE28D\uE28E\uE28F" +
-                "\uE290\uE291\uE292\uE293\uE294\uE295\uE296\uE297" +
-                "\uE298\uE299\uE29A\uE29B\uE29C\uE29D\uE29E\uE29F" +
-                "\uE2A0\uE2A1\uE2A2\uE2A3\uE2A4\uE2A5\uE2A6\uE2A7" +
-                "\uE2A8\uE2A9\uE2AA\uE2AB\uE2AC\uE2AD\uE2AE\uE2AF" +
-                "\uE2B0\uE2B1\uE2B2\uE2B3\uE2B4\uE2B5\uE2B6\uE2B7" +
-                "\uE2B8\uE2B9\uE2BA\uE2BB\uE2BC\uE2BD\uE2BE\uE2BF" +
-                "\uE2C0\uE2C1\uE2C2\uE2C3\uE2C4\uE2C5\uE2C6\uE2C7" +
-                "\uE2C8\uE2C9\uE2CA\uE2CB\uE2CC\uE2CD\uE2CE\uE2CF" +
-                "\uE2D0\uE2D1\uE2D2\uE2D3\uE2D4\uE2D5\uE2D6\uE2D7" +
-                "\uE2D8\uE2D9\uE2DA\uE2DB\uE2DC\uE2DD\uE2DE\uE2DF" +
-                "\uE2E0\uE2E1\uE2E2\uE2E3\uE2E4\uE2E5\uE2E6\uE2E7" +
-                "\uE2E8\uE2E9\uE2EA\uE2EB\uE2EC\uE2ED\uE2EE\uE2EF" +
-                "\uE2F0\uE2F1\uE2F2\uE2F3\uE2F4\uE2F5\uE2F6\uE2F7" +
-                "\uE2F8\uE2F9\uE2FA\uE2FB\uE2FC\uE2FD\uE2FE\uE2FF" +
-                "\uE300\uE301\uE302\uE303\uE304\uE305\uE306\uE307" +
-                "\uE308\uE309\uE30A\uE30B\uE30C\uE30D\uE30E\uE30F" +
-                "\uE310\uE311\uE312\uE313\uE314\uE315\uE316\uE317" +
-                "\uE318\uE319\uE31A\uE31B\uE31C\uE31D\uE31E\uE31F" +
-                "\uE320\uE321\uE322\uE323\uE324\uE325\uE326\uE327" +
-                "\uE328\uE329\uE32A\uE32B\uE32C\uE32D\uE32E\uE32F" +
-                "\uE330\uE331\uE332\uE333\uE334\uE335\uE336\uE337" +
-                "\uE338\uE339\uE33A\uE33B\uE33C\uE33D\uE33E\uE33F" +
-                "\uE340\uE341\uE342\uE343\uE344\uE345\uE346\uE347" +
-                "\uE348\uE349\uE34A\uE34B\uE34C\uE34D\uE34E\uE34F" +
-                "\uE350\uE351\uE352\uE353\uE354\uE355\uE356\uE357" +
-                "\uE358\uE359\uE35A\uE35B\uE35C\uE35D\uE35E\uE35F" +
-                "\uE360\uE361\uE362\uE363\uE364\uE365\uE366\uE367" +
-                "\uE368\uE369\uE36A\uE36B\uE36C\uE36D\uE36E\uE36F" +
-                "\uE370\uE371\uE372\uE373\uE374\uE375\uE376\uE377" +
-                "\uE378\uE379\uE37A\uE37B\uE37C\uE37D\uE37E\uE37F" +
-                "\uE380\uE381\uE382\uE383\uE384\uE385\uE386\uE387" +
-                "\uE388\uE389\uE38A\uE38B\uE38C\uE38D\uE38E\uE38F" +
-                "\uE390\uE391\uE392\uE393\uE394\uE395\uE396\uE397" +
-                "\uE398\uE399\uE39A\uE39B\uE39C\uE39D\uE39E\uE39F" +
-                "\uE3A0\uE3A1\uE3A2\uE3A3\uE3A4\uE3A5\uE3A6\uE3A7" +
-                "\uE3A8\uE3A9\uE3AA\uE3AB\uE3AC\uE3AD\uE3AE\uE3AF" +
-                "\uE3B0\uE3B1\uE3B2\uE3B3\uE3B4\uE3B5\uE3B6\uE3B7" +
-                "\uE3B8\uE3B9\uE3BA\uE3BB\uE3BC\uE3BD\uE3BE\uE3BF" +
-                "\uE3C0\uE3C1\uE3C2\uE3C3\uE3C4\uE3C5\uE3C6\uE3C7" +
-                "\uE3C8\uE3C9\uE3CA\uE3CB\uE3CC\uE3CD\uE3CE\uE3CF" +
-                "\uE3D0\uE3D1\uE3D2\uE3D3\uE3D4\uE3D5\uE3D6\uE3D7" +
-                "\uE3D8\uE3D9\uE3DA\uE3DB\uE3DC\uE3DD\uE3DE\uE3DF" +
-                "\uE3E0\uE3E1\uE3E2\uE3E3\uE3E4\uE3E5\uE3E6\uE3E7" +
-                "\uE3E8\uE3E9\uE3EA\uE3EB\uE3EC\uE3ED\uE3EE\uE3EF" +
-                "\uE3F0\uE3F1\uE3F2\uE3F3\uE3F4\uE3F5\uE3F6\uE3F7" +
-                "\uE3F8\uE3F9\uE3FA\uE3FB\uE3FC\uE3FD\uE3FE\uE3FF" +
-                "\uE400\uE401\uE402\uE403\uE404\uE405\uE406\uE407" +
-                "\uE408\uE409\uE40A\uE40B\uE40C\uE40D\uE40E\uE40F" +
-                "\uE410\uE411\uE412\uE413\uE414\uE415\uE416\uE417" +
-                "\uE418\uE419\uE41A\uE41B\uE41C\uE41D\uE41E\uE41F" +
-                "\uE420\uE421\uE422\uE423\uE424\uE425\uE426\uE427" +
-                "\uE428\uE429\uE42A\uE42B\uE42C\uE42D\uE42E\uE42F" +
-                "\uE430\uE431\uE432\uE433\uE434\uE435\uE436\uE437" +
-                "\uE438\uE439\uE43A\uE43B\uE43C\uE43D\uE43E\uE43F" +
-                "\uE440\uE441\uE442\uE443\uE444\uE445\uE446\uE447" +
-                "\uE448\uE449\uE44A\uE44B\uE44C\uE44D\uE44E\uE44F" +
-                "\uE450\uE451\uE452\uE453\uE454\uE455\uE456\uE457" +
-                "\uE458\uE459\uE45A\uE45B\uE45C\uE45D\uE45E\uE45F" +
-                "\uE460\uE461\uE462\uE463\uE464\uE465\uE466\uE467" +
-                "\uE468\uE469\uE46A\uE46B\uE46C\uE46D\uE46E\uE46F" +
-                "\uE470\uE471\uE472\uE473\uE474\uE475\uE476\uE477" +
-                "\uE478\uE479\uE47A\uE47B\uE47C\uE47D\uE47E\uE47F" +
-                "\uE480\uE481\uE482\uE483\uE484\uE485\uE486\uE487" +
-                "\uE488\uE489\uE48A\uE48B\uE48C\uE48D\uE48E\uE48F" +
-                "\uE490\uE491\uE492\uE493\uE494\uE495\uE496\uE497" +
-                "\uE498\uE499\uE49A\uE49B\uE49C\uE49D\uE49E\uE49F" +
-                "\uE4A0\uE4A1\uE4A2\uE4A3\uE4A4\uE4A5\uE4A6\uE4A7" +
-                "\uE4A8\uE4A9\uE4AA\uE4AB\uE4AC\uE4AD\uE4AE\uE4AF" +
-                "\uE4B0\uE4B1\uE4B2\uE4B3\uE4B4\uE4B5\uE4B6\uE4B7" +
-                "\uE4B8\uE4B9\uE4BA\uE4BB\uE4BC\uE4BD\uE4BE\uE4BF" +
-                "\uE4C0\uE4C1\uE4C2\uE4C3\uE4C4\uE4C5\uE4C6\uE4C7" +
-                "\uE4C8\uE4C9\uE4CA\uE4CB\uE4CC\uE4CD\uE4CE\uE4CF" +
-                "\uE4D0\uE4D1\uE4D2\uE4D3\uE4D4\uE4D5\uE4D6\uE4D7" +
-                "\uE4D8\uE4D9\uE4DA\uE4DB\uE4DC\uE4DD\uE4DE\uE4DF" +
-                "\uE4E0\uE4E1\uE4E2\uE4E3\uE4E4\uE4E5\uE4E6\uE4E7" +
-                "\uE4E8\uE4E9\uE4EA\uE4EB\uE4EC\uE4ED\uE4EE\uE4EF" +
-                "\uE4F0\uE4F1\uE4F2\uE4F3\uE4F4\uE4F5\uE4F6\uE4F7" +
-                "\uE4F8\uE4F9\uE4FA\uE4FB\uE4FC\uE4FD\uE4FE\uE4FF" +
-                "\uE500\uE501\uE502\uE503\uE504\uE505\uE506\uE507" +
-                "\uE508\uE509\uE50A\uE50B\uE50C\uE50D\uE50E\uE50F" +
-                "\uE510\uE511\uE512\uE513\uE514\uE515\uE516\uE517" +
-                "\uE518\uE519\uE51A\uE51B\uE51C\uE51D\uE51E\uE51F" +
-                "\uE520\uE521\uE522\uE523\uE524\uE525\uE526\uE527" +
-                "\uE528\uE529\uE52A\uE52B\uE52C\uE52D\uE52E\uE52F" +
-                "\uE530\uE531\uE532\uE533\uE534\uE535\uE536\uE537" +
-                "\uE538\uE539\uE53A\uE53B\uE53C\uE53D\uE53E\uE53F" +
-                "\uE540\uE541\uE542\uE543\uE544\uE545\uE546\uE547" +
-                "\uE548\uE549\uE54A\uE54B\uE54C\uE54D\uE54E\uE54F" +
-                "\uE550\uE551\uE552\uE553\uE554\uE555\uE556\uE557" +
-                "\uE558\uE559\uE55A\uE55B\uE55C\uE55D\uE55E\uE55F" +
-                "\uE560\uE561\uE562\uE563\uE564\uE565\uE566\uE567" +
-                "\uE568\uE569\uE56A\uE56B\uE56C\uE56D\uE56E\uE56F" +
-                "\uE570\uE571\uE572\uE573\uE574\uE575\uE576\uE577" +
-                "\uE578\uE579\uE57A\uE57B\uE57C\uE57D\uE57E\uE57F" +
-                "\uE580\uE581\uE582\uE583\uE584\uE585\uE586\uE587" +
-                "\uE588\uE589\uE58A\uE58B\uE58C\uE58D\uE58E\uE58F" +
-                "\uE590\uE591\uE592\uE593\uE594\uE595\uE596\uE597" +
-                "\uE598\uE599\uE59A\uE59B\uE59C\uE59D\uE59E\uE59F" +
-                "\uE5A0\uE5A1\uE5A2\uE5A3\uE5A4\uE5A5\uE5A6\uE5A7" +
-                "\uE5A8\uE5A9\uE5AA\uE5AB\uE5AC\uE5AD\uE5AE\uE5AF" +
-                "\uE5B0\uE5B1\uE5B2\uE5B3\uE5B4\uE5B5\uE5B6\uE5B7" +
-                "\uE5B8\uE5B9\uE5BA\uE5BB\uE5BC\uE5BD\uE5BE\uE5BF" +
-                "\uE5C0\uE5C1\uE5C2\uE5C3\uE5C4\uE5C5\uE5C6\uE5C7" +
-                "\uE5C8\uE5C9\uE5CA\uE5CB\uE5CC\uE5CD\uE5CE\uE5CF" +
-                "\uE5D0\uE5D1\uE5D2\uE5D3\uE5D4\uE5D5\uE5D6\uE5D7" +
-                "\uE5D8\uE5D9\uE5DA\uE5DB\uE5DC\uE5DD\uE5DE\uE5DF" +
-                "\uE5E0\uE5E1\uE5E2\uE5E3\uE5E4\uE5E5\uE5E6\uE5E7" +
-                "\uE5E8\uE5E9\uE5EA\uE5EB\uE5EC\uE5ED\uE5EE\uE5EF" +
-                "\uE5F0\uE5F1\uE5F2\uE5F3\uE5F4\uE5F5\uE5F6\uE5F7" +
-                "\uE5F8\uE5F9\uE5FA\uE5FB\uE5FC\uE5FD\uE5FE\uE5FF" +
-                "\uE600\uE601\uE602\uE603\uE604\uE605\uE606\uE607" +
-                "\uE608\uE609\uE60A\uE60B\uE60C\uE60D\uE60E\uE60F" +
-                "\uE610\uE611\uE612\uE613\uE614\uE615\uE616\uE617" +
-                "\uE618\uE619\uE61A\uE61B\uE61C\uE61D\uE61E\uE61F" +
-                "\uE620\uE621\uE622\uE623\uE624\uE625\uE626\uE627" +
-                "\uE628\uE629\uE62A\uE62B\uE62C\uE62D\uE62E\uE62F" +
-                "\uE630\uE631\uE632\uE633\uE634\uE635\uE636\uE637" +
-                "\uE638\uE639\uE63A\uE63B\uE63C\uE63D\uE63E\uE63F" +
-                "\uE640\uE641\uE642\uE643\uE644\uE645\uE646\uE647" +
-                "\uE648\uE649\uE64A\uE64B\uE64C\uE64D\uE64E\uE64F" +
-                "\uE650\uE651\uE652\uE653\uE654\uE655\uE656\uE657" +
-                "\uE658\uE659\uE65A\uE65B\uE65C\uE65D\uE65E\uE65F" +
-                "\uE660\uE661\uE662\uE663\uE664\uE665\uE666\uE667" +
-                "\uE668\uE669\uE66A\uE66B\uE66C\uE66D\uE66E\uE66F" +
-                "\uE670\uE671\uE672\uE673\uE674\uE675\uE676\uE677" +
-                "\uE678\uE679\uE67A\uE67B\uE67C\uE67D\uE67E\uE67F" +
-                "\uE680\uE681\uE682\uE683\uE684\uE685\uE686\uE687" +
-                "\uE688\uE689\uE68A\uE68B\uE68C\uE68D\uE68E\uE68F" +
-                "\uE690\uE691\uE692\uE693\uE694\uE695\uE696\uE697" +
-                "\uE698\uE699\uE69A\uE69B\uE69C\uE69D\uE69E\uE69F" +
-                "\uE6A0\uE6A1\uE6A2\uE6A3\uE6A4\uE6A5\uE6A6\uE6A7" +
-                "\uE6A8\uE6A9\uE6AA\uE6AB\uE6AC\uE6AD\uE6AE\uE6AF" +
-                "\uE6B0\uE6B1\uE6B2\uE6B3\uE6B4\uE6B5\uE6B6\uE6B7" +
-                "\uE6B8\uE6B9\uE6BA\uE6BB\uE6BC\uE6BD\uE6BE\uE6BF" +
-                "\uE6C0\uE6C1\uE6C2\uE6C3\uE6C4\uE6C5\uE6C6\uE6C7" +
-                "\uE6C8\uE6C9\uE6CA\uE6CB\uE6CC\uE6CD\uE6CE\uE6CF" +
-                "\uE6D0\uE6D1\uE6D2\uE6D3\uE6D4\uE6D5\uE6D6\uE6D7" +
-                "\uE6D8\uE6D9\uE6DA\uE6DB\uE6DC\uE6DD\uE6DE\uE6DF" +
-                "\uE6E0\uE6E1\uE6E2\uE6E3\uE6E4\uE6E5\uE6E6\uE6E7" +
-                "\uE6E8\uE6E9\uE6EA\uE6EB\uE6EC\uE6ED\uE6EE\uE6EF" +
-                "\uE6F0\uE6F1\uE6F2\uE6F3\uE6F4\uE6F5\uE6F6\uE6F7" +
-                "\uE6F8\uE6F9\uE6FA\uE6FB\uE6FC\uE6FD\uE6FE\uE6FF" +
-                "\uE700\uE701\uE702\uE703\uE704\uE705\uE706\uE707" +
-                "\uE708\uE709\uE70A\uE70B\uE70C\uE70D\uE70E\uE70F" +
-                "\uE710\uE711\uE712\uE713\uE714\uE715\uE716\uE717" +
-                "\uE718\uE719\uE71A\uE71B\uE71C\uE71D\uE71E\uE71F" +
-                "\uE720\uE721\uE722\uE723\uE724\uE725\uE726\uE727" +
-                "\uE728\uE729\uE72A\uE72B\uE72C\uE72D\uE72E\uE72F" +
-                "\uE730\uE731\uE732\uE733\uE734\uE735\uE736\uE737" +
-                "\uE738\uE739\uE73A\uE73B\uE73C\uE73D\uE73E\uE73F" +
-                "\uE740\uE741\uE742\uE743\uE744\uE745\uE746\uE747" +
-                "\uE748\uE749\uE74A\uE74B\uE74C\uE74D\uE74E\uE74F" +
-                "\uE750\uE751\uE752\uE753\uE754\uE755\uE756\uE757" +
-                "\uE758\uE759\uE75A\uE75B\uE75C\uE75D\uE75E\uE75F" +
-                "\uE760\uE761\uE762\uE763\uE764\uE765\uE766\uE767" +
-                "\uE768\uE769\uE76A\uE76B\uE76C\uE76D\uE76E\uE76F" +
-                "\uE770\uE771\uE772\uE773\uE774\uE775\uE776\uE777" +
-                "\uE778\uE779\uE77A\uE77B\uE77C\uE77D\uE77E\uE77F" +
-                "\uE780\uE781\uE782\uE783\uE784\uE785\uE786\uE787" +
-                "\uE788\uE789\uE78A\uE78B\uE78C\uE78D\uE78E\uE78F" +
-                "\uE790\uE791\uE792\uE793\uE794\uE795\uE796\uE797" +
-                "\uE798\uE799\uE79A\uE79B\uE79C\uE79D\uE79E\uE79F" +
-                "\uE7A0\uE7A1\uE7A2\uE7A3\uE7A4\uE7A5\uE7A6\uE7A7" +
-                "\uE7A8\uE7A9\uE7AA\uE7AB\uE7AC\uE7AD\uE7AE\uE7AF" +
-                "\uE7B0\uE7B1\uE7B2\uE7B3\uE7B4\uE7B5\uE7B6\uE7B7" +
-                "\uE7B8\uE7B9\uE7BA\uE7BB\uE7BC\uE7BD\uE7BE\uE7BF" +
-                "\uE7C0\uE7C1\uE7C2\uE7C3\uE7C4\uE7C5\uE7C6\uE7C7" +
-                "\uE7C8\uE7C9\uE7CA\uE7CB\uE7CC\uE7CD\uE7CE\uE7CF" +
-                "\uE7D0\uE7D1\uE7D2\uE7D3\uE7D4\uE7D5\uE7D6\uE7D7" +
-                "\uE7D8\uE7D9\uE7DA\uE7DB\uE7DC\uE7DD\uE7DE\uE7DF" +
-                "\uE7E0\uE7E1\uE7E2\uE7E3\uE7E4\uE7E5\uE7E6\uE7E7" +
-                "\uE7E8\uE7E9\uE7EA\uE7EB\uE7EC\uE7ED\uE7EE\uE7EF" +
-                "\uE7F0\uE7F1\uE7F2\uE7F3\uE7F4\uE7F5\uE7F6\uE7F7" +
-                "\uE7F8\uE7F9\uE7FA\uE7FB\uE7FC\uE7FD\uE7FE\uE7FF" +
-                "\uE800\uE801\uE802\uE803\uE804\uE805\uE806\uE807" +
-                "\uE808\uE809\uE80A\uE80B\uE80C\uE80D\uE80E\uE80F" +
-                "\uE810\uE811\uE812\uE813\uE814\uE815\uE816\uE817" +
-                "\uE818\uE819\uE81A\uE81B\uE81C\uE81D\uE81E\uE81F" +
-                "\uE820\uE821\uE822\uE823\uE824\uE825\uE826\uE827" +
-                "\uE828\uE829\uE82A\uE82B\uE82C\uE82D\uE82E\uE82F" +
-                "\uE830\uE831\uE832\uE833\uE834\uE835\uE836\uE837" +
-                "\uE838\uE839\uE83A\uE83B\uE83C\uE83D\uE83E\uE83F" +
-                "\uE840\uE841\uE842\uE843\uE844\uE845\uE846\uE847" +
-                "\uE848\uE849\uE84A\uE84B\uE84C\uE84D\uE84E\uE84F" +
-                "\uE850\uE851\uE852\uE853\uE854\uE855\uE856\uE857" +
-                "\uE858\uE859\uE85A\uE85B\uE85C\uE85D\uE85E\uE85F" +
-                "\uE860\uE861\uE862\uE863\uE864\uE865\uE866\uE867" +
-                "\uE868\uE869\uE86A\uE86B\uE86C\uE86D\uE86E\uE86F" +
-                "\uE870\uE871\uE872\uE873\uE874\uE875\uE876\uE877" +
-                "\uE878\uE879\uE87A\uE87B\uE87C\uE87D\uE87E\uE87F" +
-                "\uE880\uE881\uE882\uE883\uE884\uE885\uE886\uE887" +
-                "\uE888\uE889\uE88A\uE88B\uE88C\uE88D\uE88E\uE88F" +
-                "\uE890\uE891\uE892\uE893\uE894\uE895\uE896\uE897" +
-                "\uE898\uE899\uE89A\uE89B\uE89C\uE89D\uE89E\uE89F" +
-                "\uE8A0\uE8A1\uE8A2\uE8A3\uE8A4\uE8A5\uE8A6\uE8A7" +
-                "\uE8A8\uE8A9\uE8AA\uE8AB\uE8AC\uE8AD\uE8AE\uE8AF" +
-                "\uE8B0\uE8B1\uE8B2\uE8B3\uE8B4\uE8B5\uE8B6\uE8B7" +
-                "\uE8B8\uE8B9\uE8BA\uE8BB\uE8BC\uE8BD\uE8BE\uE8BF" +
-                "\uE8C0\uE8C1\uE8C2\uE8C3\uE8C4\uE8C5\uE8C6\uE8C7" +
-                "\uE8C8\uE8C9\uE8CA\uE8CB\uE8CC\uE8CD\uE8CE\uE8CF" +
-                "\uE8D0\uE8D1\uE8D2\uE8D3\uE8D4\uE8D5\uE8D6\uE8D7" +
-                "\uE8D8\uE8D9\uE8DA\uE8DB\uE8DC\uE8DD\uE8DE\uE8DF" +
-                "\uE8E0\uE8E1\uE8E2\uE8E3\uE8E4\uE8E5\uE8E6\uE8E7" +
-                "\uE8E8\uE8E9\uE8EA\uE8EB\uE8EC\uE8ED\uE8EE\uE8EF" +
-                "\uE8F0\uE8F1\uE8F2\uE8F3\uE8F4\uE8F5\uE8F6\uE8F7" +
-                "\uE8F8\uE8F9\uE8FA\uE8FB\uE8FC\uE8FD\uE8FE\uE8FF" +
-                "\uE900\uE901\uE902\uE903\uE904\uE905\uE906\uE907" +
-                "\uE908\uE909\uE90A\uE90B\uE90C\uE90D\uE90E\uE90F" +
-                "\uE910\uE911\uE912\uE913\uE914\uE915\uE916\uE917" +
-                "\uE918\uE919\uE91A\uE91B\uE91C\uE91D\uE91E\uE91F" +
-                "\uE920\uE921\uE922\uE923\uE924\uE925\uE926\uE927" +
-                "\uE928\uE929\uE92A\uE92B\uE92C\uE92D\uE92E\uE92F" +
-                "\uE930\uE931\uE932\uE933\uE934\uE935\uE936\uE937" +
-                "\uE938\uE939\uE93A\uE93B\uE93C\uE93D\uE93E\uE93F" +
-                "\uE940\uE941\uE942\uE943\uE944\uE945\uE946\uE947" +
-                "\uE948\uE949\uE94A\uE94B\uE94C\uE94D\uE94E\uE94F" +
-                "\uE950\uE951\uE952\uE953\uE954\uE955\uE956\uE957" +
-                "\uE958\uE959\uE95A\uE95B\uE95C\uE95D\uE95E\uE95F" +
-                "\uE960\uE961\uE962\uE963\uE964\uE965\uE966\uE967" +
-                "\uE968\uE969\uE96A\uE96B\uE96C\uE96D\uE96E\uE96F" +
-                "\uE970\uE971\uE972\uE973\uE974\uE975\uE976\uE977" +
-                "\uE978\uE979\uE97A\uE97B\uE97C\uE97D\uE97E\uE97F" +
-                "\uE980\uE981\uE982\uE983\uE984\uE985\uE986\uE987" +
-                "\uE988\uE989\uE98A\uE98B\uE98C\uE98D\uE98E\uE98F" +
-                "\uE990\uE991\uE992\uE993\uE994\uE995\uE996\uE997" +
-                "\uE998\uE999\uE99A\uE99B\uE99C\uE99D\uE99E\uE99F" +
-                "\uE9A0\uE9A1\uE9A2\uE9A3\uE9A4\uE9A5\uE9A6\uE9A7" +
-                "\uE9A8\uE9A9\uE9AA\uE9AB\uE9AC\uE9AD\uE9AE\uE9AF" +
-                "\uE9B0\uE9B1\uE9B2\uE9B3\uE9B4\uE9B5\uE9B6\uE9B7" +
-                "\uE9B8\uE9B9\uE9BA\uE9BB\uE9BC\uE9BD\uE9BE\uE9BF" +
-                "\uE9C0\uE9C1\uE9C2\uE9C3\uE9C4\uE9C5\uE9C6\uE9C7" +
-                "\uE9C8\uE9C9\uE9CA\uE9CB\uE9CC\uE9CD\uE9CE\uE9CF" +
-                "\uE9D0\uE9D1\uE9D2\uE9D3\uE9D4\uE9D5\uE9D6\uE9D7" +
-                "\uE9D8\uE9D9\uE9DA\uE9DB\uE9DC\uE9DD\uE9DE\uE9DF" +
-                "\uE9E0\uE9E1\uE9E2\uE9E3\uE9E4\uE9E5\uE9E6\uE9E7" +
-                "\uE9E8\uE9E9\uE9EA\uE9EB\uE9EC\uE9ED\uE9EE\uE9EF" +
-                "\uE9F0\uE9F1\uE9F2\uE9F3\uE9F4\uE9F5\uE9F6\uE9F7" +
-                "\uE9F8\uE9F9\uE9FA\uE9FB\uE9FC\uE9FD\uE9FE\uE9FF" +
-                "\uEA00\uEA01\uEA02\uEA03\uEA04\uEA05\uEA06\uEA07" +
-                "\uEA08\uEA09\uEA0A\uEA0B\uEA0C\uEA0D\uEA0E\uEA0F" +
-                "\uEA10\uEA11\uEA12\uEA13\uEA14\uEA15\uEA16\uEA17" +
-                "\uEA18\uEA19\uEA1A\uEA1B\uEA1C\uEA1D\uEA1E\uEA1F" +
-                "\uEA20\uEA21\uEA22\uEA23\uEA24\uEA25\uEA26\uEA27" +
-                "\uEA28\uEA29\uEA2A\uEA2B\uEA2C\uEA2D\uEA2E\uEA2F" +
-                "\uEA30\uEA31\uEA32\uEA33\uEA34\uEA35\uEA36\uEA37" +
-                "\uEA38\uEA39\uEA3A\uEA3B\uEA3C\uEA3D\uEA3E\uEA3F" +
-                "\uEA40\uEA41\uEA42\uEA43\uEA44\uEA45\uEA46\uEA47" +
-                "\uEA48\uEA49\uEA4A\uEA4B\uEA4C\uEA4D\uEA4E\uEA4F" +
-                "\uEA50\uEA51\uEA52\uEA53\uEA54\uEA55\uEA56\uEA57" +
-                "\uEA58\uEA59\uEA5A\uEA5B\uEA5C\uEA5D\uEA5E\uEA5F" +
-                "\uEA60\uEA61\uEA62\uEA63\uEA64\uEA65\uEA66\uEA67" +
-                "\uEA68\uEA69\uEA6A\uEA6B\uEA6C\uEA6D\uEA6E\uEA6F" +
-                "\uEA70\uEA71\uEA72\uEA73\uEA74\uEA75\uEA76\uEA77" +
-                "\uEA78\uEA79\uEA7A\uEA7B\uEA7C\uEA7D\uEA7E\uEA7F" +
-                "\uEA80\uEA81\uEA82\uEA83\uEA84\uEA85\uEA86\uEA87" +
-                "\uEA88\uEA89\uEA8A\uEA8B\uEA8C\uEA8D\uEA8E\uEA8F" +
-                "\uEA90\uEA91\uEA92\uEA93\uEA94\uEA95\uEA96\uEA97" +
-                "\uEA98\uEA99\uEA9A\uEA9B\uEA9C\uEA9D\uEA9E\uEA9F" +
-                "\uEAA0\uEAA1\uEAA2\uEAA3\uEAA4\uEAA5\uEAA6\uEAA7" +
-                "\uEAA8\uEAA9\uEAAA\uEAAB\uEAAC\uEAAD\uEAAE\uEAAF" +
-                "\uEAB0\uEAB1\uEAB2\uEAB3\uEAB4\uEAB5\uEAB6\uEAB7" +
-                "\uEAB8\uEAB9\uEABA\uEABB\uEABC\uEABD\uEABE\uEABF" +
-                "\uEAC0\uEAC1\uEAC2\uEAC3\uEAC4\uEAC5\uEAC6\uEAC7" +
-                "\uEAC8\uEAC9\uEACA\uEACB\uEACC\uEACD\uEACE\uEACF" +
-                "\uEAD0\uEAD1\uEAD2\uEAD3\uEAD4\uEAD5\uEAD6\uEAD7" +
-                "\uEAD8\uEAD9\uEADA\uEADB\uEADC\uEADD\uEADE\uEADF" +
-                "\uEAE0\uEAE1\uEAE2\uEAE3\uEAE4\uEAE5\uEAE6\uEAE7" +
-                "\uEAE8\uEAE9\uEAEA\uEAEB\uEAEC\uEAED\uEAEE\uEAEF" +
-                "\uEAF0\uEAF1\uEAF2\uEAF3\uEAF4\uEAF5\uEAF6\uEAF7" +
-                "\uEAF8\uEAF9\uEAFA\uEAFB\uEAFC\uEAFD\uEAFE\uEAFF" +
-                "\uEB00\uEB01\uEB02\uEB03\uEB04\uEB05\uEB06\uEB07" +
-                "\uEB08\uEB09\uEB0A\uEB0B\uEB0C\uEB0D\uEB0E\uEB0F" +
-                "\uEB10\uEB11\uEB12\uEB13\uEB14\uEB15\uEB16\uEB17" +
-                "\uEB18\uEB19\uEB1A\uEB1B\uEB1C\uEB1D\uEB1E\uEB1F" +
-                "\uEB20\uEB21\uEB22\uEB23\uEB24\uEB25\uEB26\uEB27" +
-                "\uEB28\uEB29\uEB2A\uEB2B\uEB2C\uEB2D\uEB2E\uEB2F" +
-                "\uEB30\uEB31\uEB32\uEB33\uEB34\uEB35\uEB36\uEB37" +
-                "\uEB38\uEB39\uEB3A\uEB3B\uEB3C\uEB3D\uEB3E\uEB3F" +
-                "\uEB40\uEB41\uEB42\uEB43\uEB44\uEB45\uEB46\uEB47" +
-                "\uEB48\uEB49\uEB4A\uEB4B\uEB4C\uEB4D\uEB4E\uEB4F" +
-                "\uEB50\uEB51\uEB52\uEB53\uEB54\uEB55\uEB56\uEB57" +
-                "\uEB58\uEB59\uEB5A\uEB5B\uEB5C\uEB5D\uEB5E\uEB5F" +
-                "\uEB60\uEB61\uEB62\uEB63\uEB64\uEB65\uEB66\uEB67" +
-                "\uEB68\uEB69\uEB6A\uEB6B\uEB6C\uEB6D\uEB6E\uEB6F" +
-                "\uEB70\uEB71\uEB72\uEB73\uEB74\uEB75\uEB76\uEB77" +
-                "\uEB78\uEB79\uEB7A\uEB7B\uEB7C\uEB7D\uEB7E\uEB7F" +
-                "\uEB80\uEB81\uEB82\uEB83\uEB84\uEB85\uEB86\uEB87" +
-                "\uEB88\uEB89\uEB8A\uEB8B\uEB8C\uEB8D\uEB8E\uEB8F" +
-                "\uEB90\uEB91\uEB92\uEB93\uEB94\uEB95\uEB96\uEB97" +
-                "\uEB98\uEB99\uEB9A\uEB9B\uEB9C\uEB9D\uEB9E\uEB9F" +
-                "\uEBA0\uEBA1\uEBA2\uEBA3\uEBA4\uEBA5\uEBA6\uEBA7" +
-                "\uEBA8\uEBA9\uEBAA\uEBAB\uEBAC\uEBAD\uEBAE\uEBAF" +
-                "\uEBB0\uEBB1\uEBB2\uEBB3\uEBB4\uEBB5\uEBB6\uEBB7" +
-                "\uEBB8\uEBB9\uEBBA\uEBBB\uEBBC\uEBBD\uEBBE\uEBBF" +
-                "\uEBC0\uEBC1\uEBC2\uEBC3\uEBC4\uEBC5\uEBC6\uEBC7" +
-                "\uEBC8\uEBC9\uEBCA\uEBCB\uEBCC\uEBCD\uEBCE\uEBCF" +
-                "\uEBD0\uEBD1\uEBD2\uEBD3\uEBD4\uEBD5\uEBD6\uEBD7" +
-                "\uEBD8\uEBD9\uEBDA\uEBDB\uEBDC\uEBDD\uEBDE\uEBDF" +
-                "\uEBE0\uEBE1\uEBE2\uEBE3\uEBE4\uEBE5\uEBE6\uEBE7" +
-                "\uEBE8\uEBE9\uEBEA\uEBEB\uEBEC\uEBED\uEBEE\uEBEF" +
-                "\uEBF0\uEBF1\uEBF2\uEBF3\uEBF4\uEBF5\uEBF6\uEBF7" +
-                "\uEBF8\uEBF9\uEBFA\uEBFB\uEBFC\uEBFD\uEBFE\uEBFF" +
-                "\uEC00\uEC01\uEC02\uEC03\uEC04\uEC05\uEC06\uEC07" +
-                "\uEC08\uEC09\uEC0A\uEC0B\uEC0C\uEC0D\uEC0E\uEC0F" +
-                "\uEC10\uEC11\uEC12\uEC13\uEC14\uEC15\uEC16\uEC17" +
-                "\uEC18\uEC19\uEC1A\uEC1B\uEC1C\uEC1D\uEC1E\uEC1F" +
-                "\uEC20\uEC21\uEC22\uEC23\uEC24\uEC25\uEC26\uEC27" +
-                "\uEC28\uEC29\uEC2A\uEC2B\uEC2C\uEC2D\uEC2E\uEC2F" +
-                "\uEC30\uEC31\uEC32\uEC33\uEC34\uEC35\uEC36\uEC37" +
-                "\uEC38\uEC39\uEC3A\uEC3B\uEC3C\uEC3D\uEC3E\uEC3F" +
-                "\uEC40\uEC41\uEC42\uEC43\uEC44\uEC45\uEC46\uEC47" +
-                "\uEC48\uEC49\uEC4A\uEC4B\uEC4C\uEC4D\uEC4E\uEC4F" +
-                "\uEC50\uEC51\uEC52\uEC53\uEC54\uEC55\uEC56\uEC57" +
-                "\uEC58\uEC59\uEC5A\uEC5B\uEC5C\uEC5D\uEC5E\uEC5F" +
-                "\uEC60\uEC61\uEC62\uEC63\uEC64\uEC65\uEC66\uEC67" +
-                "\uEC68\uEC69\uEC6A\uEC6B\uEC6C\uEC6D\uEC6E\uEC6F" +
-                "\uEC70\uEC71\uEC72\uEC73\uEC74\uEC75\uEC76\uEC77" +
-                "\uEC78\uEC79\uEC7A\uEC7B\uEC7C\uEC7D\uEC7E\uEC7F" +
-                "\uEC80\uEC81\uEC82\uEC83\uEC84\uEC85\uEC86\uEC87" +
-                "\uEC88\uEC89\uEC8A\uEC8B\uEC8C\uEC8D\uEC8E\uEC8F" +
-                "\uEC90\uEC91\uEC92\uEC93\uEC94\uEC95\uEC96\uEC97" +
-                "\uEC98\uEC99\uEC9A\uEC9B\uEC9C\uEC9D\uEC9E\uEC9F" +
-                "\uECA0\uECA1\uECA2\uECA3\uECA4\uECA5\uECA6\uECA7" +
-                "\uECA8\uECA9\uECAA\uECAB\uECAC\uECAD\uECAE\uECAF" +
-                "\uECB0\uECB1\uECB2\uECB3\uECB4\uECB5\uECB6\uECB7" +
-                "\uECB8\uECB9\uECBA\uECBB\uECBC\uECBD\uECBE\uECBF" +
-                "\uECC0\uECC1\uECC2\uECC3\uECC4\uECC5\uECC6\uECC7" +
-                "\uECC8\uECC9\uECCA\uECCB\uECCC\uECCD\uECCE\uECCF" +
-                "\uECD0\uECD1\uECD2\uECD3\uECD4\uECD5\uECD6\uECD7" +
-                "\uECD8\uECD9\uECDA\uECDB\uECDC\uECDD\uECDE\uECDF" +
-                "\uECE0\uECE1\uECE2\uECE3\uECE4\uECE5\uECE6\uECE7" +
-                "\uECE8\uECE9\uECEA\uECEB\uECEC\uECED\uECEE\uECEF" +
-                "\uECF0\uECF1\uECF2\uECF3\uECF4\uECF5\uECF6\uECF7" +
-                "\uECF8\uECF9\uECFA\uECFB\uECFC\uECFD\uECFE\uECFF" +
-                "\uED00\uED01\uED02\uED03\uED04\uED05\uED06\uED07" +
-                "\uED08\uED09\uED0A\uED0B\uED0C\uED0D\uED0E\uED0F" +
-                "\uED10\uED11\uED12\uED13\uED14\uED15\uED16\uED17" +
-                "\uED18\uED19\uED1A\uED1B\uED1C\uED1D\uED1E\uED1F" +
-                "\uED20\uED21\uED22\uED23\uED24\uED25\uED26\uED27" +
-                "\uED28\uED29\uED2A\uED2B\uED2C\uED2D\uED2E\uED2F" +
-                "\uED30\uED31\uED32\uED33\uED34\uED35\uED36\uED37" +
-                "\uED38\uED39\uED3A\uED3B\uED3C\uED3D\uED3E\uED3F" +
-                "\uED40\uED41\uED42\uED43\uED44\uED45\uED46\uED47" +
-                "\uED48\uED49\uED4A\uED4B\uED4C\uED4D\uED4E\uED4F" +
-                "\uED50\uED51\uED52\uED53\uED54\uED55\uED56\uED57" +
-                "\uED58\uED59\uED5A\uED5B\uED5C\uED5D\uED5E\uED5F" +
-                "\uED60\uED61\uED62\uED63\uED64\uED65\uED66\uED67" +
-                "\uED68\uED69\uED6A\uED6B\uED6C\uED6D\uED6E\uED6F" +
-                "\uED70\uED71\uED72\uED73\uED74\uED75\uED76\uED77" +
-                "\uED78\uED79\uED7A\uED7B\uED7C\uED7D\uED7E\uED7F" +
-                "\uED80\uED81\uED82\uED83\uED84\uED85\uED86\uED87" +
-                "\uED88\uED89\uED8A\uED8B\uED8C\uED8D\uED8E\uED8F" +
-                "\uED90\uED91\uED92\uED93\uED94\uED95\uED96\uED97" +
-                "\uED98\uED99\uED9A\uED9B\uED9C\uED9D\uED9E\uED9F" +
-                "\uEDA0\uEDA1\uEDA2\uEDA3\uEDA4\uEDA5\uEDA6\uEDA7" +
-                "\uEDA8\uEDA9\uEDAA\uEDAB\uEDAC\uEDAD\uEDAE\uEDAF" +
-                "\uEDB0\uEDB1\uEDB2\uEDB3\uEDB4\uEDB5\uEDB6\uEDB7" +
-                "\uEDB8\uEDB9\uEDBA\uEDBB\uEDBC\uEDBD\uEDBE\uEDBF" +
-                "\uEDC0\uEDC1\uEDC2\uEDC3\uEDC4\uEDC5\uEDC6\uEDC7" +
-                "\uEDC8\uEDC9\uEDCA\uEDCB\uEDCC\uEDCD\uEDCE\uEDCF" +
-                "\uEDD0\uEDD1\uEDD2\uEDD3\uEDD4\uEDD5\uEDD6\uEDD7" +
-                "\uEDD8\uEDD9\uEDDA\uEDDB\uEDDC\uEDDD\uEDDE\uEDDF" +
-                "\uEDE0\uEDE1\uEDE2\uEDE3\uEDE4\uEDE5\uEDE6\uEDE7" +
-                "\uEDE8\uEDE9\uEDEA\uEDEB\uEDEC\uEDED\uEDEE\uEDEF" +
-                "\uEDF0\uEDF1\uEDF2\uEDF3\uEDF4\uEDF5\uEDF6\uEDF7" +
-                "\uEDF8\uEDF9\uEDFA\uEDFB\uEDFC\uEDFD\uEDFE\uEDFF" +
-                "\uEE00\uEE01\uEE02\uEE03\uEE04\uEE05\uEE06\uEE07" +
-                "\uEE08\uEE09\uEE0A\uEE0B\uEE0C\uEE0D\uEE0E\uEE0F" +
-                "\uEE10\uEE11\uEE12\uEE13\uEE14\uEE15\uEE16\uEE17" +
-                "\uEE18\uEE19\uEE1A\uEE1B\uEE1C\uEE1D\uEE1E\uEE1F" +
-                "\uEE20\uEE21\uEE22\uEE23\uEE24\uEE25\uEE26\uEE27" +
-                "\uEE28\uEE29\uEE2A\uEE2B\uEE2C\uEE2D\uEE2E\uEE2F" +
-                "\uEE30\uEE31\uEE32\uEE33\uEE34\uEE35\uEE36\uEE37" +
-                "\uEE38\uEE39\uEE3A\uEE3B\uEE3C\uEE3D\uEE3E\uEE3F" +
-                "\uEE40\uEE41\uEE42\uEE43\uEE44\uEE45\uEE46\uEE47" +
-                "\uEE48\uEE49\uEE4A\uEE4B\uEE4C\uEE4D\uEE4E\uEE4F" +
-                "\uEE50\uEE51\uEE52\uEE53\uEE54\uEE55\uEE56\uEE57" +
-                "\uEE58\uEE59\uEE5A\uEE5B\uEE5C\uEE5D\uEE5E\uEE5F" +
-                "\uEE60\uEE61\uEE62\uEE63\uEE64\uEE65\uEE66\uEE67" +
-                "\uEE68\uEE69\uEE6A\uEE6B\uEE6C\uEE6D\uEE6E\uEE6F" +
-                "\uEE70\uEE71\uEE72\uEE73\uEE74\uEE75\uEE76\uEE77" +
-                "\uEE78\uEE79\uEE7A\uEE7B\uEE7C\uEE7D\uEE7E\uEE7F" +
-                "\uEE80\uEE81\uEE82\uEE83\uEE84\uEE85\uEE86\uEE87" +
-                "\uEE88\uEE89\uEE8A\uEE8B\uEE8C\uEE8D\uEE8E\uEE8F" +
-                "\uEE90\uEE91\uEE92\uEE93\uEE94\uEE95\uEE96\uEE97" +
-                "\uEE98\uEE99\uEE9A\uEE9B\uEE9C\uEE9D\uEE9E\uEE9F" +
-                "\uEEA0\uEEA1\uEEA2\uEEA3\uEEA4\uEEA5\uEEA6\uEEA7" +
-                "\uEEA8\uEEA9\uEEAA\uEEAB\uEEAC\uEEAD\uEEAE\uEEAF" +
-                "\uEEB0\uEEB1\uEEB2\uEEB3\uEEB4\uEEB5\uEEB6\uEEB7" +
-                "\uEEB8\uEEB9\uEEBA\uEEBB\uEEBC\uEEBD\uEEBE\uEEBF" +
-                "\uEEC0\uEEC1\uEEC2\uEEC3\uEEC4\uEEC5\uEEC6\uEEC7" +
-                "\uEEC8\uEEC9\uEECA\uEECB\uEECC\uEECD\uEECE\uEECF" +
-                "\uEED0\uEED1\uEED2\uEED3\uEED4\uEED5\uEED6\uEED7" +
-                "\uEED8\uEED9\uEEDA\uEEDB\uEEDC\uEEDD\uEEDE\uEEDF" +
-                "\uEEE0\uEEE1\uEEE2\uEEE3\uEEE4\uEEE5\uEEE6\uEEE7" +
-                "\uEEE8\uEEE9\uEEEA\uEEEB\uEEEC\uEEED\uEEEE\uEEEF" +
-                "\uEEF0\uEEF1\uEEF2\uEEF3\uEEF4\uEEF5\uEEF6\uEEF7" +
-                "\uEEF8\uEEF9\uEEFA\uEEFB\uEEFC\uEEFD\uEEFE\uEEFF" +
-                "\uEF00\uEF01\uEF02\uEF03\uEF04\uEF05\uEF06\uEF07" +
-                "\uEF08\uEF09\uEF0A\uEF0B\uEF0C\uEF0D\uEF0E\uEF0F" +
-                "\uEF10\uEF11\uEF12\uEF13\uEF14\uEF15\uEF16\uEF17" +
-                "\uEF18\uEF19\uEF1A\uEF1B\uEF1C\uEF1D\uEF1E\uEF1F" +
-                "\uEF20\uEF21\uEF22\uEF23\uEF24\uEF25\uEF26\uEF27" +
-                "\uEF28\uEF29\uEF2A\uEF2B\uEF2C\uEF2D\uEF2E\uEF2F" +
-                "\uEF30\uEF31\uEF32\uEF33\uEF34\uEF35\uEF36\uEF37" +
-                "\uEF38\uEF39\uEF3A\uEF3B\uEF3C\uEF3D\uEF3E\uEF3F" +
-                "\uEF40\uEF41\uEF42\uEF43\uEF44\uEF45\uEF46\uEF47" +
-                "\uEF48\uEF49\uEF4A\uEF4B\uEF4C\uEF4D\uEF4E\uEF4F" +
-                "\uEF50\uEF51\uEF52\uEF53\uEF54\uEF55\uEF56\uEF57" +
-                "\uEF58\uEF59\uEF5A\uEF5B\uEF5C\uEF5D\uEF5E\uEF5F" +
-                "\uEF60\uEF61\uEF62\uEF63\uEF64\uEF65\uEF66\uEF67" +
-                "\uEF68\uEF69\uEF6A\uEF6B\uEF6C\uEF6D\uEF6E\uEF6F" +
-                "\uEF70\uEF71\uEF72\uEF73\uEF74\uEF75\uEF76\uEF77" +
-                "\uEF78\uEF79\uEF7A\uEF7B\uEF7C\uEF7D\uEF7E\uEF7F" +
-                "\uEF80\uEF81\uEF82\uEF83\uEF84\uEF85\uEF86\uEF87" +
-                "\uEF88\uEF89\uEF8A\uEF8B\uEF8C\uEF8D\uEF8E\uEF8F" +
-                "\uEF90\uEF91\uEF92\uEF93\uEF94\uEF95\uEF96\uEF97" +
-                "\uEF98\uEF99\uEF9A\uEF9B\uEF9C\uEF9D\uEF9E\uEF9F" +
-                "\uEFA0\uEFA1\uEFA2\uEFA3\uEFA4\uEFA5\uEFA6\uEFA7" +
-                "\uEFA8\uEFA9\uEFAA\uEFAB\uEFAC\uEFAD\uEFAE\uEFAF" +
-                "\uEFB0\uEFB1\uEFB2\uEFB3\uEFB4\uEFB5\uEFB6\uEFB7" +
-                "\uEFB8\uEFB9\uEFBA\uEFBB\uEFBC\uEFBD\uEFBE\uEFBF" +
-                "\uEFC0\uEFC1\uEFC2\uEFC3\uEFC4\uEFC5\uEFC6\uEFC7" +
-                "\uEFC8\uEFC9\uEFCA\uEFCB\uEFCC\uEFCD\uEFCE\uEFCF" +
-                "\uEFD0\uEFD1\uEFD2\uEFD3\uEFD4\uEFD5\uEFD6\uEFD7" +
-                "\uEFD8\uEFD9\uEFDA\uEFDB\uEFDC\uEFDD\uEFDE\uEFDF" +
-                "\uEFE0\uEFE1\uEFE2\uEFE3\uEFE4\uEFE5\uEFE6\uEFE7" +
-                "\uEFE8\uEFE9\uEFEA\uEFEB\uEFEC\uEFED\uEFEE\uEFEF" +
-                "\uEFF0\uEFF1\uEFF2\uEFF3\uEFF4\uEFF5\uEFF6\uEFF7" +
-                "\uEFF8\uEFF9\uEFFA\uEFFB\uEFFC\uEFFD\uEFFE\uEFFF" +
-                "\uF000\uF001\uF002\uF003\uF004\uF005\uF006\uF007" +
-                "\uF008\uF009\uF00A\uF00B\uF00C\uF00D\uF00E\uF00F" +
-                "\uF010\uF011\uF012\uF013\uF014\uF015\uF016\uF017" +
-                "\uF018\uF019\uF01A\uF01B\uF01C\uF01D\uF01E\uF01F" +
-                "\uF020\uF021\uF022\uF023\uF024\uF025\uF026\uF027" +
-                "\uF028\uF029\uF02A\uF02B\uF02C\uF02D\uF02E\uF02F" +
-                "\uF030\uF031\uF032\uF033\uF034\uF035\uF036\uF037" +
-                "\uF038\uF039\uF03A\uF03B\uF03C\uF03D\uF03E\uF03F" +
-                "\uF040\uF041\uF042\uF043\uF044\uF045\uF046\uF047" +
-                "\uF048\uF049\uF04A\uF04B\uF04C\uF04D\uF04E\uF04F" +
-                "\uF050\uF051\uF052\uF053\uF054\uF055\uF056\uF057" +
-                "\uF058\uF059\uF05A\uF05B\uF05C\uF05D\uF05E\uF05F" +
-                "\uF060\uF061\uF062\uF063\uF064\uF065\uF066\uF067" +
-                "\uF068\uF069\uF06A\uF06B\uF06C\uF06D\uF06E\uF06F" +
-                "\uF070\uF071\uF072\uF073\uF074\uF075\uF076\uF077" +
-                "\uF078\uF079\uF07A\uF07B\uF07C\uF07D\uF07E\uF07F" +
-                "\uF080\uF081\uF082\uF083\uF084\uF085\uF086\uF087" +
-                "\uF088\uF089\uF08A\uF08B\uF08C\uF08D\uF08E\uF08F" +
-                "\uF090\uF091\uF092\uF093\uF094\uF095\uF096\uF097" +
-                "\uF098\uF099\uF09A\uF09B\uF09C\uF09D\uF09E\uF09F" +
-                "\uF0A0\uF0A1\uF0A2\uF0A3\uF0A4\uF0A5\uF0A6\uF0A7" +
-                "\uF0A8\uF0A9\uF0AA\uF0AB\uF0AC\uF0AD\uF0AE\uF0AF" +
-                "\uF0B0\uF0B1\uF0B2\uF0B3\uF0B4\uF0B5\uF0B6\uF0B7" +
-                "\uF0B8\uF0B9\uF0BA\uF0BB\uF0BC\uF0BD\uF0BE\uF0BF" +
-                "\uF0C0\uF0C1\uF0C2\uF0C3\uF0C4\uF0C5\uF0C6\uF0C7" +
-                "\uF0C8\uF0C9\uF0CA\uF0CB\uF0CC\uF0CD\uF0CE\uF0CF" +
-                "\uF0D0\uF0D1\uF0D2\uF0D3\uF0D4\uF0D5\uF0D6\uF0D7" +
-                "\uF0D8\uF0D9\uF0DA\uF0DB\uF0DC\uF0DD\uF0DE\uF0DF" +
-                "\uF0E0\uF0E1\uF0E2\uF0E3\uF0E4\uF0E5\uF0E6\uF0E7" +
-                "\uF0E8\uF0E9\uF0EA\uF0EB\uF0EC\uF0ED\uF0EE\uF0EF" +
-                "\uF0F0\uF0F1\uF0F2\uF0F3\uF0F4\uF0F5\uF0F6\uF0F7" +
-                "\uF0F8\uF0F9\uF0FA\uF0FB\uF0FC\uF0FD\uF0FE\uF0FF" +
-                "\uF100\uF101\uF102\uF103\uF104\uF105\uF106\uF107" +
-                "\uF108\uF109\uF10A\uF10B\uF10C\uF10D\uF10E\uF10F" +
-                "\uF110\uF111\uF112\uF113\uF114\uF115\uF116\uF117" +
-                "\uF118\uF119\uF11A\uF11B\uF11C\uF11D\uF11E\uF11F" +
-                "\uF120\uF121\uF122\uF123\uF124\uF125\uF126\uF127" +
-                "\uF128\uF129\uF12A\uF12B\uF12C\uF12D\uF12E\uF12F" +
-                "\uF130\uF131\uF132\uF133\uF134\uF135\uF136\uF137" +
-                "\uF138\uF139\uF13A\uF13B\uF13C\uF13D\uF13E\uF13F" +
-                "\uF140\uF141\uF142\uF143\uF144\uF145\uF146\uF147" +
-                "\uF148\uF149\uF14A\uF14B\uF14C\uF14D\uF14E\uF14F" +
-                "\uF150\uF151\uF152\uF153\uF154\uF155\uF156\uF157" +
-                "\uF158\uF159\uF15A\uF15B\uF15C\uF15D\uF15E\uF15F" +
-                "\uF160\uF161\uF162\uF163\uF164\uF165\uF166\uF167" +
-                "\uF168\uF169\uF16A\uF16B\uF16C\uF16D\uF16E\uF16F" +
-                "\uF170\uF171\uF172\uF173\uF174\uF175\uF176\uF177" +
-                "\uF178\uF179\uF17A\uF17B\uF17C\uF17D\uF17E\uF17F" +
-                "\uF180\uF181\uF182\uF183\uF184\uF185\uF186\uF187" +
-                "\uF188\uF189\uF18A\uF18B\uF18C\uF18D\uF18E\uF18F" +
-                "\uF190\uF191\uF192\uF193\uF194\uF195\uF196\uF197" +
-                "\uF198\uF199\uF19A\uF19B\uF19C\uF19D\uF19E\uF19F" +
-                "\uF1A0\uF1A1\uF1A2\uF1A3\uF1A4\uF1A5\uF1A6\uF1A7" +
-                "\uF1A8\uF1A9\uF1AA\uF1AB\uF1AC\uF1AD\uF1AE\uF1AF" +
-                "\uF1B0\uF1B1\uF1B2\uF1B3\uF1B4\uF1B5\uF1B6\uF1B7" +
-                "\uF1B8\uF1B9\uF1BA\uF1BB\uF1BC\uF1BD\uF1BE\uF1BF" +
-                "\uF1C0\uF1C1\uF1C2\uF1C3\uF1C4\uF1C5\uF1C6\uF1C7" +
-                "\uF1C8\uF1C9\uF1CA\uF1CB\uF1CC\uF1CD\uF1CE\uF1CF" +
-                "\uF1D0\uF1D1\uF1D2\uF1D3\uF1D4\uF1D5\uF1D6\uF1D7" +
-                "\uF1D8\uF1D9\uF1DA\uF1DB\uF1DC\uF1DD\uF1DE\uF1DF" +
-                "\uF1E0\uF1E1\uF1E2\uF1E3\uF1E4\uF1E5\uF1E6\uF1E7" +
-                "\uF1E8\uF1E9\uF1EA\uF1EB\uF1EC\uF1ED\uF1EE\uF1EF" +
-                "\uF1F0\uF1F1\uF1F2\uF1F3\uF1F4\uF1F5\uF1F6\uF1F7" +
-                "\uF1F8\uF1F9\uF1FA\uF1FB\uF1FC\uF1FD\uF1FE\uF1FF" +
-                "\uF200\uF201\uF202\uF203\uF204\uF205\uF206\uF207" +
-                "\uF208\uF209\uF20A\uF20B\uF20C\uF20D\uF20E\uF20F" +
-                "\uF210\uF211\uF212\uF213\uF214\uF215\uF216\uF217" +
-                "\uF218\uF219\uF21A\uF21B\uF21C\uF21D\uF21E\uF21F" +
-                "\uF220\uF221\uF222\uF223\uF224\uF225\uF226\uF227" +
-                "\uF228\uF229\uF22A\uF22B\uF22C\uF22D\uF22E\uF22F" +
-                "\uF230\uF231\uF232\uF233\uF234\uF235\uF236\uF237" +
-                "\uF238\uF239\uF23A\uF23B\uF23C\uF23D\uF23E\uF23F" +
-                "\uF240\uF241\uF242\uF243\uF244\uF245\uF246\uF247" +
-                "\uF248\uF249\uF24A\uF24B\uF24C\uF24D\uF24E\uF24F" +
-                "\uF250\uF251\uF252\uF253\uF254\uF255\uF256\uF257" +
-                "\uF258\uF259\uF25A\uF25B\uF25C\uF25D\uF25E\uF25F" +
-                "\uF260\uF261\uF262\uF263\uF264\uF265\uF266\uF267" +
-                "\uF268\uF269\uF26A\uF26B\uF26C\uF26D\uF26E\uF26F" +
-                "\uF270\uF271\uF272\uF273\uF274\uF275\uF276\uF277" +
-                "\uF278\uF279\uF27A\uF27B\uF27C\uF27D\uF27E\uF27F" +
-                "\uF280\uF281\uF282\uF283\uF284\uF285\uF286\uF287" +
-                "\uF288\uF289\uF28A\uF28B\uF28C\uF28D\uF28E\uF28F" +
-                "\uF290\uF291\uF292\uF293\uF294\uF295\uF296\uF297" +
-                "\uF298\uF299\uF29A\uF29B\uF29C\uF29D\uF29E\uF29F" +
-                "\uF2A0\uF2A1\uF2A2\uF2A3\uF2A4\uF2A5\uF2A6\uF2A7" +
-                "\uF2A8\uF2A9\uF2AA\uF2AB\uF2AC\uF2AD\uF2AE\uF2AF" +
-                "\uF2B0\uF2B1\uF2B2\uF2B3\uF2B4\uF2B5\uF2B6\uF2B7" +
-                "\uF2B8\uF2B9\uF2BA\uF2BB\uF2BC\uF2BD\uF2BE\uF2BF" +
-                "\uF2C0\uF2C1\uF2C2\uF2C3\uF2C4\uF2C5\uF2C6\uF2C7" +
-                "\uF2C8\uF2C9\uF2CA\uF2CB\uF2CC\uF2CD\uF2CE\uF2CF" +
-                "\uF2D0\uF2D1\uF2D2\uF2D3\uF2D4\uF2D5\uF2D6\uF2D7" +
-                "\uF2D8\uF2D9\uF2DA\uF2DB\uF2DC\uF2DD\uF2DE\uF2DF" +
-                "\uF2E0\uF2E1\uF2E2\uF2E3\uF2E4\uF2E5\uF2E6\uF2E7" +
-                "\uF2E8\uF2E9\uF2EA\uF2EB\uF2EC\uF2ED\uF2EE\uF2EF" +
-                "\uF2F0\uF2F1\uF2F2\uF2F3\uF2F4\uF2F5\uF2F6\uF2F7" +
-                "\uF2F8\uF2F9\uF2FA\uF2FB\uF2FC\uF2FD\uF2FE\uF2FF" +
-                "\uF300\uF301\uF302\uF303\uF304\uF305\uF306\uF307" +
-                "\uF308\uF309\uF30A\uF30B\uF30C\uF30D\uF30E\uF30F" +
-                "\uF310\uF311\uF312\uF313\uF314\uF315\uF316\uF317" +
-                "\uF318\uF319\uF31A\uF31B\uF31C\uF31D\uF31E\uF31F" +
-                "\uF320\uF321\uF322\uF323\uF324\uF325\uF326\uF327" +
-                "\uF328\uF329\uF32A\uF32B\uF32C\uF32D\uF32E\uF32F" +
-                "\uF330\uF331\uF332\uF333\uF334\uF335\uF336\uF337" +
-                "\uF338\uF339\uF33A\uF33B\uF33C\uF33D\uF33E\uF33F" +
-                "\uF340\uF341\uF342\uF343\uF344\uF345\uF346\uF347" +
-                "\uF348\uF349\uF34A\uF34B\uF34C\uF34D\uF34E\uF34F" +
-                "\uF350\uF351\uF352\uF353\uF354\uF355\uF356\uF357" +
-                "\uF358\uF359\uF35A\uF35B\uF35C\uF35D\uF35E\uF35F" +
-                "\uF360\uF361\uF362\uF363\uF364\uF365\uF366\uF367" +
-                "\uF368\uF369\uF36A\uF36B\uF36C\uF36D\uF36E\uF36F" +
-                "\uF370\uF371\uF372\uF373\uF374\uF375\uF376\uF377" +
-                "\uF378\uF379\uF37A\uF37B\uF37C\uF37D\uF37E\uF37F" +
-                "\uF380\uF381\uF382\uF383\uF384\uF385\uF386\uF387" +
-                "\uF388\uF389\uF38A\uF38B\uF38C\uF38D\uF38E\uF38F" +
-                "\uF390\uF391\uF392\uF393\uF394\uF395\uF396\uF397" +
-                "\uF398\uF399\uF39A\uF39B\uF39C\uF39D\uF39E\uF39F" +
-                "\uF3A0\uF3A1\uF3A2\uF3A3\uF3A4\uF3A5\uF3A6\uF3A7" +
-                "\uF3A8\uF3A9\uF3AA\uF3AB\uF3AC\uF3AD\uF3AE\uF3AF" +
-                "\uF3B0\uF3B1\uF3B2\uF3B3\uF3B4\uF3B5\uF3B6\uF3B7" +
-                "\uF3B8\uF3B9\uF3BA\uF3BB\uF3BC\uF3BD\uF3BE\uF3BF" +
-                "\uF3C0\uF3C1\uF3C2\uF3C3\uF3C4\uF3C5\uF3C6\uF3C7" +
-                "\uF3C8\uF3C9\uF3CA\uF3CB\uF3CC\uF3CD\uF3CE\uF3CF" +
-                "\uF3D0\uF3D1\uF3D2\uF3D3\uF3D4\uF3D5\uF3D6\uF3D7" +
-                "\uF3D8\uF3D9\uF3DA\uF3DB\uF3DC\uF3DD\uF3DE\uF3DF" +
-                "\uF3E0\uF3E1\uF3E2\uF3E3\uF3E4\uF3E5\uF3E6\uF3E7" +
-                "\uF3E8\uF3E9\uF3EA\uF3EB\uF3EC\uF3ED\uF3EE\uF3EF" +
-                "\uF3F0\uF3F1\uF3F2\uF3F3\uF3F4\uF3F5\uF3F6\uF3F7" +
-                "\uF3F8\uF3F9\uF3FA\uF3FB\uF3FC\uF3FD\uF3FE\uF3FF" +
-                "\uF400\uF401\uF402\uF403\uF404\uF405\uF406\uF407" +
-                "\uF408\uF409\uF40A\uF40B\uF40C\uF40D\uF40E\uF40F" +
-                "\uF410\uF411\uF412\uF413\uF414\uF415\uF416\uF417" +
-                "\uF418\uF419\uF41A\uF41B\uF41C\uF41D\uF41E\uF41F" +
-                "\uF420\uF421\uF422\uF423\uF424\uF425\uF426\uF427" +
-                "\uF428\uF429\uF42A\uF42B\uF42C\uF42D\uF42E\uF42F" +
-                "\uF430\uF431\uF432\uF433\uF434\uF435\uF436\uF437" +
-                "\uF438\uF439\uF43A\uF43B\uF43C\uF43D\uF43E\uF43F" +
-                "\uF440\uF441\uF442\uF443\uF444\uF445\uF446\uF447" +
-                "\uF448\uF449\uF44A\uF44B\uF44C\uF44D\uF44E\uF44F" +
-                "\uF450\uF451\uF452\uF453\uF454\uF455\uF456\uF457" +
-                "\uF458\uF459\uF45A\uF45B\uF45C\uF45D\uF45E\uF45F" +
-                "\uF460\uF461\uF462\uF463\uF464\uF465\uF466\uF467" +
-                "\uF468\uF469\uF46A\uF46B\uF46C\uF46D\uF46E\uF46F" +
-                "\uF470\uF471\uF472\uF473\uF474\uF475\uF476\uF477" +
-                "\uF478\uF479\uF47A\uF47B\uF47C\uF47D\uF47E\uF47F" +
-                "\uF480\uF481\uF482\uF483\uF484\uF485\uF486\uF487" +
-                "\uF488\uF489\uF48A\uF48B\uF48C\uF48D\uF48E\uF48F" +
-                "\uF490\uF491\uF492\uF493\uF494\uF495\uF496\uF497" +
-                "\uF498\uF499\uF49A\uF49B\uF49C\uF49D\uF49E\uF49F" +
-                "\uF4A0\uF4A1\uF4A2\uF4A3\uF4A4\uF4A5\uF4A6\uF4A7" +
-                "\uF4A8\uF4A9\uF4AA\uF4AB\uF4AC\uF4AD\uF4AE\uF4AF" +
-                "\uF4B0\uF4B1\uF4B2\uF4B3\uF4B4\uF4B5\uF4B6\uF4B7" +
-                "\uF4B8\uF4B9\uF4BA\uF4BB\uF4BC\uF4BD\uF4BE\uF4BF" +
-                "\uF4C0\uF4C1\uF4C2\uF4C3\uF4C4\uF4C5\uF4C6\uF4C7" +
-                "\uF4C8\uF4C9\uF4CA\uF4CB\uF4CC\uF4CD\uF4CE\uF4CF" +
-                "\uF4D0\uF4D1\uF4D2\uF4D3\uF4D4\uF4D5\uF4D6\uF4D7" +
-                "\uF4D8\uF4D9\uF4DA\uF4DB\uF4DC\uF4DD\uF4DE\uF4DF" +
-                "\uF4E0\uF4E1\uF4E2\uF4E3\uF4E4\uF4E5\uF4E6\uF4E7" +
-                "\uF4E8\uF4E9\uF4EA\uF4EB\uF4EC\uF4ED\uF4EE\uF4EF" +
-                "\uF4F0\uF4F1\uF4F2\uF4F3\uF4F4\uF4F5\uF4F6\uF4F7" +
-                "\uF4F8\uF4F9\uF4FA\uF4FB\uF4FC\uF4FD\uF4FE\uF4FF" +
-                "\uF500\uF501\uF502\uF503\uF504\uF505\uF506\uF507" +
-                "\uF508\uF509\uF50A\uF50B\uF50C\uF50D\uF50E\uF50F" +
-                "\uF510\uF511\uF512\uF513\uF514\uF515\uF516\uF517" +
-                "\uF518\uF519\uF51A\uF51B\uF51C\uF51D\uF51E\uF51F" +
-                "\uF520\uF521\uF522\uF523\uF524\uF525\uF526\uF527" +
-                "\uF528\uF529\uF52A\uF52B\uF52C\uF52D\uF52E\uF52F" +
-                "\uF530\uF531\uF532\uF533\uF534\uF535\uF536\uF537" +
-                "\uF538\uF539\uF53A\uF53B\uF53C\uF53D\uF53E\uF53F" +
-                "\uF540\uF541\uF542\uF543\uF544\uF545\uF546\uF547" +
-                "\uF548\uF549\uF54A\uF54B\uF54C\uF54D\uF54E\uF54F" +
-                "\uF550\uF551\uF552\uF553\uF554\uF555\uF556\uF557" +
-                "\uF558\uF559\uF55A\uF55B\uF55C\uF55D\uF55E\uF55F" +
-                "\uF560\uF561\uF562\uF563\uF564\uF565\uF566\uF567" +
-                "\uF568\uF569\uF56A\uF56B\uF56C\uF56D\uF56E\uF56F" +
-                "\uF570\uF571\uF572\uF573\uF574\uF575\uF576\uF577" +
-                "\uF578\uF579\uF57A\uF57B\uF57C\uF57D\uF57E\uF57F" +
-                "\uF580\uF581\uF582\uF583\uF584\uF585\uF586\uF587" +
-                "\uF588\uF589\uF58A\uF58B\uF58C\uF58D\uF58E\uF58F" +
-                "\uF590\uF591\uF592\uF593\uF594\uF595\uF596\uF597" +
-                "\uF598\uF599\uF59A\uF59B\uF59C\uF59D\uF59E\uF59F" +
-                "\uF5A0\uF5A1\uF5A2\uF5A3\uF5A4\uF5A5\uF5A6\uF5A7" +
-                "\uF5A8\uF5A9\uF5AA\uF5AB\uF5AC\uF5AD\uF5AE\uF5AF" +
-                "\uF5B0\uF5B1\uF5B2\uF5B3\uF5B4\uF5B5\uF5B6\uF5B7" +
-                "\uF5B8\uF5B9\uF5BA\uF5BB\uF5BC\uF5BD\uF5BE\uF5BF" +
-                "\uF5C0\uF5C1\uF5C2\uF5C3\uF5C4\uF5C5\uF5C6\uF5C7" +
-                "\uF5C8\uF5C9\uF5CA\uF5CB\uF5CC\uF5CD\uF5CE\uF5CF" +
-                "\uF5D0\uF5D1\uF5D2\uF5D3\uF5D4\uF5D5\uF5D6\uF5D7" +
-                "\uF5D8\uF5D9\uF5DA\uF5DB\uF5DC\uF5DD\uF5DE\uF5DF" +
-                "\uF5E0\uF5E1\uF5E2\uF5E3\uF5E4\uF5E5\uF5E6\uF5E7" +
-                "\uF5E8\uF5E9\uF5EA\uF5EB\uF5EC\uF5ED\uF5EE\uF5EF" +
-                "\uF5F0\uF5F1\uF5F2\uF5F3\uF5F4\uF5F5\uF5F6\uF5F7" +
-                "\uF5F8\uF5F9\uF5FA\uF5FB\uF5FC\uF5FD\uF5FE\uF5FF" +
-                "\uF600\uF601\uF602\uF603\uF604\uF605\uF606\uF607" +
-                "\uF608\uF609\uF60A\uF60B\uF60C\uF60D\uF60E\uF60F" +
-                "\uF610\uF611\uF612\uF613\uF614\uF615\uF616\uF617" +
-                "\uF618\uF619\uF61A\uF61B\uF61C\uF61D\uF61E\uF61F" +
-                "\uF620\uF621\uF622\uF623\uF624\uF625\uF626\uF627" +
-                "\uF628\uF629\uF62A\uF62B\uF62C\uF62D\uF62E\uF62F" +
-                "\uF630\uF631\uF632\uF633\uF634\uF635\uF636\uF637" +
-                "\uF638\uF639\uF63A\uF63B\uF63C\uF63D\uF63E\uF63F" +
-                "\uF640\uF641\uF642\uF643\uF644\uF645\uF646\uF647" +
-                "\uF648\uF649\uF64A\uF64B\uF64C\uF64D\uF64E\uF64F" +
-                "\uF650\uF651\uF652\uF653\uF654\uF655\uF656\uF657" +
-                "\uF658\uF659\uF65A\uF65B\uF65C\uF65D\uF65E\uF65F" +
-                "\uF660\uF661\uF662\uF663\uF664\uF665\uF666\uF667" +
-                "\uF668\uF669\uF66A\uF66B\uF66C\uF66D\uF66E\uF66F" +
-                "\uF670\uF671\uF672\uF673\uF674\uF675\uF676\uF677" +
-                "\uF678\uF679\uF67A\uF67B\uF67C\uF67D\uF67E\uF67F" +
-                "\uF680\uF681\uF682\uF683\uF684\uF685\uF686\uF687" +
-                "\uF688\uF689\uF68A\uF68B\uF68C\uF68D\uF68E\uF68F" +
-                "\uF690\uF691\uF692\uF693\uF694\uF695\uF696\uF697" +
-                "\uF698\uF699\uF69A\uF69B\uF69C\uF69D\uF69E\uF69F" +
-                "\uF6A0\uF6A1\uF6A2\uF6A3\uF6A4\uF6A5\uF6A6\uF6A7" +
-                "\uF6A8\uF6A9\uF6AA\uF6AB\uF6AC\uF6AD\uF6AE\uF6AF" +
-                "\uF6B0\uF6B1\uF6B2\uF6B3\uF6B4\uF6B5\uF6B6\uF6B7" +
-                "\uF6B8\uF6B9\uF6BA\uF6BB\uF6BC\uF6BD\uF6BE\uF6BF" +
-                "\uF6C0\uF6C1\uF6C2\uF6C3\uF6C4\uF6C5\uF6C6\uF6C7" +
-                "\uF6C8\uF6C9\uF6CA\uF6CB\uF6CC\uF6CD\uF6CE\uF6CF" +
-                "\uF6D0\uF6D1\uF6D2\uF6D3\uF6D4\uF6D5\uF6D6\uF6D7" +
-                "\uF6D8\uF6D9\uF6DA\uF6DB\uF6DC\uF6DD\uF6DE\uF6DF" +
-                "\uF6E0\uF6E1\uF6E2\uF6E3\uF6E4\uF6E5\uF6E6\uF6E7" +
-                "\uF6E8\uF6E9\uF6EA\uF6EB\uF6EC\uF6ED\uF6EE\uF6EF" +
-                "\uF6F0\uF6F1\uF6F2\uF6F3\uF6F4\uF6F5\uF6F6\uF6F7" +
-                "\uF6F8\uF6F9\uF6FA\uF6FB\uF6FC\uF6FD\uF6FE\uF6FF" +
-                "\uF700\uF701\uF702\uF703\uF704\uF705\uF706\uF707" +
-                "\uF708\uF709\uF70A\uF70B\uF70C\uF70D\uF70E\uF70F" +
-                "\uF710\uF711\uF712\uF713\uF714\uF715\uF716\uF717" +
-                "\uF718\uF719\uF71A\uF71B\uF71C\uF71D\uF71E\uF71F" +
-                "\uF720\uF721\uF722\uF723\uF724\uF725\uF726\uF727" +
-                "\uF728\uF729\uF72A\uF72B\uF72C\uF72D\uF72E\uF72F" +
-                "\uF730\uF731\uF732\uF733\uF734\uF735\uF736\uF737" +
-                "\uF738\uF739\uF73A\uF73B\uF73C\uF73D\uF73E\uF73F" +
-                "\uF740\uF741\uF742\uF743\uF744\uF745\uF746\uF747" +
-                "\uF748\uF749\uF74A\uF74B\uF74C\uF74D\uF74E\uF74F" +
-                "\uF750\uF751\uF752\uF753\uF754\uF755\uF756\uF757" +
-                "\uF758\uF759\uF75A\uF75B\uF75C\uF75D\uF75E\uF75F" +
-                "\uF760\uF761\uF762\uF763\uF764\uF765\uF766\uF767" +
-                "\uF768\uF769\uF76A\uF76B\uF76C\uF76D\uF76E\uF76F" +
-                "\uF770\uF771\uF772\uF773\uF774\uF775\uF776\uF777" +
-                "\uF778\uF779\uF77A\uF77B\uF77C\uF77D\uF77E\uF77F" +
-                "\uF780\uF781\uF782\uF783\uF784\uF785\uF786\uF787" +
-                "\uF788\uF789\uF78A\uF78B\uF78C\uF78D\uF78E\uF78F" +
-                "\uF790\uF791\uF792\uF793\uF794\uF795\uF796\uF797" +
-                "\uF798\uF799\uF79A\uF79B\uF79C\uF79D\uF79E\uF79F" +
-                "\uF7A0\uF7A1\uF7A2\uF7A3\uF7A4\uF7A5\uF7A6\uF7A7" +
-                "\uF7A8\uF7A9\uF7AA\uF7AB\uF7AC\uF7AD\uF7AE\uF7AF" +
-                "\uF7B0\uF7B1\uF7B2\uF7B3\uF7B4\uF7B5\uF7B6\uF7B7" +
-                "\uF7B8\uF7B9\uF7BA\uF7BB\uF7BC\uF7BD\uF7BE\uF7BF" +
-                "\uF7C0\uF7C1\uF7C2\uF7C3\uF7C4\uF7C5\uF7C6\uF7C7" +
-                "\uF7C8\uF7C9\uF7CA\uF7CB\uF7CC\uF7CD\uF7CE\uF7CF" +
-                "\uF7D0\uF7D1\uF7D2\uF7D3\uF7D4\uF7D5\uF7D6\uF7D7" +
-                "\uF7D8\uF7D9\uF7DA\uF7DB\uF7DC\uF7DD\uF7DE\uF7DF" +
-                "\uF7E0\uF7E1\uF7E2\uF7E3\uF7E4\uF7E5\uF7E6\uF7E7" +
-                "\uF7E8\uF7E9\uF7EA\uF7EB\uF7EC\uF7ED\uF7EE\uF7EF" +
-                "\uF7F0\uF7F1\uF7F2\uF7F3\uF7F4\uF7F5\uF7F6\uF7F7" +
-                "\uF7F8\uF7F9\uF7FA\uF7FB\uF7FC\uF7FD\uF7FE\uF7FF" +
-                "\uF800\uF801\uF802\uF803\uF804\uF805\uF806\uF807" +
-                "\uF808\uF809\uF80A\uF80B\uF80C\uF80D\uF80E\uF80F" +
-                "\uF810\uF811\uF812\uF813\uF814\uF815\uF816\uF817" +
-                "\uF818\uF819\uF81A\uF81B\uF81C\uF81D\uF81E\uF81F" +
-                "\uF820\uF821\uF822\uF823\uF824\uF825\uF826\uF827" +
-                "\uF828\uF829\uF82A\uF82B\uF82C\uF82D\uF82E\uF82F" +
-                "\uF830\uF831\uF832\uF833\uF834\uF835\uF836\uF837" +
-                "\uF838\uF839\uF83A\uF83B\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD"
-                ;
-            mappingTableG2ad =
-                "\u309B\u309C\u00A8\uFF3E\u30FD\u30FE\u309D\u309E" +
-                "\u02BA\uF83E\u3005\u3006\u3007\u30FC\u2010\uFF3B" +
-                "\uFF3D\u00B4\u2033\u273D\u3013\u2208\u220B\u2286" +
-                "\u2287\u2282\u2283\u2227\u2228\u21D2\u21D4\u2200" +
-                "\u2203\u2312\u2202\u2207\u226A\u226B\u223D\u221D" +
-                "\u222C\u212B\u2030\u266F\u266D\u266A\u2020\u2021" +
-                "\u00B6\u25EF\u3041\u3042\u3043\u3044\u3045\u3046" +
-                "\u3047\u3048\u3049\u304A\u304B\u304C\u304D\u304E" +
-                "\u304F\u3050\u3051\u3052\u3053\u3054\u3055\u3056" +
-                "\u3057\u3058\u3059\u305A\u305B\u305C\u305D\u305E" +
-                "\u305F\u3060\u3061\u3062\u3063\u3064\u3065\u3066" +
-                "\u3067\u3068\u3069\u306A\u306B\u306C\u306D\u306E" +
-                "\u306F\u3070\u3071\u3072\u3073\u3074\u3075\u3076" +
-                "\u3077\u3078\u3079\u307A\u307B\u307C\u307D\u307E" +
-                "\u307F\u3080\u3081\u3082\u3083\u3084\u3085\u3086" +
-                "\u3087\u3088\u3089\u308A\u308B\u308C\u308D\u308E" +
-                "\u308F\u3090\u3091\u3092\u3093\u30A1\u30A2\u30A3" +
-                "\u30A4\u30A5\u30A6\u30A7\u30A8\u30A9\u30AA\u30AB" +
-                "\u30AC\u30AD\u30AE\u30AF\u30B0\u30B1\u30B2\u30B3" +
-                "\u30B4\u30B5\u30B6\u30B7\u30B8\u30B9\u30BA\u30BB" +
-                "\u30BC\u30BD\u30BE\u30BF\u30C0\u30C1\u30C2\u30C3" +
-                "\u30C4\u30C5\u30C6\u30C7\u30C8\u30C9\u30CA\u30CB" +
-                "\u30CC\u30CD\u30CE\u30CF\u30D0\u30D1\u30D2\u30D3" +
-                "\u30D4\u30D5\u30D6\u30D7\u30D8\u30D9\u30DA\u30DB" +
-                "\u30DC\u30DD\u30DE\u30DF\u30E0\u30E1\u30E2\u30E3" +
-                "\u30E4\u30E5\u30E6\u30E7\u30E8\u30E9\u30EA\u30EB" +
-                "\u30EC\u30ED\u30EE\u30EF\u30F0\u30F1\u30F2\u30F3" +
-                "\u30F4\u30F5\u30F6\u0410\u0411\u0412\u0413\u0414" +
-                "\u0415\u0401\u0416\u0417\u0418\u0419\u041A\u041B" +
-                "\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423" +
-                "\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B" +
-                "\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433" +
-                "\u0434\u0435\u0451\u0436\u0437\u0438\u0439\u043A" +
-                "\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442" +
-                "\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A" +
-                "\u044B\u044C\u044D\u044E\u044F\u2501\u2503\u250F" +
-                "\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B" +
-                "\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525" +
-                "\u2538\u2542\uF83F\uF840\uF841\uF842\u21E7\u21B8" +
-                "\u21B9\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121" +
-                "\u6491\uFA0C\u691E\uFA0D\u6EB8\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
-                "\uFFFD\uFFFD\uFFFD\uFFFD"
-                ;
-        }
-    }
-
-    protected static class Encoder extends SimpleEUCEncoder {
-
-        public Encoder(Charset cs) {
-            super(cs);
-            super.mask1 = 0xFFC0;
-            super.mask2 = 0x003F;
-            super.shift = 6;
-            super.index1 = index1;
-            super.index2 = index2;
-            super.index2a = index2a;
-            super.index2b = index2b;
-            super.index2c = index2c;
-        }
-
-        private static final short index1[] =
-        {
-                19535, 13095, 12408, 11748,   223,   223,   223,   223, // 0000 - 01FF
-                  223,   223,  9457, 14043,   223,   223, 10349, 11067, // 0200 - 03FF
-                24969, 10729,   223,   223,   223,   223,   223,   223, // 0400 - 05FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 0600 - 07FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 0800 - 09FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 0A00 - 0BFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 0C00 - 0DFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 0E00 - 0FFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 1000 - 11FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 1200 - 13FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 1400 - 15FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 1600 - 17FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 1800 - 19FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 1A00 - 1BFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 1C00 - 1DFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 1E00 - 1FFF
-                24401,   223,   223,   223, 24353, 12626,  9241,  8204, // 2000 - 21FF
-                10119,  9193, 16486,   223,  8250,   223,   223,   223, // 2200 - 23FF
-                 9582,  9616,   223,   223,  9083, 13986, 24230, 15436, // 2400 - 25FF
-                21619,  8517,   223,   223,   226,   223,   223,   223, // 2600 - 27FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 2800 - 29FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 2A00 - 2BFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 2C00 - 2DFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 2E00 - 2FFF
-                 7839, 22767,  7071,  6753, 10302,   223,   223,   223, // 3000 - 31FF
-                 8269,   223,  7166,   223,   223,   223,  8124,  9301, // 3200 - 33FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 3400 - 35FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 3600 - 37FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 3800 - 39FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 3A00 - 3BFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 3C00 - 3DFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 3E00 - 3FFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 4000 - 41FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 4200 - 43FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 4400 - 45FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 4600 - 47FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 4800 - 49FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 4A00 - 4BFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // 4C00 - 4DFF
-                 6625,  8699, 27828, 28393, 28329,  6879, 28265, 28014, // 4E00 - 4FFF
-                27766, 27640, 27576, 21185, 27512, 27325, 27198, 27888, // 5000 - 51FF
-                27073, 20233, 26946, 26882, 17057, 26818, 27387, 11327, // 5200 - 53FF
-                19346, 26754, 26690, 26626, 26179, 26562, 26498, 26434, // 5400 - 55FF
-                26370, 26306, 26053, 25989, 18008, 25863, 25799, 19472, // 5600 - 57FF
-                25735,  8573, 25671, 17817,  9518, 25607, 25480, 25416, // 5800 - 59FF
-                25289, 25225,  7520, 25161,  7647, 25097, 25033, 24846, // 5A00 - 5BFF
-                  289, 24656, 21560, 12466, 24592, 24528, 24167, 24103, // 5C00 - 5DFF
-                13031, 24039, 23912,   156, 12969, 23848, 23784, 23720, // 5E00 - 5FFF
-                23597, 23533, 23469, 23405, 23341, 23214, 23150, 11202, // 6000 - 61FF
-                23086, 23022, 22958, 11451, 22831, 22704, 22577, 22454, // 6200 - 63FF
-                11806, 22390, 14386,  9741, 22326,  8010, 22262,  6816, // 6400 - 65FF
-                22138, 28077, 21948, 21884, 21820, 23656, 28140, 21756, // 6600 - 67FF
-                 7885, 21692, 21502, 24906, 22198, 21377, 12060, 27261, // 6800 - 69FF
-                21313, 21249, 21122, 11389, 21058, 27009, 20994, 20930, // 6A00 - 6BFF
-                20866, 20739, 20675, 20489, 20425, 20361, 20297, 20170, // 6C00 - 6DFF
-                20106, 19983,  8325, 19919, 19855, 19791, 19727, 19663, // 6E00 - 6FFF
-                19599, 19283, 10665, 22513, 19159, 26116, 19095, 19031, // 7000 - 71FF
-                26242, 25543, 18967, 18903, 18839, 18775, 18711, 18647, // 7200 - 73FF
-                18583, 18519, 18455, 18391, 18327, 18263, 18199, 18135, // 7400 - 75FF
-                17945, 10475, 25352, 11139, 24719, 19219, 17881, 10181, // 7600 - 77FF
-                10243, 27134, 17691, 24782, 24464, 17627, 23975, 17502, // 7800 - 79FF
-                17438, 17374, 17310, 17246, 17121, 16998,  9678, 16934, // 7A00 - 7BFF
-                16870, 16806, 16742, 20548, 16678, 16614, 16550, 16424, // 7C00 - 7DFF
-                27448, 16297, 16204,   223, 15502, 28201, 21438, 16140, // 7E00 - 7FFF
-                16076, 17563, 24292,  7947, 15949, 17182, 15885, 15821, // 8000 - 81FF
-                15757, 15693, 15566, 15315, 15251, 15187, 23277, 15123, // 8200 - 83FF
-                22894, 14960, 27950, 14896, 14769, 14642, 14578, 14514, // 8400 - 85FF
-                14450, 14324, 20042, 14197, 14133, 13924, 22640, 13860, // 8600 - 87FF
-                13796, 13732, 13542, 13415, 22011, 22074, 20802, 13351, // 8800 - 89FF
-                13287, 13223, 20611, 13159, 12813, 12749, 12594,   223, // 8A00 - 8BFF
-                21628, 19409, 12530, 12344, 12252, 12906, 12188, 18071, // 8C00 - 8DFF
-                12124, 11998, 17754, 11934, 11870, 11707,  7203, 27702, // 8E00 - 8FFF
-                11643, 16360, 11579, 16012, 11515, 11266, 11003, 10939, // 9000 - 91FF
-                10875, 10811, 10603, 10539, 10413, 10055,  9997,  9933, // 9200 - 93FF
-                 9869,  9805,  9451,   223,   223, 11077,  9387,  9147, // 9400 - 95FF
-                15059,  9019,  8955,  8891,  8827, 25925,  8763, 15629, // 9600 - 97FF
-                 8637, 15378, 14069,  8453,  8389, 15023,    93, 14832, // 9800 - 99FF
-                14705,  8074, 12280,  7775, 14260, 13605,  7711,  7584, // 9A00 - 9BFF
-                12685,  7459,   223, 16233,  7395,  7331,  7267, 13668, // 9C00 - 9DFF
-                 7135, 10747,  7007,  6943,  6689,  6561,    51,   223, // 9E00 - 9FFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // A000 - A1FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // A200 - A3FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // A400 - A5FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // A600 - A7FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // A800 - A9FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // AA00 - ABFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // AC00 - ADFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // AE00 - AFFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // B000 - B1FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // B200 - B3FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // B400 - B5FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // B600 - B7FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // B800 - B9FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // BA00 - BBFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // BC00 - BDFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // BE00 - BFFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // C000 - C1FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // C200 - C3FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // C400 - C5FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // C600 - C7FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // C800 - C9FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // CA00 - CBFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // CC00 - CDFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // CE00 - CFFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // D000 - D1FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // D200 - D3FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // D400 - D5FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // D600 - D7FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // D800 - D9FF
-                  223,   223,   223,   223,   223,   223,   223,   223, // DA00 - DBFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // DC00 - DDFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // DE00 - DFFF
-                 6497,  6433,  6369,  6305,  6241,  6177,  6113,  6049, // E000 - E1FF
-                 5985,  5921,  5857,  5793,  5729,  5665,  5601,  5537, // E200 - E3FF
-                 5473,  5409,  5345,  5281,  5217,  5153,  5089,  5025, // E400 - E5FF
-                 4961,  4897,  4833,  4769,  4705,  4641,  4577,  4513, // E600 - E7FF
-                 4449,  4385,  4321,  4257,  4193,  4129,  4065,  4001, // E800 - E9FF
-                 3937,  3873,  3809,  3745,  3681,  3617,  3553,  3489, // EA00 - EBFF
-                 3425,  3361,  3297,  3233,  3169,  3105,  3041,  2977, // EC00 - EDFF
-                 2913,  2849,  2785,  2721,  2657,  2593,  2529,  2465, // EE00 - EFFF
-                 2401,  2337,  2273,  2209,  2145,  2081,  2017,  1953, // F000 - F1FF
-                 1889,  1825,  1761,  1697,  1633,  1569,  1505,  1441, // F200 - F3FF
-                 1377,  1313,  1249,  1185,  1121,  1057,   993,   929, // F400 - F5FF
-                  865,   801,   737,   673,   609,   545,   481,   417, // F600 - F7FF
-                  353,   220,   223,   223,   223,   223,   223,   223, // F800 - F9FF
-                15488,   223,   223,   223,   223,   223,   223,   223, // FA00 - FBFF
-                  223,   223,   223,   223,   223,   223,   223,   223, // FC00 - FDFF
-                 9323,     0,   223,   223, 13478, 12876,   223,  8158,
-        };
-
-        private final static String index2;
-        private final static String index2a;
-        private final static String index2b;
-        private final static String index2c;
-        static {
-            index2 =
-                "\u0000\uA1D5\u0000\uA1D8\u0000\uA1D9\u0000\uA1DC\u0000\uA1DD" + //     0 -     4
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2A7" + //     5 -     9
-                "\u0000\uA2A8\u0000\uA2AB\u0000\uA2AC\u0000\uA2A9\u0000\uA2AA" + //    10 -    14
-                "\u0000\uA1BD\u0000\uA1AE\u0000\uA1AF\u0000\uA1B0\u0000\u0000" + //    15 -    19
-                "\u0000\uA1B2\u0000\uA1B3\u0000\uA1B4\u0000\uA1B5\u0000\uA1B9" + //    20 -    24
-                "\u0000\uA1DE\u0000\uA1DF\u0000\uA1E0\u0000\uA1E1\u0000\uA1E2" + //    25 -    29
-                "\u0000\uA1E3\u0000\uA2AD\u0000\uA2AE\u0000\uA2AF\u0000\uA2BF" + //    30 -    34
-                "\u0000\uA2C0\u0000\uA2C1\u0000\uA2C2\u0000\uA2C3\u0000\u0000" + //    35 -    39
-                "\u0000\uA2E2\u0000\uA2EC\u0000\uA2ED\u0000\uA2EE\u0000\u0000" + //    40 -    44
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //    45 -    49
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //    50 -    54
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //    55 -    59
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF3BE" + //    60 -    64
-                "\u0000\u0000\u0000\u0000\u0000\uF8B2\u8EA2\uEBCD\u8EA2\uEDC3" + //    65 -    69
-                "\u0000\u0000\u0000\uFCB3\u8EA2\uEEFB\u0000\u0000\u0000\u0000" + //    70 -    74
-                "\u8EA2\uF2C4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF3BF" + //    75 -    79
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE1C2\u0000\u0000" + //    80 -    84
-                "\u8EA2\uEEFC\u0000\u0000\u8EA2\uF1EF\u0000\u0000\u0000\u0000" + //    85 -    89
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //    90 -    94
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //    95 -    99
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   100 -   104
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   105 -   109
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   110 -   114
-                "\u0000\uD3FB\u8EA2\uBAB4\u8EA2\uE0E1\u0000\uD3FC\u0000\u0000" + //   115 -   119
-                "\u0000\u0000\u8EA2\uCFBA\u8EA2\uCFB9\u8EA2\uDBEC\u0000\u0000" + //   120 -   124
-                "\u0000\u0000\u8EA2\uE0E3\u0000\u0000\u8EA2\uE0E2\u0000\u0000" + //   125 -   129
-                "\u0000\uF7F6\u8EA2\uE7FD\u8EA2\uE7FE\u0000\uFAD4\u0000\u0000" + //   130 -   134
-                "\u0000\u0000\u8EA2\uF2A2\u0000\uD8EB\u0000\uE3A6\u0000\uE3A5" + //   135 -   139
-                "\u8EA2\uC8EA\u8EA2\uC8EC\u0000\uE7EA\u8EA2\uC8EB\u0000\uE7E9" + //   140 -   144
-                "\u0000\uE7EB\u8EA2\uC8ED\u0000\u0000\u0000\u0000\u0000\u0000" + //   145 -   149
-                "\u8EA2\uCFBC\u8EA2\uCFBE\u8EA2\uCFBD\u0000\u0000\u8EA2\uCFC0" + //   150 -   154
-                "\u0000\u0000\u0000\u0000\u0000\uDFA1\u0000\uDFA2\u0000\u0000" + //   155 -   159
-                "\u0000\uDFA3\u8EA2\uC2E3\u8EA2\uC2E5\u8EA2\uC2E7\u0000\uE3EE" + //   160 -   164
-                "\u0000\uE3ED\u0000\uDEFE\u8EA2\uC2E6\u8EA2\uC2E4\u0000\u0000" + //   165 -   169
-                "\u8EA2\uC9FD\u0000\u0000\u0000\u0000\u8EA2\uC9FB\u8EA2\uCAA3" + //   170 -   174
-                "\u0000\uE8E0\u8EA2\uCAA4\u8EA2\uCAA1\u0000\uE8E1\u8EA2\uC9FC" + //   175 -   179
-                "\u8EA2\uC9FA\u8EA2\uCAA2\u0000\uECDA\u8EA2\uD0BC\u8EA2\uC9FE" + //   180 -   184
-                "\u0000\uECDC\u8EA2\uD0BD\u0000\uECDB\u0000\uECDE\u8EA2\uD0BE" + //   185 -   189
-                "\u0000\uECD9\u0000\uECDD\u0000\u0000\u8EA2\uD6FD\u8EA2\uD6FB" + //   190 -   194
-                "\u8EA2\uD6FA\u8EA2\uD6FC\u8EA2\uD6F9\u0000\u0000\u0000\u0000" + //   195 -   199
-                "\u0000\uF8B3\u0000\u0000\u8EA2\uE8F2\u8EA2\uE8F3\u0000\u0000" + //   200 -   204
-                "\u8EA2\uEBD9\u8EA2\uEDCD\u0000\uFDA2\u0000\uA7D5\u0000\u0000" + //   205 -   209
-                "\u0000\uCDB7\u0000\uCAAC\u0000\u0000\u0000\u0000\u0000\uD0FA" + //   210 -   214
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC4DC\u0000\uC5BD" + //   215 -   219
-                "\u8EAD\uA4BA\u8EAD\uA4BB\u8EAD\uA4BC\u0000\u0000\u0000\u0000" + //   220 -   224
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   225 -   229
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   230 -   234
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   235 -   239
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   240 -   244
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   245 -   249
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   250 -   254
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   255 -   259
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   260 -   264
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   265 -   269
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   270 -   274
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   275 -   279
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   280 -   284
-                "\u0000\u0000\u0000\u0000\u8EAD\uA1B4\u0000\u0000\u0000\u0000" + //   285 -   289
-                "\u0000\uD0EC\u0000\u0000\u8EA2\uAEEB\u0000\uD5AB\u0000\u0000" + //   290 -   294
-                "\u0000\u0000\u0000\uD9F2\u0000\uD9F1\u0000\uD9F0\u0000\uDEF1" + //   295 -   299
-                "\u0000\uDEF2\u8EA2\uBBBB\u0000\uE8D7\u0000\uF0D2\u0000\uC4D1" + //   300 -   304
-                "\u8EA2\uA1BC\u0000\uC5B7\u8EA2\uA1D5\u0000\u0000\u0000\u0000" + //   305 -   309
-                "\u8EA2\uA2B4\u0000\uC7FA\u0000\u0000\u0000\u0000\u0000\u0000" + //   310 -   314
-                "\u0000\uCCFE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   315 -   319
-                "\u8EA2\uC2D1\u0000\u0000\u0000\u0000\u0000\uC4D2\u0000\u0000" + //   320 -   324
-                "\u0000\uC5B8\u8EA2\uA2B5\u0000\u0000\u0000\u0000\u8EA2\uA3DE" + //   325 -   329
-                "\u0000\u0000\u8EA2\uA3DF\u0000\u0000\u0000\uC9FC\u0000\u0000" + //   330 -   334
-                "\u0000\u0000\u0000\u0000\u8EA2\uBBBC\u0000\uDEF3\u0000\u0000" + //   335 -   339
-                "\u8EA2\uC2D2\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF3D3" + //   340 -   344
-                "\u0000\uC4D3\u0000\uC4E7\u0000\uC5B9\u8EA2\uA1D6\u0000\uC6C7" + //   345 -   349
-                "\u0000\u0000\u0000\uCAA2\u0000\uCAA1\u8EAC\uE2C3\u8EAC\uE2C4" + //   350 -   354
-                "\u8EAC\uE2C5\u8EAC\uE2C6\u8EAC\uE2C7\u8EAC\uE2C8\u8EAC\uE2C9" + //   355 -   359
-                "\u8EAC\uE2CA\u8EAC\uE2CB\u8EAC\uE2CC\u8EAC\uE2CD\u8EAC\uE2CE" + //   360 -   364
-                "\u8EAC\uE2CF\u8EAC\uE2D0\u8EAC\uE2D1\u8EAC\uE2D2\u8EAC\uE2D3" + //   365 -   369
-                "\u8EAC\uE2D4\u8EAC\uE2D5\u8EAC\uE2D6\u8EAC\uE2D7\u8EAC\uE2D8" + //   370 -   374
-                "\u8EAC\uE2D9\u8EAC\uE2DA\u8EAC\uE2DB\u8EAC\uE2DC\u8EAC\uE2DD" + //   375 -   379
-                "\u8EAC\uE2DE\u8EAC\uE2DF\u8EAC\uE2E0\u8EAC\uE2E1\u8EAC\uE2E2" + //   380 -   384
-                "\u8EAC\uE2E3\u8EAC\uE2E4\u8EAC\uE2E5\u8EAC\uE2E6\u8EAC\uE2E7" + //   385 -   389
-                "\u8EAC\uE2E8\u8EAC\uE2E9\u8EAC\uE2EA\u8EAC\uE2EB\u8EAC\uE2EC" + //   390 -   394
-                "\u8EAC\uE2ED\u8EAC\uE2EE\u8EAC\uE2EF\u8EAC\uE2F0\u8EAC\uE2F1" + //   395 -   399
-                "\u8EAC\uE2F2\u8EAC\uE2F3\u8EAC\uE2F4\u8EAC\uE2F5\u8EAC\uE2F6" + //   400 -   404
-                "\u8EAC\uE2F7\u8EAC\uE2F8\u8EAC\uE2F9\u8EAC\uE2FA\u8EAC\uE2FB" + //   405 -   409
-                "\u8EAC\uE2FC\u8EAC\uE2FD\u8EAC\uE2FE\u0000\u0000\u0000\u0000" + //   410 -   414
-                "\u8EAD\uA1AA\u8EAD\uA4B9\u8EAC\uE1E1\u8EAC\uE1E2\u8EAC\uE1E3" + //   415 -   419
-                "\u8EAC\uE1E4\u8EAC\uE1E5\u8EAC\uE1E6\u8EAC\uE1E7\u8EAC\uE1E8" + //   420 -   424
-                "\u8EAC\uE1E9\u8EAC\uE1EA\u8EAC\uE1EB\u8EAC\uE1EC\u8EAC\uE1ED" + //   425 -   429
-                "\u8EAC\uE1EE\u8EAC\uE1EF\u8EAC\uE1F0\u8EAC\uE1F1\u8EAC\uE1F2" + //   430 -   434
-                "\u8EAC\uE1F3\u8EAC\uE1F4\u8EAC\uE1F5\u8EAC\uE1F6\u8EAC\uE1F7" + //   435 -   439
-                "\u8EAC\uE1F8\u8EAC\uE1F9\u8EAC\uE1FA\u8EAC\uE1FB\u8EAC\uE1FC" + //   440 -   444
-                "\u8EAC\uE1FD\u8EAC\uE1FE\u8EAC\uE2A1\u8EAC\uE2A2\u8EAC\uE2A3" + //   445 -   449
-                "\u8EAC\uE2A4\u8EAC\uE2A5\u8EAC\uE2A6\u8EAC\uE2A7\u8EAC\uE2A8" + //   450 -   454
-                "\u8EAC\uE2A9\u8EAC\uE2AA\u8EAC\uE2AB\u8EAC\uE2AC\u8EAC\uE2AD" + //   455 -   459
-                "\u8EAC\uE2AE\u8EAC\uE2AF\u8EAC\uE2B0\u8EAC\uE2B1\u8EAC\uE2B2" + //   460 -   464
-                "\u8EAC\uE2B3\u8EAC\uE2B4\u8EAC\uE2B5\u8EAC\uE2B6\u8EAC\uE2B7" + //   465 -   469
-                "\u8EAC\uE2B8\u8EAC\uE2B9\u8EAC\uE2BA\u8EAC\uE2BB\u8EAC\uE2BC" + //   470 -   474
-                "\u8EAC\uE2BD\u8EAC\uE2BE\u8EAC\uE2BF\u8EAC\uE2C0\u8EAC\uE2C1" + //   475 -   479
-                "\u8EAC\uE2C2\u8EAC\uE1A1\u8EAC\uE1A2\u8EAC\uE1A3\u8EAC\uE1A4" + //   480 -   484
-                "\u8EAC\uE1A5\u8EAC\uE1A6\u8EAC\uE1A7\u8EAC\uE1A8\u8EAC\uE1A9" + //   485 -   489
-                "\u8EAC\uE1AA\u8EAC\uE1AB\u8EAC\uE1AC\u8EAC\uE1AD\u8EAC\uE1AE" + //   490 -   494
-                "\u8EAC\uE1AF\u8EAC\uE1B0\u8EAC\uE1B1\u8EAC\uE1B2\u8EAC\uE1B3" + //   495 -   499
-                "\u8EAC\uE1B4\u8EAC\uE1B5\u8EAC\uE1B6\u8EAC\uE1B7\u8EAC\uE1B8" + //   500 -   504
-                "\u8EAC\uE1B9\u8EAC\uE1BA\u8EAC\uE1BB\u8EAC\uE1BC\u8EAC\uE1BD" + //   505 -   509
-                "\u8EAC\uE1BE\u8EAC\uE1BF\u8EAC\uE1C0\u8EAC\uE1C1\u8EAC\uE1C2" + //   510 -   514
-                "\u8EAC\uE1C3\u8EAC\uE1C4\u8EAC\uE1C5\u8EAC\uE1C6\u8EAC\uE1C7" + //   515 -   519
-                "\u8EAC\uE1C8\u8EAC\uE1C9\u8EAC\uE1CA\u8EAC\uE1CB\u8EAC\uE1CC" + //   520 -   524
-                "\u8EAC\uE1CD\u8EAC\uE1CE\u8EAC\uE1CF\u8EAC\uE1D0\u8EAC\uE1D1" + //   525 -   529
-                "\u8EAC\uE1D2\u8EAC\uE1D3\u8EAC\uE1D4\u8EAC\uE1D5\u8EAC\uE1D6" + //   530 -   534
-                "\u8EAC\uE1D7\u8EAC\uE1D8\u8EAC\uE1D9\u8EAC\uE1DA\u8EAC\uE1DB" + //   535 -   539
-                "\u8EAC\uE1DC\u8EAC\uE1DD\u8EAC\uE1DE\u8EAC\uE1DF\u8EAC\uE1E0" + //   540 -   544
-                "\u8EAC\uE0BF\u8EAC\uE0C0\u8EAC\uE0C1\u8EAC\uE0C2\u8EAC\uE0C3" + //   545 -   549
-                "\u8EAC\uE0C4\u8EAC\uE0C5\u8EAC\uE0C6\u8EAC\uE0C7\u8EAC\uE0C8" + //   550 -   554
-                "\u8EAC\uE0C9\u8EAC\uE0CA\u8EAC\uE0CB\u8EAC\uE0CC\u8EAC\uE0CD" + //   555 -   559
-                "\u8EAC\uE0CE\u8EAC\uE0CF\u8EAC\uE0D0\u8EAC\uE0D1\u8EAC\uE0D2" + //   560 -   564
-                "\u8EAC\uE0D3\u8EAC\uE0D4\u8EAC\uE0D5\u8EAC\uE0D6\u8EAC\uE0D7" + //   565 -   569
-                "\u8EAC\uE0D8\u8EAC\uE0D9\u8EAC\uE0DA\u8EAC\uE0DB\u8EAC\uE0DC" + //   570 -   574
-                "\u8EAC\uE0DD\u8EAC\uE0DE\u8EAC\uE0DF\u8EAC\uE0E0\u8EAC\uE0E1" + //   575 -   579
-                "\u8EAC\uE0E2\u8EAC\uE0E3\u8EAC\uE0E4\u8EAC\uE0E5\u8EAC\uE0E6" + //   580 -   584
-                "\u8EAC\uE0E7\u8EAC\uE0E8\u8EAC\uE0E9\u8EAC\uE0EA\u8EAC\uE0EB" + //   585 -   589
-                "\u8EAC\uE0EC\u8EAC\uE0ED\u8EAC\uE0EE\u8EAC\uE0EF\u8EAC\uE0F0" + //   590 -   594
-                "\u8EAC\uE0F1\u8EAC\uE0F2\u8EAC\uE0F3\u8EAC\uE0F4\u8EAC\uE0F5" + //   595 -   599
-                "\u8EAC\uE0F6\u8EAC\uE0F7\u8EAC\uE0F8\u8EAC\uE0F9\u8EAC\uE0FA" + //   600 -   604
-                "\u8EAC\uE0FB\u8EAC\uE0FC\u8EAC\uE0FD\u8EAC\uE0FE\u8EAC\uDFDD" + //   605 -   609
-                "\u8EAC\uDFDE\u8EAC\uDFDF\u8EAC\uDFE0\u8EAC\uDFE1\u8EAC\uDFE2" + //   610 -   614
-                "\u8EAC\uDFE3\u8EAC\uDFE4\u8EAC\uDFE5\u8EAC\uDFE6\u8EAC\uDFE7" + //   615 -   619
-                "\u8EAC\uDFE8\u8EAC\uDFE9\u8EAC\uDFEA\u8EAC\uDFEB\u8EAC\uDFEC" + //   620 -   624
-                "\u8EAC\uDFED\u8EAC\uDFEE\u8EAC\uDFEF\u8EAC\uDFF0\u8EAC\uDFF1" + //   625 -   629
-                "\u8EAC\uDFF2\u8EAC\uDFF3\u8EAC\uDFF4\u8EAC\uDFF5\u8EAC\uDFF6" + //   630 -   634
-                "\u8EAC\uDFF7\u8EAC\uDFF8\u8EAC\uDFF9\u8EAC\uDFFA\u8EAC\uDFFB" + //   635 -   639
-                "\u8EAC\uDFFC\u8EAC\uDFFD\u8EAC\uDFFE\u8EAC\uE0A1\u8EAC\uE0A2" + //   640 -   644
-                "\u8EAC\uE0A3\u8EAC\uE0A4\u8EAC\uE0A5\u8EAC\uE0A6\u8EAC\uE0A7" + //   645 -   649
-                "\u8EAC\uE0A8\u8EAC\uE0A9\u8EAC\uE0AA\u8EAC\uE0AB\u8EAC\uE0AC" + //   650 -   654
-                "\u8EAC\uE0AD\u8EAC\uE0AE\u8EAC\uE0AF\u8EAC\uE0B0\u8EAC\uE0B1" + //   655 -   659
-                "\u8EAC\uE0B2\u8EAC\uE0B3\u8EAC\uE0B4\u8EAC\uE0B5\u8EAC\uE0B6" + //   660 -   664
-                "\u8EAC\uE0B7\u8EAC\uE0B8\u8EAC\uE0B9\u8EAC\uE0BA\u8EAC\uE0BB" + //   665 -   669
-                "\u8EAC\uE0BC\u8EAC\uE0BD\u8EAC\uE0BE\u8EAC\uDEFB\u8EAC\uDEFC" + //   670 -   674
-                "\u8EAC\uDEFD\u8EAC\uDEFE\u8EAC\uDFA1\u8EAC\uDFA2\u8EAC\uDFA3" + //   675 -   679
-                "\u8EAC\uDFA4\u8EAC\uDFA5\u8EAC\uDFA6\u8EAC\uDFA7\u8EAC\uDFA8" + //   680 -   684
-                "\u8EAC\uDFA9\u8EAC\uDFAA\u8EAC\uDFAB\u8EAC\uDFAC\u8EAC\uDFAD" + //   685 -   689
-                "\u8EAC\uDFAE\u8EAC\uDFAF\u8EAC\uDFB0\u8EAC\uDFB1\u8EAC\uDFB2" + //   690 -   694
-                "\u8EAC\uDFB3\u8EAC\uDFB4\u8EAC\uDFB5\u8EAC\uDFB6\u8EAC\uDFB7" + //   695 -   699
-                "\u8EAC\uDFB8\u8EAC\uDFB9\u8EAC\uDFBA\u8EAC\uDFBB\u8EAC\uDFBC" + //   700 -   704
-                "\u8EAC\uDFBD\u8EAC\uDFBE\u8EAC\uDFBF\u8EAC\uDFC0\u8EAC\uDFC1" + //   705 -   709
-                "\u8EAC\uDFC2\u8EAC\uDFC3\u8EAC\uDFC4\u8EAC\uDFC5\u8EAC\uDFC6" + //   710 -   714
-                "\u8EAC\uDFC7\u8EAC\uDFC8\u8EAC\uDFC9\u8EAC\uDFCA\u8EAC\uDFCB" + //   715 -   719
-                "\u8EAC\uDFCC\u8EAC\uDFCD\u8EAC\uDFCE\u8EAC\uDFCF\u8EAC\uDFD0" + //   720 -   724
-                "\u8EAC\uDFD1\u8EAC\uDFD2\u8EAC\uDFD3\u8EAC\uDFD4\u8EAC\uDFD5" + //   725 -   729
-                "\u8EAC\uDFD6\u8EAC\uDFD7\u8EAC\uDFD8\u8EAC\uDFD9\u8EAC\uDFDA" + //   730 -   734
-                "\u8EAC\uDFDB\u8EAC\uDFDC\u8EAC\uDEBB\u8EAC\uDEBC\u8EAC\uDEBD" + //   735 -   739
-                "\u8EAC\uDEBE\u8EAC\uDEBF\u8EAC\uDEC0\u8EAC\uDEC1\u8EAC\uDEC2" + //   740 -   744
-                "\u8EAC\uDEC3\u8EAC\uDEC4\u8EAC\uDEC5\u8EAC\uDEC6\u8EAC\uDEC7" + //   745 -   749
-                "\u8EAC\uDEC8\u8EAC\uDEC9\u8EAC\uDECA\u8EAC\uDECB\u8EAC\uDECC" + //   750 -   754
-                "\u8EAC\uDECD\u8EAC\uDECE\u8EAC\uDECF\u8EAC\uDED0\u8EAC\uDED1" + //   755 -   759
-                "\u8EAC\uDED2\u8EAC\uDED3\u8EAC\uDED4\u8EAC\uDED5\u8EAC\uDED6" + //   760 -   764
-                "\u8EAC\uDED7\u8EAC\uDED8\u8EAC\uDED9\u8EAC\uDEDA\u8EAC\uDEDB" + //   765 -   769
-                "\u8EAC\uDEDC\u8EAC\uDEDD\u8EAC\uDEDE\u8EAC\uDEDF\u8EAC\uDEE0" + //   770 -   774
-                "\u8EAC\uDEE1\u8EAC\uDEE2\u8EAC\uDEE3\u8EAC\uDEE4\u8EAC\uDEE5" + //   775 -   779
-                "\u8EAC\uDEE6\u8EAC\uDEE7\u8EAC\uDEE8\u8EAC\uDEE9\u8EAC\uDEEA" + //   780 -   784
-                "\u8EAC\uDEEB\u8EAC\uDEEC\u8EAC\uDEED\u8EAC\uDEEE\u8EAC\uDEEF" + //   785 -   789
-                "\u8EAC\uDEF0\u8EAC\uDEF1\u8EAC\uDEF2\u8EAC\uDEF3\u8EAC\uDEF4" + //   790 -   794
-                "\u8EAC\uDEF5\u8EAC\uDEF6\u8EAC\uDEF7\u8EAC\uDEF8\u8EAC\uDEF9" + //   795 -   799
-                "\u8EAC\uDEFA\u8EAC\uDDD9\u8EAC\uDDDA\u8EAC\uDDDB\u8EAC\uDDDC" + //   800 -   804
-                "\u8EAC\uDDDD\u8EAC\uDDDE\u8EAC\uDDDF\u8EAC\uDDE0\u8EAC\uDDE1" + //   805 -   809
-                "\u8EAC\uDDE2\u8EAC\uDDE3\u8EAC\uDDE4\u8EAC\uDDE5\u8EAC\uDDE6" + //   810 -   814
-                "\u8EAC\uDDE7\u8EAC\uDDE8\u8EAC\uDDE9\u8EAC\uDDEA\u8EAC\uDDEB" + //   815 -   819
-                "\u8EAC\uDDEC\u8EAC\uDDED\u8EAC\uDDEE\u8EAC\uDDEF\u8EAC\uDDF0" + //   820 -   824
-                "\u8EAC\uDDF1\u8EAC\uDDF2\u8EAC\uDDF3\u8EAC\uDDF4\u8EAC\uDDF5" + //   825 -   829
-                "\u8EAC\uDDF6\u8EAC\uDDF7\u8EAC\uDDF8\u8EAC\uDDF9\u8EAC\uDDFA" + //   830 -   834
-                "\u8EAC\uDDFB\u8EAC\uDDFC\u8EAC\uDDFD\u8EAC\uDDFE\u8EAC\uDEA1" + //   835 -   839
-                "\u8EAC\uDEA2\u8EAC\uDEA3\u8EAC\uDEA4\u8EAC\uDEA5\u8EAC\uDEA6" + //   840 -   844
-                "\u8EAC\uDEA7\u8EAC\uDEA8\u8EAC\uDEA9\u8EAC\uDEAA\u8EAC\uDEAB" + //   845 -   849
-                "\u8EAC\uDEAC\u8EAC\uDEAD\u8EAC\uDEAE\u8EAC\uDEAF\u8EAC\uDEB0" + //   850 -   854
-                "\u8EAC\uDEB1\u8EAC\uDEB2\u8EAC\uDEB3\u8EAC\uDEB4\u8EAC\uDEB5" + //   855 -   859
-                "\u8EAC\uDEB6\u8EAC\uDEB7\u8EAC\uDEB8\u8EAC\uDEB9\u8EAC\uDEBA" + //   860 -   864
-                "\u8EAC\uDCF7\u8EAC\uDCF8\u8EAC\uDCF9\u8EAC\uDCFA\u8EAC\uDCFB" + //   865 -   869
-                "\u8EAC\uDCFC\u8EAC\uDCFD\u8EAC\uDCFE\u8EAC\uDDA1\u8EAC\uDDA2" + //   870 -   874
-                "\u8EAC\uDDA3\u8EAC\uDDA4\u8EAC\uDDA5\u8EAC\uDDA6\u8EAC\uDDA7" + //   875 -   879
-                "\u8EAC\uDDA8\u8EAC\uDDA9\u8EAC\uDDAA\u8EAC\uDDAB\u8EAC\uDDAC" + //   880 -   884
-                "\u8EAC\uDDAD\u8EAC\uDDAE\u8EAC\uDDAF\u8EAC\uDDB0\u8EAC\uDDB1" + //   885 -   889
-                "\u8EAC\uDDB2\u8EAC\uDDB3\u8EAC\uDDB4\u8EAC\uDDB5\u8EAC\uDDB6" + //   890 -   894
-                "\u8EAC\uDDB7\u8EAC\uDDB8\u8EAC\uDDB9\u8EAC\uDDBA\u8EAC\uDDBB" + //   895 -   899
-                "\u8EAC\uDDBC\u8EAC\uDDBD\u8EAC\uDDBE\u8EAC\uDDBF\u8EAC\uDDC0" + //   900 -   904
-                "\u8EAC\uDDC1\u8EAC\uDDC2\u8EAC\uDDC3\u8EAC\uDDC4\u8EAC\uDDC5" + //   905 -   909
-                "\u8EAC\uDDC6\u8EAC\uDDC7\u8EAC\uDDC8\u8EAC\uDDC9\u8EAC\uDDCA" + //   910 -   914
-                "\u8EAC\uDDCB\u8EAC\uDDCC\u8EAC\uDDCD\u8EAC\uDDCE\u8EAC\uDDCF" + //   915 -   919
-                "\u8EAC\uDDD0\u8EAC\uDDD1\u8EAC\uDDD2\u8EAC\uDDD3\u8EAC\uDDD4" + //   920 -   924
-                "\u8EAC\uDDD5\u8EAC\uDDD6\u8EAC\uDDD7\u8EAC\uDDD8\u8EAC\uDCB7" + //   925 -   929
-                "\u8EAC\uDCB8\u8EAC\uDCB9\u8EAC\uDCBA\u8EAC\uDCBB\u8EAC\uDCBC" + //   930 -   934
-                "\u8EAC\uDCBD\u8EAC\uDCBE\u8EAC\uDCBF\u8EAC\uDCC0\u8EAC\uDCC1" + //   935 -   939
-                "\u8EAC\uDCC2\u8EAC\uDCC3\u8EAC\uDCC4\u8EAC\uDCC5\u8EAC\uDCC6" + //   940 -   944
-                "\u8EAC\uDCC7\u8EAC\uDCC8\u8EAC\uDCC9\u8EAC\uDCCA\u8EAC\uDCCB" + //   945 -   949
-                "\u8EAC\uDCCC\u8EAC\uDCCD\u8EAC\uDCCE\u8EAC\uDCCF\u8EAC\uDCD0" + //   950 -   954
-                "\u8EAC\uDCD1\u8EAC\uDCD2\u8EAC\uDCD3\u8EAC\uDCD4\u8EAC\uDCD5" + //   955 -   959
-                "\u8EAC\uDCD6\u8EAC\uDCD7\u8EAC\uDCD8\u8EAC\uDCD9\u8EAC\uDCDA" + //   960 -   964
-                "\u8EAC\uDCDB\u8EAC\uDCDC\u8EAC\uDCDD\u8EAC\uDCDE\u8EAC\uDCDF" + //   965 -   969
-                "\u8EAC\uDCE0\u8EAC\uDCE1\u8EAC\uDCE2\u8EAC\uDCE3\u8EAC\uDCE4" + //   970 -   974
-                "\u8EAC\uDCE5\u8EAC\uDCE6\u8EAC\uDCE7\u8EAC\uDCE8\u8EAC\uDCE9" + //   975 -   979
-                "\u8EAC\uDCEA\u8EAC\uDCEB\u8EAC\uDCEC\u8EAC\uDCED\u8EAC\uDCEE" + //   980 -   984
-                "\u8EAC\uDCEF\u8EAC\uDCF0\u8EAC\uDCF1\u8EAC\uDCF2\u8EAC\uDCF3" + //   985 -   989
-                "\u8EAC\uDCF4\u8EAC\uDCF5\u8EAC\uDCF6\u8EAC\uDBD5\u8EAC\uDBD6" + //   990 -   994
-                "\u8EAC\uDBD7\u8EAC\uDBD8\u8EAC\uDBD9\u8EAC\uDBDA\u8EAC\uDBDB" + //   995 -   999
-                "\u8EAC\uDBDC\u8EAC\uDBDD\u8EAC\uDBDE\u8EAC\uDBDF\u8EAC\uDBE0" + //  1000 -  1004
-                "\u8EAC\uDBE1\u8EAC\uDBE2\u8EAC\uDBE3\u8EAC\uDBE4\u8EAC\uDBE5" + //  1005 -  1009
-                "\u8EAC\uDBE6\u8EAC\uDBE7\u8EAC\uDBE8\u8EAC\uDBE9\u8EAC\uDBEA" + //  1010 -  1014
-                "\u8EAC\uDBEB\u8EAC\uDBEC\u8EAC\uDBED\u8EAC\uDBEE\u8EAC\uDBEF" + //  1015 -  1019
-                "\u8EAC\uDBF0\u8EAC\uDBF1\u8EAC\uDBF2\u8EAC\uDBF3\u8EAC\uDBF4" + //  1020 -  1024
-                "\u8EAC\uDBF5\u8EAC\uDBF6\u8EAC\uDBF7\u8EAC\uDBF8\u8EAC\uDBF9" + //  1025 -  1029
-                "\u8EAC\uDBFA\u8EAC\uDBFB\u8EAC\uDBFC\u8EAC\uDBFD\u8EAC\uDBFE" + //  1030 -  1034
-                "\u8EAC\uDCA1\u8EAC\uDCA2\u8EAC\uDCA3\u8EAC\uDCA4\u8EAC\uDCA5" + //  1035 -  1039
-                "\u8EAC\uDCA6\u8EAC\uDCA7\u8EAC\uDCA8\u8EAC\uDCA9\u8EAC\uDCAA" + //  1040 -  1044
-                "\u8EAC\uDCAB\u8EAC\uDCAC\u8EAC\uDCAD\u8EAC\uDCAE\u8EAC\uDCAF" + //  1045 -  1049
-                "\u8EAC\uDCB0\u8EAC\uDCB1\u8EAC\uDCB2\u8EAC\uDCB3\u8EAC\uDCB4" + //  1050 -  1054
-                "\u8EAC\uDCB5\u8EAC\uDCB6\u8EAC\uDAF3\u8EAC\uDAF4\u8EAC\uDAF5" + //  1055 -  1059
-                "\u8EAC\uDAF6\u8EAC\uDAF7\u8EAC\uDAF8\u8EAC\uDAF9\u8EAC\uDAFA" + //  1060 -  1064
-                "\u8EAC\uDAFB\u8EAC\uDAFC\u8EAC\uDAFD\u8EAC\uDAFE\u8EAC\uDBA1" + //  1065 -  1069
-                "\u8EAC\uDBA2\u8EAC\uDBA3\u8EAC\uDBA4\u8EAC\uDBA5\u8EAC\uDBA6" + //  1070 -  1074
-                "\u8EAC\uDBA7\u8EAC\uDBA8\u8EAC\uDBA9\u8EAC\uDBAA\u8EAC\uDBAB" + //  1075 -  1079
-                "\u8EAC\uDBAC\u8EAC\uDBAD\u8EAC\uDBAE\u8EAC\uDBAF\u8EAC\uDBB0" + //  1080 -  1084
-                "\u8EAC\uDBB1\u8EAC\uDBB2\u8EAC\uDBB3\u8EAC\uDBB4\u8EAC\uDBB5" + //  1085 -  1089
-                "\u8EAC\uDBB6\u8EAC\uDBB7\u8EAC\uDBB8\u8EAC\uDBB9\u8EAC\uDBBA" + //  1090 -  1094
-                "\u8EAC\uDBBB\u8EAC\uDBBC\u8EAC\uDBBD\u8EAC\uDBBE\u8EAC\uDBBF" + //  1095 -  1099
-                "\u8EAC\uDBC0\u8EAC\uDBC1\u8EAC\uDBC2\u8EAC\uDBC3\u8EAC\uDBC4" + //  1100 -  1104
-                "\u8EAC\uDBC5\u8EAC\uDBC6\u8EAC\uDBC7\u8EAC\uDBC8\u8EAC\uDBC9" + //  1105 -  1109
-                "\u8EAC\uDBCA\u8EAC\uDBCB\u8EAC\uDBCC\u8EAC\uDBCD\u8EAC\uDBCE" + //  1110 -  1114
-                "\u8EAC\uDBCF\u8EAC\uDBD0\u8EAC\uDBD1\u8EAC\uDBD2\u8EAC\uDBD3" + //  1115 -  1119
-                "\u8EAC\uDBD4\u8EAC\uDAB3\u8EAC\uDAB4\u8EAC\uDAB5\u8EAC\uDAB6" + //  1120 -  1124
-                "\u8EAC\uDAB7\u8EAC\uDAB8\u8EAC\uDAB9\u8EAC\uDABA\u8EAC\uDABB" + //  1125 -  1129
-                "\u8EAC\uDABC\u8EAC\uDABD\u8EAC\uDABE\u8EAC\uDABF\u8EAC\uDAC0" + //  1130 -  1134
-                "\u8EAC\uDAC1\u8EAC\uDAC2\u8EAC\uDAC3\u8EAC\uDAC4\u8EAC\uDAC5" + //  1135 -  1139
-                "\u8EAC\uDAC6\u8EAC\uDAC7\u8EAC\uDAC8\u8EAC\uDAC9\u8EAC\uDACA" + //  1140 -  1144
-                "\u8EAC\uDACB\u8EAC\uDACC\u8EAC\uDACD\u8EAC\uDACE\u8EAC\uDACF" + //  1145 -  1149
-                "\u8EAC\uDAD0\u8EAC\uDAD1\u8EAC\uDAD2\u8EAC\uDAD3\u8EAC\uDAD4" + //  1150 -  1154
-                "\u8EAC\uDAD5\u8EAC\uDAD6\u8EAC\uDAD7\u8EAC\uDAD8\u8EAC\uDAD9" + //  1155 -  1159
-                "\u8EAC\uDADA\u8EAC\uDADB\u8EAC\uDADC\u8EAC\uDADD\u8EAC\uDADE" + //  1160 -  1164
-                "\u8EAC\uDADF\u8EAC\uDAE0\u8EAC\uDAE1\u8EAC\uDAE2\u8EAC\uDAE3" + //  1165 -  1169
-                "\u8EAC\uDAE4\u8EAC\uDAE5\u8EAC\uDAE6\u8EAC\uDAE7\u8EAC\uDAE8" + //  1170 -  1174
-                "\u8EAC\uDAE9\u8EAC\uDAEA\u8EAC\uDAEB\u8EAC\uDAEC\u8EAC\uDAED" + //  1175 -  1179
-                "\u8EAC\uDAEE\u8EAC\uDAEF\u8EAC\uDAF0\u8EAC\uDAF1\u8EAC\uDAF2" + //  1180 -  1184
-                "\u8EAC\uD9D1\u8EAC\uD9D2\u8EAC\uD9D3\u8EAC\uD9D4\u8EAC\uD9D5" + //  1185 -  1189
-                "\u8EAC\uD9D6\u8EAC\uD9D7\u8EAC\uD9D8\u8EAC\uD9D9\u8EAC\uD9DA" + //  1190 -  1194
-                "\u8EAC\uD9DB\u8EAC\uD9DC\u8EAC\uD9DD\u8EAC\uD9DE\u8EAC\uD9DF" + //  1195 -  1199
-                "\u8EAC\uD9E0\u8EAC\uD9E1\u8EAC\uD9E2\u8EAC\uD9E3\u8EAC\uD9E4" + //  1200 -  1204
-                "\u8EAC\uD9E5\u8EAC\uD9E6\u8EAC\uD9E7\u8EAC\uD9E8\u8EAC\uD9E9" + //  1205 -  1209
-                "\u8EAC\uD9EA\u8EAC\uD9EB\u8EAC\uD9EC\u8EAC\uD9ED\u8EAC\uD9EE" + //  1210 -  1214
-                "\u8EAC\uD9EF\u8EAC\uD9F0\u8EAC\uD9F1\u8EAC\uD9F2\u8EAC\uD9F3" + //  1215 -  1219
-                "\u8EAC\uD9F4\u8EAC\uD9F5\u8EAC\uD9F6\u8EAC\uD9F7\u8EAC\uD9F8" + //  1220 -  1224
-                "\u8EAC\uD9F9\u8EAC\uD9FA\u8EAC\uD9FB\u8EAC\uD9FC\u8EAC\uD9FD" + //  1225 -  1229
-                "\u8EAC\uD9FE\u8EAC\uDAA1\u8EAC\uDAA2\u8EAC\uDAA3\u8EAC\uDAA4" + //  1230 -  1234
-                "\u8EAC\uDAA5\u8EAC\uDAA6\u8EAC\uDAA7\u8EAC\uDAA8\u8EAC\uDAA9" + //  1235 -  1239
-                "\u8EAC\uDAAA\u8EAC\uDAAB\u8EAC\uDAAC\u8EAC\uDAAD\u8EAC\uDAAE" + //  1240 -  1244
-                "\u8EAC\uDAAF\u8EAC\uDAB0\u8EAC\uDAB1\u8EAC\uDAB2\u8EAC\uD8EF" + //  1245 -  1249
-                "\u8EAC\uD8F0\u8EAC\uD8F1\u8EAC\uD8F2\u8EAC\uD8F3\u8EAC\uD8F4" + //  1250 -  1254
-                "\u8EAC\uD8F5\u8EAC\uD8F6\u8EAC\uD8F7\u8EAC\uD8F8\u8EAC\uD8F9" + //  1255 -  1259
-                "\u8EAC\uD8FA\u8EAC\uD8FB\u8EAC\uD8FC\u8EAC\uD8FD\u8EAC\uD8FE" + //  1260 -  1264
-                "\u8EAC\uD9A1\u8EAC\uD9A2\u8EAC\uD9A3\u8EAC\uD9A4\u8EAC\uD9A5" + //  1265 -  1269
-                "\u8EAC\uD9A6\u8EAC\uD9A7\u8EAC\uD9A8\u8EAC\uD9A9\u8EAC\uD9AA" + //  1270 -  1274
-                "\u8EAC\uD9AB\u8EAC\uD9AC\u8EAC\uD9AD\u8EAC\uD9AE\u8EAC\uD9AF" + //  1275 -  1279
-                "\u8EAC\uD9B0\u8EAC\uD9B1\u8EAC\uD9B2\u8EAC\uD9B3\u8EAC\uD9B4" + //  1280 -  1284
-                "\u8EAC\uD9B5\u8EAC\uD9B6\u8EAC\uD9B7\u8EAC\uD9B8\u8EAC\uD9B9" + //  1285 -  1289
-                "\u8EAC\uD9BA\u8EAC\uD9BB\u8EAC\uD9BC\u8EAC\uD9BD\u8EAC\uD9BE" + //  1290 -  1294
-                "\u8EAC\uD9BF\u8EAC\uD9C0\u8EAC\uD9C1\u8EAC\uD9C2\u8EAC\uD9C3" + //  1295 -  1299
-                "\u8EAC\uD9C4\u8EAC\uD9C5\u8EAC\uD9C6\u8EAC\uD9C7\u8EAC\uD9C8" + //  1300 -  1304
-                "\u8EAC\uD9C9\u8EAC\uD9CA\u8EAC\uD9CB\u8EAC\uD9CC\u8EAC\uD9CD" + //  1305 -  1309
-                "\u8EAC\uD9CE\u8EAC\uD9CF\u8EAC\uD9D0\u8EAC\uD8AF\u8EAC\uD8B0" + //  1310 -  1314
-                "\u8EAC\uD8B1\u8EAC\uD8B2\u8EAC\uD8B3\u8EAC\uD8B4\u8EAC\uD8B5" + //  1315 -  1319
-                "\u8EAC\uD8B6\u8EAC\uD8B7\u8EAC\uD8B8\u8EAC\uD8B9\u8EAC\uD8BA" + //  1320 -  1324
-                "\u8EAC\uD8BB\u8EAC\uD8BC\u8EAC\uD8BD\u8EAC\uD8BE\u8EAC\uD8BF" + //  1325 -  1329
-                "\u8EAC\uD8C0\u8EAC\uD8C1\u8EAC\uD8C2\u8EAC\uD8C3\u8EAC\uD8C4" + //  1330 -  1334
-                "\u8EAC\uD8C5\u8EAC\uD8C6\u8EAC\uD8C7\u8EAC\uD8C8\u8EAC\uD8C9" + //  1335 -  1339
-                "\u8EAC\uD8CA\u8EAC\uD8CB\u8EAC\uD8CC\u8EAC\uD8CD\u8EAC\uD8CE" + //  1340 -  1344
-                "\u8EAC\uD8CF\u8EAC\uD8D0\u8EAC\uD8D1\u8EAC\uD8D2\u8EAC\uD8D3" + //  1345 -  1349
-                "\u8EAC\uD8D4\u8EAC\uD8D5\u8EAC\uD8D6\u8EAC\uD8D7\u8EAC\uD8D8" + //  1350 -  1354
-                "\u8EAC\uD8D9\u8EAC\uD8DA\u8EAC\uD8DB\u8EAC\uD8DC\u8EAC\uD8DD" + //  1355 -  1359
-                "\u8EAC\uD8DE\u8EAC\uD8DF\u8EAC\uD8E0\u8EAC\uD8E1\u8EAC\uD8E2" + //  1360 -  1364
-                "\u8EAC\uD8E3\u8EAC\uD8E4\u8EAC\uD8E5\u8EAC\uD8E6\u8EAC\uD8E7" + //  1365 -  1369
-                "\u8EAC\uD8E8\u8EAC\uD8E9\u8EAC\uD8EA\u8EAC\uD8EB\u8EAC\uD8EC" + //  1370 -  1374
-                "\u8EAC\uD8ED\u8EAC\uD8EE\u8EAC\uD7CD\u8EAC\uD7CE\u8EAC\uD7CF" + //  1375 -  1379
-                "\u8EAC\uD7D0\u8EAC\uD7D1\u8EAC\uD7D2\u8EAC\uD7D3\u8EAC\uD7D4" + //  1380 -  1384
-                "\u8EAC\uD7D5\u8EAC\uD7D6\u8EAC\uD7D7\u8EAC\uD7D8\u8EAC\uD7D9" + //  1385 -  1389
-                "\u8EAC\uD7DA\u8EAC\uD7DB\u8EAC\uD7DC\u8EAC\uD7DD\u8EAC\uD7DE" + //  1390 -  1394
-                "\u8EAC\uD7DF\u8EAC\uD7E0\u8EAC\uD7E1\u8EAC\uD7E2\u8EAC\uD7E3" + //  1395 -  1399
-                "\u8EAC\uD7E4\u8EAC\uD7E5\u8EAC\uD7E6\u8EAC\uD7E7\u8EAC\uD7E8" + //  1400 -  1404
-                "\u8EAC\uD7E9\u8EAC\uD7EA\u8EAC\uD7EB\u8EAC\uD7EC\u8EAC\uD7ED" + //  1405 -  1409
-                "\u8EAC\uD7EE\u8EAC\uD7EF\u8EAC\uD7F0\u8EAC\uD7F1\u8EAC\uD7F2" + //  1410 -  1414
-                "\u8EAC\uD7F3\u8EAC\uD7F4\u8EAC\uD7F5\u8EAC\uD7F6\u8EAC\uD7F7" + //  1415 -  1419
-                "\u8EAC\uD7F8\u8EAC\uD7F9\u8EAC\uD7FA\u8EAC\uD7FB\u8EAC\uD7FC" + //  1420 -  1424
-                "\u8EAC\uD7FD\u8EAC\uD7FE\u8EAC\uD8A1\u8EAC\uD8A2\u8EAC\uD8A3" + //  1425 -  1429
-                "\u8EAC\uD8A4\u8EAC\uD8A5\u8EAC\uD8A6\u8EAC\uD8A7\u8EAC\uD8A8" + //  1430 -  1434
-                "\u8EAC\uD8A9\u8EAC\uD8AA\u8EAC\uD8AB\u8EAC\uD8AC\u8EAC\uD8AD" + //  1435 -  1439
-                "\u8EAC\uD8AE\u8EAC\uD6EB\u8EAC\uD6EC\u8EAC\uD6ED\u8EAC\uD6EE" + //  1440 -  1444
-                "\u8EAC\uD6EF\u8EAC\uD6F0\u8EAC\uD6F1\u8EAC\uD6F2\u8EAC\uD6F3" + //  1445 -  1449
-                "\u8EAC\uD6F4\u8EAC\uD6F5\u8EAC\uD6F6\u8EAC\uD6F7\u8EAC\uD6F8" + //  1450 -  1454
-                "\u8EAC\uD6F9\u8EAC\uD6FA\u8EAC\uD6FB\u8EAC\uD6FC\u8EAC\uD6FD" + //  1455 -  1459
-                "\u8EAC\uD6FE\u8EAC\uD7A1\u8EAC\uD7A2\u8EAC\uD7A3\u8EAC\uD7A4" + //  1460 -  1464
-                "\u8EAC\uD7A5\u8EAC\uD7A6\u8EAC\uD7A7\u8EAC\uD7A8\u8EAC\uD7A9" + //  1465 -  1469
-                "\u8EAC\uD7AA\u8EAC\uD7AB\u8EAC\uD7AC\u8EAC\uD7AD\u8EAC\uD7AE" + //  1470 -  1474
-                "\u8EAC\uD7AF\u8EAC\uD7B0\u8EAC\uD7B1\u8EAC\uD7B2\u8EAC\uD7B3" + //  1475 -  1479
-                "\u8EAC\uD7B4\u8EAC\uD7B5\u8EAC\uD7B6\u8EAC\uD7B7\u8EAC\uD7B8" + //  1480 -  1484
-                "\u8EAC\uD7B9\u8EAC\uD7BA\u8EAC\uD7BB\u8EAC\uD7BC\u8EAC\uD7BD" + //  1485 -  1489
-                "\u8EAC\uD7BE\u8EAC\uD7BF\u8EAC\uD7C0\u8EAC\uD7C1\u8EAC\uD7C2" + //  1490 -  1494
-                "\u8EAC\uD7C3\u8EAC\uD7C4\u8EAC\uD7C5\u8EAC\uD7C6\u8EAC\uD7C7" + //  1495 -  1499
-                "\u8EAC\uD7C8\u8EAC\uD7C9\u8EAC\uD7CA\u8EAC\uD7CB\u8EAC\uD7CC" + //  1500 -  1504
-                "\u8EAC\uD6AB\u8EAC\uD6AC\u8EAC\uD6AD\u8EAC\uD6AE\u8EAC\uD6AF" + //  1505 -  1509
-                "\u8EAC\uD6B0\u8EAC\uD6B1\u8EAC\uD6B2\u8EAC\uD6B3\u8EAC\uD6B4" + //  1510 -  1514
-                "\u8EAC\uD6B5\u8EAC\uD6B6\u8EAC\uD6B7\u8EAC\uD6B8\u8EAC\uD6B9" + //  1515 -  1519
-                "\u8EAC\uD6BA\u8EAC\uD6BB\u8EAC\uD6BC\u8EAC\uD6BD\u8EAC\uD6BE" + //  1520 -  1524
-                "\u8EAC\uD6BF\u8EAC\uD6C0\u8EAC\uD6C1\u8EAC\uD6C2\u8EAC\uD6C3" + //  1525 -  1529
-                "\u8EAC\uD6C4\u8EAC\uD6C5\u8EAC\uD6C6\u8EAC\uD6C7\u8EAC\uD6C8" + //  1530 -  1534
-                "\u8EAC\uD6C9\u8EAC\uD6CA\u8EAC\uD6CB\u8EAC\uD6CC\u8EAC\uD6CD" + //  1535 -  1539
-                "\u8EAC\uD6CE\u8EAC\uD6CF\u8EAC\uD6D0\u8EAC\uD6D1\u8EAC\uD6D2" + //  1540 -  1544
-                "\u8EAC\uD6D3\u8EAC\uD6D4\u8EAC\uD6D5\u8EAC\uD6D6\u8EAC\uD6D7" + //  1545 -  1549
-                "\u8EAC\uD6D8\u8EAC\uD6D9\u8EAC\uD6DA\u8EAC\uD6DB\u8EAC\uD6DC" + //  1550 -  1554
-                "\u8EAC\uD6DD\u8EAC\uD6DE\u8EAC\uD6DF\u8EAC\uD6E0\u8EAC\uD6E1" + //  1555 -  1559
-                "\u8EAC\uD6E2\u8EAC\uD6E3\u8EAC\uD6E4\u8EAC\uD6E5\u8EAC\uD6E6" + //  1560 -  1564
-                "\u8EAC\uD6E7\u8EAC\uD6E8\u8EAC\uD6E9\u8EAC\uD6EA\u8EAC\uD5C9" + //  1565 -  1569
-                "\u8EAC\uD5CA\u8EAC\uD5CB\u8EAC\uD5CC\u8EAC\uD5CD\u8EAC\uD5CE" + //  1570 -  1574
-                "\u8EAC\uD5CF\u8EAC\uD5D0\u8EAC\uD5D1\u8EAC\uD5D2\u8EAC\uD5D3" + //  1575 -  1579
-                "\u8EAC\uD5D4\u8EAC\uD5D5\u8EAC\uD5D6\u8EAC\uD5D7\u8EAC\uD5D8" + //  1580 -  1584
-                "\u8EAC\uD5D9\u8EAC\uD5DA\u8EAC\uD5DB\u8EAC\uD5DC\u8EAC\uD5DD" + //  1585 -  1589
-                "\u8EAC\uD5DE\u8EAC\uD5DF\u8EAC\uD5E0\u8EAC\uD5E1\u8EAC\uD5E2" + //  1590 -  1594
-                "\u8EAC\uD5E3\u8EAC\uD5E4\u8EAC\uD5E5\u8EAC\uD5E6\u8EAC\uD5E7" + //  1595 -  1599
-                "\u8EAC\uD5E8\u8EAC\uD5E9\u8EAC\uD5EA\u8EAC\uD5EB\u8EAC\uD5EC" + //  1600 -  1604
-                "\u8EAC\uD5ED\u8EAC\uD5EE\u8EAC\uD5EF\u8EAC\uD5F0\u8EAC\uD5F1" + //  1605 -  1609
-                "\u8EAC\uD5F2\u8EAC\uD5F3\u8EAC\uD5F4\u8EAC\uD5F5\u8EAC\uD5F6" + //  1610 -  1614
-                "\u8EAC\uD5F7\u8EAC\uD5F8\u8EAC\uD5F9\u8EAC\uD5FA\u8EAC\uD5FB" + //  1615 -  1619
-                "\u8EAC\uD5FC\u8EAC\uD5FD\u8EAC\uD5FE\u8EAC\uD6A1\u8EAC\uD6A2" + //  1620 -  1624
-                "\u8EAC\uD6A3\u8EAC\uD6A4\u8EAC\uD6A5\u8EAC\uD6A6\u8EAC\uD6A7" + //  1625 -  1629
-                "\u8EAC\uD6A8\u8EAC\uD6A9\u8EAC\uD6AA\u8EAC\uD4E7\u8EAC\uD4E8" + //  1630 -  1634
-                "\u8EAC\uD4E9\u8EAC\uD4EA\u8EAC\uD4EB\u8EAC\uD4EC\u8EAC\uD4ED" + //  1635 -  1639
-                "\u8EAC\uD4EE\u8EAC\uD4EF\u8EAC\uD4F0\u8EAC\uD4F1\u8EAC\uD4F2" + //  1640 -  1644
-                "\u8EAC\uD4F3\u8EAC\uD4F4\u8EAC\uD4F5\u8EAC\uD4F6\u8EAC\uD4F7" + //  1645 -  1649
-                "\u8EAC\uD4F8\u8EAC\uD4F9\u8EAC\uD4FA\u8EAC\uD4FB\u8EAC\uD4FC" + //  1650 -  1654
-                "\u8EAC\uD4FD\u8EAC\uD4FE\u8EAC\uD5A1\u8EAC\uD5A2\u8EAC\uD5A3" + //  1655 -  1659
-                "\u8EAC\uD5A4\u8EAC\uD5A5\u8EAC\uD5A6\u8EAC\uD5A7\u8EAC\uD5A8" + //  1660 -  1664
-                "\u8EAC\uD5A9\u8EAC\uD5AA\u8EAC\uD5AB\u8EAC\uD5AC\u8EAC\uD5AD" + //  1665 -  1669
-                "\u8EAC\uD5AE\u8EAC\uD5AF\u8EAC\uD5B0\u8EAC\uD5B1\u8EAC\uD5B2" + //  1670 -  1674
-                "\u8EAC\uD5B3\u8EAC\uD5B4\u8EAC\uD5B5\u8EAC\uD5B6\u8EAC\uD5B7" + //  1675 -  1679
-                "\u8EAC\uD5B8\u8EAC\uD5B9\u8EAC\uD5BA\u8EAC\uD5BB\u8EAC\uD5BC" + //  1680 -  1684
-                "\u8EAC\uD5BD\u8EAC\uD5BE\u8EAC\uD5BF\u8EAC\uD5C0\u8EAC\uD5C1" + //  1685 -  1689
-                "\u8EAC\uD5C2\u8EAC\uD5C3\u8EAC\uD5C4\u8EAC\uD5C5\u8EAC\uD5C6" + //  1690 -  1694
-                "\u8EAC\uD5C7\u8EAC\uD5C8\u8EAC\uD4A7\u8EAC\uD4A8\u8EAC\uD4A9" + //  1695 -  1699
-                "\u8EAC\uD4AA\u8EAC\uD4AB\u8EAC\uD4AC\u8EAC\uD4AD\u8EAC\uD4AE" + //  1700 -  1704
-                "\u8EAC\uD4AF\u8EAC\uD4B0\u8EAC\uD4B1\u8EAC\uD4B2\u8EAC\uD4B3" + //  1705 -  1709
-                "\u8EAC\uD4B4\u8EAC\uD4B5\u8EAC\uD4B6\u8EAC\uD4B7\u8EAC\uD4B8" + //  1710 -  1714
-                "\u8EAC\uD4B9\u8EAC\uD4BA\u8EAC\uD4BB\u8EAC\uD4BC\u8EAC\uD4BD" + //  1715 -  1719
-                "\u8EAC\uD4BE\u8EAC\uD4BF\u8EAC\uD4C0\u8EAC\uD4C1\u8EAC\uD4C2" + //  1720 -  1724
-                "\u8EAC\uD4C3\u8EAC\uD4C4\u8EAC\uD4C5\u8EAC\uD4C6\u8EAC\uD4C7" + //  1725 -  1729
-                "\u8EAC\uD4C8\u8EAC\uD4C9\u8EAC\uD4CA\u8EAC\uD4CB\u8EAC\uD4CC" + //  1730 -  1734
-                "\u8EAC\uD4CD\u8EAC\uD4CE\u8EAC\uD4CF\u8EAC\uD4D0\u8EAC\uD4D1" + //  1735 -  1739
-                "\u8EAC\uD4D2\u8EAC\uD4D3\u8EAC\uD4D4\u8EAC\uD4D5\u8EAC\uD4D6" + //  1740 -  1744
-                "\u8EAC\uD4D7\u8EAC\uD4D8\u8EAC\uD4D9\u8EAC\uD4DA\u8EAC\uD4DB" + //  1745 -  1749
-                "\u8EAC\uD4DC\u8EAC\uD4DD\u8EAC\uD4DE\u8EAC\uD4DF\u8EAC\uD4E0" + //  1750 -  1754
-                "\u8EAC\uD4E1\u8EAC\uD4E2\u8EAC\uD4E3\u8EAC\uD4E4\u8EAC\uD4E5" + //  1755 -  1759
-                "\u8EAC\uD4E6\u8EAC\uD3C5\u8EAC\uD3C6\u8EAC\uD3C7\u8EAC\uD3C8" + //  1760 -  1764
-                "\u8EAC\uD3C9\u8EAC\uD3CA\u8EAC\uD3CB\u8EAC\uD3CC\u8EAC\uD3CD" + //  1765 -  1769
-                "\u8EAC\uD3CE\u8EAC\uD3CF\u8EAC\uD3D0\u8EAC\uD3D1\u8EAC\uD3D2" + //  1770 -  1774
-                "\u8EAC\uD3D3\u8EAC\uD3D4\u8EAC\uD3D5\u8EAC\uD3D6\u8EAC\uD3D7" + //  1775 -  1779
-                "\u8EAC\uD3D8\u8EAC\uD3D9\u8EAC\uD3DA\u8EAC\uD3DB\u8EAC\uD3DC" + //  1780 -  1784
-                "\u8EAC\uD3DD\u8EAC\uD3DE\u8EAC\uD3DF\u8EAC\uD3E0\u8EAC\uD3E1" + //  1785 -  1789
-                "\u8EAC\uD3E2\u8EAC\uD3E3\u8EAC\uD3E4\u8EAC\uD3E5\u8EAC\uD3E6" + //  1790 -  1794
-                "\u8EAC\uD3E7\u8EAC\uD3E8\u8EAC\uD3E9\u8EAC\uD3EA\u8EAC\uD3EB" + //  1795 -  1799
-                "\u8EAC\uD3EC\u8EAC\uD3ED\u8EAC\uD3EE\u8EAC\uD3EF\u8EAC\uD3F0" + //  1800 -  1804
-                "\u8EAC\uD3F1\u8EAC\uD3F2\u8EAC\uD3F3\u8EAC\uD3F4\u8EAC\uD3F5" + //  1805 -  1809
-                "\u8EAC\uD3F6\u8EAC\uD3F7\u8EAC\uD3F8\u8EAC\uD3F9\u8EAC\uD3FA" + //  1810 -  1814
-                "\u8EAC\uD3FB\u8EAC\uD3FC\u8EAC\uD3FD\u8EAC\uD3FE\u8EAC\uD4A1" + //  1815 -  1819
-                "\u8EAC\uD4A2\u8EAC\uD4A3\u8EAC\uD4A4\u8EAC\uD4A5\u8EAC\uD4A6" + //  1820 -  1824
-                "\u8EAC\uD2E3\u8EAC\uD2E4\u8EAC\uD2E5\u8EAC\uD2E6\u8EAC\uD2E7" + //  1825 -  1829
-                "\u8EAC\uD2E8\u8EAC\uD2E9\u8EAC\uD2EA\u8EAC\uD2EB\u8EAC\uD2EC" + //  1830 -  1834
-                "\u8EAC\uD2ED\u8EAC\uD2EE\u8EAC\uD2EF\u8EAC\uD2F0\u8EAC\uD2F1" + //  1835 -  1839
-                "\u8EAC\uD2F2\u8EAC\uD2F3\u8EAC\uD2F4\u8EAC\uD2F5\u8EAC\uD2F6" + //  1840 -  1844
-                "\u8EAC\uD2F7\u8EAC\uD2F8\u8EAC\uD2F9\u8EAC\uD2FA\u8EAC\uD2FB" + //  1845 -  1849
-                "\u8EAC\uD2FC\u8EAC\uD2FD\u8EAC\uD2FE\u8EAC\uD3A1\u8EAC\uD3A2" + //  1850 -  1854
-                "\u8EAC\uD3A3\u8EAC\uD3A4\u8EAC\uD3A5\u8EAC\uD3A6\u8EAC\uD3A7" + //  1855 -  1859
-                "\u8EAC\uD3A8\u8EAC\uD3A9\u8EAC\uD3AA\u8EAC\uD3AB\u8EAC\uD3AC" + //  1860 -  1864
-                "\u8EAC\uD3AD\u8EAC\uD3AE\u8EAC\uD3AF\u8EAC\uD3B0\u8EAC\uD3B1" + //  1865 -  1869
-                "\u8EAC\uD3B2\u8EAC\uD3B3\u8EAC\uD3B4\u8EAC\uD3B5\u8EAC\uD3B6" + //  1870 -  1874
-                "\u8EAC\uD3B7\u8EAC\uD3B8\u8EAC\uD3B9\u8EAC\uD3BA\u8EAC\uD3BB" + //  1875 -  1879
-                "\u8EAC\uD3BC\u8EAC\uD3BD\u8EAC\uD3BE\u8EAC\uD3BF\u8EAC\uD3C0" + //  1880 -  1884
-                "\u8EAC\uD3C1\u8EAC\uD3C2\u8EAC\uD3C3\u8EAC\uD3C4\u8EAC\uD2A3" + //  1885 -  1889
-                "\u8EAC\uD2A4\u8EAC\uD2A5\u8EAC\uD2A6\u8EAC\uD2A7\u8EAC\uD2A8" + //  1890 -  1894
-                "\u8EAC\uD2A9\u8EAC\uD2AA\u8EAC\uD2AB\u8EAC\uD2AC\u8EAC\uD2AD" + //  1895 -  1899
-                "\u8EAC\uD2AE\u8EAC\uD2AF\u8EAC\uD2B0\u8EAC\uD2B1\u8EAC\uD2B2" + //  1900 -  1904
-                "\u8EAC\uD2B3\u8EAC\uD2B4\u8EAC\uD2B5\u8EAC\uD2B6\u8EAC\uD2B7" + //  1905 -  1909
-                "\u8EAC\uD2B8\u8EAC\uD2B9\u8EAC\uD2BA\u8EAC\uD2BB\u8EAC\uD2BC" + //  1910 -  1914
-                "\u8EAC\uD2BD\u8EAC\uD2BE\u8EAC\uD2BF\u8EAC\uD2C0\u8EAC\uD2C1" + //  1915 -  1919
-                "\u8EAC\uD2C2\u8EAC\uD2C3\u8EAC\uD2C4\u8EAC\uD2C5\u8EAC\uD2C6" + //  1920 -  1924
-                "\u8EAC\uD2C7\u8EAC\uD2C8\u8EAC\uD2C9\u8EAC\uD2CA\u8EAC\uD2CB" + //  1925 -  1929
-                "\u8EAC\uD2CC\u8EAC\uD2CD\u8EAC\uD2CE\u8EAC\uD2CF\u8EAC\uD2D0" + //  1930 -  1934
-                "\u8EAC\uD2D1\u8EAC\uD2D2\u8EAC\uD2D3\u8EAC\uD2D4\u8EAC\uD2D5" + //  1935 -  1939
-                "\u8EAC\uD2D6\u8EAC\uD2D7\u8EAC\uD2D8\u8EAC\uD2D9\u8EAC\uD2DA" + //  1940 -  1944
-                "\u8EAC\uD2DB\u8EAC\uD2DC\u8EAC\uD2DD\u8EAC\uD2DE\u8EAC\uD2DF" + //  1945 -  1949
-                "\u8EAC\uD2E0\u8EAC\uD2E1\u8EAC\uD2E2\u8EAC\uD1C1\u8EAC\uD1C2" + //  1950 -  1954
-                "\u8EAC\uD1C3\u8EAC\uD1C4\u8EAC\uD1C5\u8EAC\uD1C6\u8EAC\uD1C7" + //  1955 -  1959
-                "\u8EAC\uD1C8\u8EAC\uD1C9\u8EAC\uD1CA\u8EAC\uD1CB\u8EAC\uD1CC" + //  1960 -  1964
-                "\u8EAC\uD1CD\u8EAC\uD1CE\u8EAC\uD1CF\u8EAC\uD1D0\u8EAC\uD1D1" + //  1965 -  1969
-                "\u8EAC\uD1D2\u8EAC\uD1D3\u8EAC\uD1D4\u8EAC\uD1D5\u8EAC\uD1D6" + //  1970 -  1974
-                "\u8EAC\uD1D7\u8EAC\uD1D8\u8EAC\uD1D9\u8EAC\uD1DA\u8EAC\uD1DB" + //  1975 -  1979
-                "\u8EAC\uD1DC\u8EAC\uD1DD\u8EAC\uD1DE\u8EAC\uD1DF\u8EAC\uD1E0" + //  1980 -  1984
-                "\u8EAC\uD1E1\u8EAC\uD1E2\u8EAC\uD1E3\u8EAC\uD1E4\u8EAC\uD1E5" + //  1985 -  1989
-                "\u8EAC\uD1E6\u8EAC\uD1E7\u8EAC\uD1E8\u8EAC\uD1E9\u8EAC\uD1EA" + //  1990 -  1994
-                "\u8EAC\uD1EB\u8EAC\uD1EC\u8EAC\uD1ED\u8EAC\uD1EE\u8EAC\uD1EF" + //  1995 -  1999
-                "\u8EAC\uD1F0\u8EAC\uD1F1\u8EAC\uD1F2\u8EAC\uD1F3\u8EAC\uD1F4" + //  2000 -  2004
-                "\u8EAC\uD1F5\u8EAC\uD1F6\u8EAC\uD1F7\u8EAC\uD1F8\u8EAC\uD1F9" + //  2005 -  2009
-                "\u8EAC\uD1FA\u8EAC\uD1FB\u8EAC\uD1FC\u8EAC\uD1FD\u8EAC\uD1FE" + //  2010 -  2014
-                "\u8EAC\uD2A1\u8EAC\uD2A2\u8EAC\uD0DF\u8EAC\uD0E0\u8EAC\uD0E1" + //  2015 -  2019
-                "\u8EAC\uD0E2\u8EAC\uD0E3\u8EAC\uD0E4\u8EAC\uD0E5\u8EAC\uD0E6" + //  2020 -  2024
-                "\u8EAC\uD0E7\u8EAC\uD0E8\u8EAC\uD0E9\u8EAC\uD0EA\u8EAC\uD0EB" + //  2025 -  2029
-                "\u8EAC\uD0EC\u8EAC\uD0ED\u8EAC\uD0EE\u8EAC\uD0EF\u8EAC\uD0F0" + //  2030 -  2034
-                "\u8EAC\uD0F1\u8EAC\uD0F2\u8EAC\uD0F3\u8EAC\uD0F4\u8EAC\uD0F5" + //  2035 -  2039
-                "\u8EAC\uD0F6\u8EAC\uD0F7\u8EAC\uD0F8\u8EAC\uD0F9\u8EAC\uD0FA" + //  2040 -  2044
-                "\u8EAC\uD0FB\u8EAC\uD0FC\u8EAC\uD0FD\u8EAC\uD0FE\u8EAC\uD1A1" + //  2045 -  2049
-                "\u8EAC\uD1A2\u8EAC\uD1A3\u8EAC\uD1A4\u8EAC\uD1A5\u8EAC\uD1A6" + //  2050 -  2054
-                "\u8EAC\uD1A7\u8EAC\uD1A8\u8EAC\uD1A9\u8EAC\uD1AA\u8EAC\uD1AB" + //  2055 -  2059
-                "\u8EAC\uD1AC\u8EAC\uD1AD\u8EAC\uD1AE\u8EAC\uD1AF\u8EAC\uD1B0" + //  2060 -  2064
-                "\u8EAC\uD1B1\u8EAC\uD1B2\u8EAC\uD1B3\u8EAC\uD1B4\u8EAC\uD1B5" + //  2065 -  2069
-                "\u8EAC\uD1B6\u8EAC\uD1B7\u8EAC\uD1B8\u8EAC\uD1B9\u8EAC\uD1BA" + //  2070 -  2074
-                "\u8EAC\uD1BB\u8EAC\uD1BC\u8EAC\uD1BD\u8EAC\uD1BE\u8EAC\uD1BF" + //  2075 -  2079
-                "\u8EAC\uD1C0\u8EAC\uCFFD\u8EAC\uCFFE\u8EAC\uD0A1\u8EAC\uD0A2" + //  2080 -  2084
-                "\u8EAC\uD0A3\u8EAC\uD0A4\u8EAC\uD0A5\u8EAC\uD0A6\u8EAC\uD0A7" + //  2085 -  2089
-                "\u8EAC\uD0A8\u8EAC\uD0A9\u8EAC\uD0AA\u8EAC\uD0AB\u8EAC\uD0AC" + //  2090 -  2094
-                "\u8EAC\uD0AD\u8EAC\uD0AE\u8EAC\uD0AF\u8EAC\uD0B0\u8EAC\uD0B1" + //  2095 -  2099
-                "\u8EAC\uD0B2\u8EAC\uD0B3\u8EAC\uD0B4\u8EAC\uD0B5\u8EAC\uD0B6" + //  2100 -  2104
-                "\u8EAC\uD0B7\u8EAC\uD0B8\u8EAC\uD0B9\u8EAC\uD0BA\u8EAC\uD0BB" + //  2105 -  2109
-                "\u8EAC\uD0BC\u8EAC\uD0BD\u8EAC\uD0BE\u8EAC\uD0BF\u8EAC\uD0C0" + //  2110 -  2114
-                "\u8EAC\uD0C1\u8EAC\uD0C2\u8EAC\uD0C3\u8EAC\uD0C4\u8EAC\uD0C5" + //  2115 -  2119
-                "\u8EAC\uD0C6\u8EAC\uD0C7\u8EAC\uD0C8\u8EAC\uD0C9\u8EAC\uD0CA" + //  2120 -  2124
-                "\u8EAC\uD0CB\u8EAC\uD0CC\u8EAC\uD0CD\u8EAC\uD0CE\u8EAC\uD0CF" + //  2125 -  2129
-                "\u8EAC\uD0D0\u8EAC\uD0D1\u8EAC\uD0D2\u8EAC\uD0D3\u8EAC\uD0D4" + //  2130 -  2134
-                "\u8EAC\uD0D5\u8EAC\uD0D6\u8EAC\uD0D7\u8EAC\uD0D8\u8EAC\uD0D9" + //  2135 -  2139
-                "\u8EAC\uD0DA\u8EAC\uD0DB\u8EAC\uD0DC\u8EAC\uD0DD\u8EAC\uD0DE" + //  2140 -  2144
-                "\u8EAC\uCFBD\u8EAC\uCFBE\u8EAC\uCFBF\u8EAC\uCFC0\u8EAC\uCFC1" + //  2145 -  2149
-                "\u8EAC\uCFC2\u8EAC\uCFC3\u8EAC\uCFC4\u8EAC\uCFC5\u8EAC\uCFC6" + //  2150 -  2154
-                "\u8EAC\uCFC7\u8EAC\uCFC8\u8EAC\uCFC9\u8EAC\uCFCA\u8EAC\uCFCB" + //  2155 -  2159
-                "\u8EAC\uCFCC\u8EAC\uCFCD\u8EAC\uCFCE\u8EAC\uCFCF\u8EAC\uCFD0" + //  2160 -  2164
-                "\u8EAC\uCFD1\u8EAC\uCFD2\u8EAC\uCFD3\u8EAC\uCFD4\u8EAC\uCFD5" + //  2165 -  2169
-                "\u8EAC\uCFD6\u8EAC\uCFD7\u8EAC\uCFD8\u8EAC\uCFD9\u8EAC\uCFDA" + //  2170 -  2174
-                "\u8EAC\uCFDB\u8EAC\uCFDC\u8EAC\uCFDD\u8EAC\uCFDE\u8EAC\uCFDF" + //  2175 -  2179
-                "\u8EAC\uCFE0\u8EAC\uCFE1\u8EAC\uCFE2\u8EAC\uCFE3\u8EAC\uCFE4" + //  2180 -  2184
-                "\u8EAC\uCFE5\u8EAC\uCFE6\u8EAC\uCFE7\u8EAC\uCFE8\u8EAC\uCFE9" + //  2185 -  2189
-                "\u8EAC\uCFEA\u8EAC\uCFEB\u8EAC\uCFEC\u8EAC\uCFED\u8EAC\uCFEE" + //  2190 -  2194
-                "\u8EAC\uCFEF\u8EAC\uCFF0\u8EAC\uCFF1\u8EAC\uCFF2\u8EAC\uCFF3" + //  2195 -  2199
-                "\u8EAC\uCFF4\u8EAC\uCFF5\u8EAC\uCFF6\u8EAC\uCFF7\u8EAC\uCFF8" + //  2200 -  2204
-                "\u8EAC\uCFF9\u8EAC\uCFFA\u8EAC\uCFFB\u8EAC\uCFFC\u8EAC\uCEDB" + //  2205 -  2209
-                "\u8EAC\uCEDC\u8EAC\uCEDD\u8EAC\uCEDE\u8EAC\uCEDF\u8EAC\uCEE0" + //  2210 -  2214
-                "\u8EAC\uCEE1\u8EAC\uCEE2\u8EAC\uCEE3\u8EAC\uCEE4\u8EAC\uCEE5" + //  2215 -  2219
-                "\u8EAC\uCEE6\u8EAC\uCEE7\u8EAC\uCEE8\u8EAC\uCEE9\u8EAC\uCEEA" + //  2220 -  2224
-                "\u8EAC\uCEEB\u8EAC\uCEEC\u8EAC\uCEED\u8EAC\uCEEE\u8EAC\uCEEF" + //  2225 -  2229
-                "\u8EAC\uCEF0\u8EAC\uCEF1\u8EAC\uCEF2\u8EAC\uCEF3\u8EAC\uCEF4" + //  2230 -  2234
-                "\u8EAC\uCEF5\u8EAC\uCEF6\u8EAC\uCEF7\u8EAC\uCEF8\u8EAC\uCEF9" + //  2235 -  2239
-                "\u8EAC\uCEFA\u8EAC\uCEFB\u8EAC\uCEFC\u8EAC\uCEFD\u8EAC\uCEFE" + //  2240 -  2244
-                "\u8EAC\uCFA1\u8EAC\uCFA2\u8EAC\uCFA3\u8EAC\uCFA4\u8EAC\uCFA5" + //  2245 -  2249
-                "\u8EAC\uCFA6\u8EAC\uCFA7\u8EAC\uCFA8\u8EAC\uCFA9\u8EAC\uCFAA" + //  2250 -  2254
-                "\u8EAC\uCFAB\u8EAC\uCFAC\u8EAC\uCFAD\u8EAC\uCFAE\u8EAC\uCFAF" + //  2255 -  2259
-                "\u8EAC\uCFB0\u8EAC\uCFB1\u8EAC\uCFB2\u8EAC\uCFB3\u8EAC\uCFB4" + //  2260 -  2264
-                "\u8EAC\uCFB5\u8EAC\uCFB6\u8EAC\uCFB7\u8EAC\uCFB8\u8EAC\uCFB9" + //  2265 -  2269
-                "\u8EAC\uCFBA\u8EAC\uCFBB\u8EAC\uCFBC\u8EAC\uCDF9\u8EAC\uCDFA" + //  2270 -  2274
-                "\u8EAC\uCDFB\u8EAC\uCDFC\u8EAC\uCDFD\u8EAC\uCDFE\u8EAC\uCEA1" + //  2275 -  2279
-                "\u8EAC\uCEA2\u8EAC\uCEA3\u8EAC\uCEA4\u8EAC\uCEA5\u8EAC\uCEA6" + //  2280 -  2284
-                "\u8EAC\uCEA7\u8EAC\uCEA8\u8EAC\uCEA9\u8EAC\uCEAA\u8EAC\uCEAB" + //  2285 -  2289
-                "\u8EAC\uCEAC\u8EAC\uCEAD\u8EAC\uCEAE\u8EAC\uCEAF\u8EAC\uCEB0" + //  2290 -  2294
-                "\u8EAC\uCEB1\u8EAC\uCEB2\u8EAC\uCEB3\u8EAC\uCEB4\u8EAC\uCEB5" + //  2295 -  2299
-                "\u8EAC\uCEB6\u8EAC\uCEB7\u8EAC\uCEB8\u8EAC\uCEB9\u8EAC\uCEBA" + //  2300 -  2304
-                "\u8EAC\uCEBB\u8EAC\uCEBC\u8EAC\uCEBD\u8EAC\uCEBE\u8EAC\uCEBF" + //  2305 -  2309
-                "\u8EAC\uCEC0\u8EAC\uCEC1\u8EAC\uCEC2\u8EAC\uCEC3\u8EAC\uCEC4" + //  2310 -  2314
-                "\u8EAC\uCEC5\u8EAC\uCEC6\u8EAC\uCEC7\u8EAC\uCEC8\u8EAC\uCEC9" + //  2315 -  2319
-                "\u8EAC\uCECA\u8EAC\uCECB\u8EAC\uCECC\u8EAC\uCECD\u8EAC\uCECE" + //  2320 -  2324
-                "\u8EAC\uCECF\u8EAC\uCED0\u8EAC\uCED1\u8EAC\uCED2\u8EAC\uCED3" + //  2325 -  2329
-                "\u8EAC\uCED4\u8EAC\uCED5\u8EAC\uCED6\u8EAC\uCED7\u8EAC\uCED8" + //  2330 -  2334
-                "\u8EAC\uCED9\u8EAC\uCEDA\u8EAC\uCDB9\u8EAC\uCDBA\u8EAC\uCDBB" + //  2335 -  2339
-                "\u8EAC\uCDBC\u8EAC\uCDBD\u8EAC\uCDBE\u8EAC\uCDBF\u8EAC\uCDC0" + //  2340 -  2344
-                "\u8EAC\uCDC1\u8EAC\uCDC2\u8EAC\uCDC3\u8EAC\uCDC4\u8EAC\uCDC5" + //  2345 -  2349
-                "\u8EAC\uCDC6\u8EAC\uCDC7\u8EAC\uCDC8\u8EAC\uCDC9\u8EAC\uCDCA" + //  2350 -  2354
-                "\u8EAC\uCDCB\u8EAC\uCDCC\u8EAC\uCDCD\u8EAC\uCDCE\u8EAC\uCDCF" + //  2355 -  2359
-                "\u8EAC\uCDD0\u8EAC\uCDD1\u8EAC\uCDD2\u8EAC\uCDD3\u8EAC\uCDD4" + //  2360 -  2364
-                "\u8EAC\uCDD5\u8EAC\uCDD6\u8EAC\uCDD7\u8EAC\uCDD8\u8EAC\uCDD9" + //  2365 -  2369
-                "\u8EAC\uCDDA\u8EAC\uCDDB\u8EAC\uCDDC\u8EAC\uCDDD\u8EAC\uCDDE" + //  2370 -  2374
-                "\u8EAC\uCDDF\u8EAC\uCDE0\u8EAC\uCDE1\u8EAC\uCDE2\u8EAC\uCDE3" + //  2375 -  2379
-                "\u8EAC\uCDE4\u8EAC\uCDE5\u8EAC\uCDE6\u8EAC\uCDE7\u8EAC\uCDE8" + //  2380 -  2384
-                "\u8EAC\uCDE9\u8EAC\uCDEA\u8EAC\uCDEB\u8EAC\uCDEC\u8EAC\uCDED" + //  2385 -  2389
-                "\u8EAC\uCDEE\u8EAC\uCDEF\u8EAC\uCDF0\u8EAC\uCDF1\u8EAC\uCDF2" + //  2390 -  2394
-                "\u8EAC\uCDF3\u8EAC\uCDF4\u8EAC\uCDF5\u8EAC\uCDF6\u8EAC\uCDF7" + //  2395 -  2399
-                "\u8EAC\uCDF8\u8EAC\uCCD7\u8EAC\uCCD8\u8EAC\uCCD9\u8EAC\uCCDA" + //  2400 -  2404
-                "\u8EAC\uCCDB\u8EAC\uCCDC\u8EAC\uCCDD\u8EAC\uCCDE\u8EAC\uCCDF" + //  2405 -  2409
-                "\u8EAC\uCCE0\u8EAC\uCCE1\u8EAC\uCCE2\u8EAC\uCCE3\u8EAC\uCCE4" + //  2410 -  2414
-                "\u8EAC\uCCE5\u8EAC\uCCE6\u8EAC\uCCE7\u8EAC\uCCE8\u8EAC\uCCE9" + //  2415 -  2419
-                "\u8EAC\uCCEA\u8EAC\uCCEB\u8EAC\uCCEC\u8EAC\uCCED\u8EAC\uCCEE" + //  2420 -  2424
-                "\u8EAC\uCCEF\u8EAC\uCCF0\u8EAC\uCCF1\u8EAC\uCCF2\u8EAC\uCCF3" + //  2425 -  2429
-                "\u8EAC\uCCF4\u8EAC\uCCF5\u8EAC\uCCF6\u8EAC\uCCF7\u8EAC\uCCF8" + //  2430 -  2434
-                "\u8EAC\uCCF9\u8EAC\uCCFA\u8EAC\uCCFB\u8EAC\uCCFC\u8EAC\uCCFD" + //  2435 -  2439
-                "\u8EAC\uCCFE\u8EAC\uCDA1\u8EAC\uCDA2\u8EAC\uCDA3\u8EAC\uCDA4" + //  2440 -  2444
-                "\u8EAC\uCDA5\u8EAC\uCDA6\u8EAC\uCDA7\u8EAC\uCDA8\u8EAC\uCDA9" + //  2445 -  2449
-                "\u8EAC\uCDAA\u8EAC\uCDAB\u8EAC\uCDAC\u8EAC\uCDAD\u8EAC\uCDAE" + //  2450 -  2454
-                "\u8EAC\uCDAF\u8EAC\uCDB0\u8EAC\uCDB1\u8EAC\uCDB2\u8EAC\uCDB3" + //  2455 -  2459
-                "\u8EAC\uCDB4\u8EAC\uCDB5\u8EAC\uCDB6\u8EAC\uCDB7\u8EAC\uCDB8" + //  2460 -  2464
-                "\u8EAC\uCBF5\u8EAC\uCBF6\u8EAC\uCBF7\u8EAC\uCBF8\u8EAC\uCBF9" + //  2465 -  2469
-                "\u8EAC\uCBFA\u8EAC\uCBFB\u8EAC\uCBFC\u8EAC\uCBFD\u8EAC\uCBFE" + //  2470 -  2474
-                "\u8EAC\uCCA1\u8EAC\uCCA2\u8EAC\uCCA3\u8EAC\uCCA4\u8EAC\uCCA5" + //  2475 -  2479
-                "\u8EAC\uCCA6\u8EAC\uCCA7\u8EAC\uCCA8\u8EAC\uCCA9\u8EAC\uCCAA" + //  2480 -  2484
-                "\u8EAC\uCCAB\u8EAC\uCCAC\u8EAC\uCCAD\u8EAC\uCCAE\u8EAC\uCCAF" + //  2485 -  2489
-                "\u8EAC\uCCB0\u8EAC\uCCB1\u8EAC\uCCB2\u8EAC\uCCB3\u8EAC\uCCB4" + //  2490 -  2494
-                "\u8EAC\uCCB5\u8EAC\uCCB6\u8EAC\uCCB7\u8EAC\uCCB8\u8EAC\uCCB9" + //  2495 -  2499
-                "\u8EAC\uCCBA\u8EAC\uCCBB\u8EAC\uCCBC\u8EAC\uCCBD\u8EAC\uCCBE" + //  2500 -  2504
-                "\u8EAC\uCCBF\u8EAC\uCCC0\u8EAC\uCCC1\u8EAC\uCCC2\u8EAC\uCCC3" + //  2505 -  2509
-                "\u8EAC\uCCC4\u8EAC\uCCC5\u8EAC\uCCC6\u8EAC\uCCC7\u8EAC\uCCC8" + //  2510 -  2514
-                "\u8EAC\uCCC9\u8EAC\uCCCA\u8EAC\uCCCB\u8EAC\uCCCC\u8EAC\uCCCD" + //  2515 -  2519
-                "\u8EAC\uCCCE\u8EAC\uCCCF\u8EAC\uCCD0\u8EAC\uCCD1\u8EAC\uCCD2" + //  2520 -  2524
-                "\u8EAC\uCCD3\u8EAC\uCCD4\u8EAC\uCCD5\u8EAC\uCCD6\u8EAC\uCBB5" + //  2525 -  2529
-                "\u8EAC\uCBB6\u8EAC\uCBB7\u8EAC\uCBB8\u8EAC\uCBB9\u8EAC\uCBBA" + //  2530 -  2534
-                "\u8EAC\uCBBB\u8EAC\uCBBC\u8EAC\uCBBD\u8EAC\uCBBE\u8EAC\uCBBF" + //  2535 -  2539
-                "\u8EAC\uCBC0\u8EAC\uCBC1\u8EAC\uCBC2\u8EAC\uCBC3\u8EAC\uCBC4" + //  2540 -  2544
-                "\u8EAC\uCBC5\u8EAC\uCBC6\u8EAC\uCBC7\u8EAC\uCBC8\u8EAC\uCBC9" + //  2545 -  2549
-                "\u8EAC\uCBCA\u8EAC\uCBCB\u8EAC\uCBCC\u8EAC\uCBCD\u8EAC\uCBCE" + //  2550 -  2554
-                "\u8EAC\uCBCF\u8EAC\uCBD0\u8EAC\uCBD1\u8EAC\uCBD2\u8EAC\uCBD3" + //  2555 -  2559
-                "\u8EAC\uCBD4\u8EAC\uCBD5\u8EAC\uCBD6\u8EAC\uCBD7\u8EAC\uCBD8" + //  2560 -  2564
-                "\u8EAC\uCBD9\u8EAC\uCBDA\u8EAC\uCBDB\u8EAC\uCBDC\u8EAC\uCBDD" + //  2565 -  2569
-                "\u8EAC\uCBDE\u8EAC\uCBDF\u8EAC\uCBE0\u8EAC\uCBE1\u8EAC\uCBE2" + //  2570 -  2574
-                "\u8EAC\uCBE3\u8EAC\uCBE4\u8EAC\uCBE5\u8EAC\uCBE6\u8EAC\uCBE7" + //  2575 -  2579
-                "\u8EAC\uCBE8\u8EAC\uCBE9\u8EAC\uCBEA\u8EAC\uCBEB\u8EAC\uCBEC" + //  2580 -  2584
-                "\u8EAC\uCBED\u8EAC\uCBEE\u8EAC\uCBEF\u8EAC\uCBF0\u8EAC\uCBF1" + //  2585 -  2589
-                "\u8EAC\uCBF2\u8EAC\uCBF3\u8EAC\uCBF4\u8EAC\uCAD3\u8EAC\uCAD4" + //  2590 -  2594
-                "\u8EAC\uCAD5\u8EAC\uCAD6\u8EAC\uCAD7\u8EAC\uCAD8\u8EAC\uCAD9" + //  2595 -  2599
-                "\u8EAC\uCADA\u8EAC\uCADB\u8EAC\uCADC\u8EAC\uCADD\u8EAC\uCADE" + //  2600 -  2604
-                "\u8EAC\uCADF\u8EAC\uCAE0\u8EAC\uCAE1\u8EAC\uCAE2\u8EAC\uCAE3" + //  2605 -  2609
-                "\u8EAC\uCAE4\u8EAC\uCAE5\u8EAC\uCAE6\u8EAC\uCAE7\u8EAC\uCAE8" + //  2610 -  2614
-                "\u8EAC\uCAE9\u8EAC\uCAEA\u8EAC\uCAEB\u8EAC\uCAEC\u8EAC\uCAED" + //  2615 -  2619
-                "\u8EAC\uCAEE\u8EAC\uCAEF\u8EAC\uCAF0\u8EAC\uCAF1\u8EAC\uCAF2" + //  2620 -  2624
-                "\u8EAC\uCAF3\u8EAC\uCAF4\u8EAC\uCAF5\u8EAC\uCAF6\u8EAC\uCAF7" + //  2625 -  2629
-                "\u8EAC\uCAF8\u8EAC\uCAF9\u8EAC\uCAFA\u8EAC\uCAFB\u8EAC\uCAFC" + //  2630 -  2634
-                "\u8EAC\uCAFD\u8EAC\uCAFE\u8EAC\uCBA1\u8EAC\uCBA2\u8EAC\uCBA3" + //  2635 -  2639
-                "\u8EAC\uCBA4\u8EAC\uCBA5\u8EAC\uCBA6\u8EAC\uCBA7\u8EAC\uCBA8" + //  2640 -  2644
-                "\u8EAC\uCBA9\u8EAC\uCBAA\u8EAC\uCBAB\u8EAC\uCBAC\u8EAC\uCBAD" + //  2645 -  2649
-                "\u8EAC\uCBAE\u8EAC\uCBAF\u8EAC\uCBB0\u8EAC\uCBB1\u8EAC\uCBB2" + //  2650 -  2654
-                "\u8EAC\uCBB3\u8EAC\uCBB4\u8EAC\uC9F1\u8EAC\uC9F2\u8EAC\uC9F3" + //  2655 -  2659
-                "\u8EAC\uC9F4\u8EAC\uC9F5\u8EAC\uC9F6\u8EAC\uC9F7\u8EAC\uC9F8" + //  2660 -  2664
-                "\u8EAC\uC9F9\u8EAC\uC9FA\u8EAC\uC9FB\u8EAC\uC9FC\u8EAC\uC9FD" + //  2665 -  2669
-                "\u8EAC\uC9FE\u8EAC\uCAA1\u8EAC\uCAA2\u8EAC\uCAA3\u8EAC\uCAA4" + //  2670 -  2674
-                "\u8EAC\uCAA5\u8EAC\uCAA6\u8EAC\uCAA7\u8EAC\uCAA8\u8EAC\uCAA9" + //  2675 -  2679
-                "\u8EAC\uCAAA\u8EAC\uCAAB\u8EAC\uCAAC\u8EAC\uCAAD\u8EAC\uCAAE" + //  2680 -  2684
-                "\u8EAC\uCAAF\u8EAC\uCAB0\u8EAC\uCAB1\u8EAC\uCAB2\u8EAC\uCAB3" + //  2685 -  2689
-                "\u8EAC\uCAB4\u8EAC\uCAB5\u8EAC\uCAB6\u8EAC\uCAB7\u8EAC\uCAB8" + //  2690 -  2694
-                "\u8EAC\uCAB9\u8EAC\uCABA\u8EAC\uCABB\u8EAC\uCABC\u8EAC\uCABD" + //  2695 -  2699
-                "\u8EAC\uCABE\u8EAC\uCABF\u8EAC\uCAC0\u8EAC\uCAC1\u8EAC\uCAC2" + //  2700 -  2704
-                "\u8EAC\uCAC3\u8EAC\uCAC4\u8EAC\uCAC5\u8EAC\uCAC6\u8EAC\uCAC7" + //  2705 -  2709
-                "\u8EAC\uCAC8\u8EAC\uCAC9\u8EAC\uCACA\u8EAC\uCACB\u8EAC\uCACC" + //  2710 -  2714
-                "\u8EAC\uCACD\u8EAC\uCACE\u8EAC\uCACF\u8EAC\uCAD0\u8EAC\uCAD1" + //  2715 -  2719
-                "\u8EAC\uCAD2\u8EAC\uC9B1\u8EAC\uC9B2\u8EAC\uC9B3\u8EAC\uC9B4" + //  2720 -  2724
-                "\u8EAC\uC9B5\u8EAC\uC9B6\u8EAC\uC9B7\u8EAC\uC9B8\u8EAC\uC9B9" + //  2725 -  2729
-                "\u8EAC\uC9BA\u8EAC\uC9BB\u8EAC\uC9BC\u8EAC\uC9BD\u8EAC\uC9BE" + //  2730 -  2734
-                "\u8EAC\uC9BF\u8EAC\uC9C0\u8EAC\uC9C1\u8EAC\uC9C2\u8EAC\uC9C3" + //  2735 -  2739
-                "\u8EAC\uC9C4\u8EAC\uC9C5\u8EAC\uC9C6\u8EAC\uC9C7\u8EAC\uC9C8" + //  2740 -  2744
-                "\u8EAC\uC9C9\u8EAC\uC9CA\u8EAC\uC9CB\u8EAC\uC9CC\u8EAC\uC9CD" + //  2745 -  2749
-                "\u8EAC\uC9CE\u8EAC\uC9CF\u8EAC\uC9D0\u8EAC\uC9D1\u8EAC\uC9D2" + //  2750 -  2754
-                "\u8EAC\uC9D3\u8EAC\uC9D4\u8EAC\uC9D5\u8EAC\uC9D6\u8EAC\uC9D7" + //  2755 -  2759
-                "\u8EAC\uC9D8\u8EAC\uC9D9\u8EAC\uC9DA\u8EAC\uC9DB\u8EAC\uC9DC" + //  2760 -  2764
-                "\u8EAC\uC9DD\u8EAC\uC9DE\u8EAC\uC9DF\u8EAC\uC9E0\u8EAC\uC9E1" + //  2765 -  2769
-                "\u8EAC\uC9E2\u8EAC\uC9E3\u8EAC\uC9E4\u8EAC\uC9E5\u8EAC\uC9E6" + //  2770 -  2774
-                "\u8EAC\uC9E7\u8EAC\uC9E8\u8EAC\uC9E9\u8EAC\uC9EA\u8EAC\uC9EB" + //  2775 -  2779
-                "\u8EAC\uC9EC\u8EAC\uC9ED\u8EAC\uC9EE\u8EAC\uC9EF\u8EAC\uC9F0" + //  2780 -  2784
-                "\u8EAC\uC8CF\u8EAC\uC8D0\u8EAC\uC8D1\u8EAC\uC8D2\u8EAC\uC8D3" + //  2785 -  2789
-                "\u8EAC\uC8D4\u8EAC\uC8D5\u8EAC\uC8D6\u8EAC\uC8D7\u8EAC\uC8D8" + //  2790 -  2794
-                "\u8EAC\uC8D9\u8EAC\uC8DA\u8EAC\uC8DB\u8EAC\uC8DC\u8EAC\uC8DD" + //  2795 -  2799
-                "\u8EAC\uC8DE\u8EAC\uC8DF\u8EAC\uC8E0\u8EAC\uC8E1\u8EAC\uC8E2" + //  2800 -  2804
-                "\u8EAC\uC8E3\u8EAC\uC8E4\u8EAC\uC8E5\u8EAC\uC8E6\u8EAC\uC8E7" + //  2805 -  2809
-                "\u8EAC\uC8E8\u8EAC\uC8E9\u8EAC\uC8EA\u8EAC\uC8EB\u8EAC\uC8EC" + //  2810 -  2814
-                "\u8EAC\uC8ED\u8EAC\uC8EE\u8EAC\uC8EF\u8EAC\uC8F0\u8EAC\uC8F1" + //  2815 -  2819
-                "\u8EAC\uC8F2\u8EAC\uC8F3\u8EAC\uC8F4\u8EAC\uC8F5\u8EAC\uC8F6" + //  2820 -  2824
-                "\u8EAC\uC8F7\u8EAC\uC8F8\u8EAC\uC8F9\u8EAC\uC8FA\u8EAC\uC8FB" + //  2825 -  2829
-                "\u8EAC\uC8FC\u8EAC\uC8FD\u8EAC\uC8FE\u8EAC\uC9A1\u8EAC\uC9A2" + //  2830 -  2834
-                "\u8EAC\uC9A3\u8EAC\uC9A4\u8EAC\uC9A5\u8EAC\uC9A6\u8EAC\uC9A7" + //  2835 -  2839
-                "\u8EAC\uC9A8\u8EAC\uC9A9\u8EAC\uC9AA\u8EAC\uC9AB\u8EAC\uC9AC" + //  2840 -  2844
-                "\u8EAC\uC9AD\u8EAC\uC9AE\u8EAC\uC9AF\u8EAC\uC9B0\u8EAC\uC7ED" + //  2845 -  2849
-                "\u8EAC\uC7EE\u8EAC\uC7EF\u8EAC\uC7F0\u8EAC\uC7F1\u8EAC\uC7F2" + //  2850 -  2854
-                "\u8EAC\uC7F3\u8EAC\uC7F4\u8EAC\uC7F5\u8EAC\uC7F6\u8EAC\uC7F7" + //  2855 -  2859
-                "\u8EAC\uC7F8\u8EAC\uC7F9\u8EAC\uC7FA\u8EAC\uC7FB\u8EAC\uC7FC" + //  2860 -  2864
-                "\u8EAC\uC7FD\u8EAC\uC7FE\u8EAC\uC8A1\u8EAC\uC8A2\u8EAC\uC8A3" + //  2865 -  2869
-                "\u8EAC\uC8A4\u8EAC\uC8A5\u8EAC\uC8A6\u8EAC\uC8A7\u8EAC\uC8A8" + //  2870 -  2874
-                "\u8EAC\uC8A9\u8EAC\uC8AA\u8EAC\uC8AB\u8EAC\uC8AC\u8EAC\uC8AD" + //  2875 -  2879
-                "\u8EAC\uC8AE\u8EAC\uC8AF\u8EAC\uC8B0\u8EAC\uC8B1\u8EAC\uC8B2" + //  2880 -  2884
-                "\u8EAC\uC8B3\u8EAC\uC8B4\u8EAC\uC8B5\u8EAC\uC8B6\u8EAC\uC8B7" + //  2885 -  2889
-                "\u8EAC\uC8B8\u8EAC\uC8B9\u8EAC\uC8BA\u8EAC\uC8BB\u8EAC\uC8BC" + //  2890 -  2894
-                "\u8EAC\uC8BD\u8EAC\uC8BE\u8EAC\uC8BF\u8EAC\uC8C0\u8EAC\uC8C1" + //  2895 -  2899
-                "\u8EAC\uC8C2\u8EAC\uC8C3\u8EAC\uC8C4\u8EAC\uC8C5\u8EAC\uC8C6" + //  2900 -  2904
-                "\u8EAC\uC8C7\u8EAC\uC8C8\u8EAC\uC8C9\u8EAC\uC8CA\u8EAC\uC8CB" + //  2905 -  2909
-                "\u8EAC\uC8CC\u8EAC\uC8CD\u8EAC\uC8CE\u8EAC\uC7AD\u8EAC\uC7AE" + //  2910 -  2914
-                "\u8EAC\uC7AF\u8EAC\uC7B0\u8EAC\uC7B1\u8EAC\uC7B2\u8EAC\uC7B3" + //  2915 -  2919
-                "\u8EAC\uC7B4\u8EAC\uC7B5\u8EAC\uC7B6\u8EAC\uC7B7\u8EAC\uC7B8" + //  2920 -  2924
-                "\u8EAC\uC7B9\u8EAC\uC7BA\u8EAC\uC7BB\u8EAC\uC7BC\u8EAC\uC7BD" + //  2925 -  2929
-                "\u8EAC\uC7BE\u8EAC\uC7BF\u8EAC\uC7C0\u8EAC\uC7C1\u8EAC\uC7C2" + //  2930 -  2934
-                "\u8EAC\uC7C3\u8EAC\uC7C4\u8EAC\uC7C5\u8EAC\uC7C6\u8EAC\uC7C7" + //  2935 -  2939
-                "\u8EAC\uC7C8\u8EAC\uC7C9\u8EAC\uC7CA\u8EAC\uC7CB\u8EAC\uC7CC" + //  2940 -  2944
-                "\u8EAC\uC7CD\u8EAC\uC7CE\u8EAC\uC7CF\u8EAC\uC7D0\u8EAC\uC7D1" + //  2945 -  2949
-                "\u8EAC\uC7D2\u8EAC\uC7D3\u8EAC\uC7D4\u8EAC\uC7D5\u8EAC\uC7D6" + //  2950 -  2954
-                "\u8EAC\uC7D7\u8EAC\uC7D8\u8EAC\uC7D9\u8EAC\uC7DA\u8EAC\uC7DB" + //  2955 -  2959
-                "\u8EAC\uC7DC\u8EAC\uC7DD\u8EAC\uC7DE\u8EAC\uC7DF\u8EAC\uC7E0" + //  2960 -  2964
-                "\u8EAC\uC7E1\u8EAC\uC7E2\u8EAC\uC7E3\u8EAC\uC7E4\u8EAC\uC7E5" + //  2965 -  2969
-                "\u8EAC\uC7E6\u8EAC\uC7E7\u8EAC\uC7E8\u8EAC\uC7E9\u8EAC\uC7EA" + //  2970 -  2974
-                "\u8EAC\uC7EB\u8EAC\uC7EC\u8EAC\uC6CB\u8EAC\uC6CC\u8EAC\uC6CD" + //  2975 -  2979
-                "\u8EAC\uC6CE\u8EAC\uC6CF\u8EAC\uC6D0\u8EAC\uC6D1\u8EAC\uC6D2" + //  2980 -  2984
-                "\u8EAC\uC6D3\u8EAC\uC6D4\u8EAC\uC6D5\u8EAC\uC6D6\u8EAC\uC6D7" + //  2985 -  2989
-                "\u8EAC\uC6D8\u8EAC\uC6D9\u8EAC\uC6DA\u8EAC\uC6DB\u8EAC\uC6DC" + //  2990 -  2994
-                "\u8EAC\uC6DD\u8EAC\uC6DE\u8EAC\uC6DF\u8EAC\uC6E0\u8EAC\uC6E1" + //  2995 -  2999
-                "\u8EAC\uC6E2\u8EAC\uC6E3\u8EAC\uC6E4\u8EAC\uC6E5\u8EAC\uC6E6" + //  3000 -  3004
-                "\u8EAC\uC6E7\u8EAC\uC6E8\u8EAC\uC6E9\u8EAC\uC6EA\u8EAC\uC6EB" + //  3005 -  3009
-                "\u8EAC\uC6EC\u8EAC\uC6ED\u8EAC\uC6EE\u8EAC\uC6EF\u8EAC\uC6F0" + //  3010 -  3014
-                "\u8EAC\uC6F1\u8EAC\uC6F2\u8EAC\uC6F3\u8EAC\uC6F4\u8EAC\uC6F5" + //  3015 -  3019
-                "\u8EAC\uC6F6\u8EAC\uC6F7\u8EAC\uC6F8\u8EAC\uC6F9\u8EAC\uC6FA" + //  3020 -  3024
-                "\u8EAC\uC6FB\u8EAC\uC6FC\u8EAC\uC6FD\u8EAC\uC6FE\u8EAC\uC7A1" + //  3025 -  3029
-                "\u8EAC\uC7A2\u8EAC\uC7A3\u8EAC\uC7A4\u8EAC\uC7A5\u8EAC\uC7A6" + //  3030 -  3034
-                "\u8EAC\uC7A7\u8EAC\uC7A8\u8EAC\uC7A9\u8EAC\uC7AA\u8EAC\uC7AB" + //  3035 -  3039
-                "\u8EAC\uC7AC\u8EAC\uC5E9\u8EAC\uC5EA\u8EAC\uC5EB\u8EAC\uC5EC" + //  3040 -  3044
-                "\u8EAC\uC5ED\u8EAC\uC5EE\u8EAC\uC5EF\u8EAC\uC5F0\u8EAC\uC5F1" + //  3045 -  3049
-                "\u8EAC\uC5F2\u8EAC\uC5F3\u8EAC\uC5F4\u8EAC\uC5F5\u8EAC\uC5F6" + //  3050 -  3054
-                "\u8EAC\uC5F7\u8EAC\uC5F8\u8EAC\uC5F9\u8EAC\uC5FA\u8EAC\uC5FB" + //  3055 -  3059
-                "\u8EAC\uC5FC\u8EAC\uC5FD\u8EAC\uC5FE\u8EAC\uC6A1\u8EAC\uC6A2" + //  3060 -  3064
-                "\u8EAC\uC6A3\u8EAC\uC6A4\u8EAC\uC6A5\u8EAC\uC6A6\u8EAC\uC6A7" + //  3065 -  3069
-                "\u8EAC\uC6A8\u8EAC\uC6A9\u8EAC\uC6AA\u8EAC\uC6AB\u8EAC\uC6AC" + //  3070 -  3074
-                "\u8EAC\uC6AD\u8EAC\uC6AE\u8EAC\uC6AF\u8EAC\uC6B0\u8EAC\uC6B1" + //  3075 -  3079
-                "\u8EAC\uC6B2\u8EAC\uC6B3\u8EAC\uC6B4\u8EAC\uC6B5\u8EAC\uC6B6" + //  3080 -  3084
-                "\u8EAC\uC6B7\u8EAC\uC6B8\u8EAC\uC6B9\u8EAC\uC6BA\u8EAC\uC6BB" + //  3085 -  3089
-                "\u8EAC\uC6BC\u8EAC\uC6BD\u8EAC\uC6BE\u8EAC\uC6BF\u8EAC\uC6C0" + //  3090 -  3094
-                "\u8EAC\uC6C1\u8EAC\uC6C2\u8EAC\uC6C3\u8EAC\uC6C4\u8EAC\uC6C5" + //  3095 -  3099
-                "\u8EAC\uC6C6\u8EAC\uC6C7\u8EAC\uC6C8\u8EAC\uC6C9\u8EAC\uC6CA" + //  3100 -  3104
-                "\u8EAC\uC5A9\u8EAC\uC5AA\u8EAC\uC5AB\u8EAC\uC5AC\u8EAC\uC5AD" + //  3105 -  3109
-                "\u8EAC\uC5AE\u8EAC\uC5AF\u8EAC\uC5B0\u8EAC\uC5B1\u8EAC\uC5B2" + //  3110 -  3114
-                "\u8EAC\uC5B3\u8EAC\uC5B4\u8EAC\uC5B5\u8EAC\uC5B6\u8EAC\uC5B7" + //  3115 -  3119
-                "\u8EAC\uC5B8\u8EAC\uC5B9\u8EAC\uC5BA\u8EAC\uC5BB\u8EAC\uC5BC" + //  3120 -  3124
-                "\u8EAC\uC5BD\u8EAC\uC5BE\u8EAC\uC5BF\u8EAC\uC5C0\u8EAC\uC5C1" + //  3125 -  3129
-                "\u8EAC\uC5C2\u8EAC\uC5C3\u8EAC\uC5C4\u8EAC\uC5C5\u8EAC\uC5C6" + //  3130 -  3134
-                "\u8EAC\uC5C7\u8EAC\uC5C8\u8EAC\uC5C9\u8EAC\uC5CA\u8EAC\uC5CB" + //  3135 -  3139
-                "\u8EAC\uC5CC\u8EAC\uC5CD\u8EAC\uC5CE\u8EAC\uC5CF\u8EAC\uC5D0" + //  3140 -  3144
-                "\u8EAC\uC5D1\u8EAC\uC5D2\u8EAC\uC5D3\u8EAC\uC5D4\u8EAC\uC5D5" + //  3145 -  3149
-                "\u8EAC\uC5D6\u8EAC\uC5D7\u8EAC\uC5D8\u8EAC\uC5D9\u8EAC\uC5DA" + //  3150 -  3154
-                "\u8EAC\uC5DB\u8EAC\uC5DC\u8EAC\uC5DD\u8EAC\uC5DE\u8EAC\uC5DF" + //  3155 -  3159
-                "\u8EAC\uC5E0\u8EAC\uC5E1\u8EAC\uC5E2\u8EAC\uC5E3\u8EAC\uC5E4" + //  3160 -  3164
-                "\u8EAC\uC5E5\u8EAC\uC5E6\u8EAC\uC5E7\u8EAC\uC5E8\u8EAC\uC4C7" + //  3165 -  3169
-                "\u8EAC\uC4C8\u8EAC\uC4C9\u8EAC\uC4CA\u8EAC\uC4CB\u8EAC\uC4CC" + //  3170 -  3174
-                "\u8EAC\uC4CD\u8EAC\uC4CE\u8EAC\uC4CF\u8EAC\uC4D0\u8EAC\uC4D1" + //  3175 -  3179
-                "\u8EAC\uC4D2\u8EAC\uC4D3\u8EAC\uC4D4\u8EAC\uC4D5\u8EAC\uC4D6" + //  3180 -  3184
-                "\u8EAC\uC4D7\u8EAC\uC4D8\u8EAC\uC4D9\u8EAC\uC4DA\u8EAC\uC4DB" + //  3185 -  3189
-                "\u8EAC\uC4DC\u8EAC\uC4DD\u8EAC\uC4DE\u8EAC\uC4DF\u8EAC\uC4E0" + //  3190 -  3194
-                "\u8EAC\uC4E1\u8EAC\uC4E2\u8EAC\uC4E3\u8EAC\uC4E4\u8EAC\uC4E5" + //  3195 -  3199
-                "\u8EAC\uC4E6\u8EAC\uC4E7\u8EAC\uC4E8\u8EAC\uC4E9\u8EAC\uC4EA" + //  3200 -  3204
-                "\u8EAC\uC4EB\u8EAC\uC4EC\u8EAC\uC4ED\u8EAC\uC4EE\u8EAC\uC4EF" + //  3205 -  3209
-                "\u8EAC\uC4F0\u8EAC\uC4F1\u8EAC\uC4F2\u8EAC\uC4F3\u8EAC\uC4F4" + //  3210 -  3214
-                "\u8EAC\uC4F5\u8EAC\uC4F6\u8EAC\uC4F7\u8EAC\uC4F8\u8EAC\uC4F9" + //  3215 -  3219
-                "\u8EAC\uC4FA\u8EAC\uC4FB\u8EAC\uC4FC\u8EAC\uC4FD\u8EAC\uC4FE" + //  3220 -  3224
-                "\u8EAC\uC5A1\u8EAC\uC5A2\u8EAC\uC5A3\u8EAC\uC5A4\u8EAC\uC5A5" + //  3225 -  3229
-                "\u8EAC\uC5A6\u8EAC\uC5A7\u8EAC\uC5A8\u8EAC\uC3E5\u8EAC\uC3E6" + //  3230 -  3234
-                "\u8EAC\uC3E7\u8EAC\uC3E8\u8EAC\uC3E9\u8EAC\uC3EA\u8EAC\uC3EB" + //  3235 -  3239
-                "\u8EAC\uC3EC\u8EAC\uC3ED\u8EAC\uC3EE\u8EAC\uC3EF\u8EAC\uC3F0" + //  3240 -  3244
-                "\u8EAC\uC3F1\u8EAC\uC3F2\u8EAC\uC3F3\u8EAC\uC3F4\u8EAC\uC3F5" + //  3245 -  3249
-                "\u8EAC\uC3F6\u8EAC\uC3F7\u8EAC\uC3F8\u8EAC\uC3F9\u8EAC\uC3FA" + //  3250 -  3254
-                "\u8EAC\uC3FB\u8EAC\uC3FC\u8EAC\uC3FD\u8EAC\uC3FE\u8EAC\uC4A1" + //  3255 -  3259
-                "\u8EAC\uC4A2\u8EAC\uC4A3\u8EAC\uC4A4\u8EAC\uC4A5\u8EAC\uC4A6" + //  3260 -  3264
-                "\u8EAC\uC4A7\u8EAC\uC4A8\u8EAC\uC4A9\u8EAC\uC4AA\u8EAC\uC4AB" + //  3265 -  3269
-                "\u8EAC\uC4AC\u8EAC\uC4AD\u8EAC\uC4AE\u8EAC\uC4AF\u8EAC\uC4B0" + //  3270 -  3274
-                "\u8EAC\uC4B1\u8EAC\uC4B2\u8EAC\uC4B3\u8EAC\uC4B4\u8EAC\uC4B5" + //  3275 -  3279
-                "\u8EAC\uC4B6\u8EAC\uC4B7\u8EAC\uC4B8\u8EAC\uC4B9\u8EAC\uC4BA" + //  3280 -  3284
-                "\u8EAC\uC4BB\u8EAC\uC4BC\u8EAC\uC4BD\u8EAC\uC4BE\u8EAC\uC4BF" + //  3285 -  3289
-                "\u8EAC\uC4C0\u8EAC\uC4C1\u8EAC\uC4C2\u8EAC\uC4C3\u8EAC\uC4C4" + //  3290 -  3294
-                "\u8EAC\uC4C5\u8EAC\uC4C6\u8EAC\uC3A5\u8EAC\uC3A6\u8EAC\uC3A7" + //  3295 -  3299
-                "\u8EAC\uC3A8\u8EAC\uC3A9\u8EAC\uC3AA\u8EAC\uC3AB\u8EAC\uC3AC" + //  3300 -  3304
-                "\u8EAC\uC3AD\u8EAC\uC3AE\u8EAC\uC3AF\u8EAC\uC3B0\u8EAC\uC3B1" + //  3305 -  3309
-                "\u8EAC\uC3B2\u8EAC\uC3B3\u8EAC\uC3B4\u8EAC\uC3B5\u8EAC\uC3B6" + //  3310 -  3314
-                "\u8EAC\uC3B7\u8EAC\uC3B8\u8EAC\uC3B9\u8EAC\uC3BA\u8EAC\uC3BB" + //  3315 -  3319
-                "\u8EAC\uC3BC\u8EAC\uC3BD\u8EAC\uC3BE\u8EAC\uC3BF\u8EAC\uC3C0" + //  3320 -  3324
-                "\u8EAC\uC3C1\u8EAC\uC3C2\u8EAC\uC3C3\u8EAC\uC3C4\u8EAC\uC3C5" + //  3325 -  3329
-                "\u8EAC\uC3C6\u8EAC\uC3C7\u8EAC\uC3C8\u8EAC\uC3C9\u8EAC\uC3CA" + //  3330 -  3334
-                "\u8EAC\uC3CB\u8EAC\uC3CC\u8EAC\uC3CD\u8EAC\uC3CE\u8EAC\uC3CF" + //  3335 -  3339
-                "\u8EAC\uC3D0\u8EAC\uC3D1\u8EAC\uC3D2\u8EAC\uC3D3\u8EAC\uC3D4" + //  3340 -  3344
-                "\u8EAC\uC3D5\u8EAC\uC3D6\u8EAC\uC3D7\u8EAC\uC3D8\u8EAC\uC3D9" + //  3345 -  3349
-                "\u8EAC\uC3DA\u8EAC\uC3DB\u8EAC\uC3DC\u8EAC\uC3DD\u8EAC\uC3DE" + //  3350 -  3354
-                "\u8EAC\uC3DF\u8EAC\uC3E0\u8EAC\uC3E1\u8EAC\uC3E2\u8EAC\uC3E3" + //  3355 -  3359
-                "\u8EAC\uC3E4\u8EAC\uC2C3\u8EAC\uC2C4\u8EAC\uC2C5\u8EAC\uC2C6" + //  3360 -  3364
-                "\u8EAC\uC2C7\u8EAC\uC2C8\u8EAC\uC2C9\u8EAC\uC2CA\u8EAC\uC2CB" + //  3365 -  3369
-                "\u8EAC\uC2CC\u8EAC\uC2CD\u8EAC\uC2CE\u8EAC\uC2CF\u8EAC\uC2D0" + //  3370 -  3374
-                "\u8EAC\uC2D1\u8EAC\uC2D2\u8EAC\uC2D3\u8EAC\uC2D4\u8EAC\uC2D5" + //  3375 -  3379
-                "\u8EAC\uC2D6\u8EAC\uC2D7\u8EAC\uC2D8\u8EAC\uC2D9\u8EAC\uC2DA" + //  3380 -  3384
-                "\u8EAC\uC2DB\u8EAC\uC2DC\u8EAC\uC2DD\u8EAC\uC2DE\u8EAC\uC2DF" + //  3385 -  3389
-                "\u8EAC\uC2E0\u8EAC\uC2E1\u8EAC\uC2E2\u8EAC\uC2E3\u8EAC\uC2E4" + //  3390 -  3394
-                "\u8EAC\uC2E5\u8EAC\uC2E6\u8EAC\uC2E7\u8EAC\uC2E8\u8EAC\uC2E9" + //  3395 -  3399
-                "\u8EAC\uC2EA\u8EAC\uC2EB\u8EAC\uC2EC\u8EAC\uC2ED\u8EAC\uC2EE" + //  3400 -  3404
-                "\u8EAC\uC2EF\u8EAC\uC2F0\u8EAC\uC2F1\u8EAC\uC2F2\u8EAC\uC2F3" + //  3405 -  3409
-                "\u8EAC\uC2F4\u8EAC\uC2F5\u8EAC\uC2F6\u8EAC\uC2F7\u8EAC\uC2F8" + //  3410 -  3414
-                "\u8EAC\uC2F9\u8EAC\uC2FA\u8EAC\uC2FB\u8EAC\uC2FC\u8EAC\uC2FD" + //  3415 -  3419
-                "\u8EAC\uC2FE\u8EAC\uC3A1\u8EAC\uC3A2\u8EAC\uC3A3\u8EAC\uC3A4" + //  3420 -  3424
-                "\u8EAC\uC1E1\u8EAC\uC1E2\u8EAC\uC1E3\u8EAC\uC1E4\u8EAC\uC1E5" + //  3425 -  3429
-                "\u8EAC\uC1E6\u8EAC\uC1E7\u8EAC\uC1E8\u8EAC\uC1E9\u8EAC\uC1EA" + //  3430 -  3434
-                "\u8EAC\uC1EB\u8EAC\uC1EC\u8EAC\uC1ED\u8EAC\uC1EE\u8EAC\uC1EF" + //  3435 -  3439
-                "\u8EAC\uC1F0\u8EAC\uC1F1\u8EAC\uC1F2\u8EAC\uC1F3\u8EAC\uC1F4" + //  3440 -  3444
-                "\u8EAC\uC1F5\u8EAC\uC1F6\u8EAC\uC1F7\u8EAC\uC1F8\u8EAC\uC1F9" + //  3445 -  3449
-                "\u8EAC\uC1FA\u8EAC\uC1FB\u8EAC\uC1FC\u8EAC\uC1FD\u8EAC\uC1FE" + //  3450 -  3454
-                "\u8EAC\uC2A1\u8EAC\uC2A2\u8EAC\uC2A3\u8EAC\uC2A4\u8EAC\uC2A5" + //  3455 -  3459
-                "\u8EAC\uC2A6\u8EAC\uC2A7\u8EAC\uC2A8\u8EAC\uC2A9\u8EAC\uC2AA" + //  3460 -  3464
-                "\u8EAC\uC2AB\u8EAC\uC2AC\u8EAC\uC2AD\u8EAC\uC2AE\u8EAC\uC2AF" + //  3465 -  3469
-                "\u8EAC\uC2B0\u8EAC\uC2B1\u8EAC\uC2B2\u8EAC\uC2B3\u8EAC\uC2B4" + //  3470 -  3474
-                "\u8EAC\uC2B5\u8EAC\uC2B6\u8EAC\uC2B7\u8EAC\uC2B8\u8EAC\uC2B9" + //  3475 -  3479
-                "\u8EAC\uC2BA\u8EAC\uC2BB\u8EAC\uC2BC\u8EAC\uC2BD\u8EAC\uC2BE" + //  3480 -  3484
-                "\u8EAC\uC2BF\u8EAC\uC2C0\u8EAC\uC2C1\u8EAC\uC2C2\u8EAC\uC1A1" + //  3485 -  3489
-                "\u8EAC\uC1A2\u8EAC\uC1A3\u8EAC\uC1A4\u8EAC\uC1A5\u8EAC\uC1A6" + //  3490 -  3494
-                "\u8EAC\uC1A7\u8EAC\uC1A8\u8EAC\uC1A9\u8EAC\uC1AA\u8EAC\uC1AB" + //  3495 -  3499
-                "\u8EAC\uC1AC\u8EAC\uC1AD\u8EAC\uC1AE\u8EAC\uC1AF\u8EAC\uC1B0" + //  3500 -  3504
-                "\u8EAC\uC1B1\u8EAC\uC1B2\u8EAC\uC1B3\u8EAC\uC1B4\u8EAC\uC1B5" + //  3505 -  3509
-                "\u8EAC\uC1B6\u8EAC\uC1B7\u8EAC\uC1B8\u8EAC\uC1B9\u8EAC\uC1BA" + //  3510 -  3514
-                "\u8EAC\uC1BB\u8EAC\uC1BC\u8EAC\uC1BD\u8EAC\uC1BE\u8EAC\uC1BF" + //  3515 -  3519
-                "\u8EAC\uC1C0\u8EAC\uC1C1\u8EAC\uC1C2\u8EAC\uC1C3\u8EAC\uC1C4" + //  3520 -  3524
-                "\u8EAC\uC1C5\u8EAC\uC1C6\u8EAC\uC1C7\u8EAC\uC1C8\u8EAC\uC1C9" + //  3525 -  3529
-                "\u8EAC\uC1CA\u8EAC\uC1CB\u8EAC\uC1CC\u8EAC\uC1CD\u8EAC\uC1CE" + //  3530 -  3534
-                "\u8EAC\uC1CF\u8EAC\uC1D0\u8EAC\uC1D1\u8EAC\uC1D2\u8EAC\uC1D3" + //  3535 -  3539
-                "\u8EAC\uC1D4\u8EAC\uC1D5\u8EAC\uC1D6\u8EAC\uC1D7\u8EAC\uC1D8" + //  3540 -  3544
-                "\u8EAC\uC1D9\u8EAC\uC1DA\u8EAC\uC1DB\u8EAC\uC1DC\u8EAC\uC1DD" + //  3545 -  3549
-                "\u8EAC\uC1DE\u8EAC\uC1DF\u8EAC\uC1E0\u8EAC\uC0BF\u8EAC\uC0C0" + //  3550 -  3554
-                "\u8EAC\uC0C1\u8EAC\uC0C2\u8EAC\uC0C3\u8EAC\uC0C4\u8EAC\uC0C5" + //  3555 -  3559
-                "\u8EAC\uC0C6\u8EAC\uC0C7\u8EAC\uC0C8\u8EAC\uC0C9\u8EAC\uC0CA" + //  3560 -  3564
-                "\u8EAC\uC0CB\u8EAC\uC0CC\u8EAC\uC0CD\u8EAC\uC0CE\u8EAC\uC0CF" + //  3565 -  3569
-                "\u8EAC\uC0D0\u8EAC\uC0D1\u8EAC\uC0D2\u8EAC\uC0D3\u8EAC\uC0D4" + //  3570 -  3574
-                "\u8EAC\uC0D5\u8EAC\uC0D6\u8EAC\uC0D7\u8EAC\uC0D8\u8EAC\uC0D9" + //  3575 -  3579
-                "\u8EAC\uC0DA\u8EAC\uC0DB\u8EAC\uC0DC\u8EAC\uC0DD\u8EAC\uC0DE" + //  3580 -  3584
-                "\u8EAC\uC0DF\u8EAC\uC0E0\u8EAC\uC0E1\u8EAC\uC0E2\u8EAC\uC0E3" + //  3585 -  3589
-                "\u8EAC\uC0E4\u8EAC\uC0E5\u8EAC\uC0E6\u8EAC\uC0E7\u8EAC\uC0E8" + //  3590 -  3594
-                "\u8EAC\uC0E9\u8EAC\uC0EA\u8EAC\uC0EB\u8EAC\uC0EC\u8EAC\uC0ED" + //  3595 -  3599
-                "\u8EAC\uC0EE\u8EAC\uC0EF\u8EAC\uC0F0\u8EAC\uC0F1\u8EAC\uC0F2" + //  3600 -  3604
-                "\u8EAC\uC0F3\u8EAC\uC0F4\u8EAC\uC0F5\u8EAC\uC0F6\u8EAC\uC0F7" + //  3605 -  3609
-                "\u8EAC\uC0F8\u8EAC\uC0F9\u8EAC\uC0FA\u8EAC\uC0FB\u8EAC\uC0FC" + //  3610 -  3614
-                "\u8EAC\uC0FD\u8EAC\uC0FE\u8EAC\uBFDD\u8EAC\uBFDE\u8EAC\uBFDF" + //  3615 -  3619
-                "\u8EAC\uBFE0\u8EAC\uBFE1\u8EAC\uBFE2\u8EAC\uBFE3\u8EAC\uBFE4" + //  3620 -  3624
-                "\u8EAC\uBFE5\u8EAC\uBFE6\u8EAC\uBFE7\u8EAC\uBFE8\u8EAC\uBFE9" + //  3625 -  3629
-                "\u8EAC\uBFEA\u8EAC\uBFEB\u8EAC\uBFEC\u8EAC\uBFED\u8EAC\uBFEE" + //  3630 -  3634
-                "\u8EAC\uBFEF\u8EAC\uBFF0\u8EAC\uBFF1\u8EAC\uBFF2\u8EAC\uBFF3" + //  3635 -  3639
-                "\u8EAC\uBFF4\u8EAC\uBFF5\u8EAC\uBFF6\u8EAC\uBFF7\u8EAC\uBFF8" + //  3640 -  3644
-                "\u8EAC\uBFF9\u8EAC\uBFFA\u8EAC\uBFFB\u8EAC\uBFFC\u8EAC\uBFFD" + //  3645 -  3649
-                "\u8EAC\uBFFE\u8EAC\uC0A1\u8EAC\uC0A2\u8EAC\uC0A3\u8EAC\uC0A4" + //  3650 -  3654
-                "\u8EAC\uC0A5\u8EAC\uC0A6\u8EAC\uC0A7\u8EAC\uC0A8\u8EAC\uC0A9" + //  3655 -  3659
-                "\u8EAC\uC0AA\u8EAC\uC0AB\u8EAC\uC0AC\u8EAC\uC0AD\u8EAC\uC0AE" + //  3660 -  3664
-                "\u8EAC\uC0AF\u8EAC\uC0B0\u8EAC\uC0B1\u8EAC\uC0B2\u8EAC\uC0B3" + //  3665 -  3669
-                "\u8EAC\uC0B4\u8EAC\uC0B5\u8EAC\uC0B6\u8EAC\uC0B7\u8EAC\uC0B8" + //  3670 -  3674
-                "\u8EAC\uC0B9\u8EAC\uC0BA\u8EAC\uC0BB\u8EAC\uC0BC\u8EAC\uC0BD" + //  3675 -  3679
-                "\u8EAC\uC0BE\u8EAC\uBEFB\u8EAC\uBEFC\u8EAC\uBEFD\u8EAC\uBEFE" + //  3680 -  3684
-                "\u8EAC\uBFA1\u8EAC\uBFA2\u8EAC\uBFA3\u8EAC\uBFA4\u8EAC\uBFA5" + //  3685 -  3689
-                "\u8EAC\uBFA6\u8EAC\uBFA7\u8EAC\uBFA8\u8EAC\uBFA9\u8EAC\uBFAA" + //  3690 -  3694
-                "\u8EAC\uBFAB\u8EAC\uBFAC\u8EAC\uBFAD\u8EAC\uBFAE\u8EAC\uBFAF" + //  3695 -  3699
-                "\u8EAC\uBFB0\u8EAC\uBFB1\u8EAC\uBFB2\u8EAC\uBFB3\u8EAC\uBFB4" + //  3700 -  3704
-                "\u8EAC\uBFB5\u8EAC\uBFB6\u8EAC\uBFB7\u8EAC\uBFB8\u8EAC\uBFB9" + //  3705 -  3709
-                "\u8EAC\uBFBA\u8EAC\uBFBB\u8EAC\uBFBC\u8EAC\uBFBD\u8EAC\uBFBE" + //  3710 -  3714
-                "\u8EAC\uBFBF\u8EAC\uBFC0\u8EAC\uBFC1\u8EAC\uBFC2\u8EAC\uBFC3" + //  3715 -  3719
-                "\u8EAC\uBFC4\u8EAC\uBFC5\u8EAC\uBFC6\u8EAC\uBFC7\u8EAC\uBFC8" + //  3720 -  3724
-                "\u8EAC\uBFC9\u8EAC\uBFCA\u8EAC\uBFCB\u8EAC\uBFCC\u8EAC\uBFCD" + //  3725 -  3729
-                "\u8EAC\uBFCE\u8EAC\uBFCF\u8EAC\uBFD0\u8EAC\uBFD1\u8EAC\uBFD2" + //  3730 -  3734
-                "\u8EAC\uBFD3\u8EAC\uBFD4\u8EAC\uBFD5\u8EAC\uBFD6\u8EAC\uBFD7" + //  3735 -  3739
-                "\u8EAC\uBFD8\u8EAC\uBFD9\u8EAC\uBFDA\u8EAC\uBFDB\u8EAC\uBFDC" + //  3740 -  3744
-                "\u8EAC\uBEBB\u8EAC\uBEBC\u8EAC\uBEBD\u8EAC\uBEBE\u8EAC\uBEBF" + //  3745 -  3749
-                "\u8EAC\uBEC0\u8EAC\uBEC1\u8EAC\uBEC2\u8EAC\uBEC3\u8EAC\uBEC4" + //  3750 -  3754
-                "\u8EAC\uBEC5\u8EAC\uBEC6\u8EAC\uBEC7\u8EAC\uBEC8\u8EAC\uBEC9" + //  3755 -  3759
-                "\u8EAC\uBECA\u8EAC\uBECB\u8EAC\uBECC\u8EAC\uBECD\u8EAC\uBECE" + //  3760 -  3764
-                "\u8EAC\uBECF\u8EAC\uBED0\u8EAC\uBED1\u8EAC\uBED2\u8EAC\uBED3" + //  3765 -  3769
-                "\u8EAC\uBED4\u8EAC\uBED5\u8EAC\uBED6\u8EAC\uBED7\u8EAC\uBED8" + //  3770 -  3774
-                "\u8EAC\uBED9\u8EAC\uBEDA\u8EAC\uBEDB\u8EAC\uBEDC\u8EAC\uBEDD" + //  3775 -  3779
-                "\u8EAC\uBEDE\u8EAC\uBEDF\u8EAC\uBEE0\u8EAC\uBEE1\u8EAC\uBEE2" + //  3780 -  3784
-                "\u8EAC\uBEE3\u8EAC\uBEE4\u8EAC\uBEE5\u8EAC\uBEE6\u8EAC\uBEE7" + //  3785 -  3789
-                "\u8EAC\uBEE8\u8EAC\uBEE9\u8EAC\uBEEA\u8EAC\uBEEB\u8EAC\uBEEC" + //  3790 -  3794
-                "\u8EAC\uBEED\u8EAC\uBEEE\u8EAC\uBEEF\u8EAC\uBEF0\u8EAC\uBEF1" + //  3795 -  3799
-                "\u8EAC\uBEF2\u8EAC\uBEF3\u8EAC\uBEF4\u8EAC\uBEF5\u8EAC\uBEF6" + //  3800 -  3804
-                "\u8EAC\uBEF7\u8EAC\uBEF8\u8EAC\uBEF9\u8EAC\uBEFA\u8EAC\uBDD9" + //  3805 -  3809
-                "\u8EAC\uBDDA\u8EAC\uBDDB\u8EAC\uBDDC\u8EAC\uBDDD\u8EAC\uBDDE" + //  3810 -  3814
-                "\u8EAC\uBDDF\u8EAC\uBDE0\u8EAC\uBDE1\u8EAC\uBDE2\u8EAC\uBDE3" + //  3815 -  3819
-                "\u8EAC\uBDE4\u8EAC\uBDE5\u8EAC\uBDE6\u8EAC\uBDE7\u8EAC\uBDE8" + //  3820 -  3824
-                "\u8EAC\uBDE9\u8EAC\uBDEA\u8EAC\uBDEB\u8EAC\uBDEC\u8EAC\uBDED" + //  3825 -  3829
-                "\u8EAC\uBDEE\u8EAC\uBDEF\u8EAC\uBDF0\u8EAC\uBDF1\u8EAC\uBDF2" + //  3830 -  3834
-                "\u8EAC\uBDF3\u8EAC\uBDF4\u8EAC\uBDF5\u8EAC\uBDF6\u8EAC\uBDF7" + //  3835 -  3839
-                "\u8EAC\uBDF8\u8EAC\uBDF9\u8EAC\uBDFA\u8EAC\uBDFB\u8EAC\uBDFC" + //  3840 -  3844
-                "\u8EAC\uBDFD\u8EAC\uBDFE\u8EAC\uBEA1\u8EAC\uBEA2\u8EAC\uBEA3" + //  3845 -  3849
-                "\u8EAC\uBEA4\u8EAC\uBEA5\u8EAC\uBEA6\u8EAC\uBEA7\u8EAC\uBEA8" + //  3850 -  3854
-                "\u8EAC\uBEA9\u8EAC\uBEAA\u8EAC\uBEAB\u8EAC\uBEAC\u8EAC\uBEAD" + //  3855 -  3859
-                "\u8EAC\uBEAE\u8EAC\uBEAF\u8EAC\uBEB0\u8EAC\uBEB1\u8EAC\uBEB2" + //  3860 -  3864
-                "\u8EAC\uBEB3\u8EAC\uBEB4\u8EAC\uBEB5\u8EAC\uBEB6\u8EAC\uBEB7" + //  3865 -  3869
-                "\u8EAC\uBEB8\u8EAC\uBEB9\u8EAC\uBEBA\u8EAC\uBCF7\u8EAC\uBCF8" + //  3870 -  3874
-                "\u8EAC\uBCF9\u8EAC\uBCFA\u8EAC\uBCFB\u8EAC\uBCFC\u8EAC\uBCFD" + //  3875 -  3879
-                "\u8EAC\uBCFE\u8EAC\uBDA1\u8EAC\uBDA2\u8EAC\uBDA3\u8EAC\uBDA4" + //  3880 -  3884
-                "\u8EAC\uBDA5\u8EAC\uBDA6\u8EAC\uBDA7\u8EAC\uBDA8\u8EAC\uBDA9" + //  3885 -  3889
-                "\u8EAC\uBDAA\u8EAC\uBDAB\u8EAC\uBDAC\u8EAC\uBDAD\u8EAC\uBDAE" + //  3890 -  3894
-                "\u8EAC\uBDAF\u8EAC\uBDB0\u8EAC\uBDB1\u8EAC\uBDB2\u8EAC\uBDB3" + //  3895 -  3899
-                "\u8EAC\uBDB4\u8EAC\uBDB5\u8EAC\uBDB6\u8EAC\uBDB7\u8EAC\uBDB8" + //  3900 -  3904
-                "\u8EAC\uBDB9\u8EAC\uBDBA\u8EAC\uBDBB\u8EAC\uBDBC\u8EAC\uBDBD" + //  3905 -  3909
-                "\u8EAC\uBDBE\u8EAC\uBDBF\u8EAC\uBDC0\u8EAC\uBDC1\u8EAC\uBDC2" + //  3910 -  3914
-                "\u8EAC\uBDC3\u8EAC\uBDC4\u8EAC\uBDC5\u8EAC\uBDC6\u8EAC\uBDC7" + //  3915 -  3919
-                "\u8EAC\uBDC8\u8EAC\uBDC9\u8EAC\uBDCA\u8EAC\uBDCB\u8EAC\uBDCC" + //  3920 -  3924
-                "\u8EAC\uBDCD\u8EAC\uBDCE\u8EAC\uBDCF\u8EAC\uBDD0\u8EAC\uBDD1" + //  3925 -  3929
-                "\u8EAC\uBDD2\u8EAC\uBDD3\u8EAC\uBDD4\u8EAC\uBDD5\u8EAC\uBDD6" + //  3930 -  3934
-                "\u8EAC\uBDD7\u8EAC\uBDD8\u8EAC\uBCB7\u8EAC\uBCB8\u8EAC\uBCB9" + //  3935 -  3939
-                "\u8EAC\uBCBA\u8EAC\uBCBB\u8EAC\uBCBC\u8EAC\uBCBD\u8EAC\uBCBE" + //  3940 -  3944
-                "\u8EAC\uBCBF\u8EAC\uBCC0\u8EAC\uBCC1\u8EAC\uBCC2\u8EAC\uBCC3" + //  3945 -  3949
-                "\u8EAC\uBCC4\u8EAC\uBCC5\u8EAC\uBCC6\u8EAC\uBCC7\u8EAC\uBCC8" + //  3950 -  3954
-                "\u8EAC\uBCC9\u8EAC\uBCCA\u8EAC\uBCCB\u8EAC\uBCCC\u8EAC\uBCCD" + //  3955 -  3959
-                "\u8EAC\uBCCE\u8EAC\uBCCF\u8EAC\uBCD0\u8EAC\uBCD1\u8EAC\uBCD2" + //  3960 -  3964
-                "\u8EAC\uBCD3\u8EAC\uBCD4\u8EAC\uBCD5\u8EAC\uBCD6\u8EAC\uBCD7" + //  3965 -  3969
-                "\u8EAC\uBCD8\u8EAC\uBCD9\u8EAC\uBCDA\u8EAC\uBCDB\u8EAC\uBCDC" + //  3970 -  3974
-                "\u8EAC\uBCDD\u8EAC\uBCDE\u8EAC\uBCDF\u8EAC\uBCE0\u8EAC\uBCE1" + //  3975 -  3979
-                "\u8EAC\uBCE2\u8EAC\uBCE3\u8EAC\uBCE4\u8EAC\uBCE5\u8EAC\uBCE6" + //  3980 -  3984
-                "\u8EAC\uBCE7\u8EAC\uBCE8\u8EAC\uBCE9\u8EAC\uBCEA\u8EAC\uBCEB" + //  3985 -  3989
-                "\u8EAC\uBCEC\u8EAC\uBCED\u8EAC\uBCEE\u8EAC\uBCEF\u8EAC\uBCF0" + //  3990 -  3994
-                "\u8EAC\uBCF1\u8EAC\uBCF2\u8EAC\uBCF3\u8EAC\uBCF4\u8EAC\uBCF5" + //  3995 -  3999
-                "\u8EAC\uBCF6\u8EAC\uBBD5\u8EAC\uBBD6\u8EAC\uBBD7\u8EAC\uBBD8" + //  4000 -  4004
-                "\u8EAC\uBBD9\u8EAC\uBBDA\u8EAC\uBBDB\u8EAC\uBBDC\u8EAC\uBBDD" + //  4005 -  4009
-                "\u8EAC\uBBDE\u8EAC\uBBDF\u8EAC\uBBE0\u8EAC\uBBE1\u8EAC\uBBE2" + //  4010 -  4014
-                "\u8EAC\uBBE3\u8EAC\uBBE4\u8EAC\uBBE5\u8EAC\uBBE6\u8EAC\uBBE7" + //  4015 -  4019
-                "\u8EAC\uBBE8\u8EAC\uBBE9\u8EAC\uBBEA\u8EAC\uBBEB\u8EAC\uBBEC" + //  4020 -  4024
-                "\u8EAC\uBBED\u8EAC\uBBEE\u8EAC\uBBEF\u8EAC\uBBF0\u8EAC\uBBF1" + //  4025 -  4029
-                "\u8EAC\uBBF2\u8EAC\uBBF3\u8EAC\uBBF4\u8EAC\uBBF5\u8EAC\uBBF6" + //  4030 -  4034
-                "\u8EAC\uBBF7\u8EAC\uBBF8\u8EAC\uBBF9\u8EAC\uBBFA\u8EAC\uBBFB" + //  4035 -  4039
-                "\u8EAC\uBBFC\u8EAC\uBBFD\u8EAC\uBBFE\u8EAC\uBCA1\u8EAC\uBCA2" + //  4040 -  4044
-                "\u8EAC\uBCA3\u8EAC\uBCA4\u8EAC\uBCA5\u8EAC\uBCA6\u8EAC\uBCA7" + //  4045 -  4049
-                "\u8EAC\uBCA8\u8EAC\uBCA9\u8EAC\uBCAA\u8EAC\uBCAB\u8EAC\uBCAC" + //  4050 -  4054
-                "\u8EAC\uBCAD\u8EAC\uBCAE\u8EAC\uBCAF\u8EAC\uBCB0\u8EAC\uBCB1" + //  4055 -  4059
-                "\u8EAC\uBCB2\u8EAC\uBCB3\u8EAC\uBCB4\u8EAC\uBCB5\u8EAC\uBCB6" + //  4060 -  4064
-                "\u8EAC\uBAF3\u8EAC\uBAF4\u8EAC\uBAF5\u8EAC\uBAF6\u8EAC\uBAF7" + //  4065 -  4069
-                "\u8EAC\uBAF8\u8EAC\uBAF9\u8EAC\uBAFA\u8EAC\uBAFB\u8EAC\uBAFC" + //  4070 -  4074
-                "\u8EAC\uBAFD\u8EAC\uBAFE\u8EAC\uBBA1\u8EAC\uBBA2\u8EAC\uBBA3" + //  4075 -  4079
-                "\u8EAC\uBBA4\u8EAC\uBBA5\u8EAC\uBBA6\u8EAC\uBBA7\u8EAC\uBBA8" + //  4080 -  4084
-                "\u8EAC\uBBA9\u8EAC\uBBAA\u8EAC\uBBAB\u8EAC\uBBAC\u8EAC\uBBAD" + //  4085 -  4089
-                "\u8EAC\uBBAE\u8EAC\uBBAF\u8EAC\uBBB0\u8EAC\uBBB1\u8EAC\uBBB2" + //  4090 -  4094
-                "\u8EAC\uBBB3\u8EAC\uBBB4\u8EAC\uBBB5\u8EAC\uBBB6\u8EAC\uBBB7" + //  4095 -  4099
-                "\u8EAC\uBBB8\u8EAC\uBBB9\u8EAC\uBBBA\u8EAC\uBBBB\u8EAC\uBBBC" + //  4100 -  4104
-                "\u8EAC\uBBBD\u8EAC\uBBBE\u8EAC\uBBBF\u8EAC\uBBC0\u8EAC\uBBC1" + //  4105 -  4109
-                "\u8EAC\uBBC2\u8EAC\uBBC3\u8EAC\uBBC4\u8EAC\uBBC5\u8EAC\uBBC6" + //  4110 -  4114
-                "\u8EAC\uBBC7\u8EAC\uBBC8\u8EAC\uBBC9\u8EAC\uBBCA\u8EAC\uBBCB" + //  4115 -  4119
-                "\u8EAC\uBBCC\u8EAC\uBBCD\u8EAC\uBBCE\u8EAC\uBBCF\u8EAC\uBBD0" + //  4120 -  4124
-                "\u8EAC\uBBD1\u8EAC\uBBD2\u8EAC\uBBD3\u8EAC\uBBD4\u8EAC\uBAB3" + //  4125 -  4129
-                "\u8EAC\uBAB4\u8EAC\uBAB5\u8EAC\uBAB6\u8EAC\uBAB7\u8EAC\uBAB8" + //  4130 -  4134
-                "\u8EAC\uBAB9\u8EAC\uBABA\u8EAC\uBABB\u8EAC\uBABC\u8EAC\uBABD" + //  4135 -  4139
-                "\u8EAC\uBABE\u8EAC\uBABF\u8EAC\uBAC0\u8EAC\uBAC1\u8EAC\uBAC2" + //  4140 -  4144
-                "\u8EAC\uBAC3\u8EAC\uBAC4\u8EAC\uBAC5\u8EAC\uBAC6\u8EAC\uBAC7" + //  4145 -  4149
-                "\u8EAC\uBAC8\u8EAC\uBAC9\u8EAC\uBACA\u8EAC\uBACB\u8EAC\uBACC" + //  4150 -  4154
-                "\u8EAC\uBACD\u8EAC\uBACE\u8EAC\uBACF\u8EAC\uBAD0\u8EAC\uBAD1" + //  4155 -  4159
-                "\u8EAC\uBAD2\u8EAC\uBAD3\u8EAC\uBAD4\u8EAC\uBAD5\u8EAC\uBAD6" + //  4160 -  4164
-                "\u8EAC\uBAD7\u8EAC\uBAD8\u8EAC\uBAD9\u8EAC\uBADA\u8EAC\uBADB" + //  4165 -  4169
-                "\u8EAC\uBADC\u8EAC\uBADD\u8EAC\uBADE\u8EAC\uBADF\u8EAC\uBAE0" + //  4170 -  4174
-                "\u8EAC\uBAE1\u8EAC\uBAE2\u8EAC\uBAE3\u8EAC\uBAE4\u8EAC\uBAE5" + //  4175 -  4179
-                "\u8EAC\uBAE6\u8EAC\uBAE7\u8EAC\uBAE8\u8EAC\uBAE9\u8EAC\uBAEA" + //  4180 -  4184
-                "\u8EAC\uBAEB\u8EAC\uBAEC\u8EAC\uBAED\u8EAC\uBAEE\u8EAC\uBAEF" + //  4185 -  4189
-                "\u8EAC\uBAF0\u8EAC\uBAF1\u8EAC\uBAF2\u8EAC\uB9D1\u8EAC\uB9D2" + //  4190 -  4194
-                "\u8EAC\uB9D3\u8EAC\uB9D4\u8EAC\uB9D5\u8EAC\uB9D6\u8EAC\uB9D7" + //  4195 -  4199
-                "\u8EAC\uB9D8\u8EAC\uB9D9\u8EAC\uB9DA\u8EAC\uB9DB\u8EAC\uB9DC" + //  4200 -  4204
-                "\u8EAC\uB9DD\u8EAC\uB9DE\u8EAC\uB9DF\u8EAC\uB9E0\u8EAC\uB9E1" + //  4205 -  4209
-                "\u8EAC\uB9E2\u8EAC\uB9E3\u8EAC\uB9E4\u8EAC\uB9E5\u8EAC\uB9E6" + //  4210 -  4214
-                "\u8EAC\uB9E7\u8EAC\uB9E8\u8EAC\uB9E9\u8EAC\uB9EA\u8EAC\uB9EB" + //  4215 -  4219
-                "\u8EAC\uB9EC\u8EAC\uB9ED\u8EAC\uB9EE\u8EAC\uB9EF\u8EAC\uB9F0" + //  4220 -  4224
-                "\u8EAC\uB9F1\u8EAC\uB9F2\u8EAC\uB9F3\u8EAC\uB9F4\u8EAC\uB9F5" + //  4225 -  4229
-                "\u8EAC\uB9F6\u8EAC\uB9F7\u8EAC\uB9F8\u8EAC\uB9F9\u8EAC\uB9FA" + //  4230 -  4234
-                "\u8EAC\uB9FB\u8EAC\uB9FC\u8EAC\uB9FD\u8EAC\uB9FE\u8EAC\uBAA1" + //  4235 -  4239
-                "\u8EAC\uBAA2\u8EAC\uBAA3\u8EAC\uBAA4\u8EAC\uBAA5\u8EAC\uBAA6" + //  4240 -  4244
-                "\u8EAC\uBAA7\u8EAC\uBAA8\u8EAC\uBAA9\u8EAC\uBAAA\u8EAC\uBAAB" + //  4245 -  4249
-                "\u8EAC\uBAAC\u8EAC\uBAAD\u8EAC\uBAAE\u8EAC\uBAAF\u8EAC\uBAB0" + //  4250 -  4254
-                "\u8EAC\uBAB1\u8EAC\uBAB2\u8EAC\uB8EF\u8EAC\uB8F0\u8EAC\uB8F1" + //  4255 -  4259
-                "\u8EAC\uB8F2\u8EAC\uB8F3\u8EAC\uB8F4\u8EAC\uB8F5\u8EAC\uB8F6" + //  4260 -  4264
-                "\u8EAC\uB8F7\u8EAC\uB8F8\u8EAC\uB8F9\u8EAC\uB8FA\u8EAC\uB8FB" + //  4265 -  4269
-                "\u8EAC\uB8FC\u8EAC\uB8FD\u8EAC\uB8FE\u8EAC\uB9A1\u8EAC\uB9A2" + //  4270 -  4274
-                "\u8EAC\uB9A3\u8EAC\uB9A4\u8EAC\uB9A5\u8EAC\uB9A6\u8EAC\uB9A7" + //  4275 -  4279
-                "\u8EAC\uB9A8\u8EAC\uB9A9\u8EAC\uB9AA\u8EAC\uB9AB\u8EAC\uB9AC" + //  4280 -  4284
-                "\u8EAC\uB9AD\u8EAC\uB9AE\u8EAC\uB9AF\u8EAC\uB9B0\u8EAC\uB9B1" + //  4285 -  4289
-                "\u8EAC\uB9B2\u8EAC\uB9B3\u8EAC\uB9B4\u8EAC\uB9B5\u8EAC\uB9B6" + //  4290 -  4294
-                "\u8EAC\uB9B7\u8EAC\uB9B8\u8EAC\uB9B9\u8EAC\uB9BA\u8EAC\uB9BB" + //  4295 -  4299
-                "\u8EAC\uB9BC\u8EAC\uB9BD\u8EAC\uB9BE\u8EAC\uB9BF\u8EAC\uB9C0" + //  4300 -  4304
-                "\u8EAC\uB9C1\u8EAC\uB9C2\u8EAC\uB9C3\u8EAC\uB9C4\u8EAC\uB9C5" + //  4305 -  4309
-                "\u8EAC\uB9C6\u8EAC\uB9C7\u8EAC\uB9C8\u8EAC\uB9C9\u8EAC\uB9CA" + //  4310 -  4314
-                "\u8EAC\uB9CB\u8EAC\uB9CC\u8EAC\uB9CD\u8EAC\uB9CE\u8EAC\uB9CF" + //  4315 -  4319
-                "\u8EAC\uB9D0\u8EAC\uB8AF\u8EAC\uB8B0\u8EAC\uB8B1\u8EAC\uB8B2" + //  4320 -  4324
-                "\u8EAC\uB8B3\u8EAC\uB8B4\u8EAC\uB8B5\u8EAC\uB8B6\u8EAC\uB8B7" + //  4325 -  4329
-                "\u8EAC\uB8B8\u8EAC\uB8B9\u8EAC\uB8BA\u8EAC\uB8BB\u8EAC\uB8BC" + //  4330 -  4334
-                "\u8EAC\uB8BD\u8EAC\uB8BE\u8EAC\uB8BF\u8EAC\uB8C0\u8EAC\uB8C1" + //  4335 -  4339
-                "\u8EAC\uB8C2\u8EAC\uB8C3\u8EAC\uB8C4\u8EAC\uB8C5\u8EAC\uB8C6" + //  4340 -  4344
-                "\u8EAC\uB8C7\u8EAC\uB8C8\u8EAC\uB8C9\u8EAC\uB8CA\u8EAC\uB8CB" + //  4345 -  4349
-                "\u8EAC\uB8CC\u8EAC\uB8CD\u8EAC\uB8CE\u8EAC\uB8CF\u8EAC\uB8D0" + //  4350 -  4354
-                "\u8EAC\uB8D1\u8EAC\uB8D2\u8EAC\uB8D3\u8EAC\uB8D4\u8EAC\uB8D5" + //  4355 -  4359
-                "\u8EAC\uB8D6\u8EAC\uB8D7\u8EAC\uB8D8\u8EAC\uB8D9\u8EAC\uB8DA" + //  4360 -  4364
-                "\u8EAC\uB8DB\u8EAC\uB8DC\u8EAC\uB8DD\u8EAC\uB8DE\u8EAC\uB8DF" + //  4365 -  4369
-                "\u8EAC\uB8E0\u8EAC\uB8E1\u8EAC\uB8E2\u8EAC\uB8E3\u8EAC\uB8E4" + //  4370 -  4374
-                "\u8EAC\uB8E5\u8EAC\uB8E6\u8EAC\uB8E7\u8EAC\uB8E8\u8EAC\uB8E9" + //  4375 -  4379
-                "\u8EAC\uB8EA\u8EAC\uB8EB\u8EAC\uB8EC\u8EAC\uB8ED\u8EAC\uB8EE" + //  4380 -  4384
-                "\u8EAC\uB7CD\u8EAC\uB7CE\u8EAC\uB7CF\u8EAC\uB7D0\u8EAC\uB7D1" + //  4385 -  4389
-                "\u8EAC\uB7D2\u8EAC\uB7D3\u8EAC\uB7D4\u8EAC\uB7D5\u8EAC\uB7D6" + //  4390 -  4394
-                "\u8EAC\uB7D7\u8EAC\uB7D8\u8EAC\uB7D9\u8EAC\uB7DA\u8EAC\uB7DB" + //  4395 -  4399
-                "\u8EAC\uB7DC\u8EAC\uB7DD\u8EAC\uB7DE\u8EAC\uB7DF\u8EAC\uB7E0" + //  4400 -  4404
-                "\u8EAC\uB7E1\u8EAC\uB7E2\u8EAC\uB7E3\u8EAC\uB7E4\u8EAC\uB7E5" + //  4405 -  4409
-                "\u8EAC\uB7E6\u8EAC\uB7E7\u8EAC\uB7E8\u8EAC\uB7E9\u8EAC\uB7EA" + //  4410 -  4414
-                "\u8EAC\uB7EB\u8EAC\uB7EC\u8EAC\uB7ED\u8EAC\uB7EE\u8EAC\uB7EF" + //  4415 -  4419
-                "\u8EAC\uB7F0\u8EAC\uB7F1\u8EAC\uB7F2\u8EAC\uB7F3\u8EAC\uB7F4" + //  4420 -  4424
-                "\u8EAC\uB7F5\u8EAC\uB7F6\u8EAC\uB7F7\u8EAC\uB7F8\u8EAC\uB7F9" + //  4425 -  4429
-                "\u8EAC\uB7FA\u8EAC\uB7FB\u8EAC\uB7FC\u8EAC\uB7FD\u8EAC\uB7FE" + //  4430 -  4434
-                "\u8EAC\uB8A1\u8EAC\uB8A2\u8EAC\uB8A3\u8EAC\uB8A4\u8EAC\uB8A5" + //  4435 -  4439
-                "\u8EAC\uB8A6\u8EAC\uB8A7\u8EAC\uB8A8\u8EAC\uB8A9\u8EAC\uB8AA" + //  4440 -  4444
-                "\u8EAC\uB8AB\u8EAC\uB8AC\u8EAC\uB8AD\u8EAC\uB8AE\u8EAC\uB6EB" + //  4445 -  4449
-                "\u8EAC\uB6EC\u8EAC\uB6ED\u8EAC\uB6EE\u8EAC\uB6EF\u8EAC\uB6F0" + //  4450 -  4454
-                "\u8EAC\uB6F1\u8EAC\uB6F2\u8EAC\uB6F3\u8EAC\uB6F4\u8EAC\uB6F5" + //  4455 -  4459
-                "\u8EAC\uB6F6\u8EAC\uB6F7\u8EAC\uB6F8\u8EAC\uB6F9\u8EAC\uB6FA" + //  4460 -  4464
-                "\u8EAC\uB6FB\u8EAC\uB6FC\u8EAC\uB6FD\u8EAC\uB6FE\u8EAC\uB7A1" + //  4465 -  4469
-                "\u8EAC\uB7A2\u8EAC\uB7A3\u8EAC\uB7A4\u8EAC\uB7A5\u8EAC\uB7A6" + //  4470 -  4474
-                "\u8EAC\uB7A7\u8EAC\uB7A8\u8EAC\uB7A9\u8EAC\uB7AA\u8EAC\uB7AB" + //  4475 -  4479
-                "\u8EAC\uB7AC\u8EAC\uB7AD\u8EAC\uB7AE\u8EAC\uB7AF\u8EAC\uB7B0" + //  4480 -  4484
-                "\u8EAC\uB7B1\u8EAC\uB7B2\u8EAC\uB7B3\u8EAC\uB7B4\u8EAC\uB7B5" + //  4485 -  4489
-                "\u8EAC\uB7B6\u8EAC\uB7B7\u8EAC\uB7B8\u8EAC\uB7B9\u8EAC\uB7BA" + //  4490 -  4494
-                "\u8EAC\uB7BB\u8EAC\uB7BC\u8EAC\uB7BD\u8EAC\uB7BE\u8EAC\uB7BF" + //  4495 -  4499
-                "\u8EAC\uB7C0\u8EAC\uB7C1\u8EAC\uB7C2\u8EAC\uB7C3\u8EAC\uB7C4" + //  4500 -  4504
-                "\u8EAC\uB7C5\u8EAC\uB7C6\u8EAC\uB7C7\u8EAC\uB7C8\u8EAC\uB7C9" + //  4505 -  4509
-                "\u8EAC\uB7CA\u8EAC\uB7CB\u8EAC\uB7CC\u8EAC\uB6AB\u8EAC\uB6AC" + //  4510 -  4514
-                "\u8EAC\uB6AD\u8EAC\uB6AE\u8EAC\uB6AF\u8EAC\uB6B0\u8EAC\uB6B1" + //  4515 -  4519
-                "\u8EAC\uB6B2\u8EAC\uB6B3\u8EAC\uB6B4\u8EAC\uB6B5\u8EAC\uB6B6" + //  4520 -  4524
-                "\u8EAC\uB6B7\u8EAC\uB6B8\u8EAC\uB6B9\u8EAC\uB6BA\u8EAC\uB6BB" + //  4525 -  4529
-                "\u8EAC\uB6BC\u8EAC\uB6BD\u8EAC\uB6BE\u8EAC\uB6BF\u8EAC\uB6C0" + //  4530 -  4534
-                "\u8EAC\uB6C1\u8EAC\uB6C2\u8EAC\uB6C3\u8EAC\uB6C4\u8EAC\uB6C5" + //  4535 -  4539
-                "\u8EAC\uB6C6\u8EAC\uB6C7\u8EAC\uB6C8\u8EAC\uB6C9\u8EAC\uB6CA" + //  4540 -  4544
-                "\u8EAC\uB6CB\u8EAC\uB6CC\u8EAC\uB6CD\u8EAC\uB6CE\u8EAC\uB6CF" + //  4545 -  4549
-                "\u8EAC\uB6D0\u8EAC\uB6D1\u8EAC\uB6D2\u8EAC\uB6D3\u8EAC\uB6D4" + //  4550 -  4554
-                "\u8EAC\uB6D5\u8EAC\uB6D6\u8EAC\uB6D7\u8EAC\uB6D8\u8EAC\uB6D9" + //  4555 -  4559
-                "\u8EAC\uB6DA\u8EAC\uB6DB\u8EAC\uB6DC\u8EAC\uB6DD\u8EAC\uB6DE" + //  4560 -  4564
-                "\u8EAC\uB6DF\u8EAC\uB6E0\u8EAC\uB6E1\u8EAC\uB6E2\u8EAC\uB6E3" + //  4565 -  4569
-                "\u8EAC\uB6E4\u8EAC\uB6E5\u8EAC\uB6E6\u8EAC\uB6E7\u8EAC\uB6E8" + //  4570 -  4574
-                "\u8EAC\uB6E9\u8EAC\uB6EA\u8EAC\uB5C9\u8EAC\uB5CA\u8EAC\uB5CB" + //  4575 -  4579
-                "\u8EAC\uB5CC\u8EAC\uB5CD\u8EAC\uB5CE\u8EAC\uB5CF\u8EAC\uB5D0" + //  4580 -  4584
-                "\u8EAC\uB5D1\u8EAC\uB5D2\u8EAC\uB5D3\u8EAC\uB5D4\u8EAC\uB5D5" + //  4585 -  4589
-                "\u8EAC\uB5D6\u8EAC\uB5D7\u8EAC\uB5D8\u8EAC\uB5D9\u8EAC\uB5DA" + //  4590 -  4594
-                "\u8EAC\uB5DB\u8EAC\uB5DC\u8EAC\uB5DD\u8EAC\uB5DE\u8EAC\uB5DF" + //  4595 -  4599
-                "\u8EAC\uB5E0\u8EAC\uB5E1\u8EAC\uB5E2\u8EAC\uB5E3\u8EAC\uB5E4" + //  4600 -  4604
-                "\u8EAC\uB5E5\u8EAC\uB5E6\u8EAC\uB5E7\u8EAC\uB5E8\u8EAC\uB5E9" + //  4605 -  4609
-                "\u8EAC\uB5EA\u8EAC\uB5EB\u8EAC\uB5EC\u8EAC\uB5ED\u8EAC\uB5EE" + //  4610 -  4614
-                "\u8EAC\uB5EF\u8EAC\uB5F0\u8EAC\uB5F1\u8EAC\uB5F2\u8EAC\uB5F3" + //  4615 -  4619
-                "\u8EAC\uB5F4\u8EAC\uB5F5\u8EAC\uB5F6\u8EAC\uB5F7\u8EAC\uB5F8" + //  4620 -  4624
-                "\u8EAC\uB5F9\u8EAC\uB5FA\u8EAC\uB5FB\u8EAC\uB5FC\u8EAC\uB5FD" + //  4625 -  4629
-                "\u8EAC\uB5FE\u8EAC\uB6A1\u8EAC\uB6A2\u8EAC\uB6A3\u8EAC\uB6A4" + //  4630 -  4634
-                "\u8EAC\uB6A5\u8EAC\uB6A6\u8EAC\uB6A7\u8EAC\uB6A8\u8EAC\uB6A9" + //  4635 -  4639
-                "\u8EAC\uB6AA\u8EAC\uB4E7\u8EAC\uB4E8\u8EAC\uB4E9\u8EAC\uB4EA" + //  4640 -  4644
-                "\u8EAC\uB4EB\u8EAC\uB4EC\u8EAC\uB4ED\u8EAC\uB4EE\u8EAC\uB4EF" + //  4645 -  4649
-                "\u8EAC\uB4F0\u8EAC\uB4F1\u8EAC\uB4F2\u8EAC\uB4F3\u8EAC\uB4F4" + //  4650 -  4654
-                "\u8EAC\uB4F5\u8EAC\uB4F6\u8EAC\uB4F7\u8EAC\uB4F8\u8EAC\uB4F9" + //  4655 -  4659
-                "\u8EAC\uB4FA\u8EAC\uB4FB\u8EAC\uB4FC\u8EAC\uB4FD\u8EAC\uB4FE" + //  4660 -  4664
-                "\u8EAC\uB5A1\u8EAC\uB5A2\u8EAC\uB5A3\u8EAC\uB5A4\u8EAC\uB5A5" + //  4665 -  4669
-                "\u8EAC\uB5A6\u8EAC\uB5A7\u8EAC\uB5A8\u8EAC\uB5A9\u8EAC\uB5AA" + //  4670 -  4674
-                "\u8EAC\uB5AB\u8EAC\uB5AC\u8EAC\uB5AD\u8EAC\uB5AE\u8EAC\uB5AF" + //  4675 -  4679
-                "\u8EAC\uB5B0\u8EAC\uB5B1\u8EAC\uB5B2\u8EAC\uB5B3\u8EAC\uB5B4" + //  4680 -  4684
-                "\u8EAC\uB5B5\u8EAC\uB5B6\u8EAC\uB5B7\u8EAC\uB5B8\u8EAC\uB5B9" + //  4685 -  4689
-                "\u8EAC\uB5BA\u8EAC\uB5BB\u8EAC\uB5BC\u8EAC\uB5BD\u8EAC\uB5BE" + //  4690 -  4694
-                "\u8EAC\uB5BF\u8EAC\uB5C0\u8EAC\uB5C1\u8EAC\uB5C2\u8EAC\uB5C3" + //  4695 -  4699
-                "\u8EAC\uB5C4\u8EAC\uB5C5\u8EAC\uB5C6\u8EAC\uB5C7\u8EAC\uB5C8" + //  4700 -  4704
-                "\u8EAC\uB4A7\u8EAC\uB4A8\u8EAC\uB4A9\u8EAC\uB4AA\u8EAC\uB4AB" + //  4705 -  4709
-                "\u8EAC\uB4AC\u8EAC\uB4AD\u8EAC\uB4AE\u8EAC\uB4AF\u8EAC\uB4B0" + //  4710 -  4714
-                "\u8EAC\uB4B1\u8EAC\uB4B2\u8EAC\uB4B3\u8EAC\uB4B4\u8EAC\uB4B5" + //  4715 -  4719
-                "\u8EAC\uB4B6\u8EAC\uB4B7\u8EAC\uB4B8\u8EAC\uB4B9\u8EAC\uB4BA" + //  4720 -  4724
-                "\u8EAC\uB4BB\u8EAC\uB4BC\u8EAC\uB4BD\u8EAC\uB4BE\u8EAC\uB4BF" + //  4725 -  4729
-                "\u8EAC\uB4C0\u8EAC\uB4C1\u8EAC\uB4C2\u8EAC\uB4C3\u8EAC\uB4C4" + //  4730 -  4734
-                "\u8EAC\uB4C5\u8EAC\uB4C6\u8EAC\uB4C7\u8EAC\uB4C8\u8EAC\uB4C9" + //  4735 -  4739
-                "\u8EAC\uB4CA\u8EAC\uB4CB\u8EAC\uB4CC\u8EAC\uB4CD\u8EAC\uB4CE" + //  4740 -  4744
-                "\u8EAC\uB4CF\u8EAC\uB4D0\u8EAC\uB4D1\u8EAC\uB4D2\u8EAC\uB4D3" + //  4745 -  4749
-                "\u8EAC\uB4D4\u8EAC\uB4D5\u8EAC\uB4D6\u8EAC\uB4D7\u8EAC\uB4D8" + //  4750 -  4754
-                "\u8EAC\uB4D9\u8EAC\uB4DA\u8EAC\uB4DB\u8EAC\uB4DC\u8EAC\uB4DD" + //  4755 -  4759
-                "\u8EAC\uB4DE\u8EAC\uB4DF\u8EAC\uB4E0\u8EAC\uB4E1\u8EAC\uB4E2" + //  4760 -  4764
-                "\u8EAC\uB4E3\u8EAC\uB4E4\u8EAC\uB4E5\u8EAC\uB4E6\u8EAC\uB3C5" + //  4765 -  4769
-                "\u8EAC\uB3C6\u8EAC\uB3C7\u8EAC\uB3C8\u8EAC\uB3C9\u8EAC\uB3CA" + //  4770 -  4774
-                "\u8EAC\uB3CB\u8EAC\uB3CC\u8EAC\uB3CD\u8EAC\uB3CE\u8EAC\uB3CF" + //  4775 -  4779
-                "\u8EAC\uB3D0\u8EAC\uB3D1\u8EAC\uB3D2\u8EAC\uB3D3\u8EAC\uB3D4" + //  4780 -  4784
-                "\u8EAC\uB3D5\u8EAC\uB3D6\u8EAC\uB3D7\u8EAC\uB3D8\u8EAC\uB3D9" + //  4785 -  4789
-                "\u8EAC\uB3DA\u8EAC\uB3DB\u8EAC\uB3DC\u8EAC\uB3DD\u8EAC\uB3DE" + //  4790 -  4794
-                "\u8EAC\uB3DF\u8EAC\uB3E0\u8EAC\uB3E1\u8EAC\uB3E2\u8EAC\uB3E3" + //  4795 -  4799
-                "\u8EAC\uB3E4\u8EAC\uB3E5\u8EAC\uB3E6\u8EAC\uB3E7\u8EAC\uB3E8" + //  4800 -  4804
-                "\u8EAC\uB3E9\u8EAC\uB3EA\u8EAC\uB3EB\u8EAC\uB3EC\u8EAC\uB3ED" + //  4805 -  4809
-                "\u8EAC\uB3EE\u8EAC\uB3EF\u8EAC\uB3F0\u8EAC\uB3F1\u8EAC\uB3F2" + //  4810 -  4814
-                "\u8EAC\uB3F3\u8EAC\uB3F4\u8EAC\uB3F5\u8EAC\uB3F6\u8EAC\uB3F7" + //  4815 -  4819
-                "\u8EAC\uB3F8\u8EAC\uB3F9\u8EAC\uB3FA\u8EAC\uB3FB\u8EAC\uB3FC" + //  4820 -  4824
-                "\u8EAC\uB3FD\u8EAC\uB3FE\u8EAC\uB4A1\u8EAC\uB4A2\u8EAC\uB4A3" + //  4825 -  4829
-                "\u8EAC\uB4A4\u8EAC\uB4A5\u8EAC\uB4A6\u8EAC\uB2E3\u8EAC\uB2E4" + //  4830 -  4834
-                "\u8EAC\uB2E5\u8EAC\uB2E6\u8EAC\uB2E7\u8EAC\uB2E8\u8EAC\uB2E9" + //  4835 -  4839
-                "\u8EAC\uB2EA\u8EAC\uB2EB\u8EAC\uB2EC\u8EAC\uB2ED\u8EAC\uB2EE" + //  4840 -  4844
-                "\u8EAC\uB2EF\u8EAC\uB2F0\u8EAC\uB2F1\u8EAC\uB2F2\u8EAC\uB2F3" + //  4845 -  4849
-                "\u8EAC\uB2F4\u8EAC\uB2F5\u8EAC\uB2F6\u8EAC\uB2F7\u8EAC\uB2F8" + //  4850 -  4854
-                "\u8EAC\uB2F9\u8EAC\uB2FA\u8EAC\uB2FB\u8EAC\uB2FC\u8EAC\uB2FD" + //  4855 -  4859
-                "\u8EAC\uB2FE\u8EAC\uB3A1\u8EAC\uB3A2\u8EAC\uB3A3\u8EAC\uB3A4" + //  4860 -  4864
-                "\u8EAC\uB3A5\u8EAC\uB3A6\u8EAC\uB3A7\u8EAC\uB3A8\u8EAC\uB3A9" + //  4865 -  4869
-                "\u8EAC\uB3AA\u8EAC\uB3AB\u8EAC\uB3AC\u8EAC\uB3AD\u8EAC\uB3AE" + //  4870 -  4874
-                "\u8EAC\uB3AF\u8EAC\uB3B0\u8EAC\uB3B1\u8EAC\uB3B2\u8EAC\uB3B3" + //  4875 -  4879
-                "\u8EAC\uB3B4\u8EAC\uB3B5\u8EAC\uB3B6\u8EAC\uB3B7\u8EAC\uB3B8" + //  4880 -  4884
-                "\u8EAC\uB3B9\u8EAC\uB3BA\u8EAC\uB3BB\u8EAC\uB3BC\u8EAC\uB3BD" + //  4885 -  4889
-                "\u8EAC\uB3BE\u8EAC\uB3BF\u8EAC\uB3C0\u8EAC\uB3C1\u8EAC\uB3C2" + //  4890 -  4894
-                "\u8EAC\uB3C3\u8EAC\uB3C4\u8EAC\uB2A3\u8EAC\uB2A4\u8EAC\uB2A5" + //  4895 -  4899
-                "\u8EAC\uB2A6\u8EAC\uB2A7\u8EAC\uB2A8\u8EAC\uB2A9\u8EAC\uB2AA" + //  4900 -  4904
-                "\u8EAC\uB2AB\u8EAC\uB2AC\u8EAC\uB2AD\u8EAC\uB2AE\u8EAC\uB2AF" + //  4905 -  4909
-                "\u8EAC\uB2B0\u8EAC\uB2B1\u8EAC\uB2B2\u8EAC\uB2B3\u8EAC\uB2B4" + //  4910 -  4914
-                "\u8EAC\uB2B5\u8EAC\uB2B6\u8EAC\uB2B7\u8EAC\uB2B8\u8EAC\uB2B9" + //  4915 -  4919
-                "\u8EAC\uB2BA\u8EAC\uB2BB\u8EAC\uB2BC\u8EAC\uB2BD\u8EAC\uB2BE" + //  4920 -  4924
-                "\u8EAC\uB2BF\u8EAC\uB2C0\u8EAC\uB2C1\u8EAC\uB2C2\u8EAC\uB2C3" + //  4925 -  4929
-                "\u8EAC\uB2C4\u8EAC\uB2C5\u8EAC\uB2C6\u8EAC\uB2C7\u8EAC\uB2C8" + //  4930 -  4934
-                "\u8EAC\uB2C9\u8EAC\uB2CA\u8EAC\uB2CB\u8EAC\uB2CC\u8EAC\uB2CD" + //  4935 -  4939
-                "\u8EAC\uB2CE\u8EAC\uB2CF\u8EAC\uB2D0\u8EAC\uB2D1\u8EAC\uB2D2" + //  4940 -  4944
-                "\u8EAC\uB2D3\u8EAC\uB2D4\u8EAC\uB2D5\u8EAC\uB2D6\u8EAC\uB2D7" + //  4945 -  4949
-                "\u8EAC\uB2D8\u8EAC\uB2D9\u8EAC\uB2DA\u8EAC\uB2DB\u8EAC\uB2DC" + //  4950 -  4954
-                "\u8EAC\uB2DD\u8EAC\uB2DE\u8EAC\uB2DF\u8EAC\uB2E0\u8EAC\uB2E1" + //  4955 -  4959
-                "\u8EAC\uB2E2\u8EAC\uB1C1\u8EAC\uB1C2\u8EAC\uB1C3\u8EAC\uB1C4" + //  4960 -  4964
-                "\u8EAC\uB1C5\u8EAC\uB1C6\u8EAC\uB1C7\u8EAC\uB1C8\u8EAC\uB1C9" + //  4965 -  4969
-                "\u8EAC\uB1CA\u8EAC\uB1CB\u8EAC\uB1CC\u8EAC\uB1CD\u8EAC\uB1CE" + //  4970 -  4974
-                "\u8EAC\uB1CF\u8EAC\uB1D0\u8EAC\uB1D1\u8EAC\uB1D2\u8EAC\uB1D3" + //  4975 -  4979
-                "\u8EAC\uB1D4\u8EAC\uB1D5\u8EAC\uB1D6\u8EAC\uB1D7\u8EAC\uB1D8" + //  4980 -  4984
-                "\u8EAC\uB1D9\u8EAC\uB1DA\u8EAC\uB1DB\u8EAC\uB1DC\u8EAC\uB1DD" + //  4985 -  4989
-                "\u8EAC\uB1DE\u8EAC\uB1DF\u8EAC\uB1E0\u8EAC\uB1E1\u8EAC\uB1E2" + //  4990 -  4994
-                "\u8EAC\uB1E3\u8EAC\uB1E4\u8EAC\uB1E5\u8EAC\uB1E6\u8EAC\uB1E7" + //  4995 -  4999
-                "\u8EAC\uB1E8\u8EAC\uB1E9\u8EAC\uB1EA\u8EAC\uB1EB\u8EAC\uB1EC" + //  5000 -  5004
-                "\u8EAC\uB1ED\u8EAC\uB1EE\u8EAC\uB1EF\u8EAC\uB1F0\u8EAC\uB1F1" + //  5005 -  5009
-                "\u8EAC\uB1F2\u8EAC\uB1F3\u8EAC\uB1F4\u8EAC\uB1F5\u8EAC\uB1F6" + //  5010 -  5014
-                "\u8EAC\uB1F7\u8EAC\uB1F8\u8EAC\uB1F9\u8EAC\uB1FA\u8EAC\uB1FB" + //  5015 -  5019
-                "\u8EAC\uB1FC\u8EAC\uB1FD\u8EAC\uB1FE\u8EAC\uB2A1\u8EAC\uB2A2" + //  5020 -  5024
-                "\u8EAC\uB0DF\u8EAC\uB0E0\u8EAC\uB0E1\u8EAC\uB0E2\u8EAC\uB0E3" + //  5025 -  5029
-                "\u8EAC\uB0E4\u8EAC\uB0E5\u8EAC\uB0E6\u8EAC\uB0E7\u8EAC\uB0E8" + //  5030 -  5034
-                "\u8EAC\uB0E9\u8EAC\uB0EA\u8EAC\uB0EB\u8EAC\uB0EC\u8EAC\uB0ED" + //  5035 -  5039
-                "\u8EAC\uB0EE\u8EAC\uB0EF\u8EAC\uB0F0\u8EAC\uB0F1\u8EAC\uB0F2" + //  5040 -  5044
-                "\u8EAC\uB0F3\u8EAC\uB0F4\u8EAC\uB0F5\u8EAC\uB0F6\u8EAC\uB0F7" + //  5045 -  5049
-                "\u8EAC\uB0F8\u8EAC\uB0F9\u8EAC\uB0FA\u8EAC\uB0FB\u8EAC\uB0FC" + //  5050 -  5054
-                "\u8EAC\uB0FD\u8EAC\uB0FE\u8EAC\uB1A1\u8EAC\uB1A2\u8EAC\uB1A3" + //  5055 -  5059
-                "\u8EAC\uB1A4\u8EAC\uB1A5\u8EAC\uB1A6\u8EAC\uB1A7\u8EAC\uB1A8" + //  5060 -  5064
-                "\u8EAC\uB1A9\u8EAC\uB1AA\u8EAC\uB1AB\u8EAC\uB1AC\u8EAC\uB1AD" + //  5065 -  5069
-                "\u8EAC\uB1AE\u8EAC\uB1AF\u8EAC\uB1B0\u8EAC\uB1B1\u8EAC\uB1B2" + //  5070 -  5074
-                "\u8EAC\uB1B3\u8EAC\uB1B4\u8EAC\uB1B5\u8EAC\uB1B6\u8EAC\uB1B7" + //  5075 -  5079
-                "\u8EAC\uB1B8\u8EAC\uB1B9\u8EAC\uB1BA\u8EAC\uB1BB\u8EAC\uB1BC" + //  5080 -  5084
-                "\u8EAC\uB1BD\u8EAC\uB1BE\u8EAC\uB1BF\u8EAC\uB1C0\u8EAC\uAFFD" + //  5085 -  5089
-                "\u8EAC\uAFFE\u8EAC\uB0A1\u8EAC\uB0A2\u8EAC\uB0A3\u8EAC\uB0A4" + //  5090 -  5094
-                "\u8EAC\uB0A5\u8EAC\uB0A6\u8EAC\uB0A7\u8EAC\uB0A8\u8EAC\uB0A9" + //  5095 -  5099
-                "\u8EAC\uB0AA\u8EAC\uB0AB\u8EAC\uB0AC\u8EAC\uB0AD\u8EAC\uB0AE" + //  5100 -  5104
-                "\u8EAC\uB0AF\u8EAC\uB0B0\u8EAC\uB0B1\u8EAC\uB0B2\u8EAC\uB0B3" + //  5105 -  5109
-                "\u8EAC\uB0B4\u8EAC\uB0B5\u8EAC\uB0B6\u8EAC\uB0B7\u8EAC\uB0B8" + //  5110 -  5114
-                "\u8EAC\uB0B9\u8EAC\uB0BA\u8EAC\uB0BB\u8EAC\uB0BC\u8EAC\uB0BD" + //  5115 -  5119
-                "\u8EAC\uB0BE\u8EAC\uB0BF\u8EAC\uB0C0\u8EAC\uB0C1\u8EAC\uB0C2" + //  5120 -  5124
-                "\u8EAC\uB0C3\u8EAC\uB0C4\u8EAC\uB0C5\u8EAC\uB0C6\u8EAC\uB0C7" + //  5125 -  5129
-                "\u8EAC\uB0C8\u8EAC\uB0C9\u8EAC\uB0CA\u8EAC\uB0CB\u8EAC\uB0CC" + //  5130 -  5134
-                "\u8EAC\uB0CD\u8EAC\uB0CE\u8EAC\uB0CF\u8EAC\uB0D0\u8EAC\uB0D1" + //  5135 -  5139
-                "\u8EAC\uB0D2\u8EAC\uB0D3\u8EAC\uB0D4\u8EAC\uB0D5\u8EAC\uB0D6" + //  5140 -  5144
-                "\u8EAC\uB0D7\u8EAC\uB0D8\u8EAC\uB0D9\u8EAC\uB0DA\u8EAC\uB0DB" + //  5145 -  5149
-                "\u8EAC\uB0DC\u8EAC\uB0DD\u8EAC\uB0DE\u8EAC\uAFBD\u8EAC\uAFBE" + //  5150 -  5154
-                "\u8EAC\uAFBF\u8EAC\uAFC0\u8EAC\uAFC1\u8EAC\uAFC2\u8EAC\uAFC3" + //  5155 -  5159
-                "\u8EAC\uAFC4\u8EAC\uAFC5\u8EAC\uAFC6\u8EAC\uAFC7\u8EAC\uAFC8" + //  5160 -  5164
-                "\u8EAC\uAFC9\u8EAC\uAFCA\u8EAC\uAFCB\u8EAC\uAFCC\u8EAC\uAFCD" + //  5165 -  5169
-                "\u8EAC\uAFCE\u8EAC\uAFCF\u8EAC\uAFD0\u8EAC\uAFD1\u8EAC\uAFD2" + //  5170 -  5174
-                "\u8EAC\uAFD3\u8EAC\uAFD4\u8EAC\uAFD5\u8EAC\uAFD6\u8EAC\uAFD7" + //  5175 -  5179
-                "\u8EAC\uAFD8\u8EAC\uAFD9\u8EAC\uAFDA\u8EAC\uAFDB\u8EAC\uAFDC" + //  5180 -  5184
-                "\u8EAC\uAFDD\u8EAC\uAFDE\u8EAC\uAFDF\u8EAC\uAFE0\u8EAC\uAFE1" + //  5185 -  5189
-                "\u8EAC\uAFE2\u8EAC\uAFE3\u8EAC\uAFE4\u8EAC\uAFE5\u8EAC\uAFE6" + //  5190 -  5194
-                "\u8EAC\uAFE7\u8EAC\uAFE8\u8EAC\uAFE9\u8EAC\uAFEA\u8EAC\uAFEB" + //  5195 -  5199
-                "\u8EAC\uAFEC\u8EAC\uAFED\u8EAC\uAFEE\u8EAC\uAFEF\u8EAC\uAFF0" + //  5200 -  5204
-                "\u8EAC\uAFF1\u8EAC\uAFF2\u8EAC\uAFF3\u8EAC\uAFF4\u8EAC\uAFF5" + //  5205 -  5209
-                "\u8EAC\uAFF6\u8EAC\uAFF7\u8EAC\uAFF8\u8EAC\uAFF9\u8EAC\uAFFA" + //  5210 -  5214
-                "\u8EAC\uAFFB\u8EAC\uAFFC\u8EAC\uAEDB\u8EAC\uAEDC\u8EAC\uAEDD" + //  5215 -  5219
-                "\u8EAC\uAEDE\u8EAC\uAEDF\u8EAC\uAEE0\u8EAC\uAEE1\u8EAC\uAEE2" + //  5220 -  5224
-                "\u8EAC\uAEE3\u8EAC\uAEE4\u8EAC\uAEE5\u8EAC\uAEE6\u8EAC\uAEE7" + //  5225 -  5229
-                "\u8EAC\uAEE8\u8EAC\uAEE9\u8EAC\uAEEA\u8EAC\uAEEB\u8EAC\uAEEC" + //  5230 -  5234
-                "\u8EAC\uAEED\u8EAC\uAEEE\u8EAC\uAEEF\u8EAC\uAEF0\u8EAC\uAEF1" + //  5235 -  5239
-                "\u8EAC\uAEF2\u8EAC\uAEF3\u8EAC\uAEF4\u8EAC\uAEF5\u8EAC\uAEF6" + //  5240 -  5244
-                "\u8EAC\uAEF7\u8EAC\uAEF8\u8EAC\uAEF9\u8EAC\uAEFA\u8EAC\uAEFB" + //  5245 -  5249
-                "\u8EAC\uAEFC\u8EAC\uAEFD\u8EAC\uAEFE\u8EAC\uAFA1\u8EAC\uAFA2" + //  5250 -  5254
-                "\u8EAC\uAFA3\u8EAC\uAFA4\u8EAC\uAFA5\u8EAC\uAFA6\u8EAC\uAFA7" + //  5255 -  5259
-                "\u8EAC\uAFA8\u8EAC\uAFA9\u8EAC\uAFAA\u8EAC\uAFAB\u8EAC\uAFAC" + //  5260 -  5264
-                "\u8EAC\uAFAD\u8EAC\uAFAE\u8EAC\uAFAF\u8EAC\uAFB0\u8EAC\uAFB1" + //  5265 -  5269
-                "\u8EAC\uAFB2\u8EAC\uAFB3\u8EAC\uAFB4\u8EAC\uAFB5\u8EAC\uAFB6" + //  5270 -  5274
-                "\u8EAC\uAFB7\u8EAC\uAFB8\u8EAC\uAFB9\u8EAC\uAFBA\u8EAC\uAFBB" + //  5275 -  5279
-                "\u8EAC\uAFBC\u8EAC\uADF9\u8EAC\uADFA\u8EAC\uADFB\u8EAC\uADFC" + //  5280 -  5284
-                "\u8EAC\uADFD\u8EAC\uADFE\u8EAC\uAEA1\u8EAC\uAEA2\u8EAC\uAEA3" + //  5285 -  5289
-                "\u8EAC\uAEA4\u8EAC\uAEA5\u8EAC\uAEA6\u8EAC\uAEA7\u8EAC\uAEA8" + //  5290 -  5294
-                "\u8EAC\uAEA9\u8EAC\uAEAA\u8EAC\uAEAB\u8EAC\uAEAC\u8EAC\uAEAD" + //  5295 -  5299
-                "\u8EAC\uAEAE\u8EAC\uAEAF\u8EAC\uAEB0\u8EAC\uAEB1\u8EAC\uAEB2" + //  5300 -  5304
-                "\u8EAC\uAEB3\u8EAC\uAEB4\u8EAC\uAEB5\u8EAC\uAEB6\u8EAC\uAEB7" + //  5305 -  5309
-                "\u8EAC\uAEB8\u8EAC\uAEB9\u8EAC\uAEBA\u8EAC\uAEBB\u8EAC\uAEBC" + //  5310 -  5314
-                "\u8EAC\uAEBD\u8EAC\uAEBE\u8EAC\uAEBF\u8EAC\uAEC0\u8EAC\uAEC1" + //  5315 -  5319
-                "\u8EAC\uAEC2\u8EAC\uAEC3\u8EAC\uAEC4\u8EAC\uAEC5\u8EAC\uAEC6" + //  5320 -  5324
-                "\u8EAC\uAEC7\u8EAC\uAEC8\u8EAC\uAEC9\u8EAC\uAECA\u8EAC\uAECB" + //  5325 -  5329
-                "\u8EAC\uAECC\u8EAC\uAECD\u8EAC\uAECE\u8EAC\uAECF\u8EAC\uAED0" + //  5330 -  5334
-                "\u8EAC\uAED1\u8EAC\uAED2\u8EAC\uAED3\u8EAC\uAED4\u8EAC\uAED5" + //  5335 -  5339
-                "\u8EAC\uAED6\u8EAC\uAED7\u8EAC\uAED8\u8EAC\uAED9\u8EAC\uAEDA" + //  5340 -  5344
-                "\u8EAC\uADB9\u8EAC\uADBA\u8EAC\uADBB\u8EAC\uADBC\u8EAC\uADBD" + //  5345 -  5349
-                "\u8EAC\uADBE\u8EAC\uADBF\u8EAC\uADC0\u8EAC\uADC1\u8EAC\uADC2" + //  5350 -  5354
-                "\u8EAC\uADC3\u8EAC\uADC4\u8EAC\uADC5\u8EAC\uADC6\u8EAC\uADC7" + //  5355 -  5359
-                "\u8EAC\uADC8\u8EAC\uADC9\u8EAC\uADCA\u8EAC\uADCB\u8EAC\uADCC" + //  5360 -  5364
-                "\u8EAC\uADCD\u8EAC\uADCE\u8EAC\uADCF\u8EAC\uADD0\u8EAC\uADD1" + //  5365 -  5369
-                "\u8EAC\uADD2\u8EAC\uADD3\u8EAC\uADD4\u8EAC\uADD5\u8EAC\uADD6" + //  5370 -  5374
-                "\u8EAC\uADD7\u8EAC\uADD8\u8EAC\uADD9\u8EAC\uADDA\u8EAC\uADDB" + //  5375 -  5379
-                "\u8EAC\uADDC\u8EAC\uADDD\u8EAC\uADDE\u8EAC\uADDF\u8EAC\uADE0" + //  5380 -  5384
-                "\u8EAC\uADE1\u8EAC\uADE2\u8EAC\uADE3\u8EAC\uADE4\u8EAC\uADE5" + //  5385 -  5389
-                "\u8EAC\uADE6\u8EAC\uADE7\u8EAC\uADE8\u8EAC\uADE9\u8EAC\uADEA" + //  5390 -  5394
-                "\u8EAC\uADEB\u8EAC\uADEC\u8EAC\uADED\u8EAC\uADEE\u8EAC\uADEF" + //  5395 -  5399
-                "\u8EAC\uADF0\u8EAC\uADF1\u8EAC\uADF2\u8EAC\uADF3\u8EAC\uADF4" + //  5400 -  5404
-                "\u8EAC\uADF5\u8EAC\uADF6\u8EAC\uADF7\u8EAC\uADF8\u8EAC\uACD7" + //  5405 -  5409
-                "\u8EAC\uACD8\u8EAC\uACD9\u8EAC\uACDA\u8EAC\uACDB\u8EAC\uACDC" + //  5410 -  5414
-                "\u8EAC\uACDD\u8EAC\uACDE\u8EAC\uACDF\u8EAC\uACE0\u8EAC\uACE1" + //  5415 -  5419
-                "\u8EAC\uACE2\u8EAC\uACE3\u8EAC\uACE4\u8EAC\uACE5\u8EAC\uACE6" + //  5420 -  5424
-                "\u8EAC\uACE7\u8EAC\uACE8\u8EAC\uACE9\u8EAC\uACEA\u8EAC\uACEB" + //  5425 -  5429
-                "\u8EAC\uACEC\u8EAC\uACED\u8EAC\uACEE\u8EAC\uACEF\u8EAC\uACF0" + //  5430 -  5434
-                "\u8EAC\uACF1\u8EAC\uACF2\u8EAC\uACF3\u8EAC\uACF4\u8EAC\uACF5" + //  5435 -  5439
-                "\u8EAC\uACF6\u8EAC\uACF7\u8EAC\uACF8\u8EAC\uACF9\u8EAC\uACFA" + //  5440 -  5444
-                "\u8EAC\uACFB\u8EAC\uACFC\u8EAC\uACFD\u8EAC\uACFE\u8EAC\uADA1" + //  5445 -  5449
-                "\u8EAC\uADA2\u8EAC\uADA3\u8EAC\uADA4\u8EAC\uADA5\u8EAC\uADA6" + //  5450 -  5454
-                "\u8EAC\uADA7\u8EAC\uADA8\u8EAC\uADA9\u8EAC\uADAA\u8EAC\uADAB" + //  5455 -  5459
-                "\u8EAC\uADAC\u8EAC\uADAD\u8EAC\uADAE\u8EAC\uADAF\u8EAC\uADB0" + //  5460 -  5464
-                "\u8EAC\uADB1\u8EAC\uADB2\u8EAC\uADB3\u8EAC\uADB4\u8EAC\uADB5" + //  5465 -  5469
-                "\u8EAC\uADB6\u8EAC\uADB7\u8EAC\uADB8\u8EAC\uABF5\u8EAC\uABF6" + //  5470 -  5474
-                "\u8EAC\uABF7\u8EAC\uABF8\u8EAC\uABF9\u8EAC\uABFA\u8EAC\uABFB" + //  5475 -  5479
-                "\u8EAC\uABFC\u8EAC\uABFD\u8EAC\uABFE\u8EAC\uACA1\u8EAC\uACA2" + //  5480 -  5484
-                "\u8EAC\uACA3\u8EAC\uACA4\u8EAC\uACA5\u8EAC\uACA6\u8EAC\uACA7" + //  5485 -  5489
-                "\u8EAC\uACA8\u8EAC\uACA9\u8EAC\uACAA\u8EAC\uACAB\u8EAC\uACAC" + //  5490 -  5494
-                "\u8EAC\uACAD\u8EAC\uACAE\u8EAC\uACAF\u8EAC\uACB0\u8EAC\uACB1" + //  5495 -  5499
-                "\u8EAC\uACB2\u8EAC\uACB3\u8EAC\uACB4\u8EAC\uACB5\u8EAC\uACB6" + //  5500 -  5504
-                "\u8EAC\uACB7\u8EAC\uACB8\u8EAC\uACB9\u8EAC\uACBA\u8EAC\uACBB" + //  5505 -  5509
-                "\u8EAC\uACBC\u8EAC\uACBD\u8EAC\uACBE\u8EAC\uACBF\u8EAC\uACC0" + //  5510 -  5514
-                "\u8EAC\uACC1\u8EAC\uACC2\u8EAC\uACC3\u8EAC\uACC4\u8EAC\uACC5" + //  5515 -  5519
-                "\u8EAC\uACC6\u8EAC\uACC7\u8EAC\uACC8\u8EAC\uACC9\u8EAC\uACCA" + //  5520 -  5524
-                "\u8EAC\uACCB\u8EAC\uACCC\u8EAC\uACCD\u8EAC\uACCE\u8EAC\uACCF" + //  5525 -  5529
-                "\u8EAC\uACD0\u8EAC\uACD1\u8EAC\uACD2\u8EAC\uACD3\u8EAC\uACD4" + //  5530 -  5534
-                "\u8EAC\uACD5\u8EAC\uACD6\u8EAC\uABB5\u8EAC\uABB6\u8EAC\uABB7" + //  5535 -  5539
-                "\u8EAC\uABB8\u8EAC\uABB9\u8EAC\uABBA\u8EAC\uABBB\u8EAC\uABBC" + //  5540 -  5544
-                "\u8EAC\uABBD\u8EAC\uABBE\u8EAC\uABBF\u8EAC\uABC0\u8EAC\uABC1" + //  5545 -  5549
-                "\u8EAC\uABC2\u8EAC\uABC3\u8EAC\uABC4\u8EAC\uABC5\u8EAC\uABC6" + //  5550 -  5554
-                "\u8EAC\uABC7\u8EAC\uABC8\u8EAC\uABC9\u8EAC\uABCA\u8EAC\uABCB" + //  5555 -  5559
-                "\u8EAC\uABCC\u8EAC\uABCD\u8EAC\uABCE\u8EAC\uABCF\u8EAC\uABD0" + //  5560 -  5564
-                "\u8EAC\uABD1\u8EAC\uABD2\u8EAC\uABD3\u8EAC\uABD4\u8EAC\uABD5" + //  5565 -  5569
-                "\u8EAC\uABD6\u8EAC\uABD7\u8EAC\uABD8\u8EAC\uABD9\u8EAC\uABDA" + //  5570 -  5574
-                "\u8EAC\uABDB\u8EAC\uABDC\u8EAC\uABDD\u8EAC\uABDE\u8EAC\uABDF" + //  5575 -  5579
-                "\u8EAC\uABE0\u8EAC\uABE1\u8EAC\uABE2\u8EAC\uABE3\u8EAC\uABE4" + //  5580 -  5584
-                "\u8EAC\uABE5\u8EAC\uABE6\u8EAC\uABE7\u8EAC\uABE8\u8EAC\uABE9" + //  5585 -  5589
-                "\u8EAC\uABEA\u8EAC\uABEB\u8EAC\uABEC\u8EAC\uABED\u8EAC\uABEE" + //  5590 -  5594
-                "\u8EAC\uABEF\u8EAC\uABF0\u8EAC\uABF1\u8EAC\uABF2\u8EAC\uABF3" + //  5595 -  5599
-                "\u8EAC\uABF4\u8EAC\uAAD3\u8EAC\uAAD4\u8EAC\uAAD5\u8EAC\uAAD6" + //  5600 -  5604
-                "\u8EAC\uAAD7\u8EAC\uAAD8\u8EAC\uAAD9\u8EAC\uAADA\u8EAC\uAADB" + //  5605 -  5609
-                "\u8EAC\uAADC\u8EAC\uAADD\u8EAC\uAADE\u8EAC\uAADF\u8EAC\uAAE0" + //  5610 -  5614
-                "\u8EAC\uAAE1\u8EAC\uAAE2\u8EAC\uAAE3\u8EAC\uAAE4\u8EAC\uAAE5" + //  5615 -  5619
-                "\u8EAC\uAAE6\u8EAC\uAAE7\u8EAC\uAAE8\u8EAC\uAAE9\u8EAC\uAAEA" + //  5620 -  5624
-                "\u8EAC\uAAEB\u8EAC\uAAEC\u8EAC\uAAED\u8EAC\uAAEE\u8EAC\uAAEF" + //  5625 -  5629
-                "\u8EAC\uAAF0\u8EAC\uAAF1\u8EAC\uAAF2\u8EAC\uAAF3\u8EAC\uAAF4" + //  5630 -  5634
-                "\u8EAC\uAAF5\u8EAC\uAAF6\u8EAC\uAAF7\u8EAC\uAAF8\u8EAC\uAAF9" + //  5635 -  5639
-                "\u8EAC\uAAFA\u8EAC\uAAFB\u8EAC\uAAFC\u8EAC\uAAFD\u8EAC\uAAFE" + //  5640 -  5644
-                "\u8EAC\uABA1\u8EAC\uABA2\u8EAC\uABA3\u8EAC\uABA4\u8EAC\uABA5" + //  5645 -  5649
-                "\u8EAC\uABA6\u8EAC\uABA7\u8EAC\uABA8\u8EAC\uABA9\u8EAC\uABAA" + //  5650 -  5654
-                "\u8EAC\uABAB\u8EAC\uABAC\u8EAC\uABAD\u8EAC\uABAE\u8EAC\uABAF" + //  5655 -  5659
-                "\u8EAC\uABB0\u8EAC\uABB1\u8EAC\uABB2\u8EAC\uABB3\u8EAC\uABB4" + //  5660 -  5664
-                "\u8EAC\uA9F1\u8EAC\uA9F2\u8EAC\uA9F3\u8EAC\uA9F4\u8EAC\uA9F5" + //  5665 -  5669
-                "\u8EAC\uA9F6\u8EAC\uA9F7\u8EAC\uA9F8\u8EAC\uA9F9\u8EAC\uA9FA" + //  5670 -  5674
-                "\u8EAC\uA9FB\u8EAC\uA9FC\u8EAC\uA9FD\u8EAC\uA9FE\u8EAC\uAAA1" + //  5675 -  5679
-                "\u8EAC\uAAA2\u8EAC\uAAA3\u8EAC\uAAA4\u8EAC\uAAA5\u8EAC\uAAA6" + //  5680 -  5684
-                "\u8EAC\uAAA7\u8EAC\uAAA8\u8EAC\uAAA9\u8EAC\uAAAA\u8EAC\uAAAB" + //  5685 -  5689
-                "\u8EAC\uAAAC\u8EAC\uAAAD\u8EAC\uAAAE\u8EAC\uAAAF\u8EAC\uAAB0" + //  5690 -  5694
-                "\u8EAC\uAAB1\u8EAC\uAAB2\u8EAC\uAAB3\u8EAC\uAAB4\u8EAC\uAAB5" + //  5695 -  5699
-                "\u8EAC\uAAB6\u8EAC\uAAB7\u8EAC\uAAB8\u8EAC\uAAB9\u8EAC\uAABA" + //  5700 -  5704
-                "\u8EAC\uAABB\u8EAC\uAABC\u8EAC\uAABD\u8EAC\uAABE\u8EAC\uAABF" + //  5705 -  5709
-                "\u8EAC\uAAC0\u8EAC\uAAC1\u8EAC\uAAC2\u8EAC\uAAC3\u8EAC\uAAC4" + //  5710 -  5714
-                "\u8EAC\uAAC5\u8EAC\uAAC6\u8EAC\uAAC7\u8EAC\uAAC8\u8EAC\uAAC9" + //  5715 -  5719
-                "\u8EAC\uAACA\u8EAC\uAACB\u8EAC\uAACC\u8EAC\uAACD\u8EAC\uAACE" + //  5720 -  5724
-                "\u8EAC\uAACF\u8EAC\uAAD0\u8EAC\uAAD1\u8EAC\uAAD2\u8EAC\uA9B1" + //  5725 -  5729
-                "\u8EAC\uA9B2\u8EAC\uA9B3\u8EAC\uA9B4\u8EAC\uA9B5\u8EAC\uA9B6" + //  5730 -  5734
-                "\u8EAC\uA9B7\u8EAC\uA9B8\u8EAC\uA9B9\u8EAC\uA9BA\u8EAC\uA9BB" + //  5735 -  5739
-                "\u8EAC\uA9BC\u8EAC\uA9BD\u8EAC\uA9BE\u8EAC\uA9BF\u8EAC\uA9C0" + //  5740 -  5744
-                "\u8EAC\uA9C1\u8EAC\uA9C2\u8EAC\uA9C3\u8EAC\uA9C4\u8EAC\uA9C5" + //  5745 -  5749
-                "\u8EAC\uA9C6\u8EAC\uA9C7\u8EAC\uA9C8\u8EAC\uA9C9\u8EAC\uA9CA" + //  5750 -  5754
-                "\u8EAC\uA9CB\u8EAC\uA9CC\u8EAC\uA9CD\u8EAC\uA9CE\u8EAC\uA9CF" + //  5755 -  5759
-                "\u8EAC\uA9D0\u8EAC\uA9D1\u8EAC\uA9D2\u8EAC\uA9D3\u8EAC\uA9D4" + //  5760 -  5764
-                "\u8EAC\uA9D5\u8EAC\uA9D6\u8EAC\uA9D7\u8EAC\uA9D8\u8EAC\uA9D9" + //  5765 -  5769
-                "\u8EAC\uA9DA\u8EAC\uA9DB\u8EAC\uA9DC\u8EAC\uA9DD\u8EAC\uA9DE" + //  5770 -  5774
-                "\u8EAC\uA9DF\u8EAC\uA9E0\u8EAC\uA9E1\u8EAC\uA9E2\u8EAC\uA9E3" + //  5775 -  5779
-                "\u8EAC\uA9E4\u8EAC\uA9E5\u8EAC\uA9E6\u8EAC\uA9E7\u8EAC\uA9E8" + //  5780 -  5784
-                "\u8EAC\uA9E9\u8EAC\uA9EA\u8EAC\uA9EB\u8EAC\uA9EC\u8EAC\uA9ED" + //  5785 -  5789
-                "\u8EAC\uA9EE\u8EAC\uA9EF\u8EAC\uA9F0\u8EAC\uA8CF\u8EAC\uA8D0" + //  5790 -  5794
-                "\u8EAC\uA8D1\u8EAC\uA8D2\u8EAC\uA8D3\u8EAC\uA8D4\u8EAC\uA8D5" + //  5795 -  5799
-                "\u8EAC\uA8D6\u8EAC\uA8D7\u8EAC\uA8D8\u8EAC\uA8D9\u8EAC\uA8DA" + //  5800 -  5804
-                "\u8EAC\uA8DB\u8EAC\uA8DC\u8EAC\uA8DD\u8EAC\uA8DE\u8EAC\uA8DF" + //  5805 -  5809
-                "\u8EAC\uA8E0\u8EAC\uA8E1\u8EAC\uA8E2\u8EAC\uA8E3\u8EAC\uA8E4" + //  5810 -  5814
-                "\u8EAC\uA8E5\u8EAC\uA8E6\u8EAC\uA8E7\u8EAC\uA8E8\u8EAC\uA8E9" + //  5815 -  5819
-                "\u8EAC\uA8EA\u8EAC\uA8EB\u8EAC\uA8EC\u8EAC\uA8ED\u8EAC\uA8EE" + //  5820 -  5824
-                "\u8EAC\uA8EF\u8EAC\uA8F0\u8EAC\uA8F1\u8EAC\uA8F2\u8EAC\uA8F3" + //  5825 -  5829
-                "\u8EAC\uA8F4\u8EAC\uA8F5\u8EAC\uA8F6\u8EAC\uA8F7\u8EAC\uA8F8" + //  5830 -  5834
-                "\u8EAC\uA8F9\u8EAC\uA8FA\u8EAC\uA8FB\u8EAC\uA8FC\u8EAC\uA8FD" + //  5835 -  5839
-                "\u8EAC\uA8FE\u8EAC\uA9A1\u8EAC\uA9A2\u8EAC\uA9A3\u8EAC\uA9A4" + //  5840 -  5844
-                "\u8EAC\uA9A5\u8EAC\uA9A6\u8EAC\uA9A7\u8EAC\uA9A8\u8EAC\uA9A9" + //  5845 -  5849
-                "\u8EAC\uA9AA\u8EAC\uA9AB\u8EAC\uA9AC\u8EAC\uA9AD\u8EAC\uA9AE" + //  5850 -  5854
-                "\u8EAC\uA9AF\u8EAC\uA9B0\u8EAC\uA7ED\u8EAC\uA7EE\u8EAC\uA7EF" + //  5855 -  5859
-                "\u8EAC\uA7F0\u8EAC\uA7F1\u8EAC\uA7F2\u8EAC\uA7F3\u8EAC\uA7F4" + //  5860 -  5864
-                "\u8EAC\uA7F5\u8EAC\uA7F6\u8EAC\uA7F7\u8EAC\uA7F8\u8EAC\uA7F9" + //  5865 -  5869
-                "\u8EAC\uA7FA\u8EAC\uA7FB\u8EAC\uA7FC\u8EAC\uA7FD\u8EAC\uA7FE" + //  5870 -  5874
-                "\u8EAC\uA8A1\u8EAC\uA8A2\u8EAC\uA8A3\u8EAC\uA8A4\u8EAC\uA8A5" + //  5875 -  5879
-                "\u8EAC\uA8A6\u8EAC\uA8A7\u8EAC\uA8A8\u8EAC\uA8A9\u8EAC\uA8AA" + //  5880 -  5884
-                "\u8EAC\uA8AB\u8EAC\uA8AC\u8EAC\uA8AD\u8EAC\uA8AE\u8EAC\uA8AF" + //  5885 -  5889
-                "\u8EAC\uA8B0\u8EAC\uA8B1\u8EAC\uA8B2\u8EAC\uA8B3\u8EAC\uA8B4" + //  5890 -  5894
-                "\u8EAC\uA8B5\u8EAC\uA8B6\u8EAC\uA8B7\u8EAC\uA8B8\u8EAC\uA8B9" + //  5895 -  5899
-                "\u8EAC\uA8BA\u8EAC\uA8BB\u8EAC\uA8BC\u8EAC\uA8BD\u8EAC\uA8BE" + //  5900 -  5904
-                "\u8EAC\uA8BF\u8EAC\uA8C0\u8EAC\uA8C1\u8EAC\uA8C2\u8EAC\uA8C3" + //  5905 -  5909
-                "\u8EAC\uA8C4\u8EAC\uA8C5\u8EAC\uA8C6\u8EAC\uA8C7\u8EAC\uA8C8" + //  5910 -  5914
-                "\u8EAC\uA8C9\u8EAC\uA8CA\u8EAC\uA8CB\u8EAC\uA8CC\u8EAC\uA8CD" + //  5915 -  5919
-                "\u8EAC\uA8CE\u8EAC\uA7AD\u8EAC\uA7AE\u8EAC\uA7AF\u8EAC\uA7B0" + //  5920 -  5924
-                "\u8EAC\uA7B1\u8EAC\uA7B2\u8EAC\uA7B3\u8EAC\uA7B4\u8EAC\uA7B5" + //  5925 -  5929
-                "\u8EAC\uA7B6\u8EAC\uA7B7\u8EAC\uA7B8\u8EAC\uA7B9\u8EAC\uA7BA" + //  5930 -  5934
-                "\u8EAC\uA7BB\u8EAC\uA7BC\u8EAC\uA7BD\u8EAC\uA7BE\u8EAC\uA7BF" + //  5935 -  5939
-                "\u8EAC\uA7C0\u8EAC\uA7C1\u8EAC\uA7C2\u8EAC\uA7C3\u8EAC\uA7C4" + //  5940 -  5944
-                "\u8EAC\uA7C5\u8EAC\uA7C6\u8EAC\uA7C7\u8EAC\uA7C8\u8EAC\uA7C9" + //  5945 -  5949
-                "\u8EAC\uA7CA\u8EAC\uA7CB\u8EAC\uA7CC\u8EAC\uA7CD\u8EAC\uA7CE" + //  5950 -  5954
-                "\u8EAC\uA7CF\u8EAC\uA7D0\u8EAC\uA7D1\u8EAC\uA7D2\u8EAC\uA7D3" + //  5955 -  5959
-                "\u8EAC\uA7D4\u8EAC\uA7D5\u8EAC\uA7D6\u8EAC\uA7D7\u8EAC\uA7D8" + //  5960 -  5964
-                "\u8EAC\uA7D9\u8EAC\uA7DA\u8EAC\uA7DB\u8EAC\uA7DC\u8EAC\uA7DD" + //  5965 -  5969
-                "\u8EAC\uA7DE\u8EAC\uA7DF\u8EAC\uA7E0\u8EAC\uA7E1\u8EAC\uA7E2" + //  5970 -  5974
-                "\u8EAC\uA7E3\u8EAC\uA7E4\u8EAC\uA7E5\u8EAC\uA7E6\u8EAC\uA7E7" + //  5975 -  5979
-                "\u8EAC\uA7E8\u8EAC\uA7E9\u8EAC\uA7EA\u8EAC\uA7EB\u8EAC\uA7EC" + //  5980 -  5984
-                "\u8EAC\uA6CB\u8EAC\uA6CC\u8EAC\uA6CD\u8EAC\uA6CE\u8EAC\uA6CF" + //  5985 -  5989
-                "\u8EAC\uA6D0\u8EAC\uA6D1\u8EAC\uA6D2\u8EAC\uA6D3\u8EAC\uA6D4" + //  5990 -  5994
-                "\u8EAC\uA6D5\u8EAC\uA6D6\u8EAC\uA6D7\u8EAC\uA6D8\u8EAC\uA6D9" + //  5995 -  5999
-                "\u8EAC\uA6DA\u8EAC\uA6DB\u8EAC\uA6DC\u8EAC\uA6DD\u8EAC\uA6DE" + //  6000 -  6004
-                "\u8EAC\uA6DF\u8EAC\uA6E0\u8EAC\uA6E1\u8EAC\uA6E2\u8EAC\uA6E3" + //  6005 -  6009
-                "\u8EAC\uA6E4\u8EAC\uA6E5\u8EAC\uA6E6\u8EAC\uA6E7\u8EAC\uA6E8" + //  6010 -  6014
-                "\u8EAC\uA6E9\u8EAC\uA6EA\u8EAC\uA6EB\u8EAC\uA6EC\u8EAC\uA6ED" + //  6015 -  6019
-                "\u8EAC\uA6EE\u8EAC\uA6EF\u8EAC\uA6F0\u8EAC\uA6F1\u8EAC\uA6F2" + //  6020 -  6024
-                "\u8EAC\uA6F3\u8EAC\uA6F4\u8EAC\uA6F5\u8EAC\uA6F6\u8EAC\uA6F7" + //  6025 -  6029
-                "\u8EAC\uA6F8\u8EAC\uA6F9\u8EAC\uA6FA\u8EAC\uA6FB\u8EAC\uA6FC" + //  6030 -  6034
-                "\u8EAC\uA6FD\u8EAC\uA6FE\u8EAC\uA7A1\u8EAC\uA7A2\u8EAC\uA7A3" + //  6035 -  6039
-                "\u8EAC\uA7A4\u8EAC\uA7A5\u8EAC\uA7A6\u8EAC\uA7A7\u8EAC\uA7A8" + //  6040 -  6044
-                "\u8EAC\uA7A9\u8EAC\uA7AA\u8EAC\uA7AB\u8EAC\uA7AC\u8EAC\uA5E9" + //  6045 -  6049
-                "\u8EAC\uA5EA\u8EAC\uA5EB\u8EAC\uA5EC\u8EAC\uA5ED\u8EAC\uA5EE" + //  6050 -  6054
-                "\u8EAC\uA5EF\u8EAC\uA5F0\u8EAC\uA5F1\u8EAC\uA5F2\u8EAC\uA5F3" + //  6055 -  6059
-                "\u8EAC\uA5F4\u8EAC\uA5F5\u8EAC\uA5F6\u8EAC\uA5F7\u8EAC\uA5F8" + //  6060 -  6064
-                "\u8EAC\uA5F9\u8EAC\uA5FA\u8EAC\uA5FB\u8EAC\uA5FC\u8EAC\uA5FD" + //  6065 -  6069
-                "\u8EAC\uA5FE\u8EAC\uA6A1\u8EAC\uA6A2\u8EAC\uA6A3\u8EAC\uA6A4" + //  6070 -  6074
-                "\u8EAC\uA6A5\u8EAC\uA6A6\u8EAC\uA6A7\u8EAC\uA6A8\u8EAC\uA6A9" + //  6075 -  6079
-                "\u8EAC\uA6AA\u8EAC\uA6AB\u8EAC\uA6AC\u8EAC\uA6AD\u8EAC\uA6AE" + //  6080 -  6084
-                "\u8EAC\uA6AF\u8EAC\uA6B0\u8EAC\uA6B1\u8EAC\uA6B2\u8EAC\uA6B3" + //  6085 -  6089
-                "\u8EAC\uA6B4\u8EAC\uA6B5\u8EAC\uA6B6\u8EAC\uA6B7\u8EAC\uA6B8" + //  6090 -  6094
-                "\u8EAC\uA6B9\u8EAC\uA6BA\u8EAC\uA6BB\u8EAC\uA6BC\u8EAC\uA6BD" + //  6095 -  6099
-                "\u8EAC\uA6BE\u8EAC\uA6BF\u8EAC\uA6C0\u8EAC\uA6C1\u8EAC\uA6C2" + //  6100 -  6104
-                "\u8EAC\uA6C3\u8EAC\uA6C4\u8EAC\uA6C5\u8EAC\uA6C6\u8EAC\uA6C7" + //  6105 -  6109
-                "\u8EAC\uA6C8\u8EAC\uA6C9\u8EAC\uA6CA\u8EAC\uA5A9\u8EAC\uA5AA" + //  6110 -  6114
-                "\u8EAC\uA5AB\u8EAC\uA5AC\u8EAC\uA5AD\u8EAC\uA5AE\u8EAC\uA5AF" + //  6115 -  6119
-                "\u8EAC\uA5B0\u8EAC\uA5B1\u8EAC\uA5B2\u8EAC\uA5B3\u8EAC\uA5B4" + //  6120 -  6124
-                "\u8EAC\uA5B5\u8EAC\uA5B6\u8EAC\uA5B7\u8EAC\uA5B8\u8EAC\uA5B9" + //  6125 -  6129
-                "\u8EAC\uA5BA\u8EAC\uA5BB\u8EAC\uA5BC\u8EAC\uA5BD\u8EAC\uA5BE" + //  6130 -  6134
-                "\u8EAC\uA5BF\u8EAC\uA5C0\u8EAC\uA5C1\u8EAC\uA5C2\u8EAC\uA5C3" + //  6135 -  6139
-                "\u8EAC\uA5C4\u8EAC\uA5C5\u8EAC\uA5C6\u8EAC\uA5C7\u8EAC\uA5C8" + //  6140 -  6144
-                "\u8EAC\uA5C9\u8EAC\uA5CA\u8EAC\uA5CB\u8EAC\uA5CC\u8EAC\uA5CD" + //  6145 -  6149
-                "\u8EAC\uA5CE\u8EAC\uA5CF\u8EAC\uA5D0\u8EAC\uA5D1\u8EAC\uA5D2" + //  6150 -  6154
-                "\u8EAC\uA5D3\u8EAC\uA5D4\u8EAC\uA5D5\u8EAC\uA5D6\u8EAC\uA5D7" + //  6155 -  6159
-                "\u8EAC\uA5D8\u8EAC\uA5D9\u8EAC\uA5DA\u8EAC\uA5DB\u8EAC\uA5DC" + //  6160 -  6164
-                "\u8EAC\uA5DD\u8EAC\uA5DE\u8EAC\uA5DF\u8EAC\uA5E0\u8EAC\uA5E1" + //  6165 -  6169
-                "\u8EAC\uA5E2\u8EAC\uA5E3\u8EAC\uA5E4\u8EAC\uA5E5\u8EAC\uA5E6" + //  6170 -  6174
-                "\u8EAC\uA5E7\u8EAC\uA5E8\u8EAC\uA4C7\u8EAC\uA4C8\u8EAC\uA4C9" + //  6175 -  6179
-                "\u8EAC\uA4CA\u8EAC\uA4CB\u8EAC\uA4CC\u8EAC\uA4CD\u8EAC\uA4CE" + //  6180 -  6184
-                "\u8EAC\uA4CF\u8EAC\uA4D0\u8EAC\uA4D1\u8EAC\uA4D2\u8EAC\uA4D3" + //  6185 -  6189
-                "\u8EAC\uA4D4\u8EAC\uA4D5\u8EAC\uA4D6\u8EAC\uA4D7\u8EAC\uA4D8" + //  6190 -  6194
-                "\u8EAC\uA4D9\u8EAC\uA4DA\u8EAC\uA4DB\u8EAC\uA4DC\u8EAC\uA4DD" + //  6195 -  6199
-                "\u8EAC\uA4DE\u8EAC\uA4DF\u8EAC\uA4E0\u8EAC\uA4E1\u8EAC\uA4E2" + //  6200 -  6204
-                "\u8EAC\uA4E3\u8EAC\uA4E4\u8EAC\uA4E5\u8EAC\uA4E6\u8EAC\uA4E7" + //  6205 -  6209
-                "\u8EAC\uA4E8\u8EAC\uA4E9\u8EAC\uA4EA\u8EAC\uA4EB\u8EAC\uA4EC" + //  6210 -  6214
-                "\u8EAC\uA4ED\u8EAC\uA4EE\u8EAC\uA4EF\u8EAC\uA4F0\u8EAC\uA4F1" + //  6215 -  6219
-                "\u8EAC\uA4F2\u8EAC\uA4F3\u8EAC\uA4F4\u8EAC\uA4F5\u8EAC\uA4F6" + //  6220 -  6224
-                "\u8EAC\uA4F7\u8EAC\uA4F8\u8EAC\uA4F9\u8EAC\uA4FA\u8EAC\uA4FB" + //  6225 -  6229
-                "\u8EAC\uA4FC\u8EAC\uA4FD\u8EAC\uA4FE\u8EAC\uA5A1\u8EAC\uA5A2" + //  6230 -  6234
-                "\u8EAC\uA5A3\u8EAC\uA5A4\u8EAC\uA5A5\u8EAC\uA5A6\u8EAC\uA5A7" + //  6235 -  6239
-                "\u8EAC\uA5A8\u8EAC\uA3E5\u8EAC\uA3E6\u8EAC\uA3E7\u8EAC\uA3E8" + //  6240 -  6244
-                "\u8EAC\uA3E9\u8EAC\uA3EA\u8EAC\uA3EB\u8EAC\uA3EC\u8EAC\uA3ED" + //  6245 -  6249
-                "\u8EAC\uA3EE\u8EAC\uA3EF\u8EAC\uA3F0\u8EAC\uA3F1\u8EAC\uA3F2" + //  6250 -  6254
-                "\u8EAC\uA3F3\u8EAC\uA3F4\u8EAC\uA3F5\u8EAC\uA3F6\u8EAC\uA3F7" + //  6255 -  6259
-                "\u8EAC\uA3F8\u8EAC\uA3F9\u8EAC\uA3FA\u8EAC\uA3FB\u8EAC\uA3FC" + //  6260 -  6264
-                "\u8EAC\uA3FD\u8EAC\uA3FE\u8EAC\uA4A1\u8EAC\uA4A2\u8EAC\uA4A3" + //  6265 -  6269
-                "\u8EAC\uA4A4\u8EAC\uA4A5\u8EAC\uA4A6\u8EAC\uA4A7\u8EAC\uA4A8" + //  6270 -  6274
-                "\u8EAC\uA4A9\u8EAC\uA4AA\u8EAC\uA4AB\u8EAC\uA4AC\u8EAC\uA4AD" + //  6275 -  6279
-                "\u8EAC\uA4AE\u8EAC\uA4AF\u8EAC\uA4B0\u8EAC\uA4B1\u8EAC\uA4B2" + //  6280 -  6284
-                "\u8EAC\uA4B3\u8EAC\uA4B4\u8EAC\uA4B5\u8EAC\uA4B6\u8EAC\uA4B7" + //  6285 -  6289
-                "\u8EAC\uA4B8\u8EAC\uA4B9\u8EAC\uA4BA\u8EAC\uA4BB\u8EAC\uA4BC" + //  6290 -  6294
-                "\u8EAC\uA4BD\u8EAC\uA4BE\u8EAC\uA4BF\u8EAC\uA4C0\u8EAC\uA4C1" + //  6295 -  6299
-                "\u8EAC\uA4C2\u8EAC\uA4C3\u8EAC\uA4C4\u8EAC\uA4C5\u8EAC\uA4C6" + //  6300 -  6304
-                "\u8EAC\uA3A5\u8EAC\uA3A6\u8EAC\uA3A7\u8EAC\uA3A8\u8EAC\uA3A9" + //  6305 -  6309
-                "\u8EAC\uA3AA\u8EAC\uA3AB\u8EAC\uA3AC\u8EAC\uA3AD\u8EAC\uA3AE" + //  6310 -  6314
-                "\u8EAC\uA3AF\u8EAC\uA3B0\u8EAC\uA3B1\u8EAC\uA3B2\u8EAC\uA3B3" + //  6315 -  6319
-                "\u8EAC\uA3B4\u8EAC\uA3B5\u8EAC\uA3B6\u8EAC\uA3B7\u8EAC\uA3B8" + //  6320 -  6324
-                "\u8EAC\uA3B9\u8EAC\uA3BA\u8EAC\uA3BB\u8EAC\uA3BC\u8EAC\uA3BD" + //  6325 -  6329
-                "\u8EAC\uA3BE\u8EAC\uA3BF\u8EAC\uA3C0\u8EAC\uA3C1\u8EAC\uA3C2" + //  6330 -  6334
-                "\u8EAC\uA3C3\u8EAC\uA3C4\u8EAC\uA3C5\u8EAC\uA3C6\u8EAC\uA3C7" + //  6335 -  6339
-                "\u8EAC\uA3C8\u8EAC\uA3C9\u8EAC\uA3CA\u8EAC\uA3CB\u8EAC\uA3CC" + //  6340 -  6344
-                "\u8EAC\uA3CD\u8EAC\uA3CE\u8EAC\uA3CF\u8EAC\uA3D0\u8EAC\uA3D1" + //  6345 -  6349
-                "\u8EAC\uA3D2\u8EAC\uA3D3\u8EAC\uA3D4\u8EAC\uA3D5\u8EAC\uA3D6" + //  6350 -  6354
-                "\u8EAC\uA3D7\u8EAC\uA3D8\u8EAC\uA3D9\u8EAC\uA3DA\u8EAC\uA3DB" + //  6355 -  6359
-                "\u8EAC\uA3DC\u8EAC\uA3DD\u8EAC\uA3DE\u8EAC\uA3DF\u8EAC\uA3E0" + //  6360 -  6364
-                "\u8EAC\uA3E1\u8EAC\uA3E2\u8EAC\uA3E3\u8EAC\uA3E4\u8EAC\uA2C3" + //  6365 -  6369
-                "\u8EAC\uA2C4\u8EAC\uA2C5\u8EAC\uA2C6\u8EAC\uA2C7\u8EAC\uA2C8" + //  6370 -  6374
-                "\u8EAC\uA2C9\u8EAC\uA2CA\u8EAC\uA2CB\u8EAC\uA2CC\u8EAC\uA2CD" + //  6375 -  6379
-                "\u8EAC\uA2CE\u8EAC\uA2CF\u8EAC\uA2D0\u8EAC\uA2D1\u8EAC\uA2D2" + //  6380 -  6384
-                "\u8EAC\uA2D3\u8EAC\uA2D4\u8EAC\uA2D5\u8EAC\uA2D6\u8EAC\uA2D7" + //  6385 -  6389
-                "\u8EAC\uA2D8\u8EAC\uA2D9\u8EAC\uA2DA\u8EAC\uA2DB\u8EAC\uA2DC" + //  6390 -  6394
-                "\u8EAC\uA2DD\u8EAC\uA2DE\u8EAC\uA2DF\u8EAC\uA2E0\u8EAC\uA2E1" + //  6395 -  6399
-                "\u8EAC\uA2E2\u8EAC\uA2E3\u8EAC\uA2E4\u8EAC\uA2E5\u8EAC\uA2E6" + //  6400 -  6404
-                "\u8EAC\uA2E7\u8EAC\uA2E8\u8EAC\uA2E9\u8EAC\uA2EA\u8EAC\uA2EB" + //  6405 -  6409
-                "\u8EAC\uA2EC\u8EAC\uA2ED\u8EAC\uA2EE\u8EAC\uA2EF\u8EAC\uA2F0" + //  6410 -  6414
-                "\u8EAC\uA2F1\u8EAC\uA2F2\u8EAC\uA2F3\u8EAC\uA2F4\u8EAC\uA2F5" + //  6415 -  6419
-                "\u8EAC\uA2F6\u8EAC\uA2F7\u8EAC\uA2F8\u8EAC\uA2F9\u8EAC\uA2FA" + //  6420 -  6424
-                "\u8EAC\uA2FB\u8EAC\uA2FC\u8EAC\uA2FD\u8EAC\uA2FE\u8EAC\uA3A1" + //  6425 -  6429
-                "\u8EAC\uA3A2\u8EAC\uA3A3\u8EAC\uA3A4\u8EAC\uA1E1\u8EAC\uA1E2" + //  6430 -  6434
-                "\u8EAC\uA1E3\u8EAC\uA1E4\u8EAC\uA1E5\u8EAC\uA1E6\u8EAC\uA1E7" + //  6435 -  6439
-                "\u8EAC\uA1E8\u8EAC\uA1E9\u8EAC\uA1EA\u8EAC\uA1EB\u8EAC\uA1EC" + //  6440 -  6444
-                "\u8EAC\uA1ED\u8EAC\uA1EE\u8EAC\uA1EF\u8EAC\uA1F0\u8EAC\uA1F1" + //  6445 -  6449
-                "\u8EAC\uA1F2\u8EAC\uA1F3\u8EAC\uA1F4\u8EAC\uA1F5\u8EAC\uA1F6" + //  6450 -  6454
-                "\u8EAC\uA1F7\u8EAC\uA1F8\u8EAC\uA1F9\u8EAC\uA1FA\u8EAC\uA1FB" + //  6455 -  6459
-                "\u8EAC\uA1FC\u8EAC\uA1FD\u8EAC\uA1FE\u8EAC\uA2A1\u8EAC\uA2A2" + //  6460 -  6464
-                "\u8EAC\uA2A3\u8EAC\uA2A4\u8EAC\uA2A5\u8EAC\uA2A6\u8EAC\uA2A7" + //  6465 -  6469
-                "\u8EAC\uA2A8\u8EAC\uA2A9\u8EAC\uA2AA\u8EAC\uA2AB\u8EAC\uA2AC" + //  6470 -  6474
-                "\u8EAC\uA2AD\u8EAC\uA2AE\u8EAC\uA2AF\u8EAC\uA2B0\u8EAC\uA2B1" + //  6475 -  6479
-                "\u8EAC\uA2B2\u8EAC\uA2B3\u8EAC\uA2B4\u8EAC\uA2B5\u8EAC\uA2B6" + //  6480 -  6484
-                "\u8EAC\uA2B7\u8EAC\uA2B8\u8EAC\uA2B9\u8EAC\uA2BA\u8EAC\uA2BB" + //  6485 -  6489
-                "\u8EAC\uA2BC\u8EAC\uA2BD\u8EAC\uA2BE\u8EAC\uA2BF\u8EAC\uA2C0" + //  6490 -  6494
-                "\u8EAC\uA2C1\u8EAC\uA2C2\u8EAC\uA1A1\u8EAC\uA1A2\u8EAC\uA1A3" + //  6495 -  6499
-                "\u8EAC\uA1A4\u8EAC\uA1A5\u8EAC\uA1A6\u8EAC\uA1A7\u8EAC\uA1A8" + //  6500 -  6504
-                "\u8EAC\uA1A9\u8EAC\uA1AA\u8EAC\uA1AB\u8EAC\uA1AC\u8EAC\uA1AD" + //  6505 -  6509
-                "\u8EAC\uA1AE\u8EAC\uA1AF\u8EAC\uA1B0\u8EAC\uA1B1\u8EAC\uA1B2" + //  6510 -  6514
-                "\u8EAC\uA1B3\u8EAC\uA1B4\u8EAC\uA1B5\u8EAC\uA1B6\u8EAC\uA1B7" + //  6515 -  6519
-                "\u8EAC\uA1B8\u8EAC\uA1B9\u8EAC\uA1BA\u8EAC\uA1BB\u8EAC\uA1BC" + //  6520 -  6524
-                "\u8EAC\uA1BD\u8EAC\uA1BE\u8EAC\uA1BF\u8EAC\uA1C0\u8EAC\uA1C1" + //  6525 -  6529
-                "\u8EAC\uA1C2\u8EAC\uA1C3\u8EAC\uA1C4\u8EAC\uA1C5\u8EAC\uA1C6" + //  6530 -  6534
-                "\u8EAC\uA1C7\u8EAC\uA1C8\u8EAC\uA1C9\u8EAC\uA1CA\u8EAC\uA1CB" + //  6535 -  6539
-                "\u8EAC\uA1CC\u8EAC\uA1CD\u8EAC\uA1CE\u8EAC\uA1CF\u8EAC\uA1D0" + //  6540 -  6544
-                "\u8EAC\uA1D1\u8EAC\uA1D2\u8EAC\uA1D3\u8EAC\uA1D4\u8EAC\uA1D5" + //  6545 -  6549
-                "\u8EAC\uA1D6\u8EAC\uA1D7\u8EAC\uA1D8\u8EAC\uA1D9\u8EAC\uA1DA" + //  6550 -  6554
-                "\u8EAC\uA1DB\u8EAC\uA1DC\u8EAC\uA1DD\u8EAC\uA1DE\u8EAC\uA1DF" + //  6555 -  6559
-                "\u8EAC\uA1E0\u8EA2\uE8E4\u8EA2\uE8E5\u8EA2\uEEF9\u8EA2\uF0AD" + //  6560 -  6564
-                "\u0000\u0000\u0000\u0000\u8EA2\uF0F8\u8EA2\uF1D5\u8EA2\uF2A9" + //  6565 -  6569
-                "\u8EA2\uF2C3\u0000\uEBFD\u0000\uF6BA\u8EA2\uE5B5\u8EA2\uE8E6" + //  6570 -  6574
-                "\u8EA2\uEDC0\u8EA2\uF0AE\u0000\u0000\u0000\u0000\u0000\uF0AF" + //  6575 -  6579
-                "\u0000\u0000\u8EA2\uE1C1\u8EA2\uE5B6\u8EA2\uE8E7\u8EA2\uE8E8" + //  6580 -  6584
-                "\u8EA2\uE8E9\u8EA2\uEBCC\u0000\u0000\u8EA2\uEBC8\u0000\uFBD4" + //  6585 -  6589
-                "\u8EA2\uEBCB\u8EA2\uEBCA\u0000\uFADF\u8EA2\uEBC9\u0000\uFAE1" + //  6590 -  6594
-                "\u0000\u0000\u0000\uFAE0\u8EA2\uEDC2\u8EA2\uEDC1\u0000\uFBD5" + //  6595 -  6599
-                "\u0000\uFBD6\u0000\u0000\u0000\u0000\u0000\uFCB2\u8EA2\uEEFA" + //  6600 -  6604
-                "\u0000\uFCB1\u0000\u0000\u8EA2\uF0B1\u8EA2\uF0B2\u8EA2\uF0B0" + //  6605 -  6609
-                "\u8EA2\uF0AF\u0000\uFDA1\u0000\u0000\u8EA2\uF0F9\u8EA2\uF0FA" + //  6610 -  6614
-                "\u8EA2\uF0FB\u0000\uFCFE\u8EA2\uF1D6\u8EA2\uF1D9\u8EA2\uF1D8" + //  6615 -  6619
-                "\u8EA2\uF1D7\u0000\u0000\u0000\u0000\u8EA2\uF2C2\u0000\u0000" + //  6620 -  6624
-                "\u0000\uC4A1\u0000\uC4A3\u0000\u0000\u0000\uC4A4\u0000\u0000" + //  6625 -  6629
-                "\u0000\u0000\u0000\u0000\u8EA2\uA1A6\u0000\uC4B7\u0000\uC4B5" + //  6630 -  6634
-                "\u0000\uC4B8\u0000\uC4B6\u8EA2\uA1A7\u0000\uC4E2\u8EA2\uA1AF" + //  6635 -  6639
-                "\u8EA2\uA1AD\u0000\uC4E1\u0000\uC4E0\u0000\u0000\u0000\u0000" + //  6640 -  6644
-                "\u0000\uC5E2\u0000\uC5E1\u0000\uC5E0\u0000\u0000\u0000\uC5E3" + //  6645 -  6649
-                "\u0000\uC5DF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  6650 -  6654
-                "\u0000\uC7A2\u0000\uC7A3\u0000\u0000\u0000\u0000\u0000\u0000" + //  6655 -  6659
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCBE4\u0000\u0000" + //  6660 -  6664
-                "\u0000\uA7A2\u0000\u0000\u0000\u0000\u0000\uC4B9\u0000\u0000" + //  6665 -  6669
-                "\u0000\uC4E3\u8EA2\uA1B0\u0000\u0000\u0000\uC4E4\u8EA2\uA1C3" + //  6670 -  6674
-                "\u0000\uC8EB\u8EA2\uA5B1\u0000\u0000\u0000\u0000\u0000\uA7A3" + //  6675 -  6679
-                "\u0000\u0000\u0000\uC4BA\u0000\uC4E5\u0000\u0000\u0000\uC5E4" + //  6680 -  6684
-                "\u8EA2\uA1C4\u0000\u0000\u0000\u0000\u0000\uA7A4\u8EA2\uE5AE" + //  6685 -  6689
-                "\u8EA2\uE5AD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  6690 -  6694
-                "\u8EA2\uF0A8\u0000\uFCFD\u0000\u0000\u8EA2\uF1D4\u8EA2\uF1EE" + //  6695 -  6699
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE7EF\u8EA2\uD6BD" + //  6700 -  6704
-                "\u8EA2\uD6BE\u0000\u0000\u8EA2\uDCC3\u0000\uE7F0\u0000\u0000" + //  6705 -  6709
-                "\u0000\uF8A9\u8EA2\uE5AF\u0000\u0000\u8EA2\uEDBD\u0000\uFBD3" + //  6710 -  6714
-                "\u8EA2\uEDBE\u8EA2\uEDBC\u8EA2\uF0A9\u0000\u0000\u8EA2\uF0F7" + //  6715 -  6719
-                "\u0000\u0000\u0000\uE7F1\u0000\u0000\u8EA2\uE1C0\u8EA2\uE1BF" + //  6720 -  6724
-                "\u8EA2\uE1BE\u8EA2\uE5B0\u0000\u0000\u0000\u0000\u8EA2\uE5B4" + //  6725 -  6729
-                "\u8EA2\uE5B3\u8EA2\uE5B2\u8EA2\uE5B1\u0000\uF8AA\u8EA2\uE8E3" + //  6730 -  6734
-                "\u8EA2\uEBC7\u0000\uFADE\u8EA2\uEBC6\u8EA2\uEDBF\u8EA2\uEEF8" + //  6735 -  6739
-                "\u8EA2\uEEF7\u0000\uFCB0\u8EA2\uEEF6\u8EA2\uF0AC\u8EA2\uF0AB" + //  6740 -  6744
-                "\u8EA2\uF0AA\u0000\u0000\u0000\u0000\u0000\uEBFC\u0000\u0000" + //  6745 -  6749
-                "\u8EA2\uDCC4\u0000\uF6B9\u0000\u0000\u8EAD\uA2E7\u8EAD\uA2E8" + //  6750 -  6754
-                "\u8EAD\uA2E9\u8EAD\uA2EA\u8EAD\uA2EB\u8EAD\uA2EC\u8EAD\uA2ED" + //  6755 -  6759
-                "\u8EAD\uA2EE\u8EAD\uA2EF\u8EAD\uA2F0\u8EAD\uA2F1\u8EAD\uA2F2" + //  6760 -  6764
-                "\u8EAD\uA2F3\u8EAD\uA2F4\u8EAD\uA2F5\u8EAD\uA2F6\u8EAD\uA2F7" + //  6765 -  6769
-                "\u8EAD\uA2F8\u8EAD\uA2F9\u8EAD\uA2FA\u8EAD\uA2FB\u8EAD\uA2FC" + //  6770 -  6774
-                "\u8EAD\uA2FD\u8EAD\uA2FE\u8EAD\uA3A1\u8EAD\uA3A2\u8EAD\uA3A3" + //  6775 -  6779
-                "\u8EAD\uA3A4\u8EAD\uA3A5\u8EAD\uA3A6\u8EAD\uA3A7\u8EAD\uA3A8" + //  6780 -  6784
-                "\u8EAD\uA3A9\u8EAD\uA3AA\u8EAD\uA3AB\u8EAD\uA3AC\u8EAD\uA3AD" + //  6785 -  6789
-                "\u8EAD\uA3AE\u8EAD\uA3AF\u8EAD\uA3B0\u8EAD\uA3B1\u8EAD\uA3B2" + //  6790 -  6794
-                "\u8EAD\uA3B3\u8EAD\uA3B4\u8EAD\uA3B5\u8EAD\uA3B6\u8EAD\uA3B7" + //  6795 -  6799
-                "\u8EAD\uA3B8\u8EAD\uA3B9\u8EAD\uA3BA\u8EAD\uA3BB\u8EAD\uA3BC" + //  6800 -  6804
-                "\u8EAD\uA3BD\u8EAD\uA3BE\u8EAD\uA3BF\u0000\u0000\u0000\u0000" + //  6805 -  6809
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1AE\u8EAD\uA1A5" + //  6810 -  6814
-                "\u8EAD\uA1A6\u0000\u0000\u0000\uD5E9\u8EA2\uAFD4\u8EA2\uAFD2" + //  6815 -  6819
-                "\u8EA2\uAFD3\u0000\uD5EA\u8EA2\uAFD1\u0000\u0000\u0000\u0000" + //  6820 -  6824
-                "\u0000\u0000\u0000\u0000\u0000\uDBA1\u0000\uDBA2\u8EA2\uB5EA" + //  6825 -  6829
-                "\u0000\uDBA3\u0000\uDAFE\u8EA2\uBCC2\u0000\u0000\u8EA2\uBCC3" + //  6830 -  6834
-                "\u8EA2\uC3C4\u0000\u0000\u0000\u0000\u0000\uE9A2\u0000\uE9A1" + //  6835 -  6839
-                "\u0000\u0000\u0000\u0000\u8EA2\uDCFC\u8EA2\uE1E5\u0000\u0000" + //  6840 -  6844
-                "\u8EA2\uE5D5\u8EA2\uE5D4\u8EA2\uE8FB\u0000\uA7E6\u8EA2\uA1BE" + //  6845 -  6849
-                "\u0000\uD1CD\u0000\u0000\u0000\u0000\u0000\uC5CA\u0000\uC6D9" + //  6850 -  6854
-                "\u0000\u0000\u0000\uC8AF\u0000\uC8AE\u0000\u0000\u0000\u0000" + //  6855 -  6859
-                "\u0000\uC8B0\u0000\uC8B1\u8EA2\uA2CF\u8EA2\uA2CE\u8EA2\uA4B9" + //  6860 -  6864
-                "\u0000\uCAD4\u8EA2\uA4BC\u8EA2\uA4BB\u8EA2\uA4BA\u8EA2\uA4BD" + //  6865 -  6869
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCDF6" + //  6870 -  6874
-                "\u8EA2\uA7AA\u8EA2\uA7A6\u8EA2\uA7AF\u0000\u0000\u0000\u0000" + //  6875 -  6879
-                "\u8EA2\uA3A6\u0000\u0000\u0000\uC8FB\u0000\u0000\u0000\u0000" + //  6880 -  6884
-                "\u0000\uC8FE\u0000\uC8EF\u0000\uC9A9\u8EA2\uA2FD\u0000\u0000" + //  6885 -  6889
-                "\u0000\u0000\u8EA2\uA5BD\u0000\uC8ED\u0000\uC9A5\u0000\uC8EE" + //  6890 -  6894
-                "\u0000\uC8F6\u0000\uC8F7\u8EA2\uA3A4\u8EA2\uA2FE\u0000\uC8FC" + //  6895 -  6899
-                "\u0000\uC8F4\u8EA2\uA2FA\u0000\uC8F0\u8EA2\uA3A7\u0000\uC9A7" + //  6900 -  6904
-                "\u0000\uC9AA\u0000\uC8F3\u0000\uC9A2\u0000\uC9A8\u0000\uC8F1" + //  6905 -  6909
-                "\u8EA2\uA3A5\u0000\uC9A3\u8EA2\uA3AB\u8EA2\uA2FC\u0000\uC9A1" + //  6910 -  6914
-                "\u8EA2\uA3A1\u0000\u0000\u0000\u0000\u8EA2\uA3A3\u0000\u0000" + //  6915 -  6919
-                "\u0000\uCBF9\u8EA2\uA5BF\u8EA2\uA5CB\u0000\uCBF1\u0000\u0000" + //  6920 -  6924
-                "\u8EA2\uA5CC\u0000\uCBEC\u0000\uCBF6\u0000\u0000\u0000\u0000" + //  6925 -  6929
-                "\u0000\uCBEF\u8EA2\uA5B9\u0000\uCBF7\u8EA2\uA5B8\u8EA2\uA5BC" + //  6930 -  6934
-                "\u8EA2\uA5C3\u8EA2\uA5C1\u0000\uCCA1\u0000\uCBFA\u8EA2\uA5B3" + //  6935 -  6939
-                "\u8EA2\uA5B5\u0000\uCBFC\u0000\uCBF0\u8EA2\uE8E1\u0000\u0000" + //  6940 -  6944
-                "\u8EA2\uF0A4\u0000\uE3A7\u0000\u0000\u0000\u0000\u0000\u0000" + //  6945 -  6949
-                "\u0000\u0000\u8EA2\uE1BA\u0000\u0000\u0000\u0000\u0000\u0000" + //  6950 -  6954
-                "\u0000\uFDB1\u0000\uE3A8\u0000\uF0AD\u0000\uF6B4\u8EA2\uF0A5" + //  6955 -  6959
-                "\u0000\uE3A9\u0000\u0000\u8EA2\uD6BC\u0000\uF3BD\u8EA2\uDCC0" + //  6960 -  6964
-                "\u8EA2\uDCC1\u0000\u0000\u0000\uF3BC\u0000\u0000\u8EA2\uE1BB" + //  6965 -  6969
-                "\u0000\uF6B8\u0000\uF6B6\u0000\uF6B7\u0000\uF6B5\u8EA2\uE5AC" + //  6970 -  6974
-                "\u0000\uF8A8\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEBC3" + //  6975 -  6979
-                "\u8EA2\uEBC2\u8EA2\uEBC5\u8EA2\uEBC4\u0000\uFADD\u0000\u0000" + //  6980 -  6984
-                "\u0000\u0000\u8EA2\uEDB9\u0000\u0000\u8EA2\uEDBB\u8EA2\uEDBA" + //  6985 -  6989
-                "\u0000\uFBD2\u8EA2\uEEF5\u0000\u0000\u8EA2\uF0A6\u8EA2\uF0A7" + //  6990 -  6994
-                "\u0000\uFCDC\u8EA2\uF1D3\u8EA2\uF1ED\u0000\uFDC2\u0000\u0000" + //  6995 -  6999
-                "\u8EA2\uC1D5\u8EA2\uDCC2\u8EA2\uE1BC\u8EA2\uE8E2\u8EA2\uC8F5" + //  7000 -  7004
-                "\u0000\u0000\u8EA2\uE1BD\u8EA2\uC8F4\u0000\u0000\u0000\uE7EE" + //  7005 -  7009
-                "\u8EA2\uD6BB\u0000\u0000\u0000\u0000\u8EA2\uDCBC\u8EA2\uDCBD" + //  7010 -  7014
-                "\u8EA2\uDCBB\u8EA2\uE1B7\u8EA2\uE1B6\u0000\uF6B3\u8EA2\uE5AB" + //  7015 -  7019
-                "\u8EA2\uE1B8\u8EA2\uE5AA\u0000\u0000\u0000\u0000\u8EA2\uE8E0" + //  7020 -  7024
-                "\u0000\uF9DD\u0000\uF9DF\u8EA2\uE8DF\u0000\u0000\u0000\u0000" + //  7025 -  7029
-                "\u0000\uF9DE\u0000\u0000\u8EA2\uEBBF\u8EA2\uEBC1\u8EA2\uEBC0" + //  7030 -  7034
-                "\u8EA2\uEDB8\u0000\uFBD1\u0000\u0000\u0000\uFCDB\u8EA2\uF0F6" + //  7035 -  7039
-                "\u8EA2\uF1D2\u0000\u0000\u0000\u0000\u8EA2\uF2C1\u0000\uDEA7" + //  7040 -  7044
-                "\u0000\u0000\u8EA2\uCFCD\u0000\u0000\u0000\uF0AB\u0000\u0000" + //  7045 -  7049
-                "\u0000\u0000\u0000\u0000\u8EA2\uDCBF\u8EA2\uDCBE\u0000\u0000" + //  7050 -  7054
-                "\u8EA2\uE1B9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF9E0" + //  7055 -  7059
-                "\u0000\uFADC\u8EA2\uEEF4\u8EA2\uF2B9\u0000\u0000\u0000\u0000" + //  7060 -  7064
-                "\u0000\u0000\u0000\uDEA8\u0000\uEBFB\u0000\u0000\u0000\uF0AC" + //  7065 -  7069
-                "\u0000\u0000\u8EAD\uA2B4\u8EAD\uA2B5\u8EAD\uA2B6\u8EAD\uA2B7" + //  7070 -  7074
-                "\u8EAD\uA2B8\u8EAD\uA2B9\u8EAD\uA2BA\u8EAD\uA2BB\u8EAD\uA2BC" + //  7075 -  7079
-                "\u8EAD\uA2BD\u8EAD\uA2BE\u8EAD\uA2BF\u8EAD\uA2C0\u8EAD\uA2C1" + //  7080 -  7084
-                "\u8EAD\uA2C2\u8EAD\uA2C3\u8EAD\uA2C4\u8EAD\uA2C5\u8EAD\uA2C6" + //  7085 -  7089
-                "\u8EAD\uA2C7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7090 -  7094
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1A1\u8EAD\uA1A2" + //  7095 -  7099
-                "\u8EAD\uA1A7\u8EAD\uA1A8\u0000\u0000\u0000\u0000\u8EAD\uA2C8" + //  7100 -  7104
-                "\u8EAD\uA2C9\u8EAD\uA2CA\u8EAD\uA2CB\u8EAD\uA2CC\u8EAD\uA2CD" + //  7105 -  7109
-                "\u8EAD\uA2CE\u8EAD\uA2CF\u8EAD\uA2D0\u8EAD\uA2D1\u8EAD\uA2D2" + //  7110 -  7114
-                "\u8EAD\uA2D3\u8EAD\uA2D4\u8EAD\uA2D5\u8EAD\uA2D6\u8EAD\uA2D7" + //  7115 -  7119
-                "\u8EAD\uA2D8\u8EAD\uA2D9\u8EAD\uA2DA\u8EAD\uA2DB\u8EAD\uA2DC" + //  7120 -  7124
-                "\u8EAD\uA2DD\u8EAD\uA2DE\u8EAD\uA2DF\u8EAD\uA2E0\u8EAD\uA2E1" + //  7125 -  7129
-                "\u8EAD\uA2E2\u8EAD\uA2E3\u8EAD\uA2E4\u8EAD\uA2E5\u8EAD\uA2E6" + //  7130 -  7134
-                "\u8EA2\uF0F0\u8EA2\uF0F1\u8EA2\uF0EA\u8EA2\uF0ED\u8EA2\uF0F5" + //  7135 -  7139
-                "\u8EA2\uF0EF\u8EA2\uF0EE\u8EA2\uF0EC\u0000\u0000\u8EA2\uF0F2" + //  7140 -  7144
-                "\u0000\u0000\u8EA2\uF1CC\u0000\u0000\u8EA2\uF1CD\u0000\u0000" + //  7145 -  7149
-                "\u8EA2\uF1CF\u8EA2\uF1CE\u8EA2\uF1D1\u8EA2\uF1D0\u8EA2\uF1EC" + //  7150 -  7154
-                "\u8EA2\uF1EB\u8EA2\uF2A7\u0000\u0000\u8EA2\uF2A8\u0000\u0000" + //  7155 -  7159
-                "\u8EA2\uF2B4\u0000\uFDC5\u0000\uFDC9\u0000\u0000\u8EA2\uF2BD" + //  7160 -  7164
-                "\u0000\uFDCA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7165 -  7169
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7170 -  7174
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7175 -  7179
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7180 -  7184
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7185 -  7189
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7190 -  7194
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7195 -  7199
-                "\u0000\u0000\u0000\uA2A1\u0000\u0000\u0000\u0000\u0000\u0000" + //  7200 -  7204
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7205 -  7209
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7210 -  7214
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7215 -  7219
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7220 -  7224
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7225 -  7229
-                "\u0000\uCBD0\u0000\uE2CB\u0000\u0000\u0000\u0000\u0000\uE7A8" + //  7230 -  7234
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEBBE\u0000\u0000" + //  7235 -  7239
-                "\u0000\u0000\u0000\uF2D6\u0000\u0000\u0000\uF2D5\u0000\u0000" + //  7240 -  7244
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF9B0\u0000\uFAA9" + //  7245 -  7249
-                "\u0000\uFBB3\u0000\uCBD1\u0000\uD8C9\u0000\uE7A9\u0000\u0000" + //  7250 -  7254
-                "\u8EA2\uE7C7\u0000\uA8E3\u0000\u0000\u0000\u0000\u0000\u0000" + //  7255 -  7259
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7260 -  7264
-                "\u0000\u0000\u8EA2\uA5A6\u8EA2\uE8CB\u8EA2\uE8C6\u8EA2\uE8D9" + //  7265 -  7269
-                "\u0000\u0000\u8EA2\uE8C8\u8EA2\uE8D6\u8EA2\uE8CD\u8EA2\uE8DD" + //  7270 -  7274
-                "\u8EA2\uE8C9\u0000\uF9D8\u8EA2\uE8C7\u8EA2\uE8CE\u8EA2\uE8CF" + //  7275 -  7279
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEBAD\u0000\u0000" + //  7280 -  7284
-                "\u8EA2\uEBAB\u0000\u0000\u8EA2\uEBB0\u0000\u0000\u8EA2\uEBBC" + //  7285 -  7289
-                "\u8EA2\uEBB3\u8EA2\uEBAC\u8EA2\uEBA8\u8EA2\uEBB5\u8EA2\uEBAE" + //  7290 -  7294
-                "\u8EA2\uEBB1\u8EA2\uEBAA\u8EA2\uEBB8\u8EA2\uEBA7\u8EA2\uEBAF" + //  7295 -  7299
-                "\u8EA2\uEBB4\u8EA2\uEBB6\u8EA2\uEBB9\u8EA2\uEBA9\u0000\u0000" + //  7300 -  7304
-                "\u8EA2\uEBBD\u8EA2\uEBBE\u8EA2\uEBB7\u8EA2\uEBBB\u8EA2\uEBB2" + //  7305 -  7309
-                "\u0000\u0000\u8EA2\uEDAF\u8EA2\uEDB2\u0000\u0000\u0000\uFBCD" + //  7310 -  7314
-                "\u0000\u0000\u8EA2\uEDB1\u8EA2\uEDB6\u8EA2\uEDB4\u0000\uFBCE" + //  7315 -  7319
-                "\u8EA2\uEDAB\u8EA2\uEDA1\u8EA2\uECFE\u0000\uFBD0\u8EA2\uEDAD" + //  7320 -  7324
-                "\u8EA2\uEDAE\u8EA2\uEDAA\u8EA2\uEDA2\u0000\u0000\u8EA2\uEDA7" + //  7325 -  7329
-                "\u8EA2\uEBBA\u8EA2\uE1B2\u8EA2\uE1A5\u8EA2\uE1AE\u8EA2\uE1AF" + //  7330 -  7334
-                "\u0000\u0000\u8EA2\uE1AD\u0000\u0000\u0000\u0000\u0000\u0000" + //  7335 -  7339
-                "\u0000\u0000\u8EA2\uE4FC\u8EA2\uE4FE\u8EA2\uE5A3\u0000\u0000" + //  7340 -  7344
-                "\u0000\u0000\u8EA2\uE4FB\u0000\u0000\u0000\uF8A5\u8EA2\uE5A5" + //  7345 -  7349
-                "\u8EA2\uE4FA\u8EA2\uE5A6\u0000\u0000\u8EA2\uE5A2\u8EA2\uE5A4" + //  7350 -  7354
-                "\u8EA2\uE5A8\u8EA2\uE5A1\u8EA2\uE5A9\u8EA2\uE4FD\u8EA2\uE4F9" + //  7355 -  7359
-                "\u0000\uF8A6\u0000\u0000\u8EA2\uE5A7\u0000\uF8A7\u0000\uF9D9" + //  7360 -  7364
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7365 -  7369
-                "\u8EA2\uE1A6\u8EA2\uE8DE\u8EA2\uE8D5\u0000\uF9DB\u8EA2\uE8D1" + //  7370 -  7374
-                "\u0000\uF9DC\u0000\u0000\u0000\u0000\u8EA2\uE8DA\u8EA2\uE8D4" + //  7375 -  7379
-                "\u8EA2\uE8CA\u0000\uF9DA\u8EA2\uE8D7\u8EA2\uE8D2\u8EA2\uE8D3" + //  7380 -  7384
-                "\u0000\u0000\u8EA2\uE8C5\u8EA2\uE8CC\u8EA2\uE8DB\u0000\u0000" + //  7385 -  7389
-                "\u8EA2\uE8D8\u0000\u0000\u8EA2\uE8D0\u0000\u0000\u8EA2\uE8DC" + //  7390 -  7394
-                "\u8EA2\uD6B5\u0000\u0000\u0000\u0000\u0000\uF0AA\u8EA2\uD6BA" + //  7395 -  7399
-                "\u8EA2\uD6B9\u0000\uF0A8\u8EA2\uD6B4\u8EA2\uD6B8\u0000\uF0A9" + //  7400 -  7404
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7405 -  7409
-                "\u0000\u0000\u8EA2\uDCB8\u0000\u0000\u0000\uF3BA\u0000\u0000" + //  7410 -  7414
-                "\u8EA2\uDCB3\u0000\uF3B6\u0000\u0000\u8EA2\uDCB0\u8EA2\uDCB6" + //  7415 -  7419
-                "\u8EA2\uDCB9\u0000\u0000\u0000\uF3BB\u0000\u0000\u8EA2\uDCB5" + //  7420 -  7424
-                "\u8EA2\uDCB2\u8EA2\uDCBA\u8EA2\uDCB1\u0000\u0000\u8EA2\uDCB7" + //  7425 -  7429
-                "\u0000\uF3B7\u0000\u0000\u8EA2\uDCAF\u0000\uF3B8\u0000\u0000" + //  7430 -  7434
-                "\u0000\uF3B9\u8EA2\uDCB4\u0000\u0000\u0000\u0000\u0000\u0000" + //  7435 -  7439
-                "\u8EA2\uE1B5\u8EA2\uE1A8\u8EA2\uE1A9\u8EA2\uE1AC\u8EA2\uE1AA" + //  7440 -  7444
-                "\u0000\u0000\u8EA2\uE1A4\u0000\u0000\u0000\u0000\u8EA2\uE1A7" + //  7445 -  7449
-                "\u8EA2\uE1B1\u8EA2\uE1AB\u0000\u0000\u0000\u0000\u0000\uF6B1" + //  7450 -  7454
-                "\u0000\u0000\u8EA2\uE1B3\u8EA2\uE1B0\u0000\uF6B2\u8EA2\uEAFE" + //  7455 -  7459
-                "\u8EA2\uEEDD\u0000\u0000\u0000\u0000\u8EA2\uEEDA\u0000\u0000" + //  7460 -  7464
-                "\u8EA2\uEED7\u0000\u0000\u8EA2\uEED8\u0000\uFCAA\u8EA2\uEFE8" + //  7465 -  7469
-                "\u8EA2\uEFEA\u8EA2\uEFED\u8EA2\uEFE9\u8EA2\uEFEE\u0000\u0000" + //  7470 -  7474
-                "\u8EA2\uEFE7\u0000\u0000\u8EA2\uEFE5\u0000\u0000\u0000\uFCD7" + //  7475 -  7479
-                "\u8EA2\uEFEB\u0000\uFCD9\u0000\uFCD8\u8EA2\uEFE6\u8EA2\uEFEC" + //  7480 -  7484
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uF0E8" + //  7485 -  7489
-                "\u0000\uFCF8\u8EA2\uF0E9\u0000\u0000\u8EA2\uF0E7\u8EA2\uF0E4" + //  7490 -  7494
-                "\u0000\u0000\u0000\u0000\u8EA2\uF0E6\u8EA2\uF0E5\u8EA2\uF1C9"   //  7495 -  7499
-                ;
-
-            index2a =
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uF1CB" + //  7500 -  7504
-                "\u8EA2\uF1CA\u0000\u0000\u0000\u0000\u8EA2\uF1E9\u0000\u0000" + //  7505 -  7509
-                "\u8EA2\uF1E8\u8EA2\uF1E7\u8EA2\uF1EA\u0000\u0000\u0000\uFDC0" + //  7510 -  7514
-                "\u0000\uFDC1\u8EA2\uF2B8\u8EA2\uF2BC\u0000\u0000\u0000\u0000" + //  7515 -  7519
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBBAA\u8EA2\uBBA7" + //  7520 -  7524
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7525 -  7529
-                "\u8EA2\uBBA8\u8EA2\uBBAB\u8EA2\uBBAF\u0000\u0000\u8EA2\uB4E6" + //  7530 -  7534
-                "\u8EA2\uBBB1\u8EA2\uC2CD\u0000\u0000\u0000\uDEE8\u8EA2\uBBB2" + //  7535 -  7539
-                "\u8EA2\uBAF8\u8EA2\uBBA4\u0000\u0000\u8EA2\uBBA9\u0000\u0000" + //  7540 -  7544
-                "\u0000\u0000\u0000\uDEE6\u0000\uDEE9\u8EA2\uBBB0\u8EA2\uBBB3" + //  7545 -  7549
-                "\u8EA2\uBAFC\u8EA2\uBAF9\u0000\u0000\u0000\u0000\u8EA2\uBAFB" + //  7550 -  7554
-                "\u0000\u0000\u0000\u0000\u8EA2\uBBA2\u8EA2\uBAFE\u0000\uDEEA" + //  7555 -  7559
-                "\u0000\u0000\u8EA2\uBBAC\u0000\u0000\u0000\u0000\u8EA2\uBBA3" + //  7560 -  7564
-                "\u0000\u0000\u8EA2\uBBA5\u8EA2\uBAF7\u8EA2\uC2C1\u8EA2\uC2BF" + //  7565 -  7569
-                "\u0000\uE3E8\u0000\uE3E6\u8EA2\uC2C9\u8EA2\uC2C0\u8EA2\uC2CA" + //  7570 -  7574
-                "\u8EA2\uC2C6\u8EA2\uC2BE\u8EA2\uC2CC\u8EA2\uC2BD\u8EA2\uC2C4" + //  7575 -  7579
-                "\u0000\uE3E5\u0000\uE3E4\u0000\uE3E3\u8EA2\uC2C2\u0000\uF8A4" + //  7580 -  7584
-                "\u8EA2\uE4F1\u0000\u0000\u8EA2\uE4EF\u8EA2\uE4F6\u0000\u0000" + //  7585 -  7589
-                "\u8EA2\uE4EE\u8EA2\uE4ED\u0000\uF8A3\u0000\uF8A1\u0000\uF7FE" + //  7590 -  7594
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7595 -  7599
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE4F4\u8EA2\uE8BC" + //  7600 -  7604
-                "\u8EA2\uE8C2\u0000\uF9D6\u8EA2\uE8BD\u0000\u0000\u8EA2\uE8C0" + //  7605 -  7609
-                "\u8EA2\uE8C4\u0000\uF9D7\u8EA2\uE8BF\u0000\u0000\u8EA2\uE8B7" + //  7610 -  7614
-                "\u0000\u0000\u8EA2\uE8B6\u8EA2\uE8C3\u8EA2\uE8BA\u0000\u0000" + //  7615 -  7619
-                "\u8EA2\uE8B8\u8EA2\uE8C1\u8EA2\uE8B9\u0000\uF9D5\u0000\uF9D4" + //  7620 -  7624
-                "\u0000\u0000\u8EA2\uE8B4\u8EA2\uE8B5\u8EA2\uE8BE\u0000\u0000" + //  7625 -  7629
-                "\u0000\u0000\u0000\u0000\u8EA2\uE8BB\u0000\u0000\u0000\u0000" + //  7630 -  7634
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEAFA" + //  7635 -  7639
-                "\u8EA2\uEAFD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7640 -  7644
-                "\u0000\uF8A2\u0000\u0000\u0000\u0000\u8EA2\uD0A6\u8EA2\uD0A4" + //  7645 -  7649
-                "\u8EA2\uD0A2\u0000\u0000\u8EA2\uD0A8\u0000\u0000\u8EA2\uD0A7" + //  7650 -  7654
-                "\u0000\uECCD\u0000\uECC8\u0000\u0000\u0000\uECCA\u0000\uECCC" + //  7655 -  7659
-                "\u0000\u0000\u0000\u0000\u8EA2\uD0A9\u8EA2\uD6E1\u0000\u0000" + //  7660 -  7664
-                "\u0000\u0000\u8EA2\uD6E0\u8EA2\uD6DF\u0000\u0000\u8EA2\uD6E2" + //  7665 -  7669
-                "\u8EA2\uD6DB\u0000\u0000\u8EA2\uD6DC\u8EA2\uD6E4\u8EA2\uD6DD" + //  7670 -  7674
-                "\u0000\u0000\u0000\uF0CE\u8EA2\uD6E6\u0000\u0000\u8EA2\uD6E5" + //  7675 -  7679
-                "\u8EA2\uD6DE\u0000\u0000\u8EA2\uDCDD\u0000\uF3D1\u8EA2\uDCDB" + //  7680 -  7684
-                "\u8EA2\uDCE0\u8EA2\uDCDF\u8EA2\uD6E3\u0000\u0000\u0000\uF3D0" + //  7685 -  7689
-                "\u0000\u0000\u8EA2\uDCDE\u8EA2\uDCDA\u8EA2\uDCE2\u8EA2\uDCE1" + //  7690 -  7694
-                "\u0000\uF3CF\u0000\u0000\u8EA2\uDCDC\u0000\u0000\u0000\uF0CF" + //  7695 -  7699
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF6C0\u0000\u0000" + //  7700 -  7704
-                "\u0000\u0000\u0000\u0000\u8EA2\uE1CD\u8EA2\uE5C6\u8EA2\uE5C7" + //  7705 -  7709
-                "\u8EA2\uE5C8\u8EA2\uDCA1\u0000\u0000\u8EA2\uDCA7\u0000\u0000" + //  7710 -  7714
-                "\u0000\u0000\u8EA2\uDCA2\u8EA2\uE0FE\u8EA2\uDCA3\u8EA2\uDCAE" + //  7715 -  7719
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7720 -  7724
-                "\u0000\u0000\u0000\u0000\u8EA2\uDCAA\u0000\uF3B5\u8EA2\uDCA9" + //  7725 -  7729
-                "\u8EA2\uDCA8\u0000\u0000\u8EA2\uDCAC\u0000\u0000\u0000\u0000" + //  7730 -  7734
-                "\u0000\u0000\u0000\u0000\u8EA2\uE0F6\u8EA2\uE0F9\u0000\u0000" + //  7735 -  7739
-                "\u0000\u0000\u8EA2\uE0F8\u0000\u0000\u8EA2\uE1A2\u8EA2\uE0FB" + //  7740 -  7744
-                "\u8EA2\uE1A1\u0000\u0000\u8EA2\uE0FD\u8EA2\uE0FC\u8EA2\uE0FA" + //  7745 -  7749
-                "\u0000\u0000\u8EA2\uE0F7\u0000\u0000\u0000\uF6AF\u0000\uF6AE" + //  7750 -  7754
-                "\u0000\u0000\u0000\uF6B0\u0000\uF6AD\u8EA2\uE1A3\u0000\u0000" + //  7755 -  7759
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE4F2" + //  7760 -  7764
-                "\u8EA2\uE4F5\u0000\u0000\u8EA2\uE4F3\u8EA2\uE4F7\u0000\u0000" + //  7765 -  7769
-                "\u0000\u0000\u0000\u0000\u8EA2\uE4F8\u0000\u0000\u8EA2\uE4F0" + //  7770 -  7774
-                "\u8EA2\uE4E3\u0000\uF7F8\u8EA2\uE8AE\u0000\u0000\u0000\u0000" + //  7775 -  7779
-                "\u0000\u0000\u8EA2\uEAF4\u8EA2\uEAF2\u0000\u0000\u0000\u0000" + //  7780 -  7784
-                "\u8EA2\uEAF3\u0000\u0000\u0000\u0000\u8EA2\uECEE\u0000\u0000" + //  7785 -  7789
-                "\u0000\uFBC8\u8EA2\uEED1\u0000\uFCD6\u0000\uFCA8\u0000\uFCD4" + //  7790 -  7794
-                "\u0000\uFCD5\u8EA2\uF0E2\u0000\uFDAF\u0000\u0000\u0000\uD8ED" + //  7795 -  7799
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE4E4\u0000\u0000" + //  7800 -  7804
-                "\u0000\u0000\u8EA2\uB3CC\u0000\u0000\u0000\uE7EC\u0000\u0000" + //  7805 -  7809
-                "\u8EA2\uCFC3\u0000\u0000\u0000\u0000\u0000\uEBF5\u8EA2\uCFC4" + //  7810 -  7814
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD5FD\u8EA2\uD5FC" + //  7815 -  7819
-                "\u0000\uF3B3\u0000\uF0A1\u0000\uF0A2\u0000\u0000\u8EA2\uD6A2" + //  7820 -  7824
-                "\u8EA2\uD6A1\u8EA2\uD5FE\u0000\u0000\u0000\u0000\u8EA2\uDBFA" + //  7825 -  7829
-                "\u8EA2\uDBFD\u0000\u0000\u8EA2\uDBFC\u8EA2\uDBFB\u0000\uF3B2" + //  7830 -  7834
-                "\u8EA2\uE0F4\u8EA2\uE0F2\u8EA2\uE0F1\u0000\u0000\u0000\uA1A1" + //  7835 -  7839
-                "\u0000\uA1A3\u0000\uA1A4\u0000\uA1F1\u0000\u0000\u8EAD\uA1AB" + //  7840 -  7844
-                "\u8EAD\uA1AC\u8EAD\uA1AD\u0000\uA1D2\u0000\uA1D3\u0000\uA1CE" + //  7845 -  7849
-                "\u0000\uA1CF\u0000\uA1D6\u0000\uA1D7\u0000\uA1DA\u0000\uA1DB" + //  7850 -  7854
-                "\u0000\uA1CA\u0000\uA1CB\u0000\uA2E5\u8EAD\uA1B5\u0000\uA1C6" + //  7855 -  7859
-                "\u0000\uA1C7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7860 -  7864
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA1E8\u0000\uA1E9" + //  7865 -  7869
-                "\u0000\u0000\u0000\u0000\u0000\uA4B5\u0000\uA4B6\u0000\uA4B7" + //  7870 -  7874
-                "\u0000\uA4B8\u0000\uA4B9\u0000\uA4BA\u0000\uA4BB\u0000\uA4BC" + //  7875 -  7879
-                "\u0000\uA4BD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7880 -  7884
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7885 -  7889
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7890 -  7894
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7895 -  7899
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uAFEE\u0000\uD6AE" + //  7900 -  7904
-                "\u8EA2\uAFEF\u0000\u0000\u8EA2\uAFE3\u0000\uD6A3\u0000\uD6AF" + //  7905 -  7909
-                "\u0000\u0000\u8EA2\uAFDC\u0000\u0000\u8EA2\uAFE5\u8EA2\uAFED" + //  7910 -  7914
-                "\u0000\u0000\u8EA2\uAFDB\u8EA2\uAFF6\u0000\uD5F7\u0000\u0000" + //  7915 -  7919
-                "\u0000\u0000\u0000\u0000\u8EA2\uAFF5\u8EA2\uAFF0\u0000\u0000" + //  7920 -  7924
-                "\u8EA2\uAFF1\u0000\uD6A1\u0000\uD6AC\u8EA2\uAFE7\u0000\u0000" + //  7925 -  7929
-                "\u8EA2\uAFE8\u8EA2\uAFF2\u8EA2\uAFE9\u0000\u0000\u8EA2\uAFE4" + //  7930 -  7934
-                "\u8EA2\uAFDE\u8EA2\uAFDF\u8EA2\uAFEC\u8EA2\uAFE6\u0000\u0000" + //  7935 -  7939
-                "\u0000\u0000\u0000\uD5F8\u0000\uD5FC\u8EA2\uAFF4\u8EA2\uAFE0" + //  7940 -  7944
-                "\u0000\uD6AA\u0000\uD6A6\u0000\u0000\u0000\u0000\u8EA2\uACFC" + //  7945 -  7949
-                "\u0000\uD3AA\u0000\uD3AB\u8EA2\uACFE\u0000\u0000\u8EA2\uACF8" + //  7950 -  7954
-                "\u8EA2\uACFB\u8EA2\uADA6\u8EA2\uADA4\u0000\u0000\u0000\uD3AC" + //  7955 -  7959
-                "\u8EA2\uADAA\u0000\uD3AF\u8EA2\uADA7\u8EA2\uACFD\u8EA2\uACFA" + //  7960 -  7964
-                "\u0000\u0000\u0000\u0000\u8EA2\uBFAE\u8EA2\uADA5\u0000\uD3A7" + //  7965 -  7969
-                "\u8EA2\uADA8\u8EA2\uACF7\u8EA2\uADA2\u0000\uD3A9\u0000\uD3AE" + //  7970 -  7974
-                "\u8EA2\uADA3\u0000\uD3B2\u0000\uD3B0\u0000\u0000\u8EA2\uACF9" + //  7975 -  7979
-                "\u0000\uD3AD\u0000\u0000\u8EA2\uADA1\u0000\uD3B1\u0000\uD3A8" + //  7980 -  7984
-                "\u8EA2\uADA9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7985 -  7989
-                "\u0000\u0000\u0000\u0000\u0000\uD7DE\u0000\u0000\u0000\uD7E7" + //  7990 -  7994
-                "\u0000\uD7DC\u0000\uD7DA\u8EA2\uB2AE\u0000\uD7E2\u0000\uD7DF" + //  7995 -  7999
-                "\u8EA2\uB2B0\u0000\u0000\u0000\u0000\u0000\uD7E1\u8EA2\uB2AF" + //  8000 -  8004
-                "\u8EA2\uB2AD\u8EA2\uB2B2\u0000\uD7E6\u0000\uD7E4\u8EA2\uBFAD" + //  8005 -  8009
-                "\u0000\u0000\u8EA2\uAAE8\u0000\u0000\u8EA2\uAAE9\u0000\u0000" + //  8010 -  8014
-                "\u0000\uD1CA\u8EA2\uAFD0\u0000\u0000\u0000\uD5E6\u0000\uD5E7" + //  8015 -  8019
-                "\u8EA2\uAFCF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8020 -  8024
-                "\u0000\uDAF7\u0000\u0000\u0000\uDAF3\u0000\u0000\u8EA2\uB5E9" + //  8025 -  8029
-                "\u0000\uDAFA\u0000\uDAF9\u0000\uDAF2\u0000\uDAF5\u0000\uDAF8" + //  8030 -  8034
-                "\u0000\uDAF4\u0000\u0000\u0000\u0000\u8EA2\uBCBB\u0000\uDAF1" + //  8035 -  8039
-                "\u0000\uDFD4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDFD6" + //  8040 -  8044
-                "\u0000\uDFD7\u8EA2\uBCBA\u8EA2\uBCBD\u0000\uDFD5\u8EA2\uBCB8" + //  8045 -  8049
-                "\u8EA2\uBCBC\u0000\u0000\u8EA2\uBCB9\u0000\u0000\u0000\uE4B9" + //  8050 -  8054
-                "\u0000\u0000\u0000\u0000\u8EA2\uC3C2\u0000\u0000\u0000\u0000" + //  8055 -  8059
-                "\u0000\uE8FD\u8EA2\uCADB\u0000\uF0EC\u0000\uEDAE\u8EA2\uD0E4" + //  8060 -  8064
-                "\u0000\uEDAF\u0000\uEDB0\u8EA2\uD0E6\u8EA2\uD0E5\u8EA2\uD0E7" + //  8065 -  8069
-                "\u8EA2\uD7BC\u0000\u0000\u0000\u0000\u8EA2\uD7BB\u0000\uFBC6" + //  8070 -  8074
-                "\u8EA2\uECEB\u8EA2\uECEA\u0000\uFBC5\u8EA2\uECE9\u0000\uFBC4" + //  8075 -  8079
-                "\u8EA2\uECE8\u0000\u0000\u8EA2\uEECC\u8EA2\uEECE\u8EA2\uEECD" + //  8080 -  8084
-                "\u0000\u0000\u8EA2\uEECA\u0000\uFCA7\u8EA2\uEEC7\u8EA2\uEECB" + //  8085 -  8089
-                "\u8EA2\uEED0\u0000\u0000\u8EA2\uEECF\u8EA2\uEEC8\u8EA2\uEEC9" + //  8090 -  8094
-                "\u0000\uFCA6\u8EA2\uEFE0\u0000\uFCD3\u0000\u0000\u8EA2\uEFE1" + //  8095 -  8099
-                "\u0000\uFCD1\u0000\uFCD2\u0000\u0000\u0000\u0000\u8EA2\uF0E1" + //  8100 -  8104
-                "\u0000\uFCF5\u8EA2\uF1E5\u0000\u0000\u0000\uFDB7\u0000\u0000" + //  8105 -  8109
-                "\u8EA2\uF2A3\u0000\uFDB8\u8EA2\uF2A4\u8EA2\uF2A5\u8EA2\uF2B3" + //  8110 -  8114
-                "\u8EA2\uF2B2\u0000\uFDC7\u8EA2\uF2BB\u0000\u0000\u0000\u0000" + //  8115 -  8119
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8120 -  8124
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8125 -  8129
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8130 -  8134
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2F5\u0000\uA2F6" + //  8135 -  8139
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8140 -  8144
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8145 -  8149
-                "\u0000\u0000\u0000\u0000\u0000\uA2F0\u0000\uA2F1\u0000\uA2F2" + //  8150 -  8154
-                "\u0000\u0000\u0000\u0000\u0000\uA2F4\u0000\u0000\u0000\u0000" + //  8155 -  8159
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8160 -  8164
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8165 -  8169
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8170 -  8174
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8175 -  8179
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8180 -  8184
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8185 -  8189
-                "\u0000\uA2E6\u0000\uA2E7\u8EAD\uA4C0\u0000\uA2A4\u8EAD\uA4C1" + //  8190 -  8194
-                "\u0000\uA2E4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8195 -  8199
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8200 -  8204
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8205 -  8209
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8210 -  8214
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8215 -  8219
-                "\u0000\u0000\u0000\u0000\u8EAD\uA1BE\u0000\u0000\u8EAD\uA1BF" + //  8220 -  8224
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8225 -  8229
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8230 -  8234
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8235 -  8239
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA4BD\u0000\u0000" + //  8240 -  8244
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8245 -  8249
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8250 -  8254
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8255 -  8259
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8260 -  8264
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1C2\u0000\u0000" + //  8265 -  8269
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8270 -  8274
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8275 -  8279
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8280 -  8284
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8285 -  8289
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8290 -  8294
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8295 -  8299
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8300 -  8304
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8305 -  8309
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8310 -  8314
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA4C4\u0000\u0000" + //  8315 -  8319
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8320 -  8324
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8325 -  8329
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBDB1\u0000\uE0C6" + //  8330 -  8334
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC4C7\u8EA2\uC4C6" + //  8335 -  8339
-                "\u8EA2\uC4AC\u0000\uE4E3\u0000\u0000\u8EA2\uC4C5\u8EA2\uC4AF" + //  8340 -  8344
-                "\u8EA2\uC4B0\u0000\u0000\u0000\uE4ED\u8EA2\uC4CE\u0000\uE4E8" + //  8345 -  8349
-                "\u8EA2\uC4C4\u0000\u0000\u8EA2\uC4A9\u0000\uE4EE\u0000\uE4E4" + //  8350 -  8354
-                "\u8EA2\uC4B8\u8EA2\uC4AE\u8EA2\uC4B1\u8EA2\uC4C9\u0000\uE4DE" + //  8355 -  8359
-                "\u8EA2\uC4D0\u8EA2\uC4C8\u0000\uE4E7\u8EA2\uC4BD\u0000\uE4F2" + //  8360 -  8364
-                "\u0000\u0000\u0000\u0000\u0000\uE4F1\u0000\uE4EB\u0000\u0000" + //  8365 -  8369
-                "\u0000\u0000\u8EA2\uC4CF\u0000\uE4DF\u8EA2\uC4BB\u8EA2\uC4B2" + //  8370 -  8374
-                "\u8EA2\uC4BF\u8EA2\uC4CB\u0000\uE4F3\u0000\u0000\u0000\uE4E1" + //  8375 -  8379
-                "\u8EA2\uC4BA\u8EAD\uA4CB\u8EA2\uC4B3\u0000\uE4EA\u0000\u0000" + //  8380 -  8384
-                "\u0000\uE4E9\u8EA2\uC4B6\u8EA2\uC4C0\u8EA2\uC4CA\u8EA2\uCFB7" + //  8385 -  8389
-                "\u0000\u0000\u8EA2\uCFB6\u0000\uEBEE\u0000\u0000\u0000\uEBEF" + //  8390 -  8394
-                "\u0000\u0000\u8EA2\uCFB8\u8EA2\uD5E8\u0000\uEBF1\u0000\uEFF2" + //  8395 -  8399
-                "\u0000\u0000\u0000\uEBF0\u0000\u0000\u0000\u0000\u0000\u0000" + //  8400 -  8404
-                "\u0000\uF3A7\u8EA2\uD5EA\u0000\uEFF4\u0000\uEFF3\u8EA2\uD5EB" + //  8405 -  8409
-                "\u8EA2\uD5EE\u8EA2\uD5EC\u8EA2\uD5ED\u0000\uEFF5\u0000\u0000" + //  8410 -  8414
-                "\u0000\uF3AC\u0000\uF3AA\u0000\u0000\u0000\u0000\u0000\uF3A9" + //  8415 -  8419
-                "\u8EA2\uDBE9\u0000\u0000\u0000\uF3AB\u0000\u0000\u0000\u0000" + //  8420 -  8424
-                "\u8EA2\uDBE8\u8EA2\uE0D7\u0000\u0000\u8EA2\uDBEA\u0000\uF3A8" + //  8425 -  8429
-                "\u8EA2\uDBEB\u8EA2\uE0DA\u8EA2\uE0D8\u8EA2\uE0D9\u8EA2\uE0DE" + //  8430 -  8434
-                "\u0000\uF7F5\u8EA2\uE0DD\u8EA2\uE0E0\u8EA2\uE0DF\u8EA2\uE0DC" + //  8435 -  8439
-                "\u8EA2\uE0DB\u0000\u0000\u0000\uF6AA\u0000\u0000\u0000\u0000" + //  8440 -  8444
-                "\u0000\u0000\u0000\u0000\u8EA2\uE4D8\u0000\u0000\u8EA2\uE4D7" + //  8445 -  8449
-                "\u0000\uF7F4\u0000\uF7F2\u0000\uF7F3\u8EA2\uECE3\u8EA2\uEAE0" + //  8450 -  8454
-                "\u8EA2\uEAE1\u0000\u0000\u0000\uFAD1\u0000\u0000\u8EA2\uECE2" + //  8455 -  8459
-                "\u0000\u0000\u0000\u0000\u8EA2\uECE1\u0000\u0000\u8EA2\uEEC4" + //  8460 -  8464
-                "\u8EA2\uF1FE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8465 -  8469
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8470 -  8474
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8475 -  8479
-                "\u0000\uD3F9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD3FA" + //  8480 -  8484
-                "\u0000\u0000\u0000\u0000\u0000\uD8EA\u8EA2\uB3CB\u0000\u0000" + //  8485 -  8489
-                "\u8EA2\uBAB3\u0000\u0000\u0000\uE2FD\u0000\u0000\u0000\uE3A2" + //  8490 -  8494
-                "\u0000\uE2FE\u8EA2\uC1D3\u0000\u0000\u0000\uE3A4\u0000\u0000" + //  8495 -  8499
-                "\u0000\uE3A1\u0000\u0000\u0000\u0000\u0000\uE3A3\u0000\u0000" + //  8500 -  8504
-                "\u0000\uE7E6\u0000\u0000\u8EA2\uC8E8\u0000\u0000\u0000\u0000" + //  8505 -  8509
-                "\u8EA2\uC8E9\u8EA2\uD5E9\u0000\u0000\u0000\uE7E5\u0000\uE7E7" + //  8510 -  8514
-                "\u0000\uE7E8\u0000\u0000\u0000\uA2D1\u0000\u0000\u0000\uA2D2" + //  8515 -  8519
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8520 -  8524
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8525 -  8529
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8530 -  8534
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8535 -  8539
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8540 -  8544
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8545 -  8549
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8550 -  8554
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1CE" + //  8555 -  8559
-                "\u0000\u0000\u0000\u0000\u8EAD\uA1CD\u0000\u0000\u8EAD\uA1CC" + //  8560 -  8564
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8565 -  8569
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8570 -  8574
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8575 -  8579
-                "\u0000\u0000\u8EA2\uBAE9\u8EA2\uC2AE\u0000\uE3DB\u0000\uE3DE" + //  8580 -  8584
-                "\u0000\uE3D9\u8EA2\uC2AD\u8EA2\uC2B1\u8EA2\uC2AC\u0000\u0000" + //  8585 -  8589
-                "\u0000\uE3D3\u0000\uE3DD\u8EA2\uC2A9\u0000\uE3D7\u8EA2\uC2B0" + //  8590 -  8594
-                "\u0000\u0000\u0000\uE3D5\u0000\uE3D4\u8EA2\uC2B3\u0000\uE3D6" + //  8595 -  8599
-                "\u8EA2\uC2B5\u0000\u0000\u8EA2\uC2B2\u0000\uE3D2\u0000\u0000" + //  8600 -  8604
-                "\u0000\u0000\u0000\u0000\u0000\uE3DC\u8EA2\uC2B7\u8EA2\uC2AB" + //  8605 -  8609
-                "\u8EA2\uC2B4\u0000\u0000\u0000\u0000\u8EA2\uC2AA\u0000\u0000" + //  8610 -  8614
-                "\u0000\u0000\u0000\uE3D8\u0000\u0000\u0000\uE3DA\u0000\u0000" + //  8615 -  8619
-                "\u8EA2\uC2AF\u0000\u0000\u8EA2\uC2B8\u0000\u0000\u0000\u0000" + //  8620 -  8624
-                "\u8EA2\uC9C4\u0000\uE8B8\u8EA2\uC9CA\u0000\u0000\u0000\u0000" + //  8625 -  8629
-                "\u0000\uE8BD\u8EA2\uC9C6\u8EA2\uC9CD\u8EA2\uC9BE\u0000\uE8BF" + //  8630 -  8634
-                "\u0000\uE8B9\u8EA2\uC9C3\u8EA2\uEFDF\u0000\uD3F7\u0000\uDEA1" + //  8635 -  8639
-                "\u0000\uDEA2\u8EA2\uBAB2\u0000\uE2FA\u0000\uE2FB\u8EA2\uC1D1" + //  8640 -  8644
-                "\u0000\uE2FC\u0000\u0000\u0000\uE7E2\u0000\u0000\u0000\uE7E4" + //  8645 -  8649
-                "\u8EA2\uC8E5\u8EA2\uC8E6\u8EA2\uC8E4\u0000\uE7DF\u0000\uE7E0" + //  8650 -  8654
-                "\u0000\uE7E3\u0000\uE7E1\u0000\u0000\u0000\u0000\u8EA2\uCFB3" + //  8655 -  8659
-                "\u0000\uEBEA\u0000\uEBEB\u0000\u0000\u0000\u0000\u8EA2\uD5E5" + //  8660 -  8664
-                "\u0000\uEFF0\u8EA2\uD5E0\u8EA2\uD5DF\u0000\u0000\u8EA2\uD5E4" + //  8665 -  8669
-                "\u0000\uEFEE\u0000\u0000\u0000\u0000\u0000\uF3A6\u0000\u0000" + //  8670 -  8674
-                "\u8EA2\uD5E1\u8EA2\uD5E6\u8EA2\uD5E3\u8EA2\uD5E2\u0000\u0000" + //  8675 -  8679
-                "\u0000\uEFEF\u0000\u0000\u0000\uF3A4\u0000\u0000\u8EA2\uDBE6" + //  8680 -  8684
-                "\u0000\uF2FE\u0000\u0000\u8EA2\uDBE7\u0000\u0000\u0000\u0000" + //  8685 -  8689
-                "\u8EA2\uDBE5\u0000\u0000\u0000\uF3A3\u0000\uF3A1\u0000\uF3A5" + //  8690 -  8694
-                "\u0000\u0000\u0000\uF3A2\u0000\u0000\u0000\u0000\u0000\u0000" + //  8695 -  8699
-                "\u0000\u0000\u8EA2\uA1A1\u0000\uC4A5\u0000\u0000\u0000\uC4BC" + //  8700 -  8704
-                "\u0000\u0000\u8EA2\uA1A8\u0000\uC4BD\u0000\u0000\u0000\u0000" + //  8705 -  8709
-                "\u0000\uC4E6\u0000\u0000\u0000\uC5E5\u0000\uC5E7\u0000\uC5E6" + //  8710 -  8714
-                "\u0000\u0000\u0000\u0000\u0000\uC7A4\u0000\uC7A5\u0000\u0000" + //  8715 -  8719
-                "\u0000\u0000\u0000\uCBE5\u0000\u0000\u0000\uD3FD\u0000\uC4A2" + //  8720 -  8724
-                "\u0000\u0000\u0000\u0000\u8EA2\uA1A2\u0000\uC4A6\u0000\uC4BF" + //  8725 -  8729
-                "\u0000\uC4BE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8730 -  8734
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8735 -  8739
-                "\u0000\uC7A6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8740 -  8744
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8745 -  8749
-                "\u0000\uCBE6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8750 -  8754
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8755 -  8759
-                "\u0000\u0000\u0000\uD8F1\u8EA2\uB3CE\u8EA2\uCFAB\u8EA2\uCFAF" + //  8760 -  8764
-                "\u8EA2\uCFAC\u8EA2\uCFAA\u8EA2\uCFAE\u0000\uEBE8\u0000\u0000" + //  8765 -  8769
-                "\u0000\u0000\u8EA2\uD5DC\u0000\u0000\u8EA2\uD5DA\u0000\uEFEC" + //  8770 -  8774
-                "\u0000\u0000\u0000\uEFEB\u8EA2\uD5DB\u0000\uEFED\u0000\u0000" + //  8775 -  8779
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDBE2\u0000\u0000" + //  8780 -  8784
-                "\u0000\u0000\u8EA2\uDBE1\u0000\uF2FD\u8EA2\uDBE0\u8EA2\uE0C9" + //  8785 -  8789
-                "\u0000\u0000\u8EA2\uE0CB\u8EA2\uE0CD\u8EA2\uE0CC\u0000\u0000" + //  8790 -  8794
-                "\u0000\uF6A6\u8EA2\uE0CA\u8EA2\uE4CB\u0000\uF7E8\u8EA2\uE4C9" + //  8795 -  8799
-                "\u8EA2\uE4CC\u0000\uF7E9\u0000\u0000\u8EA2\uE4C7\u0000\u0000" + //  8800 -  8804
-                "\u8EA2\uE4CA\u8EA2\uE4C8\u8EA2\uE4C5\u0000\uF7EA\u8EA2\uE4C6" + //  8805 -  8809
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE7EC" + //  8810 -  8814
-                "\u0000\u0000\u0000\u0000\u8EA2\uE7EE\u8EA2\uE7ED\u0000\u0000" + //  8815 -  8819
-                "\u8EA2\uEAD8\u0000\u0000\u8EA2\uEAD9\u0000\u0000\u0000\u0000" + //  8820 -  8824
-                "\u0000\u0000\u8EA2\uECDE\u0000\uEBE6\u0000\u0000\u8EA2\uD5D8" + //  8825 -  8829
-                "\u0000\u0000\u0000\uEFE6\u8EA2\uD5D6\u0000\uEFE7\u0000\uEFE8" + //  8830 -  8834
-                "\u8EA2\uD5D7\u0000\uEFE9\u0000\u0000\u8EA2\uDBDD\u0000\u0000" + //  8835 -  8839
-                "\u0000\uF2F7\u0000\uF2F4\u0000\uF2F9\u8EA2\uDBDF\u0000\uF2F5" + //  8840 -  8844
-                "\u8EA2\uDBDE\u0000\uF2F8\u0000\u0000\u0000\u0000\u0000\uF2F6" + //  8845 -  8849
-                "\u0000\u0000\u8EA2\uE0C6\u8EA2\uE0C8\u0000\u0000\u0000\u0000" + //  8850 -  8854
-                "\u0000\uF6A4\u8EA2\uE0C7\u0000\uF6A5\u8EA2\uE0C5\u8EA2\uE0C4" + //  8855 -  8859
-                "\u0000\u0000\u8EA2\uE4C3\u8EA2\uE4C2\u0000\uF7E7\u8EA2\uE4C4" + //  8860 -  8864
-                "\u8EA2\uE7EB\u0000\uF9C7\u8EA2\uE7EA\u8EA2\uE7E7\u0000\uF9C6" + //  8865 -  8869
-                "\u8EA2\uE7E8\u8EA2\uE7E9\u0000\u0000\u8EA2\uEAD6\u8EA2\uEAD7" + //  8870 -  8874
-                "\u0000\uFAD0\u0000\u0000\u0000\uFBBF\u0000\u0000\u0000\u0000" + //  8875 -  8879
-                "\u8EA2\uECDC\u0000\u0000\u0000\u0000\u0000\uFBBD\u0000\uFBBE" + //  8880 -  8884
-                "\u8EA2\uECDD\u0000\u0000\u0000\u0000\u0000\uFBFE\u0000\uFCA1" + //  8885 -  8889
-                "\u8EA2\uEEC0\u0000\uDDFA\u0000\uE2F2\u8EA2\uC1C9\u8EA2\uC1CB" + //  8890 -  8894
-                "\u0000\uE2F4\u0000\uE2F3\u0000\uE2F5\u0000\uE2F6\u8EA2\uC1CA" + //  8895 -  8899
-                "\u0000\uE7D6\u0000\uE7D7\u0000\uE7D5\u0000\uEBE4\u0000\uE7D4" + //  8900 -  8904
-                "\u8EA2\uC8DB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEBE5" + //  8905 -  8909
-                "\u8EA2\uD5D5\u8EA2\uDBDC\u0000\uF2F3\u0000\uF6A3\u8EA2\uE4BC" + //  8910 -  8914
-                "\u8EA2\uE4C0\u0000\uF7E4\u8EA2\uE4BD\u0000\uF7E5\u0000\uF7E3" + //  8915 -  8919
-                "\u8EA2\uE4C1\u0000\uF7E6\u8EA2\uE4BF\u0000\u0000\u8EA2\uE7E6" + //  8920 -  8924
-                "\u0000\uF7E2\u0000\uF9C5\u0000\u0000\u8EA2\uF0DB\u0000\u0000" + //  8925 -  8929
-                "\u0000\u0000\u0000\uCFE4\u0000\uDDFC\u0000\uDDFB\u0000\u0000" + //  8930 -  8934
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE2F7\u8EA2\uC1CD" + //  8935 -  8939
-                "\u8EA2\uC1CC\u0000\uE2F8\u0000\u0000\u0000\u0000\u8EA2\uC8DF" + //  8940 -  8944
-                "\u0000\uE7DB\u0000\uE7D8\u8EA2\uC8DE\u0000\uE7DA\u8EA2\uC8DC" + //  8945 -  8949
-                "\u0000\uE7D9\u0000\u0000\u8EA2\uC8DD\u0000\u0000\u8EA2\uCFA5" + //  8950 -  8954
-                "\u8EA2\uC1C8\u0000\u0000\u0000\u0000\u8EA2\uC1C7\u0000\uE2F1" + //  8955 -  8959
-                "\u0000\uE2ED\u0000\uE2EE\u8EA2\uC1C3\u8EA2\uC1C5\u8EA2\uC1C6" + //  8960 -  8964
-                "\u0000\uE2E9\u0000\uE2EB\u0000\u0000\u0000\uE2EF\u0000\uE2EA" + //  8965 -  8969
-                "\u0000\u0000\u0000\u0000\u8EA2\uC8D9\u8EA2\uC8D7\u8EA2\uC8D8" + //  8970 -  8974
-                "\u0000\uE7D2\u0000\uE7D3\u0000\u0000\u8EA2\uC8DA\u0000\uE7D1" + //  8975 -  8979
-                "\u0000\uEBE1\u0000\u0000\u0000\uEBE3\u0000\uEBE2\u0000\u0000" + //  8980 -  8984
-                "\u8EA2\uCFA3\u0000\u0000\u0000\u0000\u8EA2\uCFA4\u8EA2\uD5D4" + //  8985 -  8989
-                "\u0000\u0000\u8EA2\uD5D3\u0000\u0000\u0000\u0000\u0000\uF2F0" + //  8990 -  8994
-                "\u0000\uF2F1\u8EA2\uDBDB\u0000\uF2F2\u0000\u0000\u8EA2\uE0C3" + //  8995 -  8999
-                "\u0000\u0000\u8EA2\uE0C1\u0000\u0000\u8EA2\uE0C2\u0000\uF6A1" + //  9000 -  9004
-                "\u0000\u0000\u8EA2\uE4BB\u0000\uF9C4\u0000\u0000\u0000\uA8EC" + //  9005 -  9009
-                "\u0000\u0000\u0000\uF6A2\u0000\uCFE3\u0000\u0000\u0000\uD8E9" + //  9010 -  9014
-                "\u8EA2\uB3CA\u0000\u0000\u0000\u0000\u8EA2\uBAB0\u0000\uCFDE" + //  9015 -  9019
-                "\u0000\u0000\u0000\uCFE2\u8EA2\uA8FC\u0000\uCFE1\u0000\u0000" + //  9020 -  9024
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uADE7" + //  9025 -  9029
-                "\u0000\uD3EF\u0000\uD3F0\u0000\uD3F1\u8EA2\uADE8\u8EA2\uADE4" + //  9030 -  9034
-                "\u0000\uD3EE\u8EA2\uADE5\u0000\u0000\u8EA2\uADE6\u8EA2\uADE3" + //  9035 -  9039
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD8E7\u0000\u0000" + //  9040 -  9044
-                "\u0000\u0000\u0000\uD8E4\u8EA2\uB3C8\u0000\uD8E5\u0000\uD8E8" + //  9045 -  9049
-                "\u8EA2\uB3C9\u0000\u0000\u0000\uD8E3\u0000\uD8E1\u0000\uD8E2" + //  9050 -  9054
-                "\u0000\uD8E6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9055 -  9059
-                "\u0000\u0000\u0000\uDDF1\u8EA2\uBAAD\u0000\uDDF9\u8EA2\uBAAC" + //  9060 -  9064
-                "\u0000\u0000\u8EA2\uBAAF\u0000\uDDF5\u8EA2\uBAAE\u0000\uE2F0" + //  9065 -  9069
-                "\u0000\uDDF3\u0000\uDDF6\u0000\uDDF2\u0000\uDDF7\u0000\uDDF8" + //  9070 -  9074
-                "\u0000\uDDF4\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBAAB" + //  9075 -  9079
-                "\u0000\uE2EC\u8EA2\uC1C4\u0000\u0000\u0000\uA3B9\u8EAD\uA4A4" + //  9080 -  9084
-                "\u0000\uA3BA\u8EAD\uA4A5\u0000\u0000\u0000\u0000\u0000\u0000" + //  9085 -  9089
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9090 -  9094
-                "\u0000\uA3BC\u0000\u0000\u0000\u0000\u8EAD\uA4A6\u0000\uA3BD" + //  9095 -  9099
-                "\u0000\u0000\u0000\u0000\u8EAD\uA4A7\u0000\uA3BE\u0000\u0000" + //  9100 -  9104
-                "\u0000\u0000\u8EAD\uA4A9\u0000\uA3BF\u0000\u0000\u0000\u0000" + //  9105 -  9109
-                "\u8EAD\uA4A8\u0000\uA3B7\u8EAD\uA4B4\u0000\u0000\u0000\u0000" + //  9110 -  9114
-                "\u8EAD\uA4AF\u0000\u0000\u0000\u0000\u8EAD\uA4AA\u0000\uA3B6" + //  9115 -  9119
-                "\u8EAD\uA4B6\u0000\u0000\u0000\u0000\u8EAD\uA4B1\u0000\u0000" + //  9120 -  9124
-                "\u0000\u0000\u8EAD\uA4AC\u0000\uA3B5\u0000\u0000\u0000\u0000" + //  9125 -  9129
-                "\u8EAD\uA4B0\u8EAD\uA4B5\u0000\u0000\u0000\u0000\u8EAD\uA4AB" + //  9130 -  9134
-                "\u0000\uA3B4\u0000\u0000\u0000\u0000\u8EAD\uA4B2\u8EAD\uA4B7" + //  9135 -  9139
-                "\u0000\u0000\u0000\u0000\u8EAD\uA4AD\u0000\uA3B3\u0000\u0000" + //  9140 -  9144
-                "\u0000\u0000\u8EAD\uA4B3\u8EA2\uE0BC\u0000\u0000\u0000\u0000" + //  9145 -  9149
-                "\u8EA2\uE0BE\u0000\u0000\u8EA2\uE0BF\u0000\uF5FE\u8EA2\uE0BB" + //  9150 -  9154
-                "\u0000\uF5FD\u8EA2\uE0BD\u0000\uF5FA\u0000\uF5FB\u0000\uF5FC" + //  9155 -  9159
-                "\u8EA2\uDBD3\u0000\u0000\u0000\u0000\u0000\uF7E0\u8EA2\uE4BA" + //  9160 -  9164
-                "\u8EA2\uE4B8\u8EA2\uE4B9\u0000\uF7DE\u0000\uF7E1\u0000\uF7DF" + //  9165 -  9169
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE7E4\u8EA2\uE7E5" + //  9170 -  9174
-                "\u0000\uF9C3\u0000\u0000\u8EA2\uEAD3\u8EA2\uEAD5\u8EA2\uEAD4" + //  9175 -  9179
-                "\u0000\uFACF\u0000\uFBBC\u8EA2\uECDB\u8EA2\uECDA\u8EA2\uECD9" + //  9180 -  9184
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9185 -  9189
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9190 -  9194
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9195 -  9199
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9200 -  9204
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9205 -  9209
-                "\u0000\u0000\u0000\uA2BD\u0000\u0000\u0000\u0000\u0000\u0000" + //  9210 -  9214
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9215 -  9219
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9220 -  9224
-                "\u0000\uA2BB\u0000\uA2BE\u0000\u0000\u0000\u0000\u0000\u0000" + //  9225 -  9229
-                "\u0000\u0000\u0000\uA2B9\u0000\uA2BA\u0000\u0000\u0000\u0000" + //  9230 -  9234
-                "\u8EAD\uA1C5\u8EAD\uA1C6\u0000\u0000\u0000\u0000\u0000\u0000" + //  9235 -  9239
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9240 -  9244
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9245 -  9249
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9250 -  9254
-                "\u0000\u0000\u0000\u0000\u0000\uA2D8\u0000\uA2D5\u0000\uA2D7" + //  9255 -  9259
-                "\u0000\uA2D6\u0000\u0000\u0000\u0000\u0000\uA2D9\u0000\uA2DA" + //  9260 -  9264
-                "\u0000\uA2DC\u0000\uA2DB\u0000\u0000\u0000\u0000\u0000\u0000" + //  9265 -  9269
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9270 -  9274
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9275 -  9279
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9280 -  9284
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9285 -  9289
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9290 -  9294
-                "\u0000\u0000\u0000\u0000\u8EAD\uA4BE\u8EAD\uA4BF\u0000\u0000" + //  9295 -  9299
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9300 -  9304
-                "\u0000\uA2F7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9305 -  9309
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9310 -  9314
-                "\u0000\uA2F3\u0000\u0000\u0000\u0000\u0000\uA2CC\u0000\uA2CB" + //  9315 -  9319
-                "\u0000\u0000\u0000\u0000\u0000\uA2EF\u0000\u0000\u0000\u0000" + //  9320 -  9324
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9325 -  9329
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9330 -  9334
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9335 -  9339
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9340 -  9344
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9345 -  9349
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9350 -  9354
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9355 -  9359
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9360 -  9364
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9365 -  9369
-                "\u0000\u0000\u0000\uA1AB\u0000\uA1B6\u0000\uA1B8\u0000\uA1BA" + //  9370 -  9374
-                "\u0000\uA1BC\u0000\uA1C0\u0000\uA1C1\u0000\uA1C4\u0000\uA1C5" + //  9375 -  9379
-                "\u0000\uA1C8\u0000\uA1C9\u0000\uA1CC\u0000\uA1CD\u0000\uA1D0" + //  9380 -  9384
-                "\u0000\uA1D1\u0000\uA1D4\u0000\uCFDC\u0000\u0000\u0000\uD3ED" + //  9385 -  9389
-                "\u0000\uD8E0\u0000\u0000\u0000\u0000\u8EA2\uBAA9\u0000\u0000" + //  9390 -  9394
-                "\u8EA2\uBAAA\u0000\uDDF0\u0000\u0000\u0000\uE2E4\u8EA2\uC1C1" + //  9395 -  9399
-                "\u8EA2\uC1C0\u0000\uE2E8\u0000\uE2E3\u8EA2\uC1C2\u0000\uE2E5" + //  9400 -  9404
-                "\u0000\uE2E7\u0000\uE2E6\u0000\uE2E2\u0000\u0000\u0000\u0000" + //  9405 -  9409
-                "\u0000\u0000\u0000\uE7D0\u0000\u0000\u0000\u0000\u8EA2\uC8D6" + //  9410 -  9414
-                "\u8EA2\uC8D4\u0000\u0000\u8EA2\uC8D5\u8EA2\uC8D3\u0000\u0000" + //  9415 -  9419
-                "\u0000\uEBDB\u0000\u0000\u0000\uEBDE\u0000\uEBE0\u0000\uEBDF" + //  9420 -  9424
-                "\u0000\u0000\u0000\u0000\u0000\uEBDC\u0000\uEBDD\u0000\u0000" + //  9425 -  9429
-                "\u8EA2\uD5D0\u8EA2\uD5CF\u0000\uEFE4\u8EA2\uD5D1\u0000\u0000" + //  9430 -  9434
-                "\u8EA2\uD5D2\u0000\uEFE5\u0000\u0000\u0000\u0000\u0000\u0000" + //  9435 -  9439
-                "\u8EA2\uDBD9\u8EA2\uDBD7\u8EA2\uE0C0\u0000\u0000\u8EA2\uDBD5" + //  9440 -  9444
-                "\u8EA2\uDBD6\u0000\uF2EF\u8EA2\uDBD2\u8EA2\uDBDA\u8EA2\uDBD4" + //  9445 -  9449
-                "\u8EA2\uDBD8\u8EA2\uF2B0\u8EA2\uF2B1\u8EA2\uF2AF\u8EA2\uF2B7" + //  9450 -  9454
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9455 -  9459
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9460 -  9464
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9465 -  9469
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9470 -  9474
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9475 -  9479
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9480 -  9484
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9485 -  9489
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9490 -  9494
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9495 -  9499
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9500 -  9504
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9505 -  9509
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9510 -  9514
-                "\u8EAD\uA1A9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9515 -  9519
-                "\u0000\u0000\u8EA2\uA1BA\u0000\u0000\u0000\u0000\u8EA2\uA3D0" + //  9520 -  9524
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA7C2\u0000\u0000" + //  9525 -  9529
-                "\u8EA2\uA6A3\u8EA2\uA9E1\u8EA2\uAEDB\u0000\uD4EE\u0000\u0000" + //  9530 -  9534
-                "\u0000\u0000\u8EA2\uE5C5\u0000\u0000\u0000\uFAE7\u0000\uC4CA" + //  9535 -  9539
-                "\u0000\uC6C0\u8EA2\uA1D1\u0000\u0000\u0000\uC7E8\u0000\uC7E9" + //  9540 -  9544
-                "\u0000\u0000\u0000\uCCDF\u0000\u0000\u0000\u0000\u0000\u0000" + //  9545 -  9549
-                "\u0000\uD9DC\u0000\u0000\u0000\uE8C2\u0000\u0000\u0000\uE8C3" + //  9550 -  9554
-                "\u0000\uE8C1\u0000\u0000\u0000\uC4CB\u0000\u0000\u0000\uC5B2" + //  9555 -  9559
-                "\u0000\uC5B4\u0000\uC5B3\u8EA2\uA1BB\u0000\uC5B5\u0000\uC6C1" + //  9560 -  9564
-                "\u8EA2\uA1D2\u0000\u0000\u0000\uC6C2\u0000\u0000\u0000\u0000" + //  9565 -  9569
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC7EA\u0000\uC7EB" + //  9570 -  9574
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA2AB\u0000\u0000" + //  9575 -  9579
-                "\u0000\uC9E8\u0000\u0000\u0000\uC2A1\u0000\uC2A2\u0000\uC2A3" + //  9580 -  9584
-                "\u0000\uC2A4\u0000\uC2A5\u0000\uC2A6\u0000\uC2A7\u0000\uC2A8" + //  9585 -  9589
-                "\u0000\uC2A9\u0000\uC2AA\u0000\uC2AB\u0000\uC2AC\u0000\uC2AD" + //  9590 -  9594
-                "\u0000\uC2AE\u0000\uC2AF\u0000\uC2B0\u0000\uC2B1\u0000\uC2B2" + //  9595 -  9599
-                "\u0000\uC2B3\u0000\uC2B4\u0000\uC2B5\u0000\uC2B6\u0000\uC2B7" + //  9600 -  9604
-                "\u0000\uC2B8\u0000\uC2B9\u0000\uC2BA\u0000\uC2BB\u0000\uC2BC" + //  9605 -  9609
-                "\u0000\uC2BD\u0000\uC2BE\u0000\uC2BF\u0000\uC2C0\u0000\u0000" + //  9610 -  9614
-                "\u0000\uC2C1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9615 -  9619
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9620 -  9624
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9625 -  9629
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9630 -  9634
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9635 -  9639
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9640 -  9644
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA6A1\u0000\uA6A2" + //  9645 -  9649
-                "\u0000\uA6A3\u0000\uA6A4\u0000\uA6A5\u0000\uA6A6\u0000\uA6A7" + //  9650 -  9654
-                "\u0000\uA6A8\u0000\uA6A9\u0000\uA6AA\u0000\u0000\u0000\u0000" + //  9655 -  9659
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9660 -  9664
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA6AB\u0000\uA6AC" + //  9665 -  9669
-                "\u0000\uA6AD\u0000\uA6AE\u0000\uA6AF\u0000\uA6B0\u0000\uA6B1" + //  9670 -  9674
-                "\u0000\uA6B2\u0000\uA6B3\u0000\uA6B4\u0000\u0000\u0000\u0000" + //  9675 -  9679
-                "\u8EA2\uCCE4\u0000\u0000\u0000\uEAB1\u8EA2\uCCDF\u0000\u0000" + //  9680 -  9684
-                "\u0000\uEAB0\u8EA2\uCCD5\u0000\u0000\u8EA2\uCCD7\u0000\uEAA9" + //  9685 -  9689
-                "\u8EA2\uCCDC\u8EA2\uCCDB\u8EA2\uCCDE\u0000\uEAAE\u8EA2\uCCD9" + //  9690 -  9694
-                "\u8EA2\uCCD8\u0000\u0000\u0000\u0000\u0000\uEAAD\u0000\uEAA8" + //  9695 -  9699
-                "\u8EA2\uCCDA\u0000\uEAAB\u8EA2\uCCE0\u8EA2\uCCE2\u0000\u0000" + //  9700 -  9704
-                "\u8EA2\uCCDD\u8EA2\uCCD6\u0000\uEAAC\u0000\u0000\u0000\u0000" + //  9705 -  9709
-                "\u0000\uEEB4\u0000\uEAA7\u0000\u0000\u0000\u0000\u8EA2\uCCE3" + //  9710 -  9714
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9715 -  9719
-                "\u0000\u0000\u0000\u0000\u8EA2\uD2E1\u0000\uEEAD\u0000\u0000" + //  9720 -  9724
-                "\u8EA2\uD2E3\u0000\u0000\u0000\uEEAE\u0000\u0000\u0000\u0000" + //  9725 -  9729
-                "\u0000\uEEB0\u8EA2\uD2E6\u0000\u0000\u8EA2\uD2DE\u0000\uEAAF" + //  9730 -  9734
-                "\u8EA2\uD2E4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9735 -  9739
-                "\u8EA2\uD2E0\u0000\u0000\u0000\uF0DF\u0000\uF0E6\u8EA2\uD7B6" + //  9740 -  9744
-                "\u0000\uF0E4\u0000\uF0DE\u0000\u0000\u0000\uF0E5\u0000\u0000" + //  9745 -  9749
-                "\u8EA2\uD7B3\u0000\uF3E4\u0000\uF0E0\u0000\u0000\u0000\uF0E7" + //  9750 -  9754
-                "\u0000\uF3E3\u8EA2\uD7B2\u8EA2\uD7B1\u0000\u0000\u0000\uF0E9" + //  9755 -  9759
-                "\u0000\u0000\u0000\uF0EA\u0000\u0000\u8EA2\uD7B0\u8EA2\uD7AF" + //  9760 -  9764
-                "\u0000\uF3E5\u8EA2\uD7B9\u0000\uF0E3\u8EA2\uD7B7\u0000\u0000" + //  9765 -  9769
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF3E6\u0000\u0000" + //  9770 -  9774
-                "\u0000\uF3EB\u8EA2\uDCF5\u8EA2\uDCF7\u0000\u0000\u0000\uF3E8" + //  9775 -  9779
-                "\u0000\u0000\u8EA2\uDCF8\u8EA2\uDCF4\u0000\u0000\u8EA2\uDCF6" + //  9780 -  9784
-                "\u0000\uF3E9\u0000\uF3EC\u0000\u0000\u8EA2\uDCF3\u0000\uF3E7" + //  9785 -  9789
-                "\u0000\uF3EA\u0000\uF6C5\u8EA2\uD7B8\u0000\uF6C4\u0000\u0000" + //  9790 -  9794
-                "\u0000\u0000\u0000\uF6CA\u8EA2\uE1E0\u0000\u0000\u0000\uF6C8" + //  9795 -  9799
-                "\u0000\uF6C9\u8EA2\uE1E3\u8EA2\uE1DF\u0000\uF6C6\u8EA2\uE1DD" + //  9800 -  9804
-                "\u8EA2\uECD7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBFB" + //  9805 -  9809
-                "\u8EA2\uEEBC\u8EA2\uEEBF\u8EA2\uEEBB\u8EA2\uEEBD\u8EA2\uEEBE" + //  9810 -  9814
-                "\u8EA2\uEEB8\u8EA2\uEEB9\u8EA2\uEEB6\u0000\u0000\u0000\u0000" + //  9815 -  9819
-                "\u8EA2\uEEBA\u8EA2\uEEB7\u0000\uFBFC\u0000\uFBFD\u0000\u0000" + //  9820 -  9824
-                "\u0000\u0000\u8EA2\uEFD9\u0000\u0000\u8EA2\uEFDB\u0000\u0000" + //  9825 -  9829
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEFDA" + //  9830 -  9834
-                "\u8EA2\uEFDC\u0000\u0000\u0000\uFCCC\u0000\u0000\u8EA2\uEFD8" + //  9835 -  9839
-                "\u0000\uFCCB\u0000\uFCCD\u0000\u0000\u0000\u0000\u0000\u0000" + //  9840 -  9844
-                "\u8EA2\uF0D9\u8EA2\uF0DA\u0000\uFCEF\u8EA2\uF0D8\u0000\u0000" + //  9845 -  9849
-                "\u8EA2\uF1C2\u8EA2\uF1C1\u8EA2\uF1C3\u0000\uFDAC\u8EA2\uF1C4" + //  9850 -  9854
-                "\u0000\uFDAB\u8EA2\uF1C5\u8EA2\uF1E1\u8EA2\uF1E4\u8EA2\uF1E3" + //  9855 -  9859
-                "\u0000\uFDB5\u8EA2\uF1E2\u0000\u0000\u0000\u0000\u0000\u0000" + //  9860 -  9864
-                "\u0000\uFDBF\u0000\uFDBD\u0000\uFDBE\u0000\uFDC4\u8EA2\uEAC2" + //  9865 -  9869
-                "\u0000\u0000\u0000\u0000\u0000\uFACD\u0000\u0000\u0000\u0000" + //  9870 -  9874
-                "\u8EA2\uEAD2\u8EA2\uEAC4\u0000\u0000\u8EA2\uEAC9\u8EA2\uEACC" + //  9875 -  9879
-                "\u8EA2\uEAB5\u8EA2\uEACF\u8EA2\uEAC0\u8EA2\uEAC5\u8EA2\uEAB9" + //  9880 -  9884
-                "\u8EA2\uEABD\u8EA2\uEAD1\u8EA2\uEAC7\u8EA2\uEAB6\u8EA2\uEABA" + //  9885 -  9889
-                "\u8EA2\uEABC\u8EA2\uEAC6\u0000\u0000\u0000\uFACC\u8EA2\uEABF" + //  9890 -  9894
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9895 -  9899
-                "\u0000\u0000\u8EA2\uEAB8\u0000\u0000\u0000\u0000\u0000\u0000" + //  9900 -  9904
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEABE" + //  9905 -  9909
-                "\u8EA2\uECD0\u8EA2\uECD4\u0000\uFBBB\u8EA2\uECD6\u0000\u0000" + //  9910 -  9914
-                "\u0000\uFBB5\u0000\u0000\u8EA2\uECD2\u8EA2\uECD8\u0000\uFBBA" + //  9915 -  9919
-                "\u0000\uFBB6\u0000\u0000\u0000\uFBB7\u8EA2\uECCF\u8EA2\uECD5" + //  9920 -  9924
-                "\u0000\uFBB9\u8EA2\uECD3\u0000\uFBB8\u8EA2\uECCE\u8EA2\uEACB" + //  9925 -  9929
-                "\u8EA2\uECD1\u0000\u0000\u8EA2\uECCD\u8EA2\uE7DF\u0000\u0000" + //  9930 -  9934
-                "\u8EA2\uE7CF\u0000\uF9B8\u8EA2\uE7DD\u0000\u0000\u0000\u0000" + //  9935 -  9939
-                "\u8EA2\uE7CD\u0000\uF9B9\u0000\u0000\u8EA2\uE7D8\u0000\u0000" + //  9940 -  9944
-                "\u8EA2\uE7D4\u0000\uF9BE\u8EA2\uE7DE\u8EA2\uE7CE\u8EA2\uE7D1" + //  9945 -  9949
-                "\u0000\uF9B6\u8EA2\uE7E0\u0000\u0000\u8EA2\uE7D9\u8EA2\uE7DC" + //  9950 -  9954
-                "\u0000\uF9BC\u0000\uF9C1\u0000\uF9BF\u8EA2\uE7D5\u8EA2\uE7D0" + //  9955 -  9959
-                "\u0000\u0000\u0000\uF9BA\u0000\uF9BB\u8EA2\uE7CC\u0000\uF9B7" + //  9960 -  9964
-                "\u0000\u0000\u0000\uF9B5\u0000\uF9BD\u8EA2\uE7DB\u0000\uF9C0" + //  9965 -  9969
-                "\u0000\u0000\u8EA2\uE7D7\u8EA2\uE7E2\u0000\uF9C2\u0000\u0000" + //  9970 -  9974
-                "\u0000\u0000\u0000\u0000\u8EA2\uE7D3\u0000\u0000\u8EA2\uE7DA" + //  9975 -  9979
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9980 -  9984
-                "\u0000\u0000\u8EA2\uEAC1\u8EA2\uEAD0\u8EA2\uEAC3\u8EA2\uEACA" + //  9985 -  9989
-                "\u8EA2\uE7D2\u8EA2\uEAC8\u8EA2\uEAB7\u8EA2\uEACE\u0000\uFACE" + //  9990 -  9994
-                "\u8EA2\uEABB\u8EA2\uEACD\u8EA2\uE4AF\u0000\u0000\u0000\uF5ED" + //  9995 -  9999
-                "\u8EA2\uDFFA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10000 - 10004
-                "\u8EA2\uE4AC\u8EA2\uE4A5\u0000\uF7D4\u0000\u0000\u8EA2\uE3FE" + // 10005 - 10009
-                "\u8EA2\uE4B0\u8EA2\uE4A7\u8EA2\uE0AA\u0000\u0000\u8EA2\uE4B2" + // 10010 - 10014
-                "\u8EA2\uE4A1\u0000\u0000\u0000\uF7D3\u8EA2\uE4AB\u0000\uF7D5" + // 10015 - 10019
-                "\u0000\uF7DD\u0000\uF7DB\u8EA2\uE4AD\u0000\uF7DC\u8EA2\uE4A3" + // 10020 - 10024
-                "\u0000\u0000\u8EA2\uE4A4\u8EA2\uE4A9\u8EA2\uE4AE\u0000\u0000" + // 10025 - 10029
-                "\u8EA2\uDFF9\u0000\uF7D6\u8EA2\uE4B7\u8EA2\uE4B4\u8EA2\uE7E1" + // 10030 - 10034
-                "\u8EA2\uE4AA\u8EA2\uE4A6\u8EA2\uE4B5\u8EA2\uE7D6\u8EA2\uE4A8" + // 10035 - 10039
-                "\u0000\u0000\u0000\uF7D9\u0000\u0000\u0000\uF7D8\u8EA2\uDFFB" + // 10040 - 10044
-                "\u0000\uF7DA\u8EA2\uE4B1\u8EA2\uE4B3\u0000\uF7D7\u8EA2\uE4B6" + // 10045 - 10049
-                "\u8EA2\uE3FD\u0000\u0000\u8EA2\uE4A2\u0000\u0000\u0000\u0000" + // 10050 - 10054
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10055 - 10059
-                "\u0000\u0000\u8EA2\uDBB8\u8EA2\uDFFE\u0000\u0000\u8EA2\uE0A5" + // 10060 - 10064
-                "\u0000\uF5F0\u0000\uF5F2\u8EA2\uE0AB\u0000\uF5EC\u8EA2\uE0B9" + // 10065 - 10069
-                "\u8EA2\uE0B1\u8EA2\uE0A6\u8EA2\uE0A7\u8EA2\uE0B0\u0000\u0000" + // 10070 - 10074
-                "\u0000\uF5F9\u8EA2\uE0AF\u8EA2\uDFFD\u8EA2\uE0AE\u8EA2\uE0A2" + // 10075 - 10079
-                "\u8EA2\uE0BA\u0000\uF5F8\u0000\uF5F6\u8EA2\uE0A3\u0000\u0000" + // 10080 - 10084
-                "\u8EA2\uE0B6\u0000\u0000\u8EA2\uE0A8\u8EA2\uE0B5\u0000\u0000" + // 10085 - 10089
-                "\u8EA2\uE0B7\u8EA2\uDFFC\u0000\uF5F1\u0000\u0000\u8EA2\uE0B8" + // 10090 - 10094
-                "\u0000\u0000\u0000\u0000\u8EA2\uE0AC\u0000\u0000\u0000\uF5F5" + // 10095 - 10099
-                "\u8EA2\uE0A9\u0000\u0000\u0000\u0000\u0000\uF5F7\u8EA2\uE0B2" + // 10100 - 10104
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF5EF\u8EA2\uE0A4" + // 10105 - 10109
-                "\u8EA2\uE0B3\u0000\u0000\u8EA2\uE0AD\u8EA2\uDBB1\u8EA2\uE0B4" + // 10110 - 10114
-                "\u8EA2\uE0A1\u0000\u0000\u0000\uF5F4\u0000\u0000\u8EAD\uA1C0" + // 10115 - 10119
-                "\u0000\u0000\u8EAD\uA1C3\u8EAD\uA1C1\u0000\u0000\u0000\u0000" + // 10120 - 10124
-                "\u0000\u0000\u8EAD\uA1C4\u8EAD\uA1B6\u0000\u0000\u0000\u0000" + // 10125 - 10129
-                "\u8EAD\uA1B7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10130 - 10134
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10135 - 10139
-                "\u0000\uA2E1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10140 - 10144
-                "\u0000\uA2B5\u0000\u0000\u0000\u0000\u8EAD\uA1C8\u0000\uA2BC" + // 10145 - 10149
-                "\u0000\uA2C9\u0000\uA2C8\u0000\u0000\u0000\u0000\u0000\u0000" + // 10150 - 10154
-                "\u0000\u0000\u0000\uA2DD\u0000\u0000\u8EAD\uA1BC\u8EAD\uA1BD" + // 10155 - 10159
-                "\u0000\uA2C5\u0000\uA2C6\u0000\uA2CD\u8EAD\uA1C9\u0000\u0000" + // 10160 - 10164
-                "\u0000\uA2CE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10165 - 10169
-                "\u0000\u0000\u0000\uA2D0\u0000\uA2CF\u0000\u0000\u0000\u0000" + // 10170 - 10174
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2C4" + // 10175 - 10179
-                "\u8EAD\uA1C7\u0000\u0000\u0000\u0000\u8EA2\uE2C1\u0000\u0000" + // 10180 - 10184
-                "\u8EA2\uE6A7\u0000\u0000\u0000\u0000\u0000\uF8D4\u0000\u0000" + // 10185 - 10189
-                "\u8EA2\uE6A5\u8EA2\uE6A6\u0000\u0000\u8EA2\uE9C3\u8EA2\uE9C6" + // 10190 - 10194
-                "\u8EA2\uE9C4\u8EA2\uE9C5\u8EA2\uEBEE\u0000\u0000\u0000\u0000" + // 10195 - 10199
-                "\u0000\uFAFA\u8EA2\uEFBA\u8EA2\uF0C2\u0000\u0000\u0000\uFCE3" + // 10200 - 10204
-                "\u8EA2\uF1A8\u8EA2\uF1A9\u0000\uFDB3\u0000\uC6F9\u0000\uD2E4" + // 10205 - 10209
-                "\u0000\u0000\u8EA2\uBEC7\u0000\u0000\u8EA2\uC5C9\u0000\u0000" + // 10210 - 10214
-                "\u0000\uC6FA\u0000\uCBB2\u0000\u0000\u0000\uCFA1\u0000\u0000" + // 10215 - 10219
-                "\u8EA2\uACCA\u8EA2\uACCB\u0000\uD6FB\u0000\u0000\u0000\u0000" + // 10220 - 10224
-                "\u8EA2\uBEC8\u0000\uE0FB\u0000\uE5CE\u0000\uF4CC\u8EA2\uDDEE" + // 10225 - 10229
-                "\u8EA2\uE6A8\u8EA2\uE9C7\u0000\uC6FB\u0000\u0000\u0000\u0000" + // 10230 - 10234
-                "\u0000\u0000\u8EA2\uA8C1\u8EA2\uA8BC\u8EA2\uA8BE\u8EA2\uA8C0" + // 10235 - 10239
-                "\u8EA2\uA8BF\u8EA2\uA8BD\u0000\uCFA2\u0000\u0000\u0000\u0000" + // 10240 - 10244
-                "\u0000\uD2E5\u8EA2\uACD4\u0000\u0000\u8EA2\uACCF\u8EA2\uACCC" + // 10245 - 10249
-                "\u0000\u0000\u0000\u0000\u8EA2\uACD3\u0000\u0000\u0000\u0000" + // 10250 - 10254
-                "\u0000\uD2E7\u0000\uD2E8\u8EA2\uACD2\u8EA2\uACD1\u8EA2\uACD0" + // 10255 - 10259
-                "\u8EA2\uACCD\u8EA2\uACCE\u8EA2\uACD5\u0000\uD2E6\u0000\u0000" + // 10260 - 10264
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10265 - 10269
-                "\u0000\u0000\u0000\u0000\u0000\uD7A1\u0000\u0000\u0000\uD7A7" + // 10270 - 10274
-                "\u0000\uD7A6\u8EA2\uB1C4\u8EA2\uB1BE\u8EA2\uB1BC\u0000\u0000" + // 10275 - 10279
-                "\u0000\uD7A4\u8EA2\uB7DC\u0000\uD6FD\u8EA2\uB1C1\u8EA2\uB1C5" + // 10280 - 10284
-                "\u8EA2\uB1C7\u8EA2\uB1C3\u8EA2\uB1BD\u0000\uD7A5\u8EA2\uB1C2" + // 10285 - 10289
-                "\u8EA2\uB1C0\u0000\uD6FC\u8EA2\uB1C8\u0000\uD7A8\u8EA2\uB1C6" + // 10290 - 10294
-                "\u0000\uD7A2\u8EA2\uB1BF\u0000\u0000\u0000\uD7A3\u0000\uD6FE" + // 10295 - 10299
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10300 - 10304
-                "\u0000\u0000\u0000\u0000\u0000\uA5C7\u0000\uA5C8\u0000\uA5C9" + // 10305 - 10309
-                "\u0000\uA5CA\u0000\uA5CB\u0000\uA5CC\u0000\uA5CD\u0000\uA5CE" + // 10310 - 10314
-                "\u0000\uA5CF\u0000\uA5D0\u0000\uA5D1\u0000\uA5D2\u0000\uA5D3" + // 10315 - 10319
-                "\u0000\uA5D4\u0000\uA5D5\u0000\uA5D6\u0000\uA5D7\u0000\uA5D8" + // 10320 - 10324
-                "\u0000\uA5D9\u0000\uA5DA\u0000\uA5DB\u0000\uA5DC\u0000\uA5DD" + // 10325 - 10329
-                "\u0000\uA5DE\u0000\uA5DF\u0000\uA5E0\u0000\uA5E1\u0000\uA5E2" + // 10330 - 10334
-                "\u0000\uA5E3\u0000\uA5E4\u0000\uA5E5\u0000\uA5E6\u0000\uA5E7" + // 10335 - 10339
-                "\u0000\uA5E8\u0000\uA5E9\u0000\uA5EA\u0000\uA5EB\u0000\u0000" + // 10340 - 10344
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10345 - 10349
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10350 - 10354
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10355 - 10359
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10360 - 10364
-                "\u0000\u0000\u0000\uA4F5\u0000\uA4F6\u0000\uA4F7\u0000\uA4F8" + // 10365 - 10369
-                "\u0000\uA4F9\u0000\uA4FA\u0000\uA4FB\u0000\uA4FC\u0000\uA4FD" + // 10370 - 10374
-                "\u0000\uA4FE\u0000\uA5A1\u0000\uA5A2\u0000\uA5A3\u0000\uA5A4" + // 10375 - 10379
-                "\u0000\uA5A5\u0000\uA5A6\u0000\uA5A7\u0000\u0000\u0000\uA5A8" + // 10380 - 10384
-                "\u0000\uA5A9\u0000\uA5AA\u0000\uA5AB\u0000\uA5AC\u0000\uA5AD" + // 10385 - 10389
-                "\u0000\uA5AE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10390 - 10394
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA5AF\u0000\uA5B0" + // 10395 - 10399
-                "\u0000\uA5B1\u0000\uA5B2\u0000\uA5B3\u0000\uA5B4\u0000\uA5B5" + // 10400 - 10404
-                "\u0000\uA5B6\u0000\uA5B7\u0000\uA5B8\u0000\uA5B9\u0000\uA5BA" + // 10405 - 10409
-                "\u0000\uA5BB\u0000\uA5BC\u0000\uA5BD\u8EA2\uDBCF\u8EA2\uDBB7" + // 10410 - 10414
-                "\u8EA2\uDBC3\u0000\u0000\u0000\uF2E7\u0000\u0000\u8EA2\uDBAF" + // 10415 - 10419
-                "\u0000\u0000\u8EA2\uDBAD\u8EA2\uDBCE\u0000\u0000\u8EA2\uDBCC" + // 10420 - 10424
-                "\u8EA2\uDBCB\u8EA2\uDBBB\u8EA2\uDBBA\u8EA2\uDBB0\u0000\uF2E9" + // 10425 - 10429
-                "\u0000\u0000\u8EA2\uDBB6\u8EA2\uDBBF\u8EA2\uDBCA\u0000\uF2EC" + // 10430 - 10434
-                "\u8EA2\uDBD1\u0000\u0000\u0000\uF5F3\u0000\uF2EE\u0000\uF2E8" + // 10435 - 10439
-                "\u8EA2\uDBB4\u0000\u0000\u8EA2\uDBBD\u8EA2\uDBAC\u8EA2\uDBAE" + // 10440 - 10444
-                "\u0000\uF2DF\u0000\uF2EB\u0000\uF2E4\u8EA2\uDBB5\u8EA2\uDBC4" + // 10445 - 10449
-                "\u8EA2\uD5CB\u0000\uF2EA\u8EA2\uDBAB\u0000\uF5EE\u8EA2\uDBC6" + // 10450 - 10454
-                "\u8EA2\uDBC9\u0000\uF2E6\u0000\u0000\u8EA2\uDBB9\u0000\uF2ED" + // 10455 - 10459
-                "\u0000\uF2E3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF2E2" + // 10460 - 10464
-                "\u8EA2\uDBC2\u8EA2\uDBC8\u0000\uF2E0\u0000\u0000\u8EA2\uDBB2" + // 10465 - 10469
-                "\u8EA2\uDBC7\u0000\u0000\u0000\u0000\u8EA2\uDBB3\u0000\u0000" + // 10470 - 10474
-                "\u0000\u0000\u0000\u0000\u0000\uF4C3\u8EA2\uDDE0\u0000\u0000" + // 10475 - 10479
-                "\u0000\u0000\u0000\uF4C2\u8EA2\uDDE3\u8EA2\uDDE1\u8EA2\uDDE2" + // 10480 - 10484
-                "\u0000\u0000\u0000\u0000\u0000\uF4C4\u0000\u0000\u0000\u0000" + // 10485 - 10489
-                "\u0000\u0000\u8EA2\uE2BA\u0000\u0000\u0000\uF6EB\u8EA2\uE2BB" + // 10490 - 10494
-                "\u0000\u0000\u0000\u0000\u0000\uF6E9\u8EA2\uE2BC\u0000\uF6EA" + // 10495 - 10499
-                "\u8EA2\uE2B9\u8EA2\uE2BD\u0000\u0000\u8EA2\uE2B7\u0000\u0000" + // 10500 - 10504
-                "\u0000\u0000\u0000\uF8D2\u8EA2\uE6A4\u0000\uF8D3\u0000\uF9FA" + // 10505 - 10509
-                "\u0000\u0000\u8EA2\uE2B8\u0000\uF9FB\u0000\u0000\u0000\u0000" + // 10510 - 10514
-                "\u0000\u0000\u0000\uFAF9\u8EA2\uEBED\u0000\u0000\u0000\uFBEA" + // 10515 - 10519
-                "\u8EA2\uEDE2\u0000\uFBE9\u0000\u0000\u8EA2\uEFB9\u0000\uFCE1" + // 10520 - 10524
-                "\u0000\uFCE2\u0000\u0000\u0000\u0000\u8EA2\uF2BA\u0000\uA8AA" + // 10525 - 10529
-                "\u0000\u0000\u0000\uD2D4\u8EA2\uACC0\u0000\u0000\u0000\uE0F4" + // 10530 - 10534
-                "\u0000\uE0F5\u0000\uC6F5\u0000\uC8CB\u8EA2\uA2E7\u8EA2\uD5AF" + // 10535 - 10539
-                "\u0000\uEFDD\u8EA2\uD5BB\u8EA2\uD5AD\u8EA2\uD5AE\u0000\uEFD8" + // 10540 - 10544
-                "\u8EA2\uD5CC\u0000\uEFE1\u8EA2\uD5BE\u8EA2\uD5C3\u8EA2\uD5BD" + // 10545 - 10549
-                "\u8EA2\uDBBC\u8EA2\uD5B9\u8EA2\uD5C1\u8EA2\uD5BF\u8EA2\uD5B2" + // 10550 - 10554
-                "\u8EA2\uD5AC\u8EA2\uD5C7\u0000\uEFE0\u8EA2\uD5C8\u0000\u0000" + // 10555 - 10559
-                "\u8EA2\uD5C2\u0000\u0000\u8EA2\uD5B7\u8EA2\uD5B5\u8EA2\uD5B0" + // 10560 - 10564
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD5B8\u8EA2\uD5C5" + // 10565 - 10569
-                "\u8EA2\uD5B4\u8EA2\uD5C4\u8EA2\uD5CA\u0000\u0000\u0000\u0000" + // 10570 - 10574
-                "\u0000\uEFDC\u0000\u0000\u8EA2\uD5C0\u8EA2\uD5C6\u8EA2\uD5BC" + // 10575 - 10579
-                "\u8EA2\uD5B6\u0000\uEFDB\u0000\u0000\u0000\u0000\u0000\u0000" + // 10580 - 10584
-                "\u8EA2\uCEEE\u8EA2\uD5BA\u0000\uEFE2\u8EA2\uD5B3\u0000\u0000" + // 10585 - 10589
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDBC1" + // 10590 - 10594
-                "\u0000\uF2E1\u8EA2\uDBC0\u8EA2\uDBBE\u8EA2\uDBD0\u0000\uF2E5" + // 10595 - 10599
-                "\u0000\u0000\u8EA2\uDBCD\u8EA2\uDBC5\u0000\uEBD1\u0000\u0000" + // 10600 - 10604
-                "\u8EA2\uCEF0\u8EA2\uC8BC\u0000\u0000\u0000\uEBD2\u8EA2\uCEF7" + // 10605 - 10609
-                "\u8EA2\uCEFC\u8EA2\uCEF4\u0000\u0000\u8EA2\uCEF6\u8EA2\uCFA1" + // 10610 - 10614
-                "\u8EA2\uCEF8\u8EA2\uCEE6\u8EA2\uCEEF\u0000\u0000\u0000\u0000" + // 10615 - 10619
-                "\u0000\uEBDA\u0000\u0000\u0000\uEBD6\u8EA2\uCEE4\u8EA2\uCEF1" + // 10620 - 10624
-                "\u0000\uEBD4\u8EA2\uCEEB\u0000\uEBD3\u8EA2\uCEF9\u8EA2\uCEE8" + // 10625 - 10629
-                "\u8EA2\uCEE1\u0000\uEBD7\u8EA2\uCEFE\u0000\u0000\u0000\u0000" + // 10630 - 10634
-                "\u8EA2\uCEE3\u8EA2\uCEF5\u8EA2\uCEF2\u8EA2\uCEED\u8EA2\uCEDF" + // 10635 - 10639
-                "\u8EA2\uCEDE\u8EA2\uCEE7\u8EA2\uCEFA\u0000\uEBD8\u8EA2\uCEFD" + // 10640 - 10644
-                "\u8EA2\uCEE5\u8EA2\uCEE9\u0000\uEBD0\u0000\u0000\u0000\u0000" + // 10645 - 10649
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEFE3\u0000\uEFDE" + // 10650 - 10654
-                "\u8EA2\uD5CD\u8EA2\uD5C9\u8EA2\uD5B1\u0000\uEFDA\u0000\u0000" + // 10655 - 10659
-                "\u0000\u0000\u0000\u0000\u0000\uEFD9\u0000\uEFDF\u0000\u0000" + // 10660 - 10664
-                "\u0000\u0000\u0000\u0000\u8EA2\uA7F8\u8EA2\uA7FA\u8EA2\uA7F5" + // 10665 - 10669
-                "\u8EA2\uA7F2\u8EA2\uA7F4\u0000\u0000\u0000\u0000\u0000\u0000" + // 10670 - 10674
-                "\u0000\uCEE5\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCEE3" + // 10675 - 10679
-                "\u0000\u0000\u0000\u0000\u8EA2\uA7F6\u0000\uCEE4\u8EA2\uA7F3" + // 10680 - 10684
-                "\u8EA2\uA7F0\u0000\uCEE2\u8EA2\uA7F7\u0000\u0000\u8EA2\uA7F1" + // 10685 - 10689
-                "\u0000\uCEE6\u8EA2\uA7F9\u0000\u0000\u0000\u0000\u0000\u0000" + // 10690 - 10694
-                "\u0000\u0000\u8EA2\uABEF\u0000\u0000\u8EA2\uABF3\u0000\u0000" + // 10695 - 10699
-                "\u0000\u0000\u0000\uD2BA\u0000\u0000\u0000\u0000\u0000\u0000" + // 10700 - 10704
-                "\u0000\u0000\u8EA2\uABF6\u0000\u0000\u0000\uD2B2\u0000\uD2B5" + // 10705 - 10709
-                "\u0000\uD2B7\u0000\uD2B9\u0000\uD2B6\u8EA2\uABF2\u8EA2\uABF1" + // 10710 - 10714
-                "\u0000\u0000\u0000\uD2B4\u8EA2\uABF4\u8EA2\uABF5\u0000\u0000" + // 10715 - 10719
-                "\u8EA2\uABEE\u0000\uD2B8\u0000\u0000\u0000\uD2B3\u0000\u0000" + // 10720 - 10724
-                "\u0000\u0000\u0000\u0000\u8EA2\uABF0\u0000\u0000\u8EAD\uA3F2" + // 10725 - 10729
-                "\u8EAD\uA3F3\u8EAD\uA3F4\u8EAD\uA3F5\u8EAD\uA3F6\u8EAD\uA3F7" + // 10730 - 10734
-                "\u8EAD\uA3F8\u8EAD\uA3F9\u8EAD\uA3FA\u8EAD\uA3FB\u8EAD\uA3FC" + // 10735 - 10739
-                "\u8EAD\uA3FD\u8EAD\uA3FE\u8EAD\uA4A1\u8EAD\uA4A2\u8EAD\uA4A3" + // 10740 - 10744
-                "\u0000\u0000\u8EAD\uA3E7\u0000\u0000\u0000\u0000\u0000\u0000" + // 10745 - 10749
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10750 - 10754
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10755 - 10759
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10760 - 10764
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10765 - 10769
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10770 - 10774
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10775 - 10779
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10780 - 10784
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10785 - 10789
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10790 - 10794
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10795 - 10799
-                "\u0000\uDEA5\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFADB" + // 10800 - 10804
-                "\u8EA2\uEDB7\u0000\u0000\u0000\uFCFB\u0000\uFCFC\u0000\u0000" + // 10805 - 10809
-                "\u0000\uDEA6\u0000\uE7C3\u0000\u0000\u0000\u0000\u0000\u0000" + // 10810 - 10814
-                "\u0000\u0000\u0000\uE7CC\u8EA2\uC8BF\u0000\u0000\u8EA2\uC8B4" + // 10815 - 10819
-                "\u0000\uE7CA\u8EA2\uC8BE\u0000\uE7C6\u8EA2\uC8D0\u0000\uE7CB" + // 10820 - 10824
-                "\u8EA2\uC8CE\u8EA2\uC8C2\u8EA2\uC8CC\u0000\uE7C8\u8EA2\uC8B5" + // 10825 - 10829
-                "\u8EA2\uC8CF\u8EA2\uC8CA\u0000\u0000\u8EA2\uC8D1\u0000\uE7C0" + // 10830 - 10834
-                "\u0000\u0000\u0000\u0000\u0000\uE7CF\u0000\uE7C5\u0000\u0000" + // 10835 - 10839
-                "\u0000\u0000\u8EA2\uC8BB\u0000\u0000\u8EA2\uC8C3\u8EA2\uC8C7" + // 10840 - 10844
-                "\u0000\u0000\u8EA2\uC8CB\u0000\uE7C7\u8EA2\uC8BA\u8EA2\uC8B8" + // 10845 - 10849
-                "\u8EA2\uC8C4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10850 - 10854
-                "\u8EA2\uC8C1\u8EA2\uC8C0\u0000\u0000\u8EA2\uC8C5\u8EA2\uC8C8" + // 10855 - 10859
-                "\u0000\u0000\u8EA2\uC8CD\u0000\u0000\u0000\u0000\u0000\u0000" + // 10860 - 10864
-                "\u8EA2\uCEE0\u0000\u0000\u0000\uEBCF\u8EA2\uCEEA\u8EA2\uCEE2" + // 10865 - 10869
-                "\u0000\uEBD5\u0000\uEBD9\u8EA2\uCEF3\u8EA2\uCEFB\u8EA2\uCEEC" + // 10870 - 10874
-                "\u8EA2\uC1B1\u8EA2\uC1A9\u8EA2\uC1B8\u8EA2\uC1AC\u8EA2\uC1B6" + // 10875 - 10879
-                "\u8EA2\uC1BD\u8EA2\uC1B5\u0000\uE2E0\u0000\u0000\u0000\uE2DC" + // 10880 - 10884
-                "\u8EA2\uC1AA\u0000\u0000\u8EA2\uC1B0\u0000\uE2DE\u0000\u0000" + // 10885 - 10889
-                "\u8EA2\uC1AF\u0000\uE2DF\u0000\uE2E1\u8EA2\uC1B2\u0000\u0000" + // 10890 - 10894
-                "\u0000\uE2D9\u0000\uE2DA\u8EA2\uC1BE\u8EA2\uC1BC\u0000\u0000" + // 10895 - 10899
-                "\u8EA2\uC1BB\u8EA2\uC1AD\u0000\u0000\u8EA2\uC1B9\u0000\u0000" + // 10900 - 10904
-                "\u0000\uE2DD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10905 - 10909
-                "\u0000\uE2DB\u8EA2\uC1BA\u8EA2\uC1AB\u8EA2\uC1AE\u8EA2\uC1B7" + // 10910 - 10914
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10915 - 10919
-                "\u8EA2\uCFA2\u8EA2\uC8BD\u0000\u0000\u8EA2\uC8B6\u8EA2\uC8C9" + // 10920 - 10924
-                "\u8EA2\uC8D2\u8EA2\uC8B9\u0000\uE7C9\u0000\u0000\u8EA2\uC8C6" + // 10925 - 10929
-                "\u0000\uE7BF\u0000\uE7C1\u0000\uE7CD\u8EA2\uC8B7\u0000\u0000" + // 10930 - 10934
-                "\u0000\u0000\u0000\uE7C2\u0000\uE7C4\u0000\uE7CE\u0000\uFCEE" + // 10935 - 10939
-                "\u0000\uFDAA\u8EA2\uF0D7\u8EA2\uF1E0\u0000\u0000\u0000\uFDBC" + // 10940 - 10944
-                "\u0000\uCBDD\u0000\uCFD9\u0000\u0000\u0000\uE7BE\u0000\u0000" + // 10945 - 10949
-                "\u0000\uFACB\u0000\uCBDE\u0000\uD3EC\u0000\uDDE9\u0000\uE2D8" + // 10950 - 10954
-                "\u0000\uF7D2\u0000\uCFDA\u0000\u0000\u8EA2\uADE2\u8EA2\uADE1" + // 10955 - 10959
-                "\u8EA2\uB3C5\u0000\u0000\u0000\uD8DD\u0000\uD8DB\u0000\uD8DF" + // 10960 - 10964
-                "\u8EA2\uB3C7\u0000\u0000\u0000\uD8DE\u0000\uD8DC\u0000\u0000" + // 10965 - 10969
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB3C6\u0000\uDDEC" + // 10970 - 10974
-                "\u8EA2\uBAA1\u0000\u0000\u0000\uDDEB\u0000\uDDED\u8EA2\uBAA6" + // 10975 - 10979
-                "\u0000\uDDEF\u8EA2\uBAA3\u8EA2\uBAA4\u8EA2\uB9FA\u0000\uDDEE" + // 10980 - 10984
-                "\u8EA2\uBAA7\u0000\u0000\u0000\u0000\u8EA2\uB9FC\u0000\u0000" + // 10985 - 10989
-                "\u8EA2\uB9FD\u8EA2\uB9FB\u0000\uDDEA\u0000\u0000\u8EA2\uBAA5" + // 10990 - 10994
-                "\u8EA2\uB9FE\u8EA2\uBAA2\u0000\u0000\u0000\u0000\u0000\u0000" + // 10995 - 10999
-                "\u8EA2\uC1B4\u0000\u0000\u8EA2\uC1B3\u8EA2\uD5AB\u8EA2\uD5A8" + // 11000 - 11004
-                "\u8EA2\uD5A9\u0000\uEFD7\u8EA2\uD5AA\u8EA2\uD5A5\u8EA2\uD5A6" + // 11005 - 11009
-                "\u0000\uEFD4\u0000\u0000\u0000\uEFD5\u8EA2\uD5A7\u0000\uEFD6" + // 11010 - 11014
-                "\u0000\u0000\u8EA2\uDBA9\u0000\u0000\u8EA2\uDBAA\u8EA2\uDBA7" + // 11015 - 11019
-                "\u8EA2\uDBA8\u0000\uF2DE\u8EA2\uDBA6\u0000\u0000\u0000\u0000" + // 11020 - 11024
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDFF4\u8EA2\uDFF1" + // 11025 - 11029
-                "\u8EA2\uDFF3\u0000\uF5EB\u8EA2\uDFF7\u0000\uF5EA\u8EA2\uDFF5" + // 11030 - 11034
-                "\u8EA2\uDFF8\u8EA2\uDFF6\u8EA2\uDFF2\u0000\uF5E9\u0000\u0000" + // 11035 - 11039
-                "\u8EA2\uE3F9\u0000\u0000\u8EA2\uE3FA\u8EA2\uE3F8\u0000\u0000" + // 11040 - 11044
-                "\u8EA2\uE3FC\u0000\uF7D0\u0000\uF7D1\u8EA2\uE7CB\u0000\uF9B4" + // 11045 - 11049
-                "\u8EA2\uE3FB\u8EA2\uE7CA\u0000\uF9B3\u8EA2\uEAB3\u8EA2\uEAB4" + // 11050 - 11054
-                "\u0000\uFACA\u8EA2\uEAB2\u0000\u0000\u8EA2\uEAB1\u0000\u0000" + // 11055 - 11059
-                "\u8EA2\uECCC\u0000\uFBB4\u0000\u0000\u8EA2\uEFD7\u8EA2\uF0D6" + // 11060 - 11064
-                "\u8EA2\uF0D5\u0000\u0000\u0000\uA5BE\u0000\uA5BF\u0000\u0000" + // 11065 - 11069
-                "\u0000\uA5C0\u0000\uA5C1\u0000\uA5C2\u0000\uA5C3\u0000\uA5C4" + // 11070 - 11074
-                "\u0000\uA5C5\u0000\uA5C6\u0000\u0000\u0000\u0000\u0000\u0000" + // 11075 - 11079
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11080 - 11084
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11085 - 11089
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11090 - 11094
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11095 - 11099
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11100 - 11104
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11105 - 11109
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11110 - 11114
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11115 - 11119
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11120 - 11124
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11125 - 11129
-                "\u0000\u0000\u0000\u0000\u0000\uCFDB\u0000\u0000\u0000\u0000" + // 11130 - 11134
-                "\u8EA2\uBAA8\u8EA2\uC1BF\u8EA2\uD5CE\u8EA2\uE7E3\u0000\u0000" + // 11135 - 11139
-                "\u0000\u0000\u0000\uCEFC\u0000\uD2DA\u8EA2\uACC1\u0000\uD2DB" + // 11140 - 11144
-                "\u0000\uD2D9\u0000\u0000\u0000\uD2D8\u8EA2\uB1AF\u0000\uD6F4" + // 11145 - 11149
-                "\u0000\u0000\u0000\u0000\u0000\uD6F5\u0000\uD6F6\u0000\u0000" + // 11150 - 11154
-                "\u0000\u0000\u0000\u0000\u0000\uDCB5\u8EA2\uB7CA\u0000\uDCB4" + // 11155 - 11159
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11160 - 11164
-                "\u8EA2\uBEBD\u0000\uDCB6\u0000\uE0F9\u8EA2\uC5BD\u0000\uE5C0" + // 11165 - 11169
-                "\u0000\uE5C1\u0000\u0000\u0000\uE9F0\u0000\u0000\u0000\uE9F1" + // 11170 - 11174
-                "\u0000\uEDF5\u0000\uF1CE\u8EA2\uD8E1\u0000\uF1CD\u0000\u0000" + // 11175 - 11179
-                "\u8EA2\uDDE5\u0000\uF4C5\u0000\u0000\u8EA2\uE2C0\u8EA2\uE9C2" + // 11180 - 11184
-                "\u0000\uC6F8\u0000\uCBB1\u8EA2\uA8BA\u8EA2\uA8B9\u0000\uCEFD" + // 11185 - 11189
-                "\u8EA2\uA8B8\u0000\uCEFE\u8EA2\uA8BB\u0000\u0000\u8EA2\uACC7" + // 11190 - 11194
-                "\u0000\uD2DE\u0000\uD2DD\u8EA2\uACC9\u8EA2\uACC8\u0000\uD2E2" + // 11195 - 11199
-                "\u0000\u0000\u0000\uD2E1\u0000\u0000\u8EA2\uD7A9\u0000\uF3DD" + // 11200 - 11204
-                "\u8EA2\uDCEA\u0000\u0000\u8EA2\uD7A6\u8EA2\uD7A8\u0000\uF3DE" + // 11205 - 11209
-                "\u0000\uF0DC\u0000\uF3DC\u0000\uF0DB\u0000\uF3E0\u8EA2\uD7AA" + // 11210 - 11214
-                "\u0000\uF0D8\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11215 - 11219
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE1DB" + // 11220 - 11224
-                "\u0000\u0000\u8EA2\uE1D3\u0000\u0000\u0000\u0000\u0000\u0000" + // 11225 - 11229
-                "\u0000\u0000\u0000\u0000\u8EA2\uDCF2\u8EA2\uE1D4\u8EA2\uDCEE" + // 11230 - 11234
-                "\u0000\u0000\u0000\u0000\u0000\uF6C2\u8EA2\uDCF0\u8EA2\uDCEF" + // 11235 - 11239
-                "\u0000\uF3DF\u8EA2\uDCED\u8EA2\uDCF1\u8EA2\uE1DC\u8EA2\uE1D8" + // 11240 - 11244
-                "\u8EA2\uE1DA\u0000\u0000\u8EA2\uE1D5\u8EA2\uE1D6\u0000\u0000" + // 11245 - 11249
-                "\u8EA2\uE1D9\u8EA2\uE1D7\u0000\uF8B4\u0000\u0000\u0000\u0000" + // 11250 - 11254
-                "\u0000\uF8B7\u0000\uF8B6\u0000\uF8B5\u0000\uF9EC\u8EA2\uE8F6" + // 11255 - 11259
-                "\u0000\uF9ED\u8EA2\uE5CC\u0000\uFAEA\u8EA2\uEBDA\u0000\uFAEB" + // 11260 - 11264
-                "\u0000\uFBE0\u8EA2\uE7C8\u8EA2\uEAB0\u0000\u0000\u8EA2\uEAAF" + // 11265 - 11269
-                "\u8EA2\uECCA\u8EA2\uECCB\u8EA2\uECC9\u8EA2\uEEB5\u0000\uFBFA" + // 11270 - 11274
-                "\u0000\uCBDC\u0000\uD3EB\u0000\uD3EA\u0000\uD8DA\u0000\uD8D9" + // 11275 - 11279
-                "\u8EA2\uB3C3\u8EA2\uB3C4\u8EA2\uB3C2\u0000\u0000\u0000\uD8D8" + // 11280 - 11284
-                "\u8EA2\uB9F8\u0000\u0000\u8EA2\uB9F9\u8EA2\uB9F5\u0000\uDDE8" + // 11285 - 11289
-                "\u8EA2\uB9F6\u0000\u0000\u8EA2\uB9F7\u0000\u0000\u0000\u0000" + // 11290 - 11294
-                "\u0000\u0000\u0000\u0000\u8EA2\uC1A6\u8EA2\uC1A8\u8EA2\uC1A4" + // 11295 - 11299
-                "\u8EA2\uC1A7\u0000\uE2D6\u8EA2\uC1A5\u0000\uE2D7\u0000\u0000" + // 11300 - 11304
-                "\u0000\u0000\u8EA2\uC2F9\u0000\uE7BD\u0000\uE7BC\u0000\u0000" + // 11305 - 11309
-                "\u0000\uE7BB\u0000\u0000\u8EA2\uC8B2\u8EA2\uC8B3\u0000\u0000" + // 11310 - 11314
-                "\u0000\u0000\u8EA2\uCEDB\u8EA2\uCEDD\u0000\uEBCE\u0000\uEBCB" + // 11315 - 11319
-                "\u0000\u0000\u0000\uEBCD\u0000\uEBCC\u8EA2\uCEDC\u8EA2\uCEDA" + // 11320 - 11324
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11325 - 11329
-                "\u0000\uD9B6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11330 - 11334
-                "\u0000\uC4B4\u0000\uC4C6\u0000\uC5AF\u0000\uC5AE\u0000\u0000" + // 11335 - 11339
-                "\u0000\uC5B0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11340 - 11344
-                "\u0000\u0000\u0000\u0000\u0000\uCCBE\u0000\u0000\u0000\uCCBD" + // 11345 - 11349
-                "\u0000\uCCBF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0B5" + // 11350 - 11354
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD4D1\u0000\u0000" + // 11355 - 11359
-                "\u8EA2\uD6C6\u0000\uF6BB\u0000\uC4C7\u0000\uC6AC\u0000\uC6BB" + // 11360 - 11364
-                "\u0000\uC6B6\u0000\u0000\u0000\uC6B1\u0000\uC6B0\u0000\uC6B7" + // 11365 - 11369
-                "\u0000\uC6B5\u0000\uC6AE\u0000\uC6BC\u0000\uC6AF\u0000\uC6AB" + // 11370 - 11374
-                "\u0000\uC6BA\u0000\uC6B9\u0000\uC6B8\u0000\uC6AD\u0000\u0000" + // 11375 - 11379
-                "\u0000\uC6B4\u0000\u0000\u0000\u0000\u0000\uC6B3\u0000\u0000" + // 11380 - 11384
-                "\u0000\u0000\u0000\uC6BD\u0000\uC6B2\u0000\u0000\u0000\u0000" + // 11385 - 11389
-                "\u0000\u0000\u0000\uF6D3\u0000\uF6D0\u0000\u0000\u8EA2\uE1E9" + // 11390 - 11394
-                "\u8EA2\uE1ED\u8EA2\uE1F1\u0000\u0000\u0000\u0000\u0000\u0000" + // 11395 - 11399
-                "\u8EA2\uE5DC\u8EA2\uE5D9\u8EA2\uE5E2\u0000\u0000\u8EA2\uE5E1" + // 11400 - 11404
-                "\u8EA2\uE5DF\u8EA2\uE5DA\u0000\u0000\u0000\uF8BF\u0000\u0000" + // 11405 - 11409
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE5DB" + // 11410 - 11414
-                "\u0000\uF8BE\u0000\uF3F6\u8EA2\uE5DE\u0000\uF8BD\u8EA2\uE5E3" + // 11415 - 11419
-                "\u8EA2\uE5DD\u8EA2\uE5D8\u8EA2\uE1EC\u0000\u0000\u0000\u0000" + // 11420 - 11424
-                "\u0000\u0000\u0000\uF8BC\u0000\u0000\u8EA2\uE5D7\u8EA2\uE9A4" + // 11425 - 11429
-                "\u0000\u0000\u8EA2\uE9A3\u8EA2\uE5E0\u0000\uF9F3\u0000\u0000" + // 11430 - 11434
-                "\u8EA2\uE9A7\u8EA2\uE9A8\u8EA2\uE9A2\u8EA2\uE9A6\u0000\u0000" + // 11435 - 11439
-                "\u8EA2\uE9A1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11440 - 11444
-                "\u8EA2\uEBDF\u8EA2\uE9A5\u0000\uFAF2\u0000\uFAF0\u8EA2\uEBDD" + // 11445 - 11449
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCDDA\u0000\u0000" + // 11450 - 11454
-                "\u0000\uCDD8\u0000\u0000\u0000\uCDF0\u0000\uCDE8\u0000\uCDE2" + // 11455 - 11459
-                "\u0000\uCDD6\u8EA2\uA6F8\u0000\uCDE1\u0000\uCDD7\u0000\uCDE9" + // 11460 - 11464
-                "\u0000\uCDF2\u8EA2\uAAD5\u0000\uCDE6\u8EA2\uA6F4\u0000\uCDDC" + // 11465 - 11469
-                "\u0000\uCDDF\u0000\uCDE0\u0000\u0000\u0000\uCDEE\u0000\uCDEF" + // 11470 - 11474
-                "\u0000\uCDED\u0000\uCDE7\u0000\uCDEB\u0000\uCDDD\u0000\uD1B8" + // 11475 - 11479
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11480 - 11484
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11485 - 11489
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uAADB" + // 11490 - 11494
-                "\u0000\uD1C4\u0000\uD1BC\u0000\uD1BE\u0000\uD1C3\u8EA2\uAAE7" + // 11495 - 11499
-                "\u0000\uD1C1\u8EA2\uAFB3\u0000\uD5D3\u0000\uD1C6\u8EA2\uAAD8" + // 11500 - 11504
-                "\u8EA2\uAAE0\u0000\uD1C2\u8EA2\uAADF\u8EA2\uAADC\u8EA2\uAAE4" + // 11505 - 11509
-                "\u8EA2\uAAE6\u0000\uD1BB\u0000\uD1BF\u0000\uD1C5\u0000\uD5D5" + // 11510 - 11514
-                "\u8EA2\uC0FE\u8EA2\uC0FD\u0000\uE2D2\u8EA2\uC1A3\u8EA2\uC0F7" + // 11515 - 11519
-                "\u8EA2\uC1A2\u8EA2\uC0F5\u8EA2\uC1A1\u8EA2\uC0FA\u0000\uE2D4" + // 11520 - 11524
-                "\u0000\u0000\u8EA2\uC8B0\u0000\u0000\u8EA2\uC8AB\u8EA2\uC8B1" + // 11525 - 11529
-                "\u8EA2\uC8AC\u8EA2\uC8AA\u8EA2\uC8AD\u0000\uE7B9\u0000\u0000" + // 11530 - 11534
-                "\u8EA2\uC8AF\u0000\u0000\u8EA2\uC8AE\u0000\uE7BA\u0000\uEBC9" + // 11535 - 11539
-                "\u0000\uEBC8\u8EA2\uCED6\u8EA2\uCED9\u8EA2\uCED1\u8EA2\uCED5" + // 11540 - 11544
-                "\u0000\uEBCA\u8EA2\uCED4\u8EA2\uCED2\u8EA2\uCED8\u8EA2\uCED3" + // 11545 - 11549
-                "\u8EA2\uCED0\u8EA2\uCED7\u0000\u0000\u8EA2\uD5A3\u0000\uEFD2" + // 11550 - 11554
-                "\u8EA2\uE3F4\u8EA2\uD4FE\u8EA2\uD5A1\u8EA2\uD4FD\u8EA2\uC0F6" + // 11555 - 11559
-                "\u0000\uEFD1\u8EA2\uD5A4\u8EA2\uD4FC\u0000\uEFD0\u0000\uEFD3" + // 11560 - 11564
-                "\u8EA2\uD5A2\u8EA2\uDBA3\u0000\uF2DD\u8EA2\uDBA4\u8EA2\uDBA5" + // 11565 - 11569
-                "\u0000\u0000\u8EA2\uDFF0\u0000\uF5E8\u8EA2\uE3F5\u8EA2\uE3F6" + // 11570 - 11574
-                "\u0000\u0000\u0000\u0000\u8EA2\uE3F7\u8EA2\uE7C9\u0000\uF5E7" + // 11575 - 11579
-                "\u0000\uF5E5\u0000\uF5E6\u0000\uF7CE\u0000\uF5E4\u8EA2\uDFEE" + // 11580 - 11584
-                "\u8EA2\uDBA1\u0000\uF7CD\u0000\uF7CF\u0000\u0000\u0000\uF9B1" + // 11585 - 11589
-                "\u0000\uF9B2\u0000\u0000\u8EA2\uEAAE\u0000\u0000\u0000\uFCCA" + // 11590 - 11594
-                "\u0000\uFCC9\u0000\uCBD7\u0000\u0000\u0000\u0000\u8EA2\uA2F5" + // 11595 - 11599
-                "\u0000\uD8D4\u0000\u0000\u8EA2\uA2F2\u8EA2\uA2F3\u8EA2\uA2F1" + // 11600 - 11604
-                "\u0000\u0000\u8EA2\uA2F4\u0000\u0000\u0000\u0000\u8EA2\uA5AA" + // 11605 - 11609
-                "\u8EA2\uA5A7\u8EA2\uA5AC\u8EA2\uA5A8\u0000\uCBD8\u0000\uCBDB" + // 11610 - 11614
-                "\u0000\u0000\u8EA2\uA5A9\u0000\uCBDA\u8EA2\uA5AB\u0000\u0000" + // 11615 - 11619
-                "\u0000\u0000\u0000\uCBD9\u0000\u0000\u0000\u0000\u0000\u0000" + // 11620 - 11624
-                "\u0000\u0000\u8EA2\uA8F5\u8EA2\uA8F7\u0000\uCFD7\u8EA2\uA8F3" + // 11625 - 11629
-                "\u8EA2\uA8F6\u8EA2\uA8F4\u0000\uCFD5\u0000\uCFD8\u0000\u0000" + // 11630 - 11634
-                "\u0000\uCFD6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11635 - 11639
-                "\u8EA2\uADD9\u8EA2\uADDD\u8EA2\uADDA\u0000\uD8CD\u0000\uD8CA" + // 11640 - 11644
-                "\u8EA2\uB3B0\u0000\uD8D0\u8EA2\uB3B3\u0000\uD8D2\u0000\uD8CB" + // 11645 - 11649
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB9E6" + // 11650 - 11654
-                "\u8EA2\uB9E9\u0000\uDDD6\u0000\u0000\u0000\uDDE0\u0000\uDDDC" + // 11655 - 11659
-                "\u8EA2\uB9E7\u0000\u0000\u0000\u0000\u0000\uDDE4\u0000\uDDDD" + // 11660 - 11664
-                "\u0000\uDDE2\u0000\uDDD8\u0000\u0000\u0000\uDDD5\u0000\uDDD7" + // 11665 - 11669
-                "\u0000\uDDE3\u8EA2\uB9E8\u0000\uDDDB\u0000\uDDDE\u0000\uDDDA" + // 11670 - 11674
-                "\u0000\uDDDF\u8EA2\uB9EA\u0000\uDDE1\u0000\uDDD9\u8EA2\uB9E5" + // 11675 - 11679
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11680 - 11684
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC0F2\u0000\uE2CC" + // 11685 - 11689
-                "\u8EA2\uC0F4\u0000\u0000\u0000\uE2CE\u0000\uE2D0\u0000\u0000" + // 11690 - 11694
-                "\u8EA2\uC0F3\u0000\uE2CD\u0000\uE2D1\u0000\u0000\u0000\uE2CF" + // 11695 - 11699
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE7AF\u8EA2\uC8A9" + // 11700 - 11704
-                "\u0000\uE7B7\u8EA2\uC8A6\u8EA2\uDFED\u0000\u0000\u0000\uF5DF" + // 11705 - 11709
-                "\u8EA2\uDFEC\u0000\uF5DD\u0000\uF5E0\u8EA2\uE3F0\u8EA2\uE3F1" + // 11710 - 11714
-                "\u8EA2\uE3F2\u0000\uF7CB\u0000\u0000\u8EA2\uE3F3\u0000\u0000" + // 11715 - 11719
-                "\u0000\uF7CC\u0000\uF9AF\u8EA2\uE7C4\u8EA2\uE7C5\u8EA2\uE7C3" + // 11720 - 11724
-                "\u8EA2\uE7C2\u8EA2\uE7C6\u0000\uF9AE\u8EA2\uEAAB\u8EA2\uEAA9" + // 11725 - 11729
-                "\u8EA2\uEAAA\u8EA2\uEAAC\u8EA2\uEAA8\u8EA2\uEAAD\u8EA2\uECC7" + // 11730 - 11734
-                "\u0000\u0000\u8EA2\uECC8\u8EA2\uECC6\u0000\uFBB2\u8EA2\uEEB3" + // 11735 - 11739
-                "\u0000\uFBF9\u8EA2\uEEB4\u8EA2\uEFD6\u8EA2\uEFD5\u0000\u0000" + // 11740 - 11744
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11745 - 11749
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11750 - 11754
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11755 - 11759
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11760 - 11764
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11765 - 11769
-                "\u0000\u0000\u0000\uA2B2\u0000\u0000\u0000\u0000\u0000\u0000" + // 11770 - 11774
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11775 - 11779
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11780 - 11784
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11785 - 11789
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11790 - 11794
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11795 - 11799
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2B3\u0000\u0000" + // 11800 - 11804
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11805 - 11809
-                "\u0000\u0000\u0000\u0000\u0000\uE4B8\u0000\u0000\u0000\u0000" + // 11810 - 11814
-                "\u8EA2\uC3A4\u8EA2\uC3B7\u8EA2\uC3BC\u8EA2\uC3B0\u0000\uE4B4" + // 11815 - 11819
-                "\u8EA2\uC3C1\u0000\uE4B1\u8EA2\uC3A2\u0000\u0000\u8EA2\uC3A3" + // 11820 - 11824
-                "\u0000\uE4AA\u0000\uE4B3\u8EA2\uC3AA\u0000\uE4B6\u0000\uE4B7" + // 11825 - 11829
-                "\u8EA2\uC3AB\u0000\u0000\u8EA2\uC3B8\u8EA2\uC3BE\u0000\uE4B2" + // 11830 - 11834
-                "\u0000\u0000\u0000\uE4AC\u8EA2\uC3A9\u8EA2\uC3A5\u8EA2\uC3C0" + // 11835 - 11839
-                "\u8EA2\uC3AE\u8EA2\uC3AF\u8EA2\uC3A6\u8EA2\uC3BA\u8EA2\uC3B1" + // 11840 - 11844
-                "\u8EA2\uC3BB\u8EA2\uC3B3\u0000\u0000\u0000\uE4AD\u8EA2\uCAC0" + // 11845 - 11849
-                "\u0000\uE4B0\u0000\uE4AE\u8EA2\uC3BF\u8EA2\uC3B6\u8EA2\uC3B2" + // 11850 - 11854
-                "\u0000\u0000\u0000\u0000\u8EA2\uC3A7\u0000\uE8FA\u8EA2\uC3B5" + // 11855 - 11859
-                "\u0000\uE4B5\u8EA2\uC3AD\u0000\u0000\u8EA2\uC3AC\u0000\u0000" + // 11860 - 11864
-                "\u0000\u0000\u0000\u0000\u0000\uE4AF\u0000\uE4AB\u8EA2\uCAD5" + // 11865 - 11869
-                "\u8EA2\uC7FD\u8EA2\uC7FC\u8EA2\uC8A3\u0000\uE7A4\u0000\u0000" + // 11870 - 11874
-                "\u8EA2\uC7FE\u8EA2\uC7FA\u8EA2\uC8A1\u8EA2\uC8A2\u0000\uE7A5" + // 11875 - 11879
-                "\u0000\uE7A7\u8EA2\uC8A4\u0000\u0000\u8EA2\uCECF\u8EA2\uCECE" + // 11880 - 11884
-                "\u0000\u0000\u8EA2\uCECC\u8EA2\uCECD\u0000\uEBBB\u0000\uEBBD" + // 11885 - 11889
-                "\u0000\uEBBA\u0000\uEBBC\u8EA2\uD4F5\u8EA2\uD4F6\u8EA2\uD4F1" + // 11890 - 11894
-                "\u0000\u0000\u8EA2\uD4F2\u0000\uEFC3\u0000\uEFC8\u0000\uEFC2" + // 11895 - 11899
-                "\u0000\uEFC9\u0000\uEFC4\u8EA2\uD4F3\u0000\u0000\u0000\u0000" + // 11900 - 11904
-                "\u8EA2\uD4F4\u8EA2\uD4F0\u0000\uEFCA\u0000\uEFC6\u0000\u0000" + // 11905 - 11909
-                "\u0000\u0000\u0000\uEFC5\u0000\uEFC7\u0000\u0000\u8EA2\uD4EF" + // 11910 - 11914
-                "\u0000\u0000\u8EA2\uDAF6\u0000\uF2D2\u0000\u0000\u0000\u0000" + // 11915 - 11919
-                "\u8EA2\uDAF8\u0000\uF2D4\u8EA2\uDAFB\u8EA2\uDAF7\u8EA2\uDAF5" + // 11920 - 11924
-                "\u8EA2\uDAFA\u0000\uF2D3\u8EA2\uDAF9\u0000\u0000\u0000\uF2D1" + // 11925 - 11929
-                "\u0000\u0000\u0000\u0000\u0000\uF5DE\u0000\uF5E1\u0000\uF7CA" + // 11930 - 11934
-                "\u0000\u0000\u8EA2\uE7C1\u0000\u0000\u0000\u0000\u0000\u0000" + // 11935 - 11939
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uF1FA\u0000\uCBCF" + // 11940 - 11944
-                "\u0000\uCFD1\u0000\uD3DC\u0000\uD3DB\u0000\u0000\u0000\uD8C8" + // 11945 - 11949
-                "\u0000\u0000\u8EA2\uB3AC\u0000\uD8C6\u8EA2\uB3AD\u0000\uD8C7" + // 11950 - 11954
-                "\u0000\u0000\u0000\u0000\u8EA2\uB9E2\u8EA2\uB9DE\u0000\u0000" + // 11955 - 11959
-                "\u0000\u0000\u0000\uDDD3\u8EA2\uB9E1\u8EA2\uB9E0\u8EA2\uB9DF" + // 11960 - 11964
-                "\u0000\uDDD4\u8EA2\uB9E3\u8EA2\uB9E4\u0000\u0000\u0000\u0000" + // 11965 - 11969
-                "\u0000\u0000\u8EA2\uC0E8\u8EA2\uC0E6\u8EA2\uC0EA\u8EA2\uC0EB" + // 11970 - 11974
-                "\u8EA2\uC0F1\u0000\u0000\u8EA2\uC0ED\u8EA2\uC0EF\u0000\u0000" + // 11975 - 11979
-                "\u8EA2\uC0E7\u8EA2\uC0E2\u0000\u0000\u8EA2\uC0EE\u0000\u0000" + // 11980 - 11984
-                "\u0000\u0000\u8EA2\uC0F0\u8EA2\uC0E9\u8EA2\uC0EC\u8EA2\uC0E3" + // 11985 - 11989
-                "\u0000\uE2C9\u8EA2\uC0E5\u8EA2\uC0E4\u0000\uE2C8\u0000\uE2CA" + // 11990 - 11994
-                "\u0000\u0000\u0000\uE7A6\u8EA2\uC7FB\u8EA2\uDAEC\u8EA2\uDAF1" + // 11995 - 11999
-                "\u0000\uF2CE\u0000\u0000\u0000\uF2CB\u8EA2\uDAED\u0000\u0000" + // 12000 - 12004
-                "\u8EA2\uDFEB\u0000\uF5DB\u0000\uF5D9\u0000\uF5DC\u0000\uF5DA" + // 12005 - 12009
-                "\u8EA2\uDFEA\u8EA2\uDFE7\u8EA2\uDFE6\u0000\u0000\u8EA2\uDFE9" + // 12010 - 12014
-                "\u0000\u0000\u0000\u0000\u8EA2\uDFE8\u8EA2\uE3EF\u0000\uF7C9" + // 12015 - 12019
-                "\u8EA2\uE3E6\u8EA2\uE3E5\u0000\u0000\u0000\uF7C4\u8EA2\uE3EB" + // 12020 - 12024
-                "\u8EA2\uE3EA\u8EA2\uE3E2\u8EA2\uE3ED\u8EA2\uE3E7\u0000\uF7C8" + // 12025 - 12029
-                "\u8EA2\uE3E4\u8EA2\uE3EC\u8EA2\uE3E3\u0000\uF7C5\u0000\uF7C7" + // 12030 - 12034
-                "\u8EA2\uE3E8\u0000\uF7C6\u8EA2\uE3E9\u0000\u0000\u8EA2\uE3EE" + // 12035 - 12039
-                "\u8EA2\uE7BE\u0000\u0000\u0000\uF9AB\u8EA2\uE7BB\u0000\u0000" + // 12040 - 12044
-                "\u8EA2\uE7BF\u0000\u0000\u0000\u0000\u0000\uF9A8\u8EA2\uE7BD" + // 12045 - 12049
-                "\u0000\uF9AD\u0000\u0000\u0000\uF9AA\u0000\u0000\u8EA2\uE7BC" + // 12050 - 12054
-                "\u0000\u0000\u0000\uF9AC\u8EA2\uE7C0\u0000\uF9A7\u0000\u0000" + // 12055 - 12059
-                "\u0000\u0000\u0000\u0000\u0000\uE4CD\u8EA2\uC5AC\u0000\u0000" + // 12060 - 12064
-                "\u0000\u0000\u0000\uE4D4\u0000\u0000\u0000\u0000\u0000\u0000" + // 12065 - 12069
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCAF0\u8EA2\uCAEE" + // 12070 - 12074
-                "\u0000\u0000\u8EA2\uCBA6\u8EA2\uCAEC\u0000\u0000\u8EA2\uCAFE" + // 12075 - 12079
-                "\u0000\uE4C5\u0000\uE9A8\u8EA2\uCAE8\u8EA2\uCBA5\u0000\u0000" + // 12080 - 12084
-                "\u8EA2\uCAED\u8EA2\uCAFB\u0000\uE9AD\u0000\uE9A6\u0000\u0000" + // 12085 - 12089
-                "\u8EA2\uCBA3\u0000\u0000\u8EA2\uCAE6\u8EA2\uCBA2\u0000\u0000" + // 12090 - 12094
-                "\u0000\uE9B8\u8EA2\uCAF7\u8EA2\uCBA9\u0000\uE9B6\u8EA2\uCAEF" + // 12095 - 12099
-                "\u0000\uE9A7\u8EA2\uCAF1\u8EA2\uCBA1\u0000\uE9B0\u8EA2\uCAEA" + // 12100 - 12104
-                "\u0000\uE9B4\u0000\uE9AA\u8EA2\uCAF3\u8EA2\uCAE9\u8EA2\uCAE3" + // 12105 - 12109
-                "\u0000\u0000\u8EA2\uCAFD\u0000\uE9B1\u8EA2\uCBA8\u8EA2\uCAE4" + // 12110 - 12114
-                "\u0000\uE9AE\u0000\u0000\u8EA2\uCAF9\u0000\u0000\u0000\uE9AF" + // 12115 - 12119
-                "\u8EA2\uCAEB\u8EA2\uCAF6\u8EA2\uCAF2\u8EA2\uCAF4\u8EA2\uCECA" + // 12120 - 12124
-                "\u0000\u0000\u8EA2\uCEC0\u8EA2\uCEC5\u8EA2\uCECB\u8EA2\uCEC8" + // 12125 - 12129
-                "\u8EA2\uCEC7\u8EA2\uCEC6\u0000\u0000\u8EA2\uCEBF\u8EA2\uCEC4" + // 12130 - 12134
-                "\u0000\u0000\u0000\u0000\u8EA2\uCEC2\u0000\u0000\u0000\uEFBC" + // 12135 - 12139
-                "\u0000\uEFB9\u8EA2\uD4E4\u8EA2\uD4E9\u8EA2\uD4EB\u8EA2\uD4E8" + // 12140 - 12144
-                "\u8EA2\uD4E1\u8EA2\uD4E3\u8EA2\uD4ED\u8EA2\uD4EA\u8EA2\uD4E5" + // 12145 - 12149
-                "\u8EA2\uD4EE\u8EA2\uD4E2\u8EA2\uD4EC\u0000\uEFBA\u0000\uEFC0" + // 12150 - 12154
-                "\u0000\uEFBE\u8EA2\uD4DC\u0000\uEFBF\u0000\uEFBB\u8EA2\uD4DD" + // 12155 - 12159
-                "\u8EA2\uD4DF\u8EA2\uD4DE\u8EA2\uD4E6\u8EA2\uD4E7\u0000\u0000" + // 12160 - 12164
-                "\u0000\uEFBD\u0000\u0000\u0000\uEFB8\u0000\u0000\u0000\u0000" + // 12165 - 12169
-                "\u8EA2\uD4E0\u0000\u0000\u8EA2\uDAF2\u0000\uF2CC\u0000\u0000" + // 12170 - 12174
-                "\u8EA2\uDAE9\u0000\uF2CD\u0000\uF2D0\u8EA2\uDAEE\u0000\u0000" + // 12175 - 12179
-                "\u8EA2\uDAEB\u0000\uF2CF\u0000\u0000\u0000\u0000\u8EA2\uDAEF" + // 12180 - 12184
-                "\u8EA2\uDAF0\u8EA2\uDAEA\u8EA2\uDAF3\u8EA2\uC0D4\u0000\uE2BF" + // 12185 - 12189
-                "\u0000\u0000\u0000\u0000\u8EA2\uC0D3\u0000\uE2BE\u0000\u0000" + // 12190 - 12194
-                "\u0000\u0000\u0000\u0000\u8EA2\uC0D5\u0000\uE2BD\u0000\u0000" + // 12195 - 12199
-                "\u8EA2\uC7E5\u8EA2\uC7E8\u8EA2\uC7E6\u8EA2\uC7E7\u8EA2\uC7EB" + // 12200 - 12204
-                "\u8EA2\uC7E4\u8EA2\uC7EC\u8EA2\uC7E9\u8EA2\uC7EA\u0000\uEBB8" + // 12205 - 12209
-                "\u8EA2\uCEBE\u0000\u0000\u0000\u0000\u0000\uEBB7\u0000\u0000" + // 12210 - 12214
-                "\u8EA2\uD4DB\u8EA2\uD4D9\u0000\u0000\u0000\u0000\u0000\uEFB6" + // 12215 - 12219
-                "\u8EA2\uD4D8\u8EA2\uD4DA\u0000\u0000\u0000\uEFB7\u0000\u0000" + // 12220 - 12224
-                "\u8EA2\uDAE7\u0000\u0000\u8EA2\uDAE8\u0000\uF5D8\u0000\u0000" + // 12225 - 12229
-                "\u8EA2\uE7B8\u8EA2\uE7BA\u8EA2\uE7B7\u8EA2\uE7B9\u8EA2\uEAA4" + // 12230 - 12234
-                "\u8EA2\uECC3\u0000\u0000\u0000\u0000\u8EA2\uF1DE\u0000\uCBCD" + // 12235 - 12239
-                "\u0000\uD3DA\u8EA2\uB3A9\u8EA2\uB3AB\u8EA2\uB3AA\u0000\u0000" + // 12240 - 12244
-                "\u8EA2\uB9DB\u0000\uDDD2\u0000\u0000\u8EA2\uB9D9\u0000\u0000" + // 12245 - 12249
-                "\u0000\uDDD1\u8EA2\uB9DC\u8EA2\uE3E1\u0000\u0000\u8EA2\uE3E0" + // 12250 - 12254
-                "\u0000\u0000\u8EA2\uE3DF\u0000\uF7C3\u8EA2\uE7B4\u8EA2\uE7B5" + // 12255 - 12259
-                "\u0000\uF9A5\u8EA2\uE7B6\u0000\uF9A6\u0000\u0000\u0000\u0000" + // 12260 - 12264
-                "\u0000\uFAC5\u0000\u0000\u0000\uFAC4\u8EA2\uECC1\u0000\u0000" + // 12265 - 12269
-                "\u0000\u0000\u0000\uFBAE\u8EA2\uECC2\u8EA2\uEEAB\u0000\uFBF5" + // 12270 - 12274
-                "\u0000\uFBF6\u0000\u0000\u8EA2\uEFD3\u0000\u0000\u0000\uFCED" + // 12275 - 12279
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12280 - 12284
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12285 - 12289
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12290 - 12294
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12295 - 12299
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12300 - 12304
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12305 - 12309
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12310 - 12314
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12315 - 12319
-                "\u0000\uD8EC\u0000\u0000\u0000\u0000\u8EA2\uC8EF\u0000\u0000" + // 12320 - 12324
-                "\u8EA2\uC8EE\u0000\u0000\u0000\uEBF3\u0000\uEBF4\u8EA2\uCFC2" + // 12325 - 12329
-                "\u0000\u0000\u8EA2\uD5FB\u8EA2\uDBF8\u0000\u0000\u0000\u0000" + // 12330 - 12334
-                "\u0000\uEFFE\u0000\uF3B0\u8EA2\uDBF6\u0000\u0000\u8EA2\uDBF9" + // 12335 - 12339
-                "\u0000\uF3B1\u0000\u0000\u8EA2\uE0F0\u8EA2\uDBF7\u0000\uE2B7" + // 12340 - 12344
-                "\u0000\uE2B5\u0000\uE6F6\u0000\uE6F5\u0000\uE6F3\u0000\uE6F7" + // 12345 - 12349
-                "\u0000\u0000\u0000\uE6F1\u0000\uE6F2\u0000\u0000\u0000\uE6F0" + // 12350 - 12354
-                "\u0000\u0000\u8EA2\uC7E1\u0000\u0000\u0000\u0000\u8EA2\uCEBC" + // 12355 - 12359
-                "\u0000\u0000\u0000\uEBB4\u0000\uEBB5\u0000\uEBB3\u0000\u0000" + // 12360 - 12364
-                "\u8EA2\uCEBB\u0000\u0000\u8EA2\uCEBD\u0000\u0000\u8EA2\uD4D3" + // 12365 - 12369
-                "\u8EA2\uD4D5\u0000\u0000\u0000\uEFB2\u8EA2\uD4D6\u0000\uEFAB" + // 12370 - 12374
-                "\u8EA2\uD4D2\u0000\uEFAA\u0000\uEFB4\u0000\uEFB0\u0000\uEFB1" + // 12375 - 12379
-                "\u0000\uEFAD\u8EA2\uD4D1\u0000\uEFAC\u8EA2\uD4D7\u8EA2\uD4D4" + // 12380 - 12384
-                "\u0000\u0000\u0000\uEFB3\u0000\u0000\u0000\uEFAE\u0000\uEFAF" + // 12385 - 12389
-                "\u8EA2\uDAE1\u0000\u0000\u8EA2\uDAE3\u8EA2\uDAE2\u0000\u0000" + // 12390 - 12394
-                "\u8EA2\uDAE4\u0000\uF2CA\u8EA2\uDAE0\u0000\u0000\u0000\u0000" + // 12395 - 12399
-                "\u0000\uF5D6\u8EA2\uDFE4\u0000\uF5D3\u0000\uF5D7\u0000\uF5D5" + // 12400 - 12404
-                "\u0000\uF5D4\u8EA2\uE3DE\u0000\u0000\u0000\u0080\u0000\u0081" + // 12405 - 12409
-                "\u0000\u0082\u0000\u0083\u0000\u0084\u0000\u0085\u0000\u0086" + // 12410 - 12414
-                "\u0000\u0087\u0000\u0088\u0000\u0089\u0000\u008A\u0000\u008B" + // 12415 - 12419
-                "\u0000\u008C\u0000\u008D\u0000\u0000\u0000\u0000\u0000\u0090" + // 12420 - 12424
-                "\u0000\u0091\u0000\u0092\u0000\u0093\u0000\u0094\u0000\u0095" + // 12425 - 12429
-                "\u0000\u0096\u0000\u0097\u0000\u0098\u0000\u0099\u0000\u009A" + // 12430 - 12434
-                "\u0000\u009B\u0000\u009C\u0000\u009D\u0000\u009E\u0000\u009F" + // 12435 - 12439
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12440 - 12444
-                "\u0000\u0000\u0000\u0000\u0000\uA1F0\u8EAD\uA1A3\u0000\u0000" + // 12445 - 12449
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12450 - 12454
-                "\u0000\u0000\u0000\uA2F8\u0000\uA2B4\u0000\u0000\u0000\u0000" + // 12455 - 12459
-                "\u8EAD\uA1B2\u0000\u0000\u8EAD\uA1D1\u0000\uA1B1\u0000\u0000" + // 12460 - 12464
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12465 - 12469
-                "\u0000\u0000\u0000\u0000\u8EA2\uAAAC\u8EA2\uAAA5\u8EA2\uAAAB" + // 12470 - 12474
-                "\u8EA2\uAAA4\u8EA2\uAAA6\u8EA2\uA9FE\u8EA2\uA9FC\u0000\u0000" + // 12475 - 12479
-                "\u8EA2\uAAAD\u8EA2\uAAAA\u8EA2\uA9FA\u0000\u0000\u0000\uD0F2" + // 12480 - 12484
-                "\u8EA2\uAAA8\u8EA2\uAAA9\u0000\u0000\u8EA2\uAAA7\u8EA2\uA9FD" + // 12485 - 12489
-                "\u8EA2\uA9FB\u0000\uD0F1\u8EA2\uAAA3\u8EA2\uAAA1\u0000\u0000" + // 12490 - 12494
-                "\u0000\u0000\u8EA2\uAAA2\u8EA2\uAAAE\u0000\u0000\u0000\u0000" + // 12495 - 12499
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12500 - 12504
-                "\u0000\u0000\u0000\uD5B3\u0000\u0000\u0000\uD5B2\u0000\u0000" + // 12505 - 12509
-                "\u8EA2\uAEEE\u0000\uD5AF\u8EA2\uAEF0\u0000\u0000\u0000\uD5B4" + // 12510 - 12514
-                "\u8EA2\uAEF1\u0000\u0000\u0000\u0000\u0000\uD5B7\u0000\u0000" + // 12515 - 12519
-                "\u0000\uD5B5\u8EA2\uAEF2\u8EA2\uAAAF\u8EA2\uAEF4\u0000\u0000" + // 12520 - 12524
-                "\u0000\uD5B1\u0000\u0000\u0000\uD5B0\u0000\u0000\u8EA2\uAEEF" + // 12525 - 12529
-                "\u8EA2\uC0CD\u8EA2\uC0CC\u0000\uE2B0\u0000\u0000\u8EA2\uC7DF" + // 12530 - 12534
-                "\u8EA2\uC7E0\u8EA2\uC7DE\u0000\u0000\u0000\u0000\u0000\uE6EF" + // 12535 - 12539
-                "\u0000\uE6EE\u0000\u0000\u0000\uEBB2\u0000\uEBB1\u0000\u0000" + // 12540 - 12544
-                "\u8EA2\uD4D0\u8EA2\uDADF\u8EA2\uDADD\u8EA2\uDADE\u0000\uF2C9" + // 12545 - 12549
-                "\u8EA2\uDFE3\u8EA2\uDFE2\u0000\u0000\u8EA2\uE3DD\u8EA2\uE3DC" + // 12550 - 12554
-                "\u8EA2\uE3DB\u8EA2\uE7B3\u0000\u0000\u8EA2\uF1F8\u0000\uCBCA" + // 12555 - 12559
-                "\u0000\uD3D6\u0000\u0000\u0000\uD3D7\u0000\uD8C2\u0000\uD8C3" + // 12560 - 12564
-                "\u8EA2\uB3A6\u8EA2\uB3A5\u8EA2\uB9D5\u0000\u0000\u0000\uDDCE" + // 12565 - 12569
-                "\u0000\uDDCC\u0000\uDDC9\u0000\uDDCD\u0000\uDDCB\u0000\uDDCA" + // 12570 - 12574
-                "\u0000\u0000\u0000\u0000\u0000\uE2B1\u8EA2\uC0D0\u0000\u0000" + // 12575 - 12579
-                "\u0000\uE6F4\u0000\uE2B3\u0000\uE2B8\u8EA2\uC0D2\u0000\uE2BA" + // 12580 - 12584
-                "\u0000\uE2B9\u0000\uE2BC\u8EA2\uC0D1\u8EA2\uC0CE\u0000\uE2B6" + // 12585 - 12589
-                "\u0000\uE2B2\u0000\uE2B4\u8EA2\uC0CF\u0000\uE2BB\u0000\uFBF4" + // 12590 - 12594
-                "\u0000\u0000\u8EA2\uEEA7\u0000\u0000\u8EA2\uEEA6\u8EA2\uEEA9" + // 12595 - 12599
-                "\u8EA2\uEEA8\u0000\u0000\u8EA2\uEFD1\u0000\u0000\u0000\uFCC8" + // 12600 - 12604
-                "\u8EA2\uEFD0\u8EA2\uEFCE\u0000\u0000\u8EA2\uEFCF\u0000\u0000" + // 12605 - 12609
-                "\u0000\u0000\u0000\u0000\u0000\uFCEA\u0000\uFCE9\u8EA2\uF0CF" + // 12610 - 12614
-                "\u8EA2\uF0D0\u0000\uFCEB\u0000\u0000\u8EA2\uF1BC\u8EA2\uF1BD" + // 12615 - 12619
-                "\u0000\uFDB4\u0000\u0000\u0000\uFDBA\u0000\u0000\u8EA2\uF1F7" + // 12620 - 12624
-                "\u8EA2\uF2B6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12625 - 12629
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12630 - 12634
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12635 - 12639
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12640 - 12644
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12645 - 12649
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12650 - 12654
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA4AB\u0000\uA4AC" + // 12655 - 12659
-                "\u0000\uA4AD\u0000\uA4AE\u0000\uA4AF\u0000\uA4B0\u0000\uA4B1" + // 12660 - 12664
-                "\u0000\uA4B2\u0000\uA4B3\u0000\uA4B4\u0000\u0000\u0000\u0000" + // 12665 - 12669
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA6B5" + // 12670 - 12674
-                "\u0000\uA6B6\u0000\uA6B7\u0000\uA6B8\u0000\uA6B9\u0000\uA6BA" + // 12675 - 12679
-                "\u0000\uA6BB\u0000\uA6BC\u0000\uA6BD\u0000\uA6BE\u0000\u0000" + // 12680 - 12684
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12685 - 12689
-                "\u8EA2\uEAFB\u8EA2\uEBA3\u8EA2\uEBA1\u8EA2\uEAF9\u8EA2\uEBA6" + // 12690 - 12694
-                "\u0000\u0000\u8EA2\uEAF8\u0000\u0000\u0000\uFADA\u8EA2\uEBA2" + // 12695 - 12699
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEAFC\u0000\uFAD9" + // 12700 - 12704
-                "\u8EA2\uEBA5\u0000\u0000\u0000\u0000\u8EA2\uEBA4\u0000\u0000" + // 12705 - 12709
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uECF7\u8EA2\uECF6" + // 12710 - 12714
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uECFD\u0000\u0000" + // 12715 - 12719
-                "\u8EA2\uECF9\u8EA2\uECFC\u0000\uFBCC\u0000\u0000\u0000\u0000" + // 12720 - 12724
-                "\u8EA2\uECFA\u8EA2\uECFB\u0000\u0000\u8EA2\uECF5\u8EA2\uECF8" + // 12725 - 12729
-                "\u0000\uFBCB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFCAB" + // 12730 - 12734
-                "\u8EA2\uEEE1\u8EA2\uEEDC\u8EA2\uEEE0\u0000\u0000\u8EA2\uEEE3" + // 12735 - 12739
-                "\u8EA2\uEEDF\u0000\u0000\u8EA2\uEEDB\u0000\u0000\u0000\uFCAD" + // 12740 - 12744
-                "\u8EA2\uEEDE\u8EA2\uEEE2\u0000\uFCAC\u8EA2\uEED9\u8EA2\uE7A6" + // 12745 - 12749
-                "\u0000\uF8FA\u8EA2\uE7AD\u0000\u0000\u0000\u0000\u8EA2\uECBE" + // 12750 - 12754
-                "\u0000\uF9A3\u8EA2\uE3CB\u8EA2\uE7A4\u0000\uF8FD\u8EA2\uE7A5" + // 12755 - 12759
-                "\u8EA2\uE7AA\u0000\u0000\u0000\u0000\u0000\uF9A1\u0000\uF9A2" + // 12760 - 12764
-                "\u8EA2\uE7A3\u8EA2\uE7AC\u8EA2\uE7AE\u8EA2\uE7A7\u8EA2\uE7A9" + // 12765 - 12769
-                "\u8EA2\uE7AB\u8EA2\uE7A8\u8EA2\uE7AF\u0000\uF8FC\u0000\uF9A4" + // 12770 - 12774
-                "\u0000\uF8FE\u0000\u0000\u0000\uF8FB\u8EA2\uE9FC\u0000\u0000" + // 12775 - 12779
-                "\u0000\uFAC2\u8EA2\uE9FA\u0000\u0000\u0000\u0000\u8EA2\uE9FE" + // 12780 - 12784
-                "\u0000\u0000\u8EA2\uEAA1\u0000\uFAC0\u8EA2\uEAA2\u8EA2\uE9FD" + // 12785 - 12789
-                "\u0000\u0000\u8EA2\uE9FB\u0000\uFAC3\u0000\uFABF\u8EA2\uEAA3" + // 12790 - 12794
-                "\u0000\u0000\u0000\uFAC1\u0000\uFABE\u0000\u0000\u0000\u0000" + // 12795 - 12799
-                "\u0000\u0000\u0000\uFBAB\u0000\u0000\u0000\u0000\u0000\uFBAC" + // 12800 - 12804
-                "\u8EA2\uECBD\u8EA2\uECBC\u8EA2\uECBF\u8EA2\uECC0\u0000\u0000" + // 12805 - 12809
-                "\u0000\uFBAD\u8EA2\uEEA5\u8EA2\uEEAA\u0000\uF2BB\u0000\uF2C0" + // 12810 - 12814
-                "\u0000\uF2C1\u0000\u0000\u0000\uF5CE\u8EA2\uDFD0\u8EA2\uDFD9" + // 12815 - 12819
-                "\u8EA2\uDFD6\u8EA2\uDFD8\u0000\u0000\u0000\uF5CB\u8EA2\uDFD1" + // 12820 - 12824
-                "\u0000\u0000\u8EA2\uDFD7\u0000\uF5C7\u8EA2\uDFD3\u0000\uF5CF" + // 12825 - 12829
-                "\u8EA2\uDFCF\u8EA2\uDFD4\u8EA2\uDFDB\u8EA2\uDAD2\u8EA2\uDFD5" + // 12830 - 12834
-                "\u8EA2\uDFCE\u0000\uF5C8\u8EA2\uDFCD\u0000\uF5C9\u8EA2\uDFDC" + // 12835 - 12839
-                "\u0000\uF5CA\u8EA2\uDFDA\u0000\uF5CD\u8EA2\uDFCC\u0000\u0000" + // 12840 - 12844
-                "\u0000\uF5CC\u0000\u0000\u8EA2\uDFD2\u8EA2\uE3C7\u8EA2\uE3D5" + // 12845 - 12849
-                "\u8EA2\uE3D0\u8EA2\uE3D2\u8EA2\uE3C6\u0000\uF7BE\u0000\u0000" + // 12850 - 12854
-                "\u8EA2\uE3C5\u0000\uF7C1\u0000\uF7C0\u0000\u0000\u8EA2\uE3D4" + // 12855 - 12859
-                "\u8EA2\uE3CC\u8EA2\uE3C9\u8EA2\uE3CF\u0000\u0000\u8EA2\uE3C8" + // 12860 - 12864
-                "\u0000\u0000\u8EA2\uE3CA\u8EA2\uE3D3\u8EA2\uE3D1\u0000\u0000" + // 12865 - 12869
-                "\u0000\uF7BF\u8EA2\uE3D8\u8EA2\uE3D6\u8EA2\uE3CD\u8EA2\uE3D7" + // 12870 - 12874
-                "\u8EA2\uE3CE\u0000\u0000\u0000\uA4DB\u0000\uA4DC\u0000\uA4DD" + // 12875 - 12879
-                "\u0000\uA4DE\u0000\uA4DF\u0000\uA4E0\u0000\uA4E1\u0000\uA4E2" + // 12880 - 12884
-                "\u0000\uA4E3\u0000\uA4E4\u0000\uA4E5\u0000\uA4E6\u0000\uA4E7" + // 12885 - 12889
-                "\u0000\uA4E8\u0000\uA4E9\u0000\uA4EA\u0000\uA4EB\u0000\uA4EC" + // 12890 - 12894
-                "\u0000\uA4ED\u0000\uA4EE\u0000\uA4EF\u0000\uA4F0\u0000\uA4F1" + // 12895 - 12899
-                "\u0000\uA4F2\u0000\uA4F3\u0000\uA4F4\u0000\uA1C2\u0000\uA2DE" + // 12900 - 12904
-                "\u0000\uA1C3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12905 - 12909
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12910 - 12914
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12915 - 12919
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12920 - 12924
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12925 - 12929
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12930 - 12934
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12935 - 12939
-                "\u0000\u0000\u0000\u0000\u0000\uCBCB\u0000\u0000\u0000\uDDD0" + // 12940 - 12944
-                "\u0000\uDDCF\u8EA2\uC7E2\u8EA2\uC7E3\u0000\u0000\u0000\uEBB6" + // 12945 - 12949
-                "\u8EA2\uDAE5\u0000\uEFB5\u8EA2\uDAE6\u8EA2\uDFE5\u0000\uCBCC" + // 12950 - 12954
-                "\u0000\u0000\u8EA2\uADD3\u0000\uD3D9\u0000\uD3D8\u0000\u0000" + // 12955 - 12959
-                "\u8EA2\uB3A7\u0000\uD8C4\u8EA2\uB3A8\u8EA2\uB9D8\u0000\u0000" + // 12960 - 12964
-                "\u8EA2\uB9D7\u0000\u0000\u8EA2\uB9D6\u0000\u0000\u0000\u0000" + // 12965 - 12969
-                "\u0000\uC6CF\u8EA2\uA2BD\u0000\u0000\u0000\uCAAD\u8EA2\uA3F2" + // 12970 - 12974
-                "\u0000\u0000\u8EA2\uAABC\u0000\uD0FB\u0000\u0000\u0000\uE8E2" + // 12975 - 12979
-                "\u0000\uC4DD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC8A2" + // 12980 - 12984
-                "\u0000\u0000\u0000\u0000\u0000\uE3EF\u0000\uC4DE\u0000\uC5BE" + // 12985 - 12989
-                "\u0000\uC5BF\u0000\u0000\u0000\uC6D1\u0000\uC6D0\u0000\u0000" + // 12990 - 12994
-                "\u8EA2\uA2BE\u0000\uC8A3\u0000\u0000\u8EA2\uA3F3\u0000\u0000" + // 12995 - 12999
-                "\u0000\uCAAE\u0000\u0000\u0000\u0000\u8EA2\uA6D2\u8EA2\uA6D3" + // 13000 - 13004
-                "\u8EA2\uA6D4\u0000\u0000\u0000\uCDB8\u0000\uCDB9\u8EA2\uA6D1" + // 13005 - 13009
-                "\u0000\uCDBA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0FC" + // 13010 - 13014
-                "\u8EA2\uAABD\u0000\u0000\u8EA2\uAEFC\u0000\uD5BE\u0000\u0000" + // 13015 - 13019
-                "\u8EA2\uAEFB\u0000\u0000\u0000\uDAAF\u8EA2\uB5B0\u0000\uDAB0" + // 13020 - 13024
-                "\u8EA2\uB5B1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDFA4" + // 13025 - 13029
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC6CB\u0000\uC6CC" + // 13030 - 13034
-                "\u8EA2\uA1D9\u0000\u0000\u0000\uC7FD\u0000\u0000\u0000\u0000" + // 13035 - 13039
-                "\u0000\u0000\u8EA2\uA3EB\u0000\u0000\u0000\uCAA8\u0000\u0000" + // 13040 - 13044
-                "\u8EA2\uA3EC\u0000\u0000\u0000\u0000\u0000\uCDB0\u0000\u0000" + // 13045 - 13049
-                "\u0000\u0000\u8EA2\uA6CF\u0000\uCDAE\u0000\uCDAD\u8EA2\uA6CE" + // 13050 - 13054
-                "\u0000\uCDAB\u8EA2\uA6D0\u0000\uCDAC\u0000\uCDAF\u0000\u0000" + // 13055 - 13059
-                "\u0000\uD0F4\u0000\u0000\u0000\uD0F6\u8EA2\uAAB4\u8EA2\uAAB1" + // 13060 - 13064
-                "\u8EA2\uAAB2\u8EA2\uAAB3\u8EA2\uAAB5\u0000\uD0F5\u0000\u0000" + // 13065 - 13069
-                "\u0000\u0000\u8EA2\uAEF6\u8EA2\uAEF5\u0000\u0000\u0000\uD5BA" + // 13070 - 13074
-                "\u0000\u0000\u0000\uD5B9\u0000\u0000\u0000\u0000\u0000\u0000" + // 13075 - 13079
-                "\u0000\u0000\u0000\u0000\u0000\uDAA8\u8EA2\uB5AA\u0000\u0000" + // 13080 - 13084
-                "\u0000\uDAA7\u0000\uDAA9\u0000\uDAA6\u0000\u0000\u0000\u0000" + // 13085 - 13089
-                "\u0000\u0000\u0000\u0000\u0000\uDEFA\u8EA2\uB5A9\u0000\u0000" + // 13090 - 13094
-                "\u0000\u0040\u0000\u0041\u0000\u0042\u0000\u0043\u0000\u0044" + // 13095 - 13099
-                "\u0000\u0045\u0000\u0046\u0000\u0047\u0000\u0048\u0000\u0049" + // 13100 - 13104
-                "\u0000\u004A\u0000\u004B\u0000\u004C\u0000\u004D\u0000\u004E" + // 13105 - 13109
-                "\u0000\u004F\u0000\u0050\u0000\u0051\u0000\u0052\u0000\u0053" + // 13110 - 13114
-                "\u0000\u0054\u0000\u0055\u0000\u0056\u0000\u0057\u0000\u0058" + // 13115 - 13119
-                "\u0000\u0059\u0000\u005A\u0000\u005B\u0000\\\u0000\u005D" + // 13120 - 13124
-                "\u0000\u005E\u0000\u005F\u0000\u0060\u0000\u0061\u0000\u0062" + // 13125 - 13129
-                "\u0000\u0063\u0000\u0064\u0000\u0065\u0000\u0066\u0000\u0067" + // 13130 - 13134
-                "\u0000\u0068\u0000\u0069\u0000\u006A\u0000\u006B\u0000\u006C" + // 13135 - 13139
-                "\u0000\u006D\u0000\u006E\u0000\u006F\u0000\u0070\u0000\u0071" + // 13140 - 13144
-                "\u0000\u0072\u0000\u0073\u0000\u0074\u0000\u0075\u0000\u0076" + // 13145 - 13149
-                "\u0000\u0077\u0000\u0078\u0000\u0079\u0000\u007A\u0000\u007B" + // 13150 - 13154
-                "\u0000\u007C\u0000\u007D\u0000\u007E\u0000\u007F\u8EA2\uD4C7" + // 13155 - 13159
-                "\u0000\u0000\u0000\uEEFD\u8EA2\uD4CA\u0000\uEEF7\u8EA2\uD4C8" + // 13160 - 13164
-                "\u8EA2\uD4BE\u0000\uEEF6\u8EA2\uDAD6\u0000\uEEFC\u0000\u0000" + // 13165 - 13169
-                "\u0000\uEEF9\u0000\u0000\u0000\uEFA3\u0000\u0000\u8EA2\uD4BD" + // 13170 - 13174
-                "\u0000\u0000\u8EA2\uD4C1\u0000\uEEF5\u8EA2\uD4C0\u8EA2\uD4C2" + // 13175 - 13179
-                "\u8EA2\uD4C3\u0000\uEFA2\u8EA2\uD4C5\u8EA2\uD4C9\u8EA2\uD4CD" + // 13180 - 13184
-                "\u0000\u0000\u0000\uEFA6\u0000\uF2BC\u8EA2\uDAD1\u8EA2\uDAD7" + // 13185 - 13189
-                "\u8EA2\uDAD4\u8EA2\uDACC\u8EA2\uDAD8\u8EA2\uDACD\u0000\u0000" + // 13190 - 13194
-                "\u8EA2\uDAD3\u0000\u0000\u0000\uF2B7\u0000\uF2BD\u8EA2\uDAD9" + // 13195 - 13199
-                "\u0000\u0000\u0000\u0000\u0000\uF2B9\u0000\u0000\u0000\uF2C3" + // 13200 - 13204
-                "\u0000\uF2BE\u8EA2\uDADB\u8EA2\uDAD5\u0000\uF2BA\u8EA2\uDACE" + // 13205 - 13209
-                "\u0000\uF2C4\u8EA2\uDACF\u8EA2\uDAD0\u0000\uF2C5\u0000\uF2C2" + // 13210 - 13214
-                "\u0000\uEEFA\u0000\u0000\u0000\uF2B8\u8EA2\uDADC\u0000\uF2C6" + // 13215 - 13219
-                "\u0000\u0000\u0000\uF2BF\u8EA2\uDADA\u8EA2\uC0C0\u0000\uE2A6" + // 13220 - 13224
-                "\u0000\u0000\u0000\u0000\u8EA2\uC0C3\u8EA2\uC0C4\u0000\uE2AA" + // 13225 - 13229
-                "\u0000\u0000\u8EA2\uC0C6\u0000\u0000\u8EA2\uC0C8\u0000\u0000" + // 13230 - 13234
-                "\u8EA2\uC0C9\u8EA2\uC0BD\u8EA2\uC0BC\u8EA2\uC0CA\u0000\uE2A9" + // 13235 - 13239
-                "\u8EA2\uC0C7\u8EA2\uC0C5\u0000\u0000\u0000\uE2A7\u0000\uE2A3" + // 13240 - 13244
-                "\u0000\uE2AE\u8EA2\uC0C1\u8EA2\uC0C2\u8EA2\uC0BF\u0000\u0000" + // 13245 - 13249
-                "\u0000\uE2A8\u0000\u0000\u0000\u0000\u0000\uE2A4\u0000\u0000" + // 13250 - 13254
-                "\u0000\uE2A2\u8EA2\uC7CE\u0000\uE6E6\u0000\uE6E1\u0000\u0000" + // 13255 - 13259
-                "\u0000\u0000\u0000\uE6DC\u0000\u0000\u0000\uE6EC\u0000\uE6DD" + // 13260 - 13264
-                "\u0000\u0000\u0000\uE6D9\u0000\uE6E8\u0000\uE6E5\u0000\uE6E7" + // 13265 - 13269
-                "\u0000\u0000\u0000\uE6DE\u0000\uE6E3\u0000\uE6DA\u0000\uE6DB" + // 13270 - 13274
-                "\u8EA2\uC7D6\u8EA2\uC7D3\u8EA2\uC7CB\u8EA2\uC7D0\u0000\u0000" + // 13275 - 13279
-                "\u0000\uE6E9\u8EA2\uC7D7\u0000\uE6EA\u0000\uE6E0\u0000\u0000" + // 13280 - 13284
-                "\u0000\u0000\u8EA2\uC7CD\u0000\uCBC6\u0000\u0000\u0000\uD3D4" + // 13285 - 13289
-                "\u0000\uD3D5\u8EA2\uADD1\u0000\u0000\u0000\u0000\u8EA2\uADD2" + // 13290 - 13294
-                "\u0000\uD3D3\u0000\u0000\u0000\uD8B9\u0000\u0000\u0000\uD8B7" + // 13295 - 13299
-                "\u0000\u0000\u0000\uD8B6\u0000\uD8BD\u0000\uD8B5\u0000\uD8BE" + // 13300 - 13304
-                "\u8EA2\uB3A1\u0000\uD8BB\u0000\u0000\u0000\uD8B8\u0000\uD8BC" + // 13305 - 13309
-                "\u0000\uD8BA\u0000\uD8B4\u0000\u0000\u0000\u0000\u0000\uDDC5" + // 13310 - 13314
-                "\u0000\u0000\u0000\uDDBF\u8EA2\uB9CF\u0000\uDDC4\u0000\u0000" + // 13315 - 13319
-                "\u0000\u0000\u0000\uDDC6\u0000\uDDC0\u0000\u0000\u0000\uDDC1" + // 13320 - 13324
-                "\u0000\u0000\u8EA2\uB9CD\u0000\u0000\u0000\u0000\u0000\uDDBE" + // 13325 - 13329
-                "\u0000\u0000\u8EA2\uB9CE\u0000\uDDC3\u0000\u0000\u0000\u0000" + // 13330 - 13334
-                "\u8EA2\uB9CC\u0000\uDDC2\u0000\u0000\u0000\u0000\u0000\uE2AB" + // 13335 - 13339
-                "\u0000\u0000\u0000\uE2AD\u0000\u0000\u0000\u0000\u8EA2\uC0BE" + // 13340 - 13344
-                "\u0000\uE2AC\u0000\uE2A1\u0000\uE2A5\u0000\u0000\u0000\uE6EB" + // 13345 - 13349
-                "\u8EA2\uC7CF\u0000\uFDA8\u0000\u0000\u0000\u0000\u0000\u0000" + // 13350 - 13354
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 13355 - 13359
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 13360 - 13364
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCBC5" + // 13365 - 13369
-                "\u8EA2\uADD0\u0000\uD3D2\u8EA2\uB9CB\u8EA2\uB9C9\u0000\u0000" + // 13370 - 13374
-                "\u0000\u0000\u8EA2\uB9CA\u8EA2\uC0BA\u8EA2\uC0BB\u8EA2\uC7C9" + // 13375 - 13379
-                "\u8EA2\uC0B9\u0000\u0000\u8EA2\uC7C3\u8EA2\uC7C7\u8EA2\uC7C6" + // 13380 - 13384
-                "\u8EA2\uC7C8\u0000\uE6D8\u8EA2\uC7C5\u8EA2\uC7C4\u8EA2\uC7CA" + // 13385 - 13389
-                "\u0000\u0000\u8EA2\uCEB1\u8EA2\uCEAF\u0000\u0000\u8EA2\uCEB0" + // 13390 - 13394
-                "\u8EA2\uD4BC\u8EA2\uD4BA\u0000\u0000\u0000\u0000\u8EA2\uD4BB" + // 13395 - 13399
-                "\u8EA2\uDACB\u8EA2\uDFCA\u8EA2\uDFCB\u0000\uF7BD\u0000\u0000" + // 13400 - 13404
-                "\u8EA2\uE7A2\u8EA2\uE9F9\u0000\uFABD\u0000\u0000\u8EA2\uECBB" + // 13405 - 13409
-                "\u8EA2\uEEA4\u0000\uFBF3\u0000\u0000\u8EA2\uEFCD\u8EA2\uF1BB" + // 13410 - 13414
-                "\u8EA2\uC0AD\u0000\uE1FA\u0000\uE1FB\u0000\u0000\u0000\u0000" + // 13415 - 13419
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC0B5" + // 13420 - 13424
-                "\u0000\uE6D4\u8EA2\uC7B9\u8EA2\uC7BF\u8EA2\uC7BA\u8EA2\uC7BB" + // 13425 - 13429
-                "\u0000\u0000\u8EA2\uC7C0\u0000\u0000\u0000\uE6D6\u0000\u0000" + // 13430 - 13434
-                "\u0000\uE6CE\u0000\uE6D5\u8EA2\uC7B8\u8EA2\uC0AA\u0000\uE6D1" + // 13435 - 13439
-                "\u0000\uE6CF\u8EA2\uC7BE\u8EA2\uC7BD\u0000\uE6D0\u0000\uE6D2" + // 13440 - 13444
-                "\u8EA2\uC7BC\u0000\uE6CD\u0000\u0000\u0000\uE6D3\u0000\u0000" + // 13445 - 13449
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCDFD" + // 13450 - 13454
-                "\u0000\uEAFC\u0000\u0000\u0000\u0000\u8EA2\uCEAA\u8EA2\uCEA9" + // 13455 - 13459
-                "\u0000\u0000\u8EA2\uCEA4\u0000\uEAFE\u8EA2\uCEA8\u8EA2\uCDFE" + // 13460 - 13464
-                "\u8EA2\uCEA1\u0000\uEAF6\u0000\uEAF8\u0000\u0000\u8EA2\uCEA6" + // 13465 - 13469
-                "\u8EA2\uCDFC\u0000\uEAFA\u0000\uEAF9\u8EA2\uCEA2\u8EA2\uCEA7" + // 13470 - 13474
-                "\u8EA2\uCEA5\u0000\uEAFB\u8EA2\uCEA3\u0000\u0000\u0000\uA1AA" + // 13475 - 13479
-                "\u8EAD\uA4C3\u0000\uA1EC\u0000\uA2E3\u0000\uA2E8\u0000\uA1ED" + // 13480 - 13484
-                "\u8EAD\uA4C2\u0000\uA1BE\u0000\uA1BF\u0000\uA1EE\u0000\uA2B0" + // 13485 - 13489
-                "\u0000\uA1A2\u0000\uA2B1\u0000\uA1A5\u0000\uA2DF\u0000\uA4A1" + // 13490 - 13494
-                "\u0000\uA4A2\u0000\uA4A3\u0000\uA4A4\u0000\uA4A5\u0000\uA4A6" + // 13495 - 13499
-                "\u0000\uA4A7\u0000\uA4A8\u0000\uA4A9\u0000\uA4AA\u0000\uA1A8" + // 13500 - 13504
-                "\u0000\uA1A7\u0000\uA2B6\u0000\uA2B8\u0000\uA2B7\u0000\uA1A9" + // 13505 - 13509
-                "\u0000\uA2E9\u0000\uA4C1\u0000\uA4C2\u0000\uA4C3\u0000\uA4C4" + // 13510 - 13514
-                "\u0000\uA4C5\u0000\uA4C6\u0000\uA4C7\u0000\uA4C8\u0000\uA4C9" + // 13515 - 13519
-                "\u0000\uA4CA\u0000\uA4CB\u0000\uA4CC\u0000\uA4CD\u0000\uA4CE" + // 13520 - 13524
-                "\u0000\uA4CF\u0000\uA4D0\u0000\uA4D1\u0000\uA4D2\u0000\uA4D3" + // 13525 - 13529
-                "\u0000\uA4D4\u0000\uA4D5\u0000\uA4D6\u0000\uA4D7\u0000\uA4D8" + // 13530 - 13534
-                "\u0000\uA4D9\u0000\uA4DA\u8EAD\uA1B0\u0000\uA2E0\u8EAD\uA1B1" + // 13535 - 13539
-                "\u8EAD\uA1A4\u0000\uA2A5\u8EA2\uB2F7\u0000\uD8B0\u0000\uD8B1" + // 13540 - 13544
-                "\u8EA2\uB2FB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 13545 - 13549
-                "\u0000\uDDB6\u8EA2\uB9B5\u0000\u0000\u0000\uDDBB\u8EA2\uB9C5" + // 13550 - 13554
-                "\u0000\uDDBA\u8EA2\uB9C7\u0000\u0000\u0000\u0000\u8EA2\uB9BB" + // 13555 - 13559
-                "\u0000\uDDB8\u8EA2\uB9C6\u0000\u0000\u8EA2\uB9B6\u0000\uDDB9" + // 13560 - 13564
-                "\u8EA2\uB9C2\u8EA2\uB9BE\u8EA2\uB9C0\u8EA2\uB9BA\u8EA2\uB9C1" + // 13565 - 13569
-                "\u0000\u0000\u0000\u0000\u0000\uDDB5\u8EA2\uB9BD\u0000\u0000" + // 13570 - 13574
-                "\u8EA2\uB9BC\u8EA2\uB9B8\u0000\u0000\u8EA2\uB9C3\u0000\u0000" + // 13575 - 13579
-                "\u0000\u0000\u8EA2\uB9BF\u8EA2\uB9B7\u0000\u0000\u8EA2\uB9B9" + // 13580 - 13584
-                "\u0000\uDDB7\u8EA2\uB9C4\u0000\u0000\u0000\u0000\u0000\u0000" + // 13585 - 13589
-                "\u0000\u0000\u0000\uE1FC\u8EA2\uC0B3\u0000\u0000\u0000\u0000" + // 13590 - 13594
-                "\u0000\u0000\u8EA2\uC0AF\u8EA2\uC0B1\u8EA2\uC0AC\u8EA2\uC0AB" + // 13595 - 13599
-                "\u8EA2\uC0A9\u0000\u0000\u8EA2\uC0B0\u8EA2\uC0B2\u8EA2\uC0AE" + // 13600 - 13604
-                "\u0000\u0000\u0000\uEBF6\u0000\uEBF7\u8EA2\uD6A4\u0000\uF0A5" + // 13605 - 13609
-                "\u0000\uF0A4\u8EA2\uD6A3\u0000\u0000\u8EA2\uE0F5\u0000\u0000" + // 13610 - 13614
-                "\u8EA2\uE4EA\u8EA2\uE4EC\u8EA2\uE4EB\u0000\uF7FD\u0000\uF7FC" + // 13615 - 13619
-                "\u0000\uF7FB\u0000\u0000\u0000\uFBCA\u8EA2\uECF4\u0000\u0000" + // 13620 - 13624
-                "\u0000\uFBC9\u8EA2\uEED6\u8EA2\uEED5\u0000\u0000\u0000\uFCF7" + // 13625 - 13629
-                "\u8EA2\uF0E3\u0000\uDEA3\u8EA2\uC8F0\u0000\u0000\u0000\u0000" + // 13630 - 13634
-                "\u0000\u0000\u8EA2\uCFC9\u8EA2\uCFC7\u8EA2\uCFC8\u0000\u0000" + // 13635 - 13639
-                "\u0000\u0000\u8EA2\uD6AD\u0000\u0000\u8EA2\uD6A8\u8EA2\uD6A5" + // 13640 - 13644
-                "\u8EA2\uD6AC\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD6AE" + // 13645 - 13649
-                "\u0000\u0000\u0000\u0000\u0000\uF0A7\u8EA2\uD6AB\u8EA2\uD6A7" + // 13650 - 13654
-                "\u0000\u0000\u0000\u0000\u8EA2\uD6A6\u8EA2\uD6AA\u8EA2\uD6A9" + // 13655 - 13659
-                "\u0000\uF0A6\u0000\u0000\u0000\u0000\u8EA2\uDCAB\u8EA2\uDCA6" + // 13660 - 13664
-                "\u8EA2\uDCA4\u8EA2\uDCAD\u8EA2\uDCA5\u0000\u0000\u8EA2\uEDA3" + // 13665 - 13669
-                "\u0000\uFBCF\u8EA2\uEDA9\u0000\u0000\u8EA2\uEDA8\u0000\u0000" + // 13670 - 13674
-                "\u8EA2\uEDA4\u8EA2\uEDB0\u0000\u0000\u8EA2\uEDA5\u8EA2\uEEE8" + // 13675 - 13679
-                "\u8EA2\uEDB3\u8EA2\uEDB5\u8EA2\uEDAC\u8EA2\uEDA6\u8EA2\uEEE9" + // 13680 - 13684
-                "\u8EA2\uEEEB\u8EA2\uEEE5\u0000\uFCAE\u0000\u0000\u8EA2\uEEF2" + // 13685 - 13689
-                "\u8EA2\uEEF0\u0000\uFCAF\u8EA2\uEEEF\u8EA2\uEEEE\u8EA2\uEEE7" + // 13690 - 13694
-                "\u8EA2\uEEE4\u8EA2\uEEEA\u8EA2\uEEF3\u8EA2\uEEE6\u8EA2\uEEEC" + // 13695 - 13699
-                "\u0000\u0000\u8EA2\uEFF7\u8EA2\uEFFC\u8EA2\uEFF2\u8EA2\uEFF5" + // 13700 - 13704
-                "\u0000\uFCDA\u8EA2\uEFF9\u0000\u0000\u8EA2\uF0A2\u8EA2\uEEED" + // 13705 - 13709
-                "\u0000\u0000\u8EA2\uEFF3\u8EA2\uEFFD\u8EA2\uF0A3\u8EA2\uEFF8" + // 13710 - 13714
-                "\u8EA2\uEFF1\u8EA2\uEFFB\u0000\u0000\u8EA2\uEFFA\u8EA2\uF0A1" + // 13715 - 13719
-                "\u8EA2\uEFFE\u8EA2\uEEF1\u8EA2\uEFF6\u8EA2\uEFF0\u8EA2\uEFF4" + // 13720 - 13724
-                "\u0000\uFCF9\u0000\uFCFA\u8EA2\uEFEF\u0000\u0000\u8EA2\uF0F4" + // 13725 - 13729
-                "\u8EA2\uF0EB\u8EA2\uF0F3\u0000\uC8E6\u8EA2\uADCB\u0000\u0000" + // 13730 - 13734
-                "\u8EA2\uB2F1\u8EA2\uB2F2\u0000\u0000\u0000\u0000\u0000\u0000" + // 13735 - 13739
-                "\u8EA2\uC0A6\u0000\u0000\u8EA2\uECB6\u8EA2\uF0CE\u0000\uC8E7" + // 13740 - 13744
-                "\u0000\uD3CF\u8EA2\uADCC\u0000\u0000\u0000\u0000\u0000\u0000" + // 13745 - 13749
-                "\u8EA2\uB9B4\u0000\uDDB4\u0000\u0000\u8EA2\uC0A8\u8EA2\uC0A7" + // 13750 - 13754
-                "\u0000\uE1F9\u0000\u0000\u0000\uE6CC\u8EA2\uD4AA\u0000\uEEEC" + // 13755 - 13759
-                "\u0000\u0000\u0000\uEEED\u0000\u0000\u0000\u0000\u0000\u0000" + // 13760 - 13764
-                "\u0000\uF2AF\u0000\uFCE8\u0000\uC8E8\u0000\u0000\u0000\u0000" + // 13765 - 13769
-                "\u0000\u0000\u8EA2\uADCD\u0000\uCFD0\u8EA2\uADCF\u8EA2\uADCE" + // 13770 - 13774
-                "\u0000\uD3D0\u0000\u0000\u8EA2\uB2F3\u0000\u0000\u8EA2\uB2FA" + // 13775 - 13779
-                "\u0000\uD8AE\u8EA2\uB2F8\u8EA2\uB2F6\u0000\u0000\u8EA2\uB2FD" + // 13780 - 13784
-                "\u8EA2\uB2F4\u8EA2\uB2F5\u0000\uD8AF\u0000\u0000\u0000\uD8B3" + // 13785 - 13789
-                "\u0000\u0000\u0000\u0000\u8EA2\uB2FE\u0000\uD8B2\u8EA2\uB2FC" + // 13790 - 13794
-                "\u8EA2\uB2F9\u8EA2\uE6E6\u8EA2\uE3B9\u8EA2\uE6F3\u8EA2\uE6E8" + // 13795 - 13799
-                "\u0000\u0000\u0000\uF8F2\u8EA2\uE6EE\u0000\u0000\u8EA2\uE6F0" + // 13800 - 13804
-                "\u8EA2\uE6EB\u8EA2\uE6F2\u8EA2\uE6ED\u8EA2\uE6EC\u0000\uF8F3" + // 13805 - 13809
-                "\u0000\u0000\u0000\u0000\u8EA2\uE9F1\u8EA2\uE9F2\u0000\u0000" + // 13810 - 13814
-                "\u8EA2\uE9F4\u0000\uFAB9\u0000\uFABA\u8EA2\uE9F5\u8EA2\uE9F3" + // 13815 - 13819
-                "\u0000\u0000\u8EA2\uE9F0\u0000\u0000\u8EA2\uECB1\u8EA2\uECB4" + // 13820 - 13824
-                "\u8EA2\uECB0\u0000\u0000\u0000\uFBA7\u8EA2\uECB2\u0000\uFBA6" + // 13825 - 13829
-                "\u0000\uFBA5\u0000\uFBA4\u8EA2\uECB3\u8EA2\uEDFE\u8EA2\uEDFC" + // 13830 - 13834
-                "\u0000\u0000\u8EA2\uEDFB\u8EA2\uECAF\u8EA2\uEDFD\u8EA2\uECB5" + // 13835 - 13839
-                "\u8EA2\uEDFA\u0000\u0000\u8EA2\uEFC8\u8EA2\uEFA6\u8EA2\uEFC6" + // 13840 - 13844
-                "\u0000\uFCC7\u8EA2\uEFC7\u8EA2\uEFC9\u0000\u0000\u8EA2\uF0CD" + // 13845 - 13849
-                "\u0000\uFCE6\u8EA2\uF0CC\u8EA2\uF0CB\u0000\uFCE7\u0000\u0000" + // 13850 - 13854
-                "\u0000\uFDA7\u8EA2\uF1DD\u8EA2\uF1F5\u8EA2\uF1F4\u8EA2\uF1F6" + // 13855 - 13859
-                "\u0000\uF5B7\u0000\u0000\u8EA2\uDFB2\u8EA2\uDFB1\u8EA2\uDFB6" + // 13860 - 13864
-                "\u8EA2\uDFA9\u0000\uF5BB\u0000\u0000\u0000\uF5BF\u8EA2\uDFB0" + // 13865 - 13869
-                "\u8EA2\uDFB7\u0000\uF5C0\u8EA2\uDFB3\u0000\u0000\u0000\u0000" + // 13870 - 13874
-                "\u0000\u0000\u0000\u0000\u0000\uF5B8\u0000\uF5BA\u8EA2\uE3B3" + // 13875 - 13879
-                "\u8EA2\uE3B1\u0000\u0000\u0000\u0000\u8EA2\uE3B7\u8EA2\uE3B5" + // 13880 - 13884
-                "\u8EA2\uE3B8\u0000\u0000\u8EA2\uE3AA\u8EA2\uE3B2\u8EA2\uE3BC" + // 13885 - 13889
-                "\u8EA2\uDFBD\u8EA2\uE3AE\u0000\uF7BA\u8EA2\uD3EC\u8EA2\uE3A9" + // 13890 - 13894
-                "\u8EA2\uE3B6\u8EA2\uE3B0\u8EA2\uE3AD\u8EA2\uE3A8\u8EA2\uE3A7" + // 13895 - 13899
-                "\u8EA2\uE3BB\u0000\u0000\u8EA2\uE3AC\u8EA2\uE3AB\u0000\uF7B8" + // 13900 - 13904
-                "\u8EA2\uE3B4\u0000\u0000\u0000\uF7B7\u0000\u0000\u0000\u0000" + // 13905 - 13909
-                "\u0000\uF7B9\u8EA2\uE3AF\u8EA2\uE3BA\u0000\u0000\u8EA2\uE6E9" + // 13910 - 13914
-                "\u8EA2\uE6EA\u0000\u0000\u0000\uF8F4\u8EA2\uE6E7\u0000\uF8F1" + // 13915 - 13919
-                "\u8EA2\uE6EF\u0000\u0000\u0000\uF8F5\u8EA2\uE6F1\u8EA2\uCDE0" + // 13920 - 13924
-                "\u8EA2\uCDE8\u8EA2\uCDF4\u8EA2\uCDE6\u0000\u0000\u0000\u0000" + // 13925 - 13929
-                "\u8EA2\uCDEA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 13930 - 13934
-                "\u0000\u0000\u0000\uEEEA\u8EA2\uC7B0\u8EA2\uD3F9\u8EA2\uD4A4" + // 13935 - 13939
-                "\u8EA2\uD3F8\u8EA2\uD3F4\u8EA2\uD3F1\u0000\uEEEB\u8EA2\uD3EF" + // 13940 - 13944
-                "\u0000\uEAF3\u8EA2\uD3E8\u0000\uEEE9\u8EA2\uD3EE\u0000\uEEE8" + // 13945 - 13949
-                "\u8EA2\uD3F3\u8EA2\uD3F0\u8EA2\uD4A2\u8EA2\uD3FB\u8EA2\uD3F5" + // 13950 - 13954
-                "\u8EA2\uD3FA\u0000\uEEE4\u8EA2\uD3F2\u8EA2\uD4A7\u8EA2\uD3E9" + // 13955 - 13959
-                "\u8EA2\uD3EA\u8EA2\uD4A3\u0000\uEEE5\u8EA2\uD4A8\u0000\uEEE7" + // 13960 - 13964
-                "\u8EA2\uD4A9\u8EA2\uD3F7\u8EA2\uCDDF\u8EA2\uD3FD\u8EA2\uD3F6" + // 13965 - 13969
-                "\u8EA2\uD4A1\u8EA2\uD3FC\u0000\u0000\u0000\u0000\u0000\u0000" + // 13970 - 13974
-                "\u8EA2\uD3ED\u0000\uEEE2\u8EA2\uD4A6\u0000\uEEE3\u8EA2\uD3EB" + // 13975 - 13979
-                "\u0000\uEEE6\u8EA2\uDAB2\u8EA2\uD3FE\u8EA2\uD4A5\u0000\u0000" + // 13980 - 13984
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA4B8\u0000\u0000" + // 13985 - 13989
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 13990 - 13994
-                "\u0000\u0000\u0000\u0000\u8EAD\uA4AE\u0000\u0000\u0000\u0000" + // 13995 - 13999
-                "\u0000\u0000\u0000\u0000\u0000\uA3C4\u0000\u0000\u0000\u0000" + // 14000 - 14004
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14005 - 14009
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14010 - 14014
-                "\u0000\u0000\u0000\uA3C5\u0000\u0000\u0000\u0000\u0000\uA3C7" + // 14015 - 14019
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14020 - 14024
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA3C6\u0000\u0000" + // 14025 - 14029
-                "\u0000\u0000\u0000\uA3C0\u0000\uA3C1\u0000\uA3C3\u0000\uA3C2" + // 14030 - 14034
-                "\u0000\uA3CC\u0000\uA3CD\u0000\uA3CE\u0000\uA1BB\u0000\u0000" + // 14035 - 14039
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14040 - 14044
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14045 - 14049
-                "\u0000\uA5EF\u0000\u0000\u0000\uA5ED\u0000\uA5EE\u0000\uA5F0" + // 14050 - 14054
-                "\u0000\u0000\u0000\uA2A6\u0000\u0000\u0000\u0000\u0000\u0000" + // 14055 - 14059
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14060 - 14064
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA5EC\u0000\u0000" + // 14065 - 14069
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14070 - 14074
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14075 - 14079
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14080 - 14084
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14085 - 14089
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14090 - 14094
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14095 - 14099
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14100 - 14104
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD3F8" + // 14105 - 14109
-                "\u8EA2\uC1D2\u0000\u0000\u0000\u0000\u8EA2\uC8E7\u8EA2\uCFB4" + // 14110 - 14114
-                "\u8EA2\uCFB5\u0000\uEBEC\u0000\u0000\u0000\uEBED\u8EA2\uD5E7" + // 14115 - 14119
-                "\u0000\uEFF1\u0000\u0000\u0000\u0000\u0000\uF6A9\u0000\u0000" + // 14120 - 14124
-                "\u8EA2\uE4D5\u0000\u0000\u0000\uF7F1\u8EA2\uE7F8\u0000\uF9CE" + // 14125 - 14129
-                "\u8EA2\uE7F7\u8EA2\uE7F9\u8EA2\uE7F6\u0000\uE6C5\u8EA2\uC7B4" + // 14130 - 14134
-                "\u0000\uE6C8\u0000\uE6C9\u8EA2\uC7AA\u8EA2\uC7B7\u0000\uE6CA" + // 14135 - 14139
-                "\u0000\uE6C4\u0000\uE6C3\u8EA2\uC7B3\u0000\uE6CB\u8EA2\uC7A9" + // 14140 - 14144
-                "\u8EA2\uC7AC\u8EA2\uC7B6\u8EA2\uC7B2\u0000\u0000\u0000\u0000" + // 14145 - 14149
-                "\u8EA2\uCDFB\u8EA2\uCDF0\u0000\uE6C2\u0000\u0000\u0000\u0000" + // 14150 - 14154
-                "\u0000\u0000\u0000\u0000\u0000\uEAF2\u8EA2\uCDE4\u8EA2\uCDF9" + // 14155 - 14159
-                "\u8EA2\uCDE5\u0000\uEAED\u0000\u0000\u8EA2\uCDE2\u0000\u0000" + // 14160 - 14164
-                "\u8EA2\uCDEB\u8EA2\uCDE3\u0000\uEAEF\u8EA2\uCDDD\u8EA2\uCDF8" + // 14165 - 14169
-                "\u0000\uEAF0\u8EA2\uCDF5\u8EA2\uCDF6\u8EA2\uCDDE\u0000\uEAF5" + // 14170 - 14174
-                "\u8EA2\uCDED\u0000\u0000\u8EA2\uCDE7\u8EA2\uCDEE\u8EA2\uCDE1" + // 14175 - 14179
-                "\u0000\u0000\u8EA2\uCDFA\u8EA2\uCDF2\u8EA2\uCDEC\u8EA2\uCDDC" + // 14180 - 14184
-                "\u0000\uEAF1\u8EA2\uCDF3\u0000\u0000\u0000\uEAF4\u8EA2\uCDF7" + // 14185 - 14189
-                "\u0000\u0000\u8EA2\uCDF1\u0000\uEAEE\u8EA2\uCDEF\u0000\u0000" + // 14190 - 14194
-                "\u8EA2\uCDE9\u0000\uEAEC\u0000\uDDAB\u8EA2\uB9A5\u8EA2\uB9A4" + // 14195 - 14199
-                "\u8EA2\uB9B1\u0000\uDDAD\u8EA2\uB9A6\u0000\uDDAF\u0000\uDDAA" + // 14200 - 14204
-                "\u8EA2\uB9A9\u0000\uDDB3\u0000\u0000\u0000\uDDB0\u8EA2\uB9AD" + // 14205 - 14209
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE1F7\u8EA2\uC0A5" + // 14210 - 14214
-                "\u0000\u0000\u8EA2\uBFF8\u0000\uE1F4\u0000\u0000\u8EA2\uC7AE" + // 14215 - 14219
-                "\u8EA2\uC0A3\u8EA2\uBFF5\u0000\uE1F2\u8EA2\uBFFA\u0000\uE1F5" + // 14220 - 14224
-                "\u8EA2\uBFFE\u8EA2\uBFFC\u0000\uE1F8\u0000\uE1F1\u0000\u0000" + // 14225 - 14229
-                "\u0000\u0000\u8EA2\uBFF6\u8EA2\uBFF9\u0000\uE1F6\u0000\u0000" + // 14230 - 14234
-                "\u8EA2\uBFF7\u0000\u0000\u8EA2\uC0A4\u8EA2\uC0A2\u8EA2\uBFFB" + // 14235 - 14239
-                "\u8EA2\uBFFD\u8EA2\uC0A1\u0000\uE1F3\u0000\u0000\u0000\u0000" + // 14240 - 14244
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14245 - 14249
-                "\u8EA2\uC7AF\u8EA2\uC7B5\u8EA2\uC7AB\u8EA2\uC7B1\u0000\uE6C1" + // 14250 - 14254
-                "\u8EA2\uC7AD\u0000\uE6C7\u0000\u0000\u0000\u0000\u0000\uE6C6" + // 14255 - 14259
-                "\u0000\u0000\u8EA2\uE0F3\u0000\u0000\u0000\uF7F9\u8EA2\uE4E6" + // 14260 - 14264
-                "\u8EA2\uE4E7\u0000\uF7FA\u0000\u0000\u8EA2\uE4E5\u0000\u0000" + // 14265 - 14269
-                "\u8EA2\uE8B0\u8EA2\uE8AF\u8EA2\uE8B2\u0000\uF9D3\u8EA2\uE8B1" + // 14270 - 14274
-                "\u0000\u0000\u8EA2\uEAF5\u8EA2\uEAF7\u8EA2\uEAF6\u0000\u0000" + // 14275 - 14279
-                "\u0000\u0000\u8EA2\uECEF\u8EA2\uECF2\u8EA2\uECF0\u8EA2\uECF1" + // 14280 - 14284
-                "\u8EA2\uEED2\u0000\uFCA9\u0000\u0000\u0000\u0000\u0000\u0000" + // 14285 - 14289
-                "\u8EA2\uEFE2\u8EA2\uEFE3\u8EA2\uEFE4\u0000\u0000\u0000\uFCF6" + // 14290 - 14294
-                "\u0000\uFDB0\u8EA2\uF2A6\u0000\uD8EE\u0000\u0000\u0000\uF0A3" + // 14295 - 14299
-                "\u0000\uF3B4\u8EA2\uE4E8\u0000\u0000\u8EA2\uEED3\u0000\u0000" + // 14300 - 14304
-                "\u0000\u0000\u8EA2\uF1E6\u8EA2\uB3CD\u0000\u0000\u0000\uFDC8" + // 14305 - 14309
-                "\u0000\uD8EF\u8EA2\uDBFE\u0000\u0000\u8EA2\uE4E9\u0000\u0000" + // 14310 - 14314
-                "\u8EA2\uE8B3\u0000\u0000\u0000\u0000\u8EA2\uECF3\u8EA2\uEED4" + // 14315 - 14319
-                "\u0000\uD8F0\u0000\u0000\u8EA2\uCFC5\u8EA2\uCFC6\u8EA2\uEFC0" + // 14320 - 14324
-                "\u0000\u0000\u0000\u0000\u8EA2\uF0CA\u0000\u0000\u0000\u0000" + // 14325 - 14329
-                "\u8EA2\uF1B4\u8EA2\uF1B5\u8EA2\uF1B6\u0000\u0000\u0000\u0000" + // 14330 - 14334
-                "\u8EA2\uF2B5\u8EA2\uF2AD\u8EA2\uA2EF\u0000\uCFCD\u0000\u0000" + // 14335 - 14339
-                "\u0000\uD3CB\u0000\u0000\u8EA2\uB2DA\u8EA2\uB2D9\u0000\uD8A5" + // 14340 - 14344
-                "\u0000\uDDA8\u8EA2\uB9A1\u0000\u0000\u0000\u0000\u8EA2\uB8FE" + // 14345 - 14349
-                "\u0000\u0000\u0000\uE1F0\u0000\uE6BF\u0000\u0000\u0000\uE6BE" + // 14350 - 14354
-                "\u0000\uE6C0\u0000\u0000\u8EA2\uCDDB\u8EA2\uD3E7\u8EA2\uDAA5" + // 14355 - 14359
-                "\u8EA2\uDAA7\u8EA2\uDAA6\u0000\u0000\u0000\uF5B6\u8EA2\uDFA5" + // 14360 - 14364
-                "\u8EA2\uE3A6\u8EA2\uF1F3\u0000\uC8E5\u0000\u0000\u8EA2\uA8E9" + // 14365 - 14369
-                "\u8EA2\uA8EA\u8EA2\uA8E8\u8EA2\uA8E7\u0000\uCFCE\u0000\u0000" + // 14370 - 14374
-                "\u8EA2\uADCA\u8EA2\uADC8\u0000\u0000\u0000\u0000\u8EA2\uADC7" + // 14375 - 14379
-                "\u0000\u0000\u0000\uD3CC\u0000\uD3CE\u0000\uD3CD\u8EA2\uADC9" + // 14380 - 14384
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCACD\u0000\u0000" + // 14385 - 14389
-                "\u0000\u0000\u8EA2\uD0D8\u0000\u0000\u0000\uE8F1\u0000\uECFC" + // 14390 - 14394
-                "\u8EA2\uD7B5\u8EA2\uD0DD\u8EA2\uD0DC\u8EA2\uD0DE\u0000\u0000" + // 14395 - 14399
-                "\u0000\u0000\u8EA2\uD0DB\u0000\uECFD\u8EAD\uA4C7\u0000\uEDA5" + // 14400 - 14404
-                "\u0000\uEDA2\u0000\u0000\u0000\uEDA3\u8EA2\uD0D6\u8EA2\uD0D9" + // 14405 - 14409
-                "\u8EA2\uD0E3\u0000\uEDAB\u0000\uEDA9\u0000\u0000\u8EA2\uD0DA" + // 14410 - 14414
-                "\u8EA2\uBBFD\u0000\uECFA\u8EA2\uD0E0\u8EA2\uD0D7\u0000\u0000" + // 14415 - 14419
-                "\u0000\uEDAC\u8EA2\uD0DF\u0000\uE8F4\u0000\uEDA1\u8EA2\uCACB" + // 14420 - 14424
-                "\u0000\u0000\u0000\u0000\u0000\uEDA4\u0000\u0000\u0000\uEDA8" + // 14425 - 14429
-                "\u0000\uEDAA\u0000\uEDA7\u0000\uEDA6\u0000\u0000\u0000\uECFE" + // 14430 - 14434
-                "\u8EA2\uD0E2\u0000\uECFB\u0000\uEDAD\u0000\u0000\u0000\u0000" + // 14435 - 14439
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14440 - 14444
-                "\u0000\uF0E1\u0000\uF0E2\u8EA2\uD7B4\u0000\uF0EB\u0000\uF0E8" + // 14445 - 14449
-                "\u8EA2\uE9E9\u8EA2\uE9E6\u0000\u0000\u0000\u0000\u8EA2\uE9EB" + // 14450 - 14454
-                "\u8EA2\uE9ED\u0000\uFAB5\u0000\uFAB7\u0000\u0000\u8EA2\uE9EC" + // 14455 - 14459
-                "\u0000\uFAB8\u0000\uFAB6\u8EA2\uE9EE\u0000\u0000\u0000\u0000" + // 14460 - 14464
-                "\u0000\u0000\u0000\u0000\u0000\uFAB3\u0000\u0000\u0000\u0000" + // 14465 - 14469
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBA1\u8EA2\uECA1" + // 14470 - 14474
-                "\u8EA2\uECA7\u0000\uFBA3\u8EA2\uE9E8\u8EA2\uECA6\u0000\u0000" + // 14475 - 14479
-                "\u8EA2\uECAD\u8EA2\uECA4\u8EA2\uECAB\u8EA2\uECAA\u8EA2\uE9E4" + // 14480 - 14484
-                "\u8EA2\uECA5\u8EA2\uE3A2\u8EA2\uECAE\u8EA2\uECA3\u8EA2\uECA8" + // 14485 - 14489
-                "\u0000\u0000\u8EA2\uECAC\u8EA2\uECA2\u0000\u0000\u8EA2\uEDF7" + // 14490 - 14494
-                "\u0000\uFBA2\u8EA2\uECA9\u0000\u0000\u0000\u0000\u8EA2\uEFC3" + // 14495 - 14499
-                "\u8EA2\uEDF8\u8EA2\uEDF6\u8EA2\uEDF4\u8EA2\uEDF5\u8EA2\uEDF9" + // 14500 - 14504
-                "\u0000\u0000\u0000\uFCC5\u8EA2\uEFC1\u8EA2\uEFBF\u8EA2\uEFC4" + // 14505 - 14509
-                "\u8EA2\uEFC2\u0000\u0000\u8EA2\uEFC5\u0000\uFCC6\u8EA2\uE2F0" + // 14510 - 14514
-                "\u0000\u0000\u8EA2\uE2F2\u8EA2\uE2F1\u8EA2\uE2F7\u8EA2\uE2FC" + // 14515 - 14519
-                "\u8EA2\uE2EF\u8EA2\uE2F6\u8EA2\uE2FB\u0000\uF7B3\u0000\u0000" + // 14520 - 14524
-                "\u8EA2\uE2F9\u0000\u0000\u0000\uF7B1\u8EA2\uE2FA\u0000\uF7AF" + // 14525 - 14529
-                "\u0000\uF7B2\u8EA2\uE6E0\u8EA2\uE3A1\u0000\u0000\u0000\u0000" + // 14530 - 14534
-                "\u0000\uF8ED\u0000\u0000\u8EA2\uE6D8\u8EA2\uE6DC\u8EA2\uE6D4" + // 14535 - 14539
-                "\u8EA2\uE6D7\u0000\u0000\u8EA2\uE6DF\u0000\uF8EB\u8EA2\uE6E4" + // 14540 - 14544
-                "\u8EA2\uE6DD\u0000\u0000\u8EA2\uE6D5\u8EA2\uE6E5\u8EA2\uE6DE" + // 14545 - 14549
-                "\u0000\uF8EE\u0000\uF8EF\u8EA2\uE6E2\u0000\u0000\u8EA2\uE6D6" + // 14550 - 14554
-                "\u0000\uF8EA\u0000\uF8EC\u8EA2\uE6D1\u8EA2\uE6D9\u8EA2\uE6D3" + // 14555 - 14559
-                "\u0000\u0000\u8EA2\uE6E3\u8EA2\uE6E1\u8EA2\uE6D2\u8EA2\uE6DA" + // 14560 - 14564
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE9EA\u0000\uF8F0" + // 14565 - 14569
-                "\u8EA2\uE6DB\u0000\uFAB2\u0000\uFAB4\u0000\uFAB1\u0000\u0000" + // 14570 - 14574
-                "\u8EA2\uE9EF\u8EA2\uE9E7\u8EA2\uE9E5\u8EA2\uDEE1\u8EA2\uDEF9" + // 14575 - 14579
-                "\u8EA2\uDEFB\u8EA2\uDEE0\u0000\uF5AB\u8EA2\uDEFD\u8EA2\uDEF5" + // 14580 - 14584
-                "\u0000\uF5B2\u8EA2\uDEFC\u8EA2\uDEEE\u0000\uF5B4\u8EA2\uDEE6" + // 14585 - 14589
-                "\u8EA2\uD9FD\u8EA2\uDEF6\u8EA2\uDEF3\u8EA2\uDEE2\u8EA2\uDFA3" + // 14590 - 14594
-                "\u0000\uF5AE\u0000\u0000\u0000\u0000\u0000\uF5AF\u8EA2\uDEE4" + // 14595 - 14599
-                "\u8EA2\uDEF4\u0000\u0000\u8EA2\uDFA2\u8EA2\uDEF7\u8EA2\uDEEA" + // 14600 - 14604
-                "\u0000\uF5B1\u0000\uF5AD\u8EA2\uDEF8\u8EA2\uDEEB\u8EA2\uDFA4" + // 14605 - 14609
-                "\u8EA2\uDEE5\u8EA2\uDEEF\u8EA2\uDEFA\u8EA2\uDEE7\u8EA2\uDEE9" + // 14610 - 14614
-                "\u0000\u0000\u0000\uF5B5\u8EA2\uDEE3\u0000\uF5B3\u0000\uF7B0" + // 14615 - 14619
-                "\u0000\uF5AA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14620 - 14624
-                "\u0000\uF5B0\u0000\uF7B4\u8EA2\uE2FD\u0000\u0000\u8EA2\uE2F3" + // 14625 - 14629
-                "\u8EA2\uE2EE\u8EA2\uE2F4\u8EA2\uE2FE\u8EA2\uE3A4\u8EA2\uE3A3" + // 14630 - 14634
-                "\u0000\uF7B6\u0000\uF7B5\u0000\u0000\u0000\u0000\u8EA2\uE2F5" + // 14635 - 14639
-                "\u8EA2\uE3A5\u8EA2\uE2F8\u8EA2\uD9EB\u8EA2\uD9EE\u0000\u0000" + // 14640 - 14644
-                "\u0000\uF2A5\u8EA2\uD9F0\u8EA2\uD9E5\u8EA2\uD9EC\u8EA2\uD9F2" + // 14645 - 14649
-                "\u0000\uF2A2\u0000\uF2A6\u0000\uF1FE\u0000\u0000\u0000\u0000" + // 14650 - 14654
-                "\u8EA2\uD9E7\u8EA2\uD9F7\u0000\u0000\u0000\u0000\u8EA2\uD9F1" + // 14655 - 14659
-                "\u0000\u0000\u8EA2\uD9E8\u8EA2\uDAA2\u8EA2\uD9FA\u8EA2\uD9E4" + // 14660 - 14664
-                "\u8EA2\uDEF2\u8EA2\uD9EA\u0000\uF2A1\u0000\u0000\u8EA2\uD9F5" + // 14665 - 14669
-                "\u0000\u0000\u8EA2\uDAA1\u0000\uF2A9\u0000\u0000\u8EA2\uD9FC" + // 14670 - 14674
-                "\u8EA2\uD9E9\u8EA2\uD9EF\u8EA2\uD9F3\u8EA2\uD9ED\u8EA2\uDAA3" + // 14675 - 14679
-                "\u8EA2\uD9FE\u8EA2\uD9FB\u0000\uF2A3\u0000\uF2A4\u0000\uF2A8" + // 14680 - 14684
-                "\u8EA2\uD9E6\u8EA2\uDAA4\u0000\uF2A7\u8EA2\uD9F8\u0000\u0000" + // 14685 - 14689
-                "\u0000\u0000\u8EA2\uD9F6\u0000\u0000\u0000\u0000\u0000\u0000" + // 14690 - 14694
-                "\u8EA2\uD9F9\u8EA2\uDFA1\u8EA2\uDEEC\u8EA2\uDEF1\u8EA2\uDEFE" + // 14695 - 14699
-                "\u8EA2\uDEF0\u8EA2\uDEE8\u8EA2\uDEED\u0000\u0000\u0000\uF5AC" + // 14700 - 14704
-                "\u0000\u0000\u0000\uF6AB\u8EA2\uE0E4\u8EA2\uE0EF\u8EA2\uE4DD" + // 14705 - 14709
-                "\u8EA2\uE4E0\u8EA2\uE4E2\u8EA2\uE4E1\u0000\u0000\u8EA2\uE4DB" + // 14710 - 14714
-                "\u8EA2\uE4DF\u8EA2\uE4DA\u0000\u0000\u8EA2\uE4DC\u0000\uF7F7" + // 14715 - 14719
-                "\u8EA2\uE4D9\u0000\u0000\u8EA2\uE4DE\u0000\u0000\u0000\u0000" + // 14720 - 14724
-                "\u8EA2\uE8AD\u8EA2\uE8A2\u0000\uF9D1\u0000\u0000\u0000\u0000" + // 14725 - 14729
-                "\u0000\uF9D2\u8EA2\uE8A1\u8EA2\uE8A6\u8EA2\uE8AC\u8EA2\uE8A4" + // 14730 - 14734
-                "\u8EA2\uE8AB\u0000\u0000\u8EA2\uE8A8\u0000\u0000\u8EA2\uE8A7" + // 14735 - 14739
-                "\u8EA2\uE8AA\u8EA2\uE8A5\u8EA2\uE8A3\u0000\u0000\u8EA2\uE8A9" + // 14740 - 14744
-                "\u0000\u0000\u8EA2\uEAEE\u8EA2\uEAEC\u0000\uFAD5\u8EA2\uEAEB" + // 14745 - 14749
-                "\u8EA2\uEAF1\u8EA2\uEAEF\u0000\u0000\u0000\uFAD6\u8EA2\uEAEA" + // 14750 - 14754
-                "\u8EA2\uEAE8\u0000\u0000\u8EA2\uEAE9\u0000\uFAD8\u8EA2\uEAED" + // 14755 - 14759
-                "\u0000\uFAD7\u8EA2\uEAF0\u8EA2\uECE6\u8EA2\uECEC\u0000\u0000" + // 14760 - 14764
-                "\u0000\u0000\u8EA2\uECE7\u0000\uFBC7\u8EA2\uECED\u8EA2\uD3B8" + // 14765 - 14769
-                "\u0000\u0000\u8EA2\uD3D6\u0000\u0000\u0000\u0000\u0000\u0000" + // 14770 - 14774
-                "\u0000\uEEE0\u8EA2\uC6E2\u8EA2\uD3C4\u8EA2\uD3BB\u8EA2\uD3BE" + // 14775 - 14779
-                "\u8EA2\uD3E4\u8EA2\uD3C5\u8EA2\uD3BC\u8EA2\uD3BA\u8EA2\uD3B7" + // 14780 - 14784
-                "\u0000\u0000\u0000\uEED9\u8EA2\uD3CE\u0000\uEED8\u0000\uEEDC" + // 14785 - 14789
-                "\u8EA2\uD3C9\u8EA2\uD3D1\u0000\uEED2\u8EA2\uD3E1\u8EA2\uD3E5" + // 14790 - 14794
-                "\u0000\uEED4\u0000\u0000\u8EA2\uD3C0\u8EA2\uD3D4\u8EA2\uD3D8" + // 14795 - 14799
-                "\u8EA2\uD3BD\u8EA2\uD3E2\u0000\uEEDB\u0000\u0000\u0000\uEEDA" + // 14800 - 14804
-                "\u8EA2\uD3B5\u0000\uEEDE\u8EA2\uD3DB\u8EA2\uD3BF\u8EA2\uD3D3" + // 14805 - 14809
-                "\u8EA2\uD3B9\u8EA2\uD3C7\u8EA2\uD3C2\u0000\uEED6\u0000\uEED7" + // 14810 - 14814
-                "\u8EA2\uD3D5\u8EA2\uD3E6\u8EA2\uD3E3\u8EA2\uD3DA\u0000\u0000" + // 14815 - 14819
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14820 - 14824
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD3B6\u0000\u0000" + // 14825 - 14829
-                "\u0000\uEED3\u8EA2\uD9F4\u0000\u0000\u0000\uEBF2\u8EA2\uCFBF" + // 14830 - 14834
-                "\u8EA2\uCFBB\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCFC1" + // 14835 - 14839
-                "\u0000\u0000\u8EA2\uD5F5\u0000\u0000\u8EA2\uD5F8\u8EA2\uD5FA" + // 14840 - 14844
-                "\u8EA2\uD5F0\u8EA2\uD5F4\u8EA2\uD5F1\u0000\uEFF7\u0000\uEFFA" + // 14845 - 14849
-                "\u0000\uEFFC\u8EA2\uD5F2\u8EA2\uD5F3\u0000\uEFFB\u8EA2\uD5F6" + // 14850 - 14854
-                "\u8EA2\uD5F9\u8EA2\uD5F7\u0000\uEFFD\u0000\u0000\u0000\uEFF9" + // 14855 - 14859
-                "\u8EA2\uD5EF\u0000\uEFF6\u0000\u0000\u0000\uEFF8\u0000\u0000" + // 14860 - 14864
-                "\u0000\u0000\u0000\uF3AE\u8EA2\uDBF2\u8EA2\uDBF0\u8EA2\uDBEF" + // 14865 - 14869
-                "\u0000\u0000\u8EA2\uDBF5\u0000\u0000\u8EA2\uDBF4\u8EA2\uDBF3" + // 14870 - 14874
-                "\u0000\u0000\u8EA2\uDBEE\u0000\uF3AD\u8EA2\uDBED\u0000\u0000" + // 14875 - 14879
-                "\u8EA2\uDBF1\u0000\uF3AF\u0000\u0000\u0000\u0000\u8EA2\uE0E6" + // 14880 - 14884
-                "\u0000\u0000\u8EA2\uE0EA\u8EA2\uE0E7\u8EA2\uE0E9\u8EA2\uE0E8" + // 14885 - 14889
-                "\u8EA2\uE0E5\u8EA2\uE0EB\u8EA2\uE0EE\u8EA2\uE0EC\u8EA2\uE0ED" + // 14890 - 14894
-                "\u0000\uF6AC\u0000\uEAE6\u8EA2\uCDBF\u8EA2\uCDB9\u0000\u0000" + // 14895 - 14899
-                "\u0000\uEADF\u8EA2\uC6F9\u0000\uEADE\u8EA2\uCDCA\u0000\u0000" + // 14900 - 14904
-                "\u0000\uEADC\u0000\uEAEB\u0000\uEAE4\u8EA2\uCDCB\u8EA2\uCDC0" + // 14905 - 14909
-                "\u8EA2\uCDB8\u8EA2\uCDD3\u8EA2\uCDC4\u0000\uEAEA\u8EA2\uCDD7" + // 14910 - 14914
-                "\u0000\uEAE7\u8EA2\uCDD6\u0000\u0000\u8EA2\uCDD0\u8EA2\uCDD5" + // 14915 - 14919
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCDD8\u0000\u0000" + // 14920 - 14924
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14925 - 14929
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14930 - 14934
-                "\u8EA2\uD3DC\u8EA2\uD3DD\u8EA2\uD3D0\u8EA2\uD3CF\u8EA2\uD3CB" + // 14935 - 14939
-                "\u0000\uEEDD\u0000\u0000\u0000\uEED5\u8EA2\uD3DF\u8EA2\uD3DE" + // 14940 - 14944
-                "\u8EA2\uC6CE\u8EA2\uD3C8\u8EA2\uD3CC\u8EA2\uD3C6\u0000\u0000" + // 14945 - 14949
-                "\u8EA2\uD3D9\u8EA2\uD3CA\u0000\u0000\u8EA2\uD3E0\u8EA2\uD3C3" + // 14950 - 14954
-                "\u8EA2\uD3C1\u8EA2\uD3CD\u8EA2\uD3D7\u8EA2\uD3D2\u0000\uEEDF" + // 14955 - 14959
-                "\u8EA2\uC6D7\u0000\u0000\u8EA2\uC6F0\u8EA2\uC6E8\u8EA2\uC7A3" + // 14960 - 14964
-                "\u8EA2\uC6EB\u0000\uE6BD\u8EA2\uC6FC\u0000\u0000\u0000\uE6B4" + // 14965 - 14969
-                "\u0000\u0000\u8EA2\uC6EE\u8EA2\uC6F6\u8EA2\uC6DB\u8EA2\uC6F5" + // 14970 - 14974
-                "\u0000\u0000\u8EA2\uC7A8\u8EA2\uC6D6\u8EA2\uC6F7\u0000\u0000" + // 14975 - 14979
-                "\u8EA2\uC7A6\u0000\u0000\u8EA2\uC6D0\u0000\uE1E1\u0000\u0000" + // 14980 - 14984
-                "\u8EA2\uC6DE\u8EA2\uC6DD\u0000\uE6B6\u0000\u0000\u8EA2\uC6E1" + // 14985 - 14989
-                "\u8EA2\uC6E3\u8EA2\uC6F2\u8EA2\uC7A5\u0000\uE6B9\u0000\u0000" + // 14990 - 14994
-                "\u0000\uE6BA\u0000\u0000\u8EA2\uC6D5\u0000\uE6B2\u8EA2\uC6D9"   // 14995 - 14999
-                ;
-
-            index2b =
-                "\u8EA2\uC7A1\u0000\uE6BB\u0000\u0000\u0000\uE6B3\u0000\uE6B5" + // 15000 - 15004
-                "\u0000\uE6BC\u8EA2\uC7A7\u8EA2\uC6F8\u8EA2\uC6F3\u0000\u0000" + // 15005 - 15009
-                "\u0000\u0000\u8EA2\uC6E0\u8EA2\uC6DF\u0000\uE6B1\u8EA2\uC6D1" + // 15010 - 15014
-                "\u0000\uE6AE\u8EA2\uC6E9\u8EA2\uC6D2\u8EA2\uC6E7\u0000\u0000" + // 15015 - 15019
-                "\u0000\u0000\u8EA2\uC6DC\u8EA2\uC7A2\u0000\u0000\u8EA2\uE4D6" + // 15020 - 15024
-                "\u0000\u0000\u8EA2\uE7FC\u0000\u0000\u0000\uF9CF\u0000\u0000" + // 15025 - 15029
-                "\u8EA2\uE7FB\u8EA2\uE7FA\u0000\uF9D0\u0000\u0000\u8EA2\uEAE6" + // 15030 - 15034
-                "\u8EA2\uEAE5\u0000\u0000\u8EA2\uEAE3\u0000\u0000\u8EA2\uEAE2" + // 15035 - 15039
-                "\u0000\uFAD3\u0000\uFAD2\u8EA2\uEAE7\u8EA2\uEEC5\u0000\uFCA5" + // 15040 - 15044
-                "\u8EA2\uECE5\u0000\uFBC3\u8EA2\uECE4\u8EA2\uEAE4\u0000\u0000" + // 15045 - 15049
-                "\u8EA2\uEEC6\u0000\uFCD0\u0000\u0000\u0000\uFDAE\u8EA2\uF1C8" + // 15050 - 15054
-                "\u0000\u0000\u8EA2\uF2A1\u0000\u0000\u0000\u0000\u0000\u0000" + // 15055 - 15059
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15060 - 15064
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15065 - 15069
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15070 - 15074
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15075 - 15079
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15080 - 15084
-                "\u0000\u0000\u0000\u0000\u0000\uCFDD\u0000\u0000\u8EA2\uA1E9" + // 15085 - 15089
-                "\u0000\u0000\u8EA2\uA2F8\u0000\uC8EA\u8EA2\uA2F6\u8EA2\uA2F9" + // 15090 - 15094
-                "\u8EA2\uA2F7\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA5AE" + // 15095 - 15099
-                "\u0000\u0000\u0000\uCBE2\u0000\u0000\u0000\uCBE3\u8EA2\uA5B0" + // 15100 - 15104
-                "\u0000\uCBE0\u8EA2\uA5AF\u8EA2\uA5AD\u0000\uCBE1\u0000\uCBDF" + // 15105 - 15109
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15110 - 15114
-                "\u0000\u0000\u8EA2\uA8F8\u8EA2\uA8FB\u0000\uCFE0\u8EA2\uA8FA" + // 15115 - 15119
-                "\u8EA2\uA8F9\u0000\u0000\u0000\uCFDF\u8EA2\uBFC5\u0000\uE1DD" + // 15120 - 15124
-                "\u8EA2\uBFE2\u8EA2\uBFEB\u8EA2\uBFEE\u0000\uE1DB\u8EA2\uBFCD" + // 15125 - 15129
-                "\u8EA2\uBFE6\u8EA2\uBFCE\u8EA2\uBFDC\u0000\uE1E8\u8EA2\uBFD8" + // 15130 - 15134
-                "\u0000\uE1E5\u0000\u0000\u8EA2\uBFD9\u8EA2\uBFC2\u0000\u0000" + // 15135 - 15139
-                "\u8EA2\uBFE7\u0000\u0000\u0000\u0000\u0000\uE1EE\u8EA2\uBFE4" + // 15140 - 15144
-                "\u8EA2\uBFDA\u8EA2\uBFF0\u8EA2\uBFD5\u8EA2\uC6ED\u0000\u0000" + // 15145 - 15149
-                "\u8EA2\uBFF3\u0000\uE1EC\u8EA2\uBFD3\u8EA2\uBFDF\u0000\uE1EF" + // 15150 - 15154
-                "\u0000\uE1DA\u8EA2\uBFD7\u8EA2\uBFF1\u8EA2\uBFD0\u8EA2\uBFC9" + // 15155 - 15159
-                "\u8EA2\uBFD4\u0000\u0000\u8EA2\uBFC8\u8EA2\uBFC6\u0000\uE1D6" + // 15160 - 15164
-                "\u8EA2\uBFE8\u8EA2\uBFCF\u8EA2\uBFEC\u0000\u0000\u8EA2\uBFED" + // 15165 - 15169
-                "\u0000\uE1DE\u0000\uE1E3\u0000\uE1DF\u0000\uE1E7\u8EA2\uBFE3" + // 15170 - 15174
-                "\u0000\uE1E0\u8EA2\uBFDB\u8EA2\uBFCB\u0000\u0000\u0000\uE1D8" + // 15175 - 15179
-                "\u8EA2\uBFC3\u8EA2\uBFE5\u8EA2\uBFEF\u8EA2\uBFCA\u0000\uE1E6" + // 15180 - 15184
-                "\u8EA2\uBFF4\u8EA2\uBFD6\u0000\uD8A1\u8EA2\uB2BF\u8EA2\uB2C3" + // 15185 - 15189
-                "\u0000\uD8A4\u8EA2\uB2B9\u8EA2\uB2D1\u0000\u0000\u8EA2\uB2D0" + // 15190 - 15194
-                "\u8EA2\uB2D8\u0000\uD7F7\u0000\uD7F4\u8EA2\uB2D6\u8EA2\uB2D2" + // 15195 - 15199
-                "\u8EA2\uB2C9\u8EA2\uB2C4\u0000\uD7FA\u0000\uD7F6\u8EA2\uB2BB" + // 15200 - 15204
-                "\u0000\uD7F2\u8EA2\uB2D3\u0000\uD7F3\u0000\u0000\u8EA2\uB2BD" + // 15205 - 15209
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15210 - 15214
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15215 - 15219
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15220 - 15224
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15225 - 15229
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15230 - 15234
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB8E2\u8EA2\uB8E4" + // 15235 - 15239
-                "\u8EA2\uB8E9\u8EA2\uB8FD\u0000\uDDA3\u0000\uDCF7\u0000\u0000" + // 15240 - 15244
-                "\u8EA2\uB8E1\u0000\uDDA4\u0000\uDDA5\u8EA2\uB8EC\u8EA2\uB8F3" + // 15245 - 15249
-                "\u8EA2\uB8F9\u8EA2\uADB3\u0000\uD3C2\u0000\uD3BD\u0000\uD3B6" + // 15250 - 15254
-                "\u0000\uD3BB\u0000\uD3B7\u0000\uD3CA\u8EA2\uADB1\u8EA2\uB2C7" + // 15255 - 15259
-                "\u0000\uD3BE\u0000\u0000\u0000\u0000\u8EA2\uADBD\u8EA2\uA9C2" + // 15260 - 15264
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15265 - 15269
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB2CA\u0000\uD7FE" + // 15270 - 15274
-                "\u0000\u0000\u8EA2\uB2BA\u0000\u0000\u8EA2\uB2C5\u8EA2\uB2C1" + // 15275 - 15279
-                "\u0000\u0000\u8EA2\uB2D4\u0000\u0000\u8EA2\uB2CC\u0000\u0000" + // 15280 - 15284
-                "\u8EA2\uB2C2\u0000\u0000\u8EA2\uB2CB\u8EA2\uB2BC\u8EA2\uB2C0" + // 15285 - 15289
-                "\u8EA2\uB2D7\u0000\uD8A3\u8EA2\uB2CF\u8EA2\uB2C6\u0000\uD7F1" + // 15290 - 15294
-                "\u8EA2\uB2D5\u8EA2\uB2B8\u0000\u0000\u8EA2\uB2CE\u0000\u0000" + // 15295 - 15299
-                "\u0000\uD8A2\u0000\uD7FB\u8EA2\uB2B7\u0000\uD7F9\u0000\uD7F8" + // 15300 - 15304
-                "\u0000\uD7FD\u8EA2\uB2CD\u0000\uD7F5\u0000\uD7FC\u8EA2\uADB5" + // 15305 - 15309
-                "\u8EA2\uBFC1\u8EA2\uB2C8\u0000\u0000\u0000\u0000\u8EA2\uB2BE" + // 15310 - 15314
-                "\u8EA2\uA8D3\u0000\u0000\u8EA2\uA8E2\u8EA2\uA8E4\u0000\u0000" + // 15315 - 15319
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15320 - 15324
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15325 - 15329
-                "\u0000\u0000\u0000\u0000\u0000\uD3C5\u0000\uD3BF\u0000\uD3C7" + // 15330 - 15334
-                "\u0000\uD3C4\u8EA2\uADB4\u8EA2\uADB7\u0000\uD3C0\u0000\u0000" + // 15335 - 15339
-                "\u8EA2\uADAE\u0000\u0000\u0000\uD3B9\u0000\uD3C3\u0000\u0000" + // 15340 - 15344
-                "\u0000\uD3C6\u0000\uD3C8\u8EA2\uADC3\u8EA2\uADBA\u0000\u0000" + // 15345 - 15349
-                "\u0000\uD3B8\u8EA2\uADC2\u0000\uD3BC\u0000\uD3BA\u0000\uD3B5" + // 15350 - 15354
-                "\u8EA2\uADB2\u0000\u0000\u8EA2\uADC1\u8EA2\uADB6\u8EA2\uADB9" + // 15355 - 15359
-                "\u8EA2\uADC6\u0000\u0000\u0000\uD3C9\u8EA2\uADC0\u0000\uD3C1" + // 15360 - 15364
-                "\u8EA2\uADBB\u8EA2\uADC5\u8EA2\uADB8\u8EA2\uADBC\u8EA2\uADBF" + // 15365 - 15369
-                "\u0000\u0000\u0000\u0000\u8EA2\uADB0\u8EA2\uADC4\u8EA2\uADBE" + // 15370 - 15374
-                "\u0000\u0000\u0000\u0000\u8EA2\uADAF\u0000\u0000\u8EA2\uE0D1" + // 15375 - 15379
-                "\u0000\u0000\u8EA2\uE0D6\u8EA2\uE0D2\u8EA2\uE0D5\u0000\uF6A8" + // 15380 - 15384
-                "\u0000\u0000\u8EA2\uDEC1\u8EA2\uE0D4\u8EA2\uE0D3\u0000\u0000" + // 15385 - 15389
-                "\u0000\uF7EE\u0000\uF7EC\u0000\uF7EF\u0000\uF7ED\u8EA2\uE4D2" + // 15390 - 15394
-                "\u8EA2\uE4D3\u8EA2\uE4D4\u0000\uF7F0\u0000\u0000\u0000\u0000" + // 15395 - 15399
-                "\u0000\u0000\u8EA2\uE7F5\u0000\uF9CC\u8EA2\uE7F3\u0000\u0000" + // 15400 - 15404
-                "\u0000\uF9CD\u8EA2\uE7F2\u8EA2\uE7F4\u0000\uF9CB\u8EA2\uEADF" + // 15405 - 15409
-                "\u8EA2\uEADC\u0000\u0000\u8EA2\uEADD\u8EA2\uEADE\u8EA2\uECE0" + // 15410 - 15414
-                "\u0000\uFBC2\u0000\u0000\u0000\uFBC1\u0000\u0000\u8EA2\uEEC3" + // 15415 - 15419
-                "\u8EA2\uEEC2\u0000\uFCA4\u0000\u0000\u0000\u0000\u0000\u0000" + // 15420 - 15424
-                "\u0000\uFCCF\u0000\uFCF4\u0000\uFDAD\u8EA2\uF1C7\u8EA2\uF1FC" + // 15425 - 15429
-                "\u8EA2\uF1FD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15430 - 15434
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15435 - 15439
-                "\u0000\u0000\u0000\u0000\u0000\uA1FA\u0000\uA1F9\u0000\u0000" + // 15440 - 15444
-                "\u0000\u0000\u0000\u0000\u0000\uA1F2\u0000\u0000\u0000\u0000" + // 15445 - 15449
-                "\u0000\uA1F6\u0000\uA1F3\u0000\u0000\u0000\u0000\u0000\u0000" + // 15450 - 15454
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15455 - 15459
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15460 - 15464
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15465 - 15469
-                "\u0000\uA3C8\u0000\uA3C9\u0000\uA3CB\u0000\uA3CA\u0000\u0000" + // 15470 - 15474
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15475 - 15479
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1D2\u0000\u0000" + // 15480 - 15484
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15485 - 15489
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15490 - 15494
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15495 - 15499
-                "\u8EAD\uA4C8\u8EAD\uA4CA\u0000\u0000\u0000\u0000\u0000\u0000" + // 15500 - 15504
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15505 - 15509
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15510 - 15514
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15515 - 15519
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15520 - 15524
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15525 - 15529
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15530 - 15534
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15535 - 15539
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15540 - 15544
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15545 - 15549
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15550 - 15554
-                "\u0000\u0000\u0000\uC8CF\u0000\u0000\u0000\uD2FE\u8EA2\uB0D2" + // 15555 - 15559
-                "\u0000\uD7CD\u0000\u0000\u0000\u0000\u0000\uDCDF\u8EA2\uBFA2" + // 15560 - 15564
-                "\u8EA2\uBFA3\u8EA2\uA2EC\u0000\u0000\u0000\u0000\u8EA2\uA5A2" + // 15565 - 15569
-                "\u8EA2\uA5A3\u8EA2\uA4FB\u0000\u0000\u0000\u0000\u0000\u0000" + // 15570 - 15574
-                "\u0000\u0000\u8EA2\uA5A1\u0000\uCBC2\u0000\u0000\u0000\uCBC3" + // 15575 - 15579
-                "\u8EA2\uA4FC\u8EA2\uA4FA\u8EA2\uA4F9\u8EA2\uA4FD\u0000\uCBC1" + // 15580 - 15584
-                "\u8EA2\uA4FE\u8EA2\uADAD\u0000\u0000\u0000\u0000\u0000\u0000" + // 15585 - 15589
-                "\u8EA2\uA8D6\u0000\uCFBF\u8EA2\uA8D5\u8EA2\uA8D7\u0000\u0000" + // 15590 - 15594
-                "\u0000\uCFBE\u8EA2\uA8DC\u0000\uCFC2\u8EA2\uA8D2\u8EA2\uA8E0" + // 15595 - 15599
-                "\u8EA2\uA8E6\u0000\uCFC9\u8EA2\uA8E3\u0000\uCFC6\u0000\u0000" + // 15600 - 15604
-                "\u8EA2\uA8D9\u8EA2\uA8DF\u8EA2\uA8E1\u0000\u0000\u8EA2\uA8D4" + // 15605 - 15609
-                "\u0000\uCFC5\u0000\uCFC0\u8EA2\uA8DA\u0000\uCFC7\u0000\uCFCA" + // 15610 - 15614
-                "\u0000\uCFC4\u0000\u0000\u0000\uCFBD\u8EA2\uA8DE\u8EA2\uA8D8" + // 15615 - 15619
-                "\u8EA2\uA8E5\u0000\uCFCC\u0000\uCFC8\u0000\uCFC3\u8EA2\uA8DD" + // 15620 - 15624
-                "\u0000\uD7F0\u8EA2\uA8DB\u0000\uCFC1\u0000\uCFCB\u0000\u0000" + // 15625 - 15629
-                "\u0000\uFCA3\u0000\u0000\u0000\uFCA2\u8EA2\uEFDD\u8EA2\uEFDE" + // 15630 - 15634
-                "\u0000\uFCF3\u8EA2\uF0DF\u0000\u0000\u0000\uFDB6\u0000\u0000" + // 15635 - 15639
-                "\u0000\uD3F4\u0000\uE2F9\u8EA2\uCFB2\u8EA2\uCFB1\u8EA2\uD5DE" + // 15640 - 15644
-                "\u8EA2\uD5DD\u0000\u0000\u0000\u0000\u0000\uF6A7\u8EA2\uE0CF" + // 15645 - 15649
-                "\u8EA2\uE0CE\u8EA2\uE4CF\u8EA2\uE4CD\u8EA2\uE4D0\u8EA2\uE4CE" + // 15650 - 15654
-                "\u0000\u0000\u0000\u0000\u0000\uF9C9\u8EA2\uE7EF\u8EA2\uE7F0" + // 15655 - 15659
-                "\u8EA2\uE7F1\u0000\u0000\u8EA2\uECDF\u0000\u0000\u8EA2\uEEC1" + // 15660 - 15664
-                "\u0000\u0000\u8EA2\uF0E0\u0000\u0000\u0000\u0000\u0000\u0000" + // 15665 - 15669
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD3F5" + // 15670 - 15674
-                "\u0000\u0000\u0000\u0000\u8EA2\uDBE3\u8EA2\uE0D0\u0000\u0000" + // 15675 - 15679
-                "\u0000\uD3F6\u0000\u0000\u0000\u0000\u0000\uEBE9\u0000\u0000" + // 15680 - 15684
-                "\u8EA2\uDBE4\u0000\uF7EB\u8EA2\uE4D1\u0000\uF9CA\u0000\u0000" + // 15685 - 15689
-                "\u8EA2\uEADA\u8EA2\uEADB\u0000\uFBC0\u8EA2\uC6CB\u0000\u0000" + // 15690 - 15694
-                "\u8EA2\uC6CC\u0000\u0000\u8EA2\uC6CA\u8EA2\uC6CD\u0000\u0000" + // 15695 - 15699
-                "\u0000\uE6AC\u0000\u0000\u8EA2\uC6C9\u0000\u0000\u0000\uEADB" + // 15700 - 15704
-                "\u0000\u0000\u0000\u0000\u8EA2\uD3B3\u8EA2\uD3AF\u8EA2\uD3B2" + // 15705 - 15709
-                "\u8EA2\uD3B4\u8EA2\uD3B1\u8EA2\uD3B0\u0000\u0000\u8EA2\uD9E1" + // 15710 - 15714
-                "\u8EA2\uD9E2\u8EA2\uD9E3\u0000\uF1FC\u0000\uF1FD\u8EA2\uDEDE" + // 15715 - 15719
-                "\u8EA2\uDEDD\u8EA2\uDEDF\u0000\u0000\u8EA2\uE2ED\u8EA2\uE2EC" + // 15720 - 15724
-                "\u0000\u0000\u8EA2\uE6CF\u0000\u0000\u8EA2\uE6D0\u8EA2\uE6CE" + // 15725 - 15729
-                "\u0000\u0000\u0000\uFAB0\u0000\u0000\u8EA2\uE9E2\u8EA2\uE9E3" + // 15730 - 15734
-                "\u0000\u0000\u8EA2\uEDF3\u8EA2\uEFBE\u8EA2\uF0C9\u0000\uC8E2" + // 15735 - 15739
-                "\u0000\uCBC0\u0000\u0000\u0000\uF5A9\u0000\uC8E3\u0000\u0000" + // 15740 - 15744
-                "\u8EA2\uB8DC\u8EA2\uBFC0\u0000\u0000\u0000\uFCEC\u8EA2\uA2EA" + // 15745 - 15749
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA2EB\u8EA2\uA2ED" + // 15750 - 15754
-                "\u0000\uC8E4\u8EA2\uA2EE\u0000\uD7EA\u8EA2\uB2B4\u0000\uDCEF" + // 15755 - 15759
-                "\u0000\u0000\u8EA2\uBFBC\u0000\uE6AB\u0000\u0000\u0000\uEAD8" + // 15760 - 15764
-                "\u0000\uF1FB\u0000\uF5A8\u0000\uF7AE\u8EA2\uE6CD\u0000\uC8DF" + // 15765 - 15769
-                "\u0000\uCFBC\u0000\u0000\u0000\u0000\u0000\uD7EB\u8EA2\uB8D6" + // 15770 - 15774
-                "\u0000\uE1D4\u0000\u0000\u0000\uEAD9\u8EA2\uCDB2\u8EA2\uD3AE" + // 15775 - 15779
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC8E0" + // 15780 - 15784
-                "\u0000\uE1D5\u8EA2\uC6C8\u0000\uEADA\u0000\uC8E1\u8EA2\uA8D1" + // 15785 - 15789
-                "\u8EA2\uADAC\u0000\uD3B4\u0000\u0000\u0000\u0000\u8EA2\uB2B6" + // 15790 - 15794
-                "\u0000\u0000\u0000\u0000\u0000\uD7EE\u0000\u0000\u0000\uD7EC" + // 15795 - 15799
-                "\u0000\uD7ED\u0000\uD7EF\u0000\u0000\u0000\u0000\u8EA2\uB2B5" + // 15800 - 15804
-                "\u0000\u0000\u0000\u0000\u8EA2\uB8DB\u8EA2\uB8D8\u8EA2\uB8DA" + // 15805 - 15809
-                "\u0000\uDCF0\u0000\uDCF2\u0000\uDCF1\u8EA2\uB8D7\u0000\uDCF3" + // 15810 - 15814
-                "\u8EA2\uB8D9\u0000\u0000\u8EA2\uBFBD\u8EA2\uBFBE\u0000\u0000" + // 15815 - 15819
-                "\u8EA2\uBFBF\u0000\uF5A2\u0000\u0000\u0000\uF5A1\u0000\uF4FD" + // 15820 - 15824
-                "\u8EA2\uDED6\u8EA2\uDED9\u0000\uF4FC\u8EA2\uDEDA\u0000\u0000" + // 15825 - 15829
-                "\u0000\uF5A5\u8EA2\uDED8\u0000\u0000\u8EA2\uDED7\u0000\uF7AC" + // 15830 - 15834
-                "\u0000\u0000\u0000\uF7AD\u8EA2\uE2EB\u8EA2\uE2E9\u8EA2\uE2EA" + // 15835 - 15839
-                "\u0000\u0000\u0000\u0000\u8EA2\uE6CC\u0000\u0000\u8EA2\uE6CB" + // 15840 - 15844
-                "\u0000\uF8E9\u8EA2\uE9E1\u0000\uFAAF\u8EA2\uE9E0\u0000\u0000" + // 15845 - 15849
-                "\u8EA2\uEBFE\u8EA2\uEDF2\u0000\uFBF0\u8EA2\uF1B2\u8EA2\uF1B3" + // 15850 - 15854
-                "\u0000\uFCC4\u0000\uC8DB\u0000\u0000\u0000\uCFBA\u8EA2\uBFB7" + // 15855 - 15859
-                "\u0000\uEAD6\u0000\uF5A7\u8EA2\uDEDC\u0000\uC8DC\u0000\u0000" + // 15860 - 15864
-                "\u0000\uD7E9\u0000\uD7E8\u8EA2\uBFB8\u0000\u0000\u0000\u0000" + // 15865 - 15869
-                "\u0000\u0000\u8EA2\uD9E0\u0000\uC8DD\u0000\uD3B3\u0000\u0000" + // 15870 - 15874
-                "\u0000\u0000\u8EA2\uBFB9\u8EA2\uBFBA\u8EA2\uBFBB\u0000\uEAD7" + // 15875 - 15879
-                "\u0000\uF1FA\u0000\uC8DE\u0000\u0000\u0000\uCFBB\u8EA2\uADAB" + // 15880 - 15884
-                "\u0000\uEAD0\u0000\u0000\u0000\uEAD5\u8EA2\uCDAD\u0000\u0000" + // 15885 - 15889
-                "\u0000\u0000\u8EA2\uCDAC\u8EA2\uCDAE\u0000\uEAD2\u8EA2\uCDAB" + // 15890 - 15894
-                "\u0000\uEAD3\u8EA2\uCDB1\u8EA2\uCDB0\u8EA2\uCDAF\u0000\u0000" + // 15895 - 15899
-                "\u0000\uEAD1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15900 - 15904
-                "\u0000\u0000\u8EA2\uD3AA\u0000\u0000\u8EA2\uD3AD\u0000\uEED1" + // 15905 - 15909
-                "\u8EA2\uD3AC\u0000\uEED0\u0000\uEECC\u0000\uEECD\u0000\uEECE" + // 15910 - 15914
-                "\u8EA2\uD3A9\u8EA2\uD3A8\u0000\uEECF\u0000\u0000\u8EA2\uD3AB" + // 15915 - 15919
-                "\u8EA2\uD3A7\u0000\u0000\u0000\u0000\u8EA2\uD9D5\u8EA2\uD9DF" + // 15920 - 15924
-                "\u0000\uF1F9\u0000\uF1F8\u0000\u0000\u8EA2\uD9D9\u8EA2\uD9DB" + // 15925 - 15929
-                "\u0000\u0000\u8EA2\uD9D6\u0000\u0000\u8EA2\uD9DA\u8EA2\uD9D4" + // 15930 - 15934
-                "\u8EA2\uD9DD\u0000\uF1F7\u8EA2\uD9DC\u8EA2\uD9D8\u0000\u0000" + // 15935 - 15939
-                "\u8EA2\uD9DE\u0000\u0000\u8EA2\uD9D7\u0000\uF4FE\u8EA2\uDED5" + // 15940 - 15944
-                "\u8EA2\uDEDB\u0000\uF5A4\u0000\uF5A6\u0000\uF5A3\u8EA2\uB2B3" + // 15945 - 15949
-                "\u8EA2\uB2B1\u0000\uD7DB\u0000\u0000\u0000\u0000\u0000\uD7DD" + // 15950 - 15954
-                "\u0000\uD7E0\u0000\u0000\u0000\uD7E3\u0000\u0000\u0000\uD7E5" + // 15955 - 15959
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15960 - 15964
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15965 - 15969
-                "\u8EA2\uB8D2\u0000\uDCE9\u0000\u0000\u8EA2\uB8C9\u8EA2\uB8CB" + // 15970 - 15974
-                "\u0000\u0000\u8EA2\uB8CC\u0000\u0000\u8EA2\uB8D4\u8EA2\uB8D0" + // 15975 - 15979
-                "\u8EA2\uB8CE\u0000\u0000\u8EA2\uB8D1\u8EA2\uB8D5\u0000\uDCEA" + // 15980 - 15984
-                "\u0000\uDCEE\u8EA2\uB8CA\u0000\u0000\u8EA2\uB8D3\u0000\u0000" + // 15985 - 15989
-                "\u0000\uDCEC\u0000\u0000\u0000\uDCEB\u8EA2\uB8CF\u8EA2\uB8CD" + // 15990 - 15994
-                "\u0000\u0000\u0000\uDCE8\u0000\uDCED\u0000\u0000\u0000\u0000" + // 15995 - 15999
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16000 - 16004
-                "\u0000\u0000\u0000\uE1CE\u8EA2\uBFB6\u0000\u0000\u0000\u0000" + // 16005 - 16009
-                "\u8EA2\uBFB4\u0000\uE1D0\u0000\u0000\u0000\uD3E8\u0000\u0000" + // 16010 - 16014
-                "\u0000\uD3E9\u0000\u0000\u8EA2\uADDC\u0000\u0000\u8EA2\uADDE" + // 16015 - 16019
-                "\u8EA2\uADE0\u0000\u0000\u0000\uD3E6\u8EA2\uADDF\u0000\u0000" + // 16020 - 16024
-                "\u0000\u0000\u0000\uD3E7\u0000\u0000\u0000\u0000\u0000\u0000" + // 16025 - 16029
-                "\u0000\u0000\u0000\u0000\u8EA2\uB9F1\u8EA2\uADDB\u8EA2\uB3B6" + // 16030 - 16034
-                "\u8EA2\uB3BF\u8EA2\uB3BD\u8EA2\uB3B8\u8EA2\uB3B9\u8EA2\uB3BE" + // 16035 - 16039
-                "\u8EA2\uB3C0\u0000\uD8D6\u0000\u0000\u8EA2\uB3BB\u8EA2\uB3B7" + // 16040 - 16044
-                "\u0000\uD8D5\u0000\uD8D7\u8EA2\uB3BA\u8EA2\uB3C1\u8EA2\uB3BC" + // 16045 - 16049
-                "\u0000\u0000\u0000\u0000\u0000\uDDE5\u8EA2\uB9F4\u8EA2\uB9EC" + // 16050 - 16054
-                "\u8EA2\uB9F2\u8EA2\uB9F3\u0000\uDDE6\u0000\u0000\u8EA2\uB9EB" + // 16055 - 16059
-                "\u8EA2\uB9ED\u8EA2\uADD8\u8EA2\uB9EF\u8EA2\uB9F0\u8EA2\uB9EE" + // 16060 - 16064
-                "\u0000\uE2D3\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC0FB" + // 16065 - 16069
-                "\u8EA2\uDBA2\u8EA2\uC0FC\u8EA2\uC0F9\u0000\uDDE7\u0000\uE2D5" + // 16070 - 16074
-                "\u8EA2\uC0F8\u0000\uFAAE\u0000\uC8D2\u0000\u0000\u0000\uC8D3" + // 16075 - 16079
-                "\u0000\uD7D3\u0000\uCFAF\u0000\uD7D2\u8EA2\uACF2\u0000\u0000" + // 16080 - 16084
-                "\u0000\u0000\u0000\u0000\u0000\uE1C6\u0000\uC8D4\u0000\uD3A4" + // 16085 - 16089
-                "\u8EA2\uACF3\u8EA2\uACF4\u0000\uD3A3\u0000\uD3A5\u0000\uC8D5" + // 16090 - 16094
-                "\u0000\u0000\u8EA2\uACF5\u0000\uD7D5\u8EA2\uB2AA\u0000\uD7D7" + // 16095 - 16099
-                "\u0000\uD7D4\u0000\uD7D6\u0000\u0000\u8EA2\uB8C5\u0000\uDCE5" + // 16100 - 16104
-                "\u0000\u0000\u8EA2\uB8C4\u8EA2\uB8C3\u0000\u0000\u8EA2\uC6B8" + // 16105 - 16109
-                "\u0000\u0000\u0000\u0000\u8EA2\uCDA8\u0000\u0000\u0000\uEECB" + // 16110 - 16114
-                "\u0000\u0000\u0000\uF1F6\u8EA2\uD9D2\u8EA2\uD9D1\u0000\u0000" + // 16115 - 16119
-                "\u8EA2\uDED4\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEBFD" + // 16120 - 16124
-                "\u0000\u0000\u0000\u0000\u0000\uC8D6\u8EA2\uA4F3\u8EA2\uA8CA" + // 16125 - 16129
-                "\u0000\uD3A6\u8EA2\uACF6\u0000\u0000\u8EA2\uB2AC\u0000\u0000" + // 16130 - 16134
-                "\u0000\u0000\u0000\u0000\u0000\uD7D8\u8EA2\uB2AB\u0000\uD7D9" + // 16135 - 16139
-                "\u8EA2\uB2A9\u0000\uD7D1\u8EA2\uB2A8\u8EA2\uB2A7\u0000\u0000" + // 16140 - 16144
-                "\u0000\uD7D0\u0000\u0000\u8EA2\uB8C0\u0000\u0000\u8EA2\uB8C2" + // 16145 - 16149
-                "\u8EA2\uB8BB\u8EA2\uB8BC\u0000\uDCE2\u8EA2\uB8BD\u0000\uDCE3" + // 16150 - 16154
-                "\u8EA2\uB8C1\u8EA2\uB8BE\u8EA2\uB8BF\u0000\uDCE4\u0000\u0000" + // 16155 - 16159
-                "\u0000\uE1C4\u0000\uE1C5\u0000\u0000\u8EA2\uBFA9\u0000\u0000" + // 16160 - 16164
-                "\u0000\u0000\u0000\u0000\u8EA2\uC6B6\u8EA2\uC6B7\u0000\u0000" + // 16165 - 16169
-                "\u8EA2\uCDA7\u0000\uEACB\u0000\uEAC9\u0000\uEACA\u8EA2\uCDA4" + // 16170 - 16174
-                "\u8EA2\uCDA5\u0000\u0000\u8EA2\uCDA6\u8EA2\uD3A3\u0000\u0000" + // 16175 - 16179
-                "\u8EA2\uD3A4\u0000\uEECA\u8EA2\uD3A1\u8EA2\uD2FE\u8EA2\uD3A2" + // 16180 - 16184
-                "\u8EA2\uD2FD\u0000\uF1F5\u8EA2\uD9D0\u0000\uF1F3\u0000\uF1F4" + // 16185 - 16189
-                "\u8EA2\uDED3\u0000\uF4F5\u8EA2\uDED2\u8EA2\uE1B4\u0000\u0000" + // 16190 - 16194
-                "\u8EA2\uE2E6\u8EA2\uE2E7\u0000\uF7A8\u0000\u0000\u0000\uF7A9" + // 16195 - 16199
-                "\u0000\uF4F6\u8EA2\uE6C8\u8EA2\uE6C9\u8EA2\uE9DE\u8EA2\uE9DC" + // 16200 - 16204
-                "\u8EA2\uE9DB\u0000\uFAAC\u0000\u0000\u0000\u0000\u0000\u0000" + // 16205 - 16209
-                "\u8EA2\uEBF9\u8EA2\uEBF6\u8EA2\uEBF7\u0000\u0000\u8EA2\uEBF5" + // 16210 - 16214
-                "\u8EA2\uEBF8\u0000\uFAFD\u8EA2\uEBFA\u0000\u0000\u0000\uFAFC" + // 16215 - 16219
-                "\u0000\u0000\u8EA2\uEDEF\u0000\u0000\u0000\uFCC1\u0000\uFCC3" + // 16220 - 16224
-                "\u8EA2\uEFBD\u0000\uFCC2\u8EA2\uF0C7\u8EA2\uF1AF\u8EA2\uF1B1" + // 16225 - 16229
-                "\u8EA2\uF1AE\u8EA2\uF1B0\u0000\uFDB9\u0000\u0000\u0000\u0000" + // 16230 - 16234
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16235 - 16239
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16240 - 16244
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16245 - 16249
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16250 - 16254
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16255 - 16259
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16260 - 16264
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16265 - 16269
-                "\u0000\uDEA4\u8EA2\uC1D4\u8EA2\uC8F3\u0000\u0000\u0000\uE7ED" + // 16270 - 16274
-                "\u8EA2\uC8F1\u0000\u0000\u0000\u0000\u8EA2\uC8F2\u0000\u0000" + // 16275 - 16279
-                "\u0000\u0000\u0000\u0000\u8EA2\uCFCA\u8EA2\uCFCB\u0000\uEBFA" + // 16280 - 16284
-                "\u0000\uEBF8\u8EA2\uCFCC\u0000\uEBF9\u8EA2\uD6B3\u0000\u0000" + // 16285 - 16289
-                "\u8EA2\uD6B6\u8EA2\uD6B0\u8EA2\uD6B7\u8EA2\uD6AF\u8EA2\uD6B1" + // 16290 - 16294
-                "\u0000\u0000\u8EA2\uD6B2\u8EA2\uDEC5\u0000\uF4ED\u8EA2\uDEBF" + // 16295 - 16299
-                "\u0000\uF4E8\u8EA2\uDECC\u0000\uF4EC\u0000\uF4E5\u8EA2\uDEC6" + // 16300 - 16304
-                "\u0000\uF4F0\u8EA2\uDEC4\u0000\u0000\u0000\u0000\u8EA2\uDEC8" + // 16305 - 16309
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE2DA\u8EA2\uE2E0" + // 16310 - 16314
-                "\u0000\uF7A5\u8EA2\uE2E3\u0000\uF6FE\u0000\uF7A1\u8EA2\uE2DB" + // 16315 - 16319
-                "\u8EA2\uE2E2\u8EA2\uE2DD\u0000\uF7A6\u0000\uF7A3\u0000\u0000" + // 16320 - 16324
-                "\u8EA2\uE2D9\u0000\u0000\u0000\uF7A2\u8EA2\uE2DF\u8EA2\uE2E1" + // 16325 - 16329
-                "\u0000\uF7A4\u8EA2\uE2DE\u8EA2\uE2DC\u0000\u0000\u0000\u0000" + // 16330 - 16334
-                "\u0000\u0000\u0000\u0000\u8EA2\uE6C2\u0000\uF8E2\u0000\uF8E3" + // 16335 - 16339
-                "\u0000\uF8DF\u0000\u0000\u0000\uF8E0\u0000\u0000\u8EA2\uE6BE" + // 16340 - 16344
-                "\u8EA2\uE6BC\u0000\u0000\u8EA2\uE6C0\u0000\uF8E4\u8EA2\uE6C1" + // 16345 - 16349
-                "\u8EA2\uE6BA\u8EA2\uE6B9\u8EA2\uE6BD\u8EA2\uE6BB\u0000\uF8E1" + // 16350 - 16354
-                "\u8EA2\uE6BF\u8EA2\uE9D9\u0000\uFAAB\u0000\uFAAA\u8EA2\uE9DA" + // 16355 - 16359
-                "\u0000\u0000\u0000\uE7B8\u0000\uE7AD\u0000\u0000\u8EA2\uC8A7" + // 16360 - 16364
-                "\u0000\u0000\u0000\u0000\u0000\uE7B2\u0000\u0000\u8EA2\uC8A8" + // 16365 - 16369
-                "\u0000\uE7AB\u0000\uE7AA\u0000\u0000\u0000\uE7B5\u0000\uE7B4" + // 16370 - 16374
-                "\u0000\uE7B3\u0000\uE7B1\u0000\uE7B6\u8EA2\uC8A5\u0000\uE7AC" + // 16375 - 16379
-                "\u0000\uE7AE\u0000\uE7B0\u0000\u0000\u0000\u0000\u0000\uEBC0" + // 16380 - 16384
-                "\u0000\uEBC3\u0000\u0000\u0000\uEBC7\u0000\uEBC1\u0000\uEBC6" + // 16385 - 16389
-                "\u0000\uEBC4\u0000\u0000\u0000\uEBBF\u0000\u0000\u0000\uEBC5" + // 16390 - 16394
-                "\u0000\uEBC2\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD4FA" + // 16395 - 16399
-                "\u0000\uEFCD\u0000\uEFCB\u0000\u0000\u8EA2\uD4FB\u0000\u0000" + // 16400 - 16404
-                "\u0000\uEFCE\u0000\uEFCC\u8EA2\uD4F9\u8EA2\uD4F8\u0000\u0000" + // 16405 - 16409
-                "\u0000\uF2DA\u8EA2\uD4F7\u0000\uF2D8\u0000\uF2D7\u8EA2\uDAFC" + // 16410 - 16414
-                "\u0000\uEFCF\u0000\uF2D9\u8EA2\uDAFD\u0000\uF2DC\u8EA2\uDAFE" + // 16415 - 16419
-                "\u0000\uF2DB\u0000\uF5E3\u8EA2\uDFEF\u0000\uF5E2\u8EA2\uCCEF" + // 16420 - 16424
-                "\u8EA2\uCCEE\u8EA2\uCCEB\u0000\u0000\u8EA2\uCCF3\u8EA2\uCCF0" + // 16425 - 16429
-                "\u8EA2\uCCF4\u0000\uEAC6\u0000\u0000\u8EA2\uCDA2\u0000\uEABB" + // 16430 - 16434
-                "\u8EA2\uCCF5\u8EA2\uCCF6\u0000\u0000\u8EA2\uCCF2\u0000\u0000" + // 16435 - 16439
-                "\u0000\u0000\u0000\u0000\u0000\uEAC5\u0000\u0000\u0000\u0000" + // 16440 - 16444
-                "\u0000\u0000\u0000\u0000\u8EA2\uD2EF\u0000\uEEBB\u0000\uEEC4" + // 16445 - 16449
-                "\u0000\uEEC0\u8EA2\uD2EC\u0000\u0000\u0000\uEEBD\u0000\uEEC1" + // 16450 - 16454
-                "\u8EA2\uD2F8\u0000\uEEB7\u8EA2\uD2F0\u0000\u0000\u0000\uEEBF" + // 16455 - 16459
-                "\u0000\u0000\u0000\u0000\u8EA2\uD2F3\u8EA2\uD2EE\u0000\uEEBE" + // 16460 - 16464
-                "\u0000\uEEC2\u8EA2\uD2ED\u0000\u0000\u0000\uEEBC\u0000\u0000" + // 16465 - 16469
-                "\u8EA2\uD2F7\u0000\uEEB9\u8EA2\uD2F6\u8EA2\uD2F5\u0000\uEEC5" + // 16470 - 16474
-                "\u8EA2\uD0BB\u0000\uEEB8\u0000\u0000\u8EA2\uD2F4\u8EA2\uD2EB" + // 16475 - 16479
-                "\u0000\u0000\u0000\uEEC6\u8EA2\uD2F2\u0000\uEEBA\u0000\u0000" + // 16480 - 16484
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1BA\u8EAD\uA1BB" + // 16485 - 16489
-                "\u0000\u0000\u0000\u0000\u8EAD\uA1B8\u8EAD\uA1B9\u0000\u0000" + // 16490 - 16494
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16495 - 16499
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16500 - 16504
-                "\u0000\u0000\u0000\u0000\u0000\uA2D3\u0000\u0000\u0000\u0000" + // 16505 - 16509
-                "\u0000\u0000\u0000\uA2D4\u0000\u0000\u0000\u0000\u0000\u0000" + // 16510 - 16514
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16515 - 16519
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2C7\u0000\u0000" + // 16520 - 16524
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16525 - 16529
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16530 - 16534
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16535 - 16539
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16540 - 16544
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2CA" + // 16545 - 16549
-                "\u8EA2\uC5FE\u0000\uE5F1\u0000\u0000\u8EA2\uC6A7\u8EA2\uC6AB" + // 16550 - 16554
-                "\u8EA2\uC6A3\u8EA2\uC5FD\u0000\u0000\u8EA2\uC5FC\u0000\u0000" + // 16555 - 16559
-                "\u0000\u0000\u0000\u0000\u8EA2\uC6A9\u8EA2\uC6A1\u8EA2\uC6A5" + // 16560 - 16564
-                "\u0000\uE5F2\u0000\u0000\u0000\uE5F0\u8EA2\uC6AD\u0000\uE5EE" + // 16565 - 16569
-                "\u8EA2\uC6AA\u0000\u0000\u8EA2\uCCF9\u0000\u0000\u0000\u0000" + // 16570 - 16574
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEAB7\u8EA2\uCCF1" + // 16575 - 16579
-                "\u0000\uEEC3\u8EA2\uCCFB\u0000\uEABA\u8EA2\uCDA1\u0000\uEAC0" + // 16580 - 16584
-                "\u8EA2\uCCEC\u0000\u0000\u0000\u0000\u8EA2\uCCFC\u8EA2\uCCE9" + // 16585 - 16589
-                "\u0000\u0000\u8EA2\uCCFE\u8EA2\uCCED\u0000\u0000\u0000\uEAC7" + // 16590 - 16594
-                "\u0000\uEAC4\u8EA2\uCCFD\u8EA2\uCCF7\u0000\uEAB6\u0000\uEABE" + // 16595 - 16599
-                "\u0000\uEABD\u0000\u0000\u0000\uEABC\u0000\uEAC2\u0000\u0000" + // 16600 - 16604
-                "\u8EA2\uCCEA\u0000\uEAC3\u8EA2\uCCF8\u0000\uEABF\u0000\uEAB5" + // 16605 - 16609
-                "\u8EA2\uCCFA\u0000\uEAB8\u0000\uEAB9\u0000\uEAC1\u0000\uDCD7" + // 16610 - 16614
-                "\u8EA2\uB8AF\u0000\uDCDC\u0000\uDCD2\u0000\uDCDA\u8EA2\uB8AC" + // 16615 - 16619
-                "\u0000\uDCD1\u8EA2\uB8B0\u0000\u0000\u0000\u0000\u8EA2\uB8B3" + // 16620 - 16624
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBFA1\u8EA2\uBEF6" + // 16625 - 16629
-                "\u0000\uE1B8\u8EA2\uBEFD\u8EA2\uBEFA\u8EA2\uBEF2\u8EA2\uBEFB" + // 16630 - 16634
-                "\u0000\uE1BA\u8EA2\uBEF3\u0000\u0000\u8EA2\uBEEF\u0000\u0000" + // 16635 - 16639
-                "\u0000\u0000\u0000\uE5F3\u8EA2\uBEF8\u0000\u0000\u0000\uE1B7" + // 16640 - 16644
-                "\u8EA2\uBEFE\u0000\u0000\u0000\uE1BE\u0000\uE1C0\u8EA2\uBEF1" + // 16645 - 16649
-                "\u0000\u0000\u0000\u0000\u0000\uE1BF\u8EA2\uBEF4\u0000\uE1B9" + // 16650 - 16654
-                "\u8EA2\uBEFC\u8EA2\uBEF5\u8EA2\uBEF9\u0000\u0000\u8EA2\uBEF7" + // 16655 - 16659
-                "\u0000\uE1BC\u8EA2\uBEF0\u0000\uE1C1\u0000\uDCD3\u0000\uE1BD" + // 16660 - 16664
-                "\u0000\uE1C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16665 - 16669
-                "\u0000\u0000\u0000\uE5EF\u8EA2\uC6A4\u8EA2\uC6A6\u8EA2\uC6A8" + // 16670 - 16674
-                "\u8EA2\uC6AC\u0000\u0000\u8EA2\uC6A2\u0000\uD2F9\u8EA2\uACED" + // 16675 - 16679
-                "\u0000\uD2F7\u8EA2\uACEB\u0000\uD2FC\u0000\uD2F8\u0000\uD2FD" + // 16680 - 16684
-                "\u0000\uD2FB\u8EA2\uACEC\u0000\uD2FA\u0000\uD7C2\u0000\uD7C1" + // 16685 - 16689
-                "\u8EA2\uB1FC\u0000\uD7CA\u8EA2\uB1F5\u8EA2\uB1FB\u0000\uD7C6" + // 16690 - 16694
-                "\u8EA2\uB1F4\u8EA2\uB1FA\u8EA2\uB1F8\u0000\uD7C5\u0000\uD7C7" + // 16695 - 16699
-                "\u8EA2\uB1F7\u0000\uD7C0\u8EA2\uB1F6\u0000\uD7CB\u0000\uD7C8" + // 16700 - 16704
-                "\u0000\uD7CC\u0000\uD7C9\u8EA2\uB1F3\u8EA2\uB1F2\u8EA2\uB1F9" + // 16705 - 16709
-                "\u0000\uD7C3\u0000\uD7BF\u0000\uD7C4\u0000\u0000\u0000\u0000" + // 16710 - 16714
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB8B5\u8EA2\uB8AE" + // 16715 - 16719
-                "\u0000\u0000\u0000\uE1BB\u8EA2\uB8AD\u0000\u0000\u0000\uDCD4" + // 16720 - 16724
-                "\u0000\uDCDB\u0000\uDCD8\u0000\uDCDE\u0000\uDCDD\u0000\uDCD9" + // 16725 - 16729
-                "\u0000\u0000\u8EA2\uB8A7\u8EA2\uB8AA\u0000\u0000\u8EA2\uB8A9" + // 16730 - 16734
-                "\u0000\uDCD5\u8EA2\uB8AB\u8EA2\uB8B4\u0000\uDCD6\u8EA2\uB8A8" + // 16735 - 16739
-                "\u8EA2\uB8B1\u8EA2\uB8B2\u8EA2\uACE9\u8EA2\uACEA\u0000\u0000" + // 16740 - 16744
-                "\u0000\u0000\u8EA2\uB1EB\u8EA2\uB1F1\u0000\u0000\u0000\u0000" + // 16745 - 16749
-                "\u8EA2\uB1EF\u0000\uD7BE\u8EA2\uB1ED\u0000\u0000\u8EA2\uB1EE" + // 16750 - 16754
-                "\u8EA2\uB1F0\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB1EC" + // 16755 - 16759
-                "\u0000\uDCCE\u0000\u0000\u8EA2\uB8A3\u0000\uDCD0\u8EA2\uB8A5" + // 16760 - 16764
-                "\u0000\uDCCF\u8EA2\uB8A4\u0000\u0000\u0000\u0000\u0000\u0000" + // 16765 - 16769
-                "\u0000\u0000\u0000\u0000\u8EA2\uBEEC\u0000\uE1B5\u0000\u0000" + // 16770 - 16774
-                "\u8EA2\uBEEE\u8EA2\uBEEB\u8EA2\uB8A6\u0000\u0000\u0000\uE1B6" + // 16775 - 16779
-                "\u0000\u0000\u0000\u0000\u8EA2\uBEED\u0000\u0000\u0000\u0000" + // 16780 - 16784
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC5FB" + // 16785 - 16789
-                "\u0000\u0000\u0000\uE5EB\u8EA2\uC5F9\u0000\uE5EC\u8EA2\uC5FA" + // 16790 - 16794
-                "\u0000\uE5ED\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEAB2" + // 16795 - 16799
-                "\u8EA2\uCCE8\u8EA2\uCCE5\u8EA2\uCCE7\u0000\uEAB3\u0000\uEAB4" + // 16800 - 16804
-                "\u8EA2\uCCE6\u0000\uF8DE\u0000\u0000\u0000\u0000\u0000\uFAA5" + // 16805 - 16809
-                "\u0000\u0000\u8EA2\uE9D7\u0000\u0000\u8EA2\uE9D6\u8EA2\uE9D4" + // 16810 - 16814
-                "\u8EA2\uE9D3\u8EA2\uE9D5\u0000\u0000\u0000\uFAA4\u0000\uFAA6" + // 16815 - 16819
-                "\u0000\u0000\u0000\u0000\u0000\uFAFB\u0000\u0000\u0000\u0000" + // 16820 - 16824
-                "\u8EA2\uEBF3\u8EA2\uEBF2\u0000\u0000\u0000\u0000\u8EA2\uEDE8" + // 16825 - 16829
-                "\u0000\u0000\u8EA2\uEDEA\u8EA2\uEDEC\u8EA2\uEDEB\u8EA2\uEDE9" + // 16830 - 16834
-                "\u0000\u0000\u0000\u0000\u0000\uFBED\u0000\uFBEC\u0000\u0000" + // 16835 - 16839
-                "\u0000\u0000\u0000\uFCBF\u0000\uFCBE\u0000\uFCC0\u8EA2\uEFBC" + // 16840 - 16844
-                "\u8EA2\uEFBB\u0000\u0000\u8EA2\uF1AB\u8EA2\uF0C6\u8EA2\uF1AC" + // 16845 - 16849
-                "\u0000\uFDA5\u0000\u0000\u0000\uFDA6\u8EA2\uF1DC\u0000\u0000" + // 16850 - 16854
-                "\u0000\u0000\u0000\uFDCB\u0000\uC8CD\u0000\u0000\u8EA2\uA8C8" + // 16855 - 16859
-                "\u0000\u0000\u0000\u0000\u8EA2\uACE6\u8EA2\uACE7\u8EA2\uACE5" + // 16860 - 16864
-                "\u0000\u0000\u0000\u0000\u0000\uD2F6\u0000\u0000\u8EA2\uACE8" + // 16865 - 16869
-                "\u8EA2\uDEAA\u8EA2\uDEB4\u8EA2\uDEB1\u8EA2\uDEB3\u0000\u0000" + // 16870 - 16874
-                "\u8EA2\uDEA7\u8EA2\uDEB7\u0000\uF4D6\u0000\u0000\u8EA2\uDEB2" + // 16875 - 16879
-                "\u8EA2\uDEBB\u8EA2\uDEAF\u0000\uF4DA\u0000\uF4D7\u8EA2\uDEAD" + // 16880 - 16884
-                "\u8EA2\uDEA8\u8EA2\uDEBA\u0000\uF1DF\u0000\u0000\u0000\u0000" + // 16885 - 16889
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16890 - 16894
-                "\u8EA2\uE2CF\u0000\u0000\u0000\u0000\u8EA2\uE2CD\u8EA2\uE2D3" + // 16895 - 16899
-                "\u0000\uF6FA\u8EA2\uE2D1\u8EA2\uE2D0\u0000\uF6FC\u8EA2\uE2D6" + // 16900 - 16904
-                "\u0000\uF6FB\u0000\u0000\u8EA2\uE2D7\u8EA2\uE2D4\u0000\uF6F8" + // 16905 - 16909
-                "\u8EA2\uE2D5\u8EA2\uE2CE\u0000\uF6F9\u0000\uF6F7\u8EA2\uE6B5" + // 16910 - 16914
-                "\u8EA2\uE2D2\u0000\u0000\u0000\u0000\u8EA2\uE2D8\u0000\u0000" + // 16915 - 16919
-                "\u0000\u0000\u8EA2\uE6B2\u0000\u0000\u0000\u0000\u0000\u0000" + // 16920 - 16924
-                "\u0000\uF8DD\u0000\uF8DB\u8EA2\uE6B4\u0000\u0000\u8EA2\uE6B6" + // 16925 - 16929
-                "\u8EA2\uE6B3\u0000\uF8DC\u0000\uF8D9\u0000\uF8DA\u0000\uE5E7" + // 16930 - 16934
-                "\u0000\uEEB3\u0000\u0000\u0000\u0000\u0000\uEEAF\u0000\u0000" + // 16935 - 16939
-                "\u0000\uEEB1\u0000\uEEB2\u0000\u0000\u0000\uF1E0\u8EA2\uD2E5" + // 16940 - 16944
-                "\u8EA2\uD2DF\u0000\uEEB5\u0000\u0000\u8EA2\uD2E2\u0000\u0000" + // 16945 - 16949
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD9AC" + // 16950 - 16954
-                "\u8EA2\uD9A7\u0000\u0000\u0000\u0000\u8EA2\uD9B1\u0000\uF1DE" + // 16955 - 16959
-                "\u8EA2\uD9A9\u0000\uF1E2\u8EA2\uD9AF\u8EA2\uD9A6\u8EA2\uD9A3" + // 16960 - 16964
-                "\u8EA2\uD9B2\u0000\uF4DB\u0000\uF1E3\u8EA2\uD9AE\u8EA2\uD9A4" + // 16965 - 16969
-                "\u0000\uF1E1\u8EA2\uD9A8\u0000\uF1E5\u8EA2\uD9A5\u8EA2\uD9AA" + // 16970 - 16974
-                "\u0000\uF1E4\u8EA2\uD9AD\u8EA2\uD9B0\u0000\u0000\u0000\u0000" + // 16975 - 16979
-                "\u0000\u0000\u0000\u0000\u8EA2\uDEB8\u8EA2\uDEB9\u8EA2\uDEA9" + // 16980 - 16984
-                "\u8EA2\uDEB0\u8EA2\uDEAE\u0000\u0000\u0000\u0000\u0000\uF4D9" + // 16985 - 16989
-                "\u8EA2\uDEB5\u8EA2\uD9AB\u0000\u0000\u8EA2\uDEAC\u0000\u0000" + // 16990 - 16994
-                "\u8EA2\uDEB6\u0000\uF4D8\u8EA2\uDEAB\u8EA2\uBEE8\u0000\u0000" + // 16995 - 16999
-                "\u0000\u0000\u0000\u0000\u8EA2\uBEE4\u8EA2\uBEEA\u0000\uE1AD" + // 17000 - 17004
-                "\u8EA2\uBEE3\u8EA2\uBEE5\u0000\uE1AB\u8EA2\uBEE2\u0000\uE1B2" + // 17005 - 17009
-                "\u8EA2\uBEE6\u0000\uE1B1\u8EA2\uBEE7\u0000\uE1B3\u0000\uE1AE" + // 17010 - 17014
-                "\u0000\uE1B4\u0000\uE1AF\u0000\u0000\u0000\uE1B0\u0000\u0000" + // 17015 - 17019
-                "\u0000\uE1AC\u0000\u0000\u8EA2\uBEE9\u0000\u0000\u0000\u0000" + // 17020 - 17024
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17025 - 17029
-                "\u0000\uE5E8\u8EA2\uC5F5\u0000\u0000\u8EA2\uC5F8\u8EA2\uC5EC" + // 17030 - 17034
-                "\u8EA2\uC5F1\u8EA2\uC5EB\u0000\uE5EA\u0000\u0000\u8EA2\uC5EF" + // 17035 - 17039
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC5ED\u0000\uE5E9" + // 17040 - 17044
-                "\u0000\u0000\u8EA2\uC5F4\u8EA2\uC5F3\u8EA2\uC5F0\u8EA2\uC5F2" + // 17045 - 17049
-                "\u8EA2\uC5EE\u0000\uEAAA\u8EA2\uC5F7\u0000\uE5E6\u8EA2\uC5F6" + // 17050 - 17054
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17055 - 17059
-                "\u0000\u0000\u0000\u0000\u0000\uC5FD\u0000\uC5FE\u0000\u0000" + // 17060 - 17064
-                "\u0000\uC7CA\u8EA2\uA3B3\u8EA2\uA5D6\u8EA2\uA5D7\u0000\u0000" + // 17065 - 17069
-                "\u0000\uD0B1\u8EA2\uAEB1\u0000\uD9B1\u0000\uD9B0\u8EA2\uBAC7" + // 17070 - 17074
-                "\u8EA2\uBAC6\u0000\u0000\u0000\u0000\u0000\uC4B1\u0000\uC5A7" + // 17075 - 17079
-                "\u0000\uC6A1\u0000\u0000\u0000\uD9B2\u8EA2\uA1A4\u0000\u0000" + // 17080 - 17084
-                "\u8EA2\uA1CD\u0000\uC6A2\u0000\u0000\u8EA2\uA2A2\u0000\uC7CC" + // 17085 - 17089
-                "\u0000\uC7CB\u8EA2\uA2A1\u0000\uC9BA\u0000\u0000\u0000\u0000" + // 17090 - 17094
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD4CD" + // 17095 - 17099
-                "\u0000\u0000\u0000\u0000\u8EA2\uB3F2\u0000\u0000\u0000\uE3BE" + // 17100 - 17104
-                "\u8EA2\uC9AC\u0000\uE8A4\u0000\u0000\u0000\u0000\u8EA2\uD6C5" + // 17105 - 17109
-                "\u0000\u0000\u0000\u0000\u8EA2\uE8EA\u0000\uA7B7\u0000\uC5A8" + // 17110 - 17114
-                "\u0000\u0000\u0000\u0000\u8EA2\uA5D8\u8EA2\uA9B6\u0000\uD9B5" + // 17115 - 17119
-                "\u0000\uD9B3\u8EA2\uACE3\u8EA2\uACE4\u0000\u0000\u0000\u0000" + // 17120 - 17124
-                "\u8EA2\uB1E2\u8EA2\uB1E4\u0000\uD7BC\u0000\u0000\u8EA2\uB1E6" + // 17125 - 17129
-                "\u8EA2\uB1E9\u8EA2\uB1E7\u0000\u0000\u0000\u0000\u0000\u0000" + // 17130 - 17134
-                "\u8EA2\uB1E8\u8EA2\uB1E5\u8EA2\uB1E1\u0000\uD7BD\u8EA2\uB1EA" + // 17135 - 17139
-                "\u8EA2\uB1E3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17140 - 17144
-                "\u8EA2\uB7F6\u0000\uDCCB\u8EA2\uB8A1\u0000\uDCC8\u0000\u0000" + // 17145 - 17149
-                "\u8EA2\uB7F8\u0000\uDCCC\u0000\u0000\u0000\uDCC6\u0000\u0000" + // 17150 - 17154
-                "\u8EA2\uB7F3\u8EA2\uB8A2\u8EA2\uB7F4\u8EA2\uB7F1\u0000\uDCCA" + // 17155 - 17159
-                "\u0000\u0000\u0000\uDCC7\u0000\u0000\u8EA2\uB7F7\u8EA2\uB7FA" + // 17160 - 17164
-                "\u0000\uDCC9\u8EA2\uB7FB\u0000\uDCCD\u8EA2\uB7FC\u8EA2\uB7F2" + // 17165 - 17169
-                "\u8EA2\uB7F9\u8EA2\uB7FD\u8EA2\uB7F5\u8EA2\uB7F0\u8EA2\uB7EE" + // 17170 - 17174
-                "\u0000\u0000\u0000\u0000\u8EA2\uB7FE\u0000\u0000\u0000\u0000" + // 17175 - 17179
-                "\u8EA2\uB7EF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17180 - 17184
-                "\u8EA2\uBFAF\u8EA2\uC6C6\u0000\u0000\u0000\uE1CF\u8EA2\uBFB3" + // 17185 - 17189
-                "\u0000\u0000\u0000\u0000\u8EA2\uBFB0\u0000\uE1CB\u0000\uE1D1" + // 17190 - 17194
-                "\u8EA2\uBFB5\u0000\uE1CD\u8EA2\uBFB2\u0000\uEACF\u0000\uE1CC" + // 17195 - 17199
-                "\u8EA2\uBFB1\u0000\uE1D2\u0000\uE1CA\u0000\uE1C9\u0000\u0000" + // 17200 - 17204
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC6BE" + // 17205 - 17209
-                "\u8EA2\uC6BC\u0000\u0000\u8EA2\uC6C2\u0000\u0000\u8EA2\uC6BA" + // 17210 - 17214
-                "\u8EA2\uC6C7\u8EA2\uC6BF\u0000\u0000\u8EA2\uC6B9\u0000\uE6A4" + // 17215 - 17219
-                "\u0000\uE6AA\u8EA2\uC6C4\u0000\u0000\u8EA2\uC6BD\u0000\u0000" + // 17220 - 17224
-                "\u0000\uE6A7\u0000\u0000\u0000\u0000\u0000\uE6A5\u8EA2\uC6C5" + // 17225 - 17229
-                "\u0000\uE6A2\u0000\uE6A1\u8EA2\uC6C0\u0000\uE6A6\u0000\uE1D3" + // 17230 - 17234
-                "\u0000\u0000\u8EA2\uC6C3\u8EA2\uC6BB\u0000\uE6A3\u0000\uE6A8" + // 17235 - 17239
-                "\u0000\uE6A9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17240 - 17244
-                "\u0000\uEAD4\u8EA2\uDEA5\u8EA2\uDEA6\u0000\u0000\u0000\u0000" + // 17245 - 17249
-                "\u0000\uF6F5\u0000\uF6F6\u0000\u0000\u0000\uFAA2\u0000\u0000" + // 17250 - 17254
-                "\u0000\u0000\u0000\uFCBD\u0000\uC7A1\u0000\u0000\u0000\u0000" + // 17255 - 17259
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uACE2\u0000\u0000" + // 17260 - 17264
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17265 - 17269
-                "\u8EA2\uB1E0\u0000\uD7BB\u0000\u0000\u0000\u0000\u0000\u0000" + // 17270 - 17274
-                "\u0000\u0000\u0000\u0000\u0000\uDDFE\u0000\uDDFD\u0000\u0000" + // 17275 - 17279
-                "\u0000\u0000\u0000\uE1AA\u8EA2\uBEE1\u0000\uE1A9\u8EA2\uBEE0" + // 17280 - 17284
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC5EA" + // 17285 - 17289
-                "\u0000\u0000\u0000\uEAA5\u8EA2\uCCD4\u0000\uEAA6\u0000\u0000" + // 17290 - 17294
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17295 - 17299
-                "\u0000\uFAA3\u8EA2\uE9D2\u0000\u0000\u0000\uC8CC\u0000\uCFAA" + // 17300 - 17304
-                "\u8EA2\uA8C7\u0000\u0000\u0000\uD2F5\u0000\u0000\u0000\uD2F4" + // 17305 - 17309
-                "\u8EA2\uACE0\u0000\uD2F3\u0000\u0000\u0000\u0000\u0000\uD7B9" + // 17310 - 17314
-                "\u8EA2\uB1DB\u8EA2\uB1D9\u8EA2\uB1DF\u0000\uD7BA\u8EA2\uB1DA" + // 17315 - 17319
-                "\u8EA2\uB1DE\u8EA2\uB1DC\u8EA2\uB1DD\u0000\u0000\u0000\u0000" + // 17320 - 17324
-                "\u8EA2\uB7EB\u8EA2\uB7ED\u0000\u0000\u0000\uDCC4\u0000\u0000" + // 17325 - 17329
-                "\u8EA2\uB7EC\u0000\uDCC5\u0000\uE1A8\u0000\uE1A7\u0000\uE1A6" + // 17330 - 17334
-                "\u8EA2\uBEDF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17335 - 17339
-                "\u8EA2\uC5E9\u0000\uE5E4\u0000\uE5E5\u0000\u0000\u8EA2\uC5E8" + // 17340 - 17344
-                "\u8EA2\uC5E7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17345 - 17349
-                "\u8EA2\uCCD1\u0000\uEAA4\u0000\uEAA3\u8EA2\uCCD2\u8EA2\uCCD3" + // 17350 - 17354
-                "\u0000\u0000\u0000\uEEAC\u0000\uEEAB\u0000\u0000\u8EA2\uD9A1" + // 17355 - 17359
-                "\u8EA2\uD2DB\u8EA2\uD2DD\u8EA2\uD2DC\u8EA2\uD8FE\u8EA2\uD8FC" + // 17360 - 17364
-                "\u8EA2\uD9A2\u8EA2\uD8FD\u0000\u0000\u0000\uF1DD\u0000\u0000" + // 17365 - 17369
-                "\u0000\u0000\u0000\u0000\u8EA2\uDEA4\u0000\uF4D5\u0000\uEEA7" + // 17370 - 17374
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD8F9\u0000\u0000" + // 17375 - 17379
-                "\u0000\uF1DA\u8EA2\uD8FB\u8EA2\uD8FA\u0000\u0000\u8EA2\uCCCC" + // 17380 - 17384
-                "\u0000\uF1DC\u0000\uF1DB\u0000\uF1D8\u0000\uF1D9\u0000\u0000" + // 17385 - 17389
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDEA2" + // 17390 - 17394
-                "\u0000\u0000\u8EA2\uDDFE\u0000\uF4D4\u8EA2\uDEA1\u0000\u0000" + // 17395 - 17399
-                "\u8EA2\uDEA3\u8EA2\uDDFD\u8EA2\uDDFC\u0000\u0000\u0000\u0000" + // 17400 - 17404
-                "\u8EA2\uE2CC\u0000\uF6F4\u0000\uF6F2\u0000\uF6F3\u0000\u0000" + // 17405 - 17409
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE6B0\u8EA2\uE6B1" + // 17410 - 17414
-                "\u0000\uF8D8\u0000\u0000\u0000\uF8D7\u8EA2\uE9D0\u8EA2\uE9D1" + // 17415 - 17419
-                "\u8EA2\uE9CF\u0000\u0000\u8EA2\uEDE6\u8EA2\uEDE7\u0000\u0000" + // 17420 - 17424
-                "\u0000\u0000\u0000\uC6FE\u8EA2\uA2E8\u0000\uCBB6\u0000\u0000" + // 17425 - 17429
-                "\u8EA2\uA8C5\u0000\uCFA9\u0000\uCFA8\u8EA2\uA8C6\u0000\u0000" + // 17430 - 17434
-                "\u0000\u0000\u8EA2\uACE1\u0000\uD2F2\u0000\uE1A5\u0000\u0000" + // 17435 - 17439
-                "\u8EA2\uBEDA\u8EA2\uBEDC\u8EA2\uBEDE\u0000\uE1A4\u0000\u0000" + // 17440 - 17444
-                "\u0000\u0000\u0000\uE1A2\u0000\u0000\u8EA2\uBEDB\u0000\uE1A3" + // 17445 - 17449
-                "\u8EA2\uBEDD\u0000\uE1A1\u0000\u0000\u0000\u0000\u8EA2\uC5E6" + // 17450 - 17454
-                "\u8EA2\uC5DD\u8EA2\uC5E0\u8EA2\uC5E4\u0000\uE5E1\u8EA2\uC5E2" + // 17455 - 17459
-                "\u0000\u0000\u8EA2\uC5E1\u8EA2\uC5DE\u8EA2\uC5DF\u0000\uE5DF" + // 17460 - 17464
-                "\u8EA2\uC5E5\u0000\uE5DE\u0000\u0000\u0000\uE5E3\u0000\uE5E2" + // 17465 - 17469
-                "\u0000\uE5E0\u0000\u0000\u8EA2\uC5E3\u0000\u0000\u0000\u0000" + // 17470 - 17474
-                "\u0000\u0000\u8EA2\uCCD0\u0000\u0000\u8EA2\uCCCF\u0000\u0000" + // 17475 - 17479
-                "\u0000\u0000\u8EA2\uCCCB\u0000\u0000\u0000\u0000\u0000\uEAA1" + // 17480 - 17484
-                "\u8EA2\uCCCE\u8EA2\uCCCD\u0000\uEAA2\u0000\u0000\u0000\u0000" + // 17485 - 17489
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEEA9\u0000\u0000" + // 17490 - 17494
-                "\u8EA2\uD2DA\u0000\u0000\u0000\uEEAA\u0000\uEEA6\u0000\uEEA8" + // 17495 - 17499
-                "\u0000\u0000\u0000\uEEA5\u0000\uCBB4\u0000\uCBB3\u0000\u0000" + // 17500 - 17504
-                "\u0000\u0000\u0000\u0000\u8EA2\uA8C4\u0000\u0000\u0000\u0000" + // 17505 - 17509
-                "\u0000\uCFA7\u0000\uCFA6\u0000\u0000\u0000\uD2F1\u0000\u0000" + // 17510 - 17514
-                "\u8EA2\uACDC\u8EA2\uACDF\u8EA2\uACDD\u0000\u0000\u0000\uD2EF" + // 17515 - 17519
-                "\u0000\uD2F0\u0000\u0000\u0000\u0000\u8EA2\uACDB\u8EA2\uACDE" + // 17520 - 17524
-                "\u0000\u0000\u0000\uD7B8\u0000\u0000\u0000\u0000\u0000\u0000" + // 17525 - 17529
-                "\u8EA2\uB1D6\u8EA2\uB1D8\u8EA2\uB1D7\u0000\uD7B5\u8EA2\uB1D2" + // 17530 - 17534
-                "\u0000\u0000\u0000\u0000\u0000\uD7B3\u0000\uD7B2\u0000\u0000" + // 17535 - 17539
-                "\u0000\uD7B6\u0000\uD7B4\u0000\u0000\u0000\uD7B7\u8EA2\uB1D5" + // 17540 - 17544
-                "\u8EA2\uB1D0\u8EA2\uB1D1\u8EA2\uB1D4\u8EA2\uB1D3\u0000\u0000" + // 17545 - 17549
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17550 - 17554
-                "\u0000\u0000\u8EA2\uB7E9\u8EA2\uB7EA\u8EA2\uB7E8\u0000\u0000" + // 17555 - 17559
-                "\u8EA2\uB7E7\u0000\uDCC3\u0000\u0000\u0000\u0000\u0000\u0000" + // 17560 - 17564
-                "\u0000\u0000\u8EA2\uB8C7\u0000\u0000\u0000\u0000\u0000\uDCE7" + // 17565 - 17569
-                "\u8EA2\uB8C6\u8EA2\uB8C8\u0000\u0000\u0000\uDCE6\u0000\u0000" + // 17570 - 17574
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBFAB\u8EA2\uBFAC" + // 17575 - 17579
-                "\u8EA2\uBFAA\u0000\uE1C7\u0000\u0000\u0000\u0000\u0000\u0000" + // 17580 - 17584
-                "\u0000\uE5FB\u0000\u0000\u0000\uE5FC\u0000\u0000\u0000\uEACD" + // 17585 - 17589
-                "\u0000\u0000\u8EA2\uCDAA\u8EA2\uCDA9\u0000\uEACC\u0000\u0000" + // 17590 - 17594
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD3A5" + // 17595 - 17599
-                "\u0000\u0000\u0000\u0000\u8EA2\uD3A6\u0000\u0000\u0000\u0000" + // 17600 - 17604
-                "\u0000\u0000\u0000\u0000\u8EA2\uD9D3\u0000\u0000\u0000\u0000" + // 17605 - 17609
-                "\u0000\uF4FA\u0000\uF4F9\u0000\uF4F7\u0000\uF4F8\u0000\uF4FB" + // 17610 - 17614
-                "\u0000\u0000\u8EA2\uE2E8\u0000\uF7AB\u0000\uF7AA\u8EA2\uE6CA" + // 17615 - 17619
-                "\u8EA2\uE9DF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBEF" + // 17620 - 17624
-                "\u0000\uFBEE\u0000\uC8D7\u0000\uCFA4\u0000\uCFA5\u8EA2\uA8C2" + // 17625 - 17629
-                "\u0000\u0000\u8EA2\uACDA\u8EA2\uACD9\u0000\uD2E9\u0000\uD2EC" + // 17630 - 17634
-                "\u0000\uD2EB\u0000\uD2EA\u8EA2\uACD6\u8EA2\uACD8\u8EA2\uACD7" + // 17635 - 17639
-                "\u0000\u0000\u0000\u0000\u8EA2\uB1CB\u0000\uD7AA\u8EA2\uB1CF" + // 17640 - 17644
-                "\u8EA2\uB1CE\u8EA2\uB1CD\u8EA2\uB1C9\u0000\uD7A9\u0000\uD7AD" + // 17645 - 17649
-                "\u0000\uD7B0\u0000\u0000\u0000\u0000\u0000\uD7B1\u8EA2\uB1CA" + // 17650 - 17654
-                "\u8EA2\uB1CC\u0000\uD7AF\u0000\uD7AE\u0000\uD7AC\u0000\uD7AB" + // 17655 - 17659
-                "\u8EA2\uB7E5\u0000\u0000\u8EA2\uB7E3\u8EA2\uB7DF\u0000\uDCC0" + // 17660 - 17664
-                "\u0000\u0000\u8EA2\uB7E0\u0000\uDCC1\u8EA2\uB7E1\u8EA2\uB7E2" + // 17665 - 17669
-                "\u8EA2\uB7E4\u0000\u0000\u0000\uDCC2\u0000\u0000\u0000\u0000" + // 17670 - 17674
-                "\u8EA2\uBED9\u0000\u0000\u8EA2\uBED8\u8EA2\uBED7\u8EA2\uBED6" + // 17675 - 17679
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC5DC" + // 17680 - 17684
-                "\u0000\uE5D9\u0000\u0000\u8EA2\uC5D9\u8EA2\uC5DB\u0000\u0000" + // 17685 - 17689
-                "\u0000\uE5DA\u8EA2\uC5D6\u0000\u0000\u0000\u0000\u8EA2\uC5D3" + // 17690 - 17694
-                "\u8EA2\uC5CE\u8EA2\uC5D0\u8EA2\uC5D1\u8EA2\uC5CA\u0000\u0000" + // 17695 - 17699
-                "\u0000\uE5D4\u0000\u0000\u0000\u0000\u0000\uE5D3\u0000\u0000" + // 17700 - 17704
-                "\u0000\uE5CF\u8EA2\uC5CD\u0000\u0000\u0000\uE5D6\u0000\u0000" + // 17705 - 17709
-                "\u0000\uE5D7\u8EA2\uC5CC\u8EA2\uC5CF\u8EA2\uC5D7\u0000\uE5D1" + // 17710 - 17714
-                "\u0000\uE5D2\u8EA2\uC5D5\u8EA2\uC5CB\u0000\u0000\u0000\u0000" + // 17715 - 17719
-                "\u0000\u0000\u8EA2\uCCBA\u0000\uE9F7\u8EA2\uCCBC\u8EA2\uC5D2" + // 17720 - 17724
-                "\u8EA2\uCCBE\u0000\uE9FB\u8EA2\uCCBF\u8EA2\uCCBB\u0000\u0000" + // 17725 - 17729
-                "\u0000\uE9F8\u8EA2\uCCB7\u0000\uE9FA\u8EA2\uCCB4\u8EA2\uCCB9" + // 17730 - 17734
-                "\u8EA2\uCCBD\u8EA2\uCCB6\u0000\u0000\u0000\u0000\u0000\uE5D0" + // 17735 - 17739
-                "\u0000\u0000\u8EA2\uCCB3\u0000\uE9F9\u8EA2\uCCB5\u0000\u0000" + // 17740 - 17744
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEDFD" + // 17745 - 17749
-                "\u8EA2\uD2C9\u0000\uEEA3\u0000\u0000\u0000\uEEA1\u0000\u0000" + // 17750 - 17754
-                "\u0000\uFAC7\u0000\uFAC9\u0000\u0000\u8EA2\uEAA7\u0000\uFAC8" + // 17755 - 17759
-                "\u8EA2\uEAA5\u0000\uF9A9\u8EA2\uEAA6\u0000\uFAC6\u0000\uFBAF" + // 17760 - 17764
-                "\u0000\uFBB1\u8EA2\uECC5\u0000\uFBB0\u8EA2\uECC4\u0000\u0000" + // 17765 - 17769
-                "\u8EA2\uEEB0\u0000\uFBF7\u8EA2\uEEAF\u0000\uFBF8\u8EA2\uEEAD" + // 17770 - 17774
-                "\u8EA2\uEEAC\u8EA2\uEEB1\u8EA2\uEEB2\u8EA2\uEFD4\u0000\u0000" + // 17775 - 17779
-                "\u8EA2\uEEAE\u0000\u0000\u0000\u0000\u8EA2\uF0D4\u8EA2\uF0D1" + // 17780 - 17784
-                "\u8EA2\uF0D2\u8EA2\uF0D3\u0000\uFDA9\u0000\u0000\u8EA2\uF1C0" + // 17785 - 17789
-                "\u8EA2\uF1BF\u8EA2\uF1BE\u8EA2\uF1DF\u0000\u0000\u8EA2\uF2AE" + // 17790 - 17794
-                "\u8EA2\uF1F9\u0000\uFDBB\u0000\uCBCE\u0000\uD8C5\u0000\u0000" + // 17795 - 17799
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE7A3" + // 17800 - 17804
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17805 - 17809
-                "\u0000\u0000\u0000\u0000\u0000\uEFC1\u0000\u0000\u0000\u0000" + // 17810 - 17814
-                "\u8EA2\uDAF4\u0000\u0000\u0000\u0000\u0000\uF0C9\u8EA2\uD6D8" + // 17815 - 17819
-                "\u0000\u0000\u0000\u0000\u0000\uF0CC\u8EA2\uD6DA\u0000\uF0CB" + // 17820 - 17824
-                "\u8EA2\uD6D3\u8EA2\uD6D5\u0000\u0000\u0000\u0000\u0000\u0000" + // 17825 - 17829
-                "\u0000\u0000\u0000\uF3CE\u8EA2\uDCD8\u0000\u0000\u0000\uF3CD" + // 17830 - 17834
-                "\u8EA2\uDCD9\u0000\uF3CC\u8EA2\uDCD7\u0000\uF3CB\u8EA2\uDCD6" + // 17835 - 17839
-                "\u0000\u0000\u0000\uF6BF\u0000\uF6BE\u8EA2\uE5C2\u8EA2\uE5C4" + // 17840 - 17844
-                "\u0000\u0000\u8EA2\uE5C3\u0000\uF8AE\u0000\uF8AF\u0000\u0000" + // 17845 - 17849
-                "\u0000\u0000\u0000\uF8B0\u8EA2\uE8EE\u0000\uF9E6\u0000\u0000" + // 17850 - 17854
-                "\u0000\u0000\u8EA2\uEFA2\u8EA2\uEFA1\u0000\uFCDE\u0000\u0000" + // 17855 - 17859
-                "\u0000\uC4C9\u0000\uC5B1\u0000\u0000\u0000\u0000\u0000\uC9E7" + // 17860 - 17864
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA9E0" + // 17865 - 17869
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDEE2" + // 17870 - 17874
-                "\u0000\uDEE3\u0000\u0000\u8EA2\uC2B9\u0000\uE8C0\u8EA2\uC9D0" + // 17875 - 17879
-                "\u8EA2\uCFFA\u8EA2\uCCAF\u8EA2\uCCAA\u8EA2\uCCAD\u8EA2\uCCB2" + // 17880 - 17884
-                "\u0000\uE9F2\u8EA2\uCCAC\u0000\u0000\u0000\uEDF7\u8EA2\uD2C7" + // 17885 - 17889
-                "\u8EA2\uD2C6\u0000\u0000\u0000\uEDFA\u0000\uEDF8\u8EA2\uD2C4" + // 17890 - 17894
-                "\u0000\uEDF6\u8EA2\uD2C5\u0000\u0000\u0000\uEDF9\u0000\u0000" + // 17895 - 17899
-                "\u0000\u0000\u0000\u0000\u8EA2\uD8E9\u0000\u0000\u8EA2\uD8EB" + // 17900 - 17904
-                "\u0000\u0000\u8EA2\uD8EA\u8EA2\uD8E2\u8EA2\uD8E6\u8EA2\uD8E5" + // 17905 - 17909
-                "\u8EA2\uD8E3\u0000\uF1D0\u0000\uF1D1\u0000\uF1CF\u8EA2\uD8E4" + // 17910 - 17914
-                "\u8EA2\uD8E7\u8EA2\uD8E8\u0000\u0000\u0000\uF1D2\u0000\u0000" + // 17915 - 17919
-                "\u0000\uF4CA\u8EA2\uDDED\u0000\u0000\u0000\uF4C7\u8EA2\uDDE7" + // 17920 - 17924
-                "\u0000\uF4C9\u0000\uF4CB\u0000\u0000\u0000\u0000\u0000\uF4C8" + // 17925 - 17929
-                "\u8EA2\uDDEC\u8EA2\uDDE8\u0000\uF4C6\u8EA2\uDDEB\u8EA2\uDDE6" + // 17930 - 17934
-                "\u8EA2\uDDEA\u8EA2\uDDE9\u0000\u0000\u0000\u0000\u8EA2\uE2C2" + // 17935 - 17939
-                "\u0000\uF6EE\u0000\uF6EF\u0000\uF6EC\u0000\u0000\u0000\uF6ED" + // 17940 - 17944
-                "\u0000\uE5B7\u0000\uE5B9\u0000\u0000\u8EA2\uC5AF\u0000\u0000" + // 17945 - 17949
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCCA3\u0000\uE9EE" + // 17950 - 17954
-                "\u8EA2\uCCA7\u0000\uE9ED\u8EA2\uCCA4\u0000\uE9EC\u0000\u0000" + // 17955 - 17959
-                "\u8EA2\uC5AE\u8EA2\uC5B5\u8EA2\uCCA6\u0000\u0000\u0000\uE9EF" + // 17960 - 17964
-                "\u8EA2\uCCA8\u8EA2\uCCA5\u8EA2\uCCA2\u0000\u0000\u0000\u0000" + // 17965 - 17969
-                "\u8EA2\uD2B9\u8EA2\uD2BD\u8EA2\uD2BF\u8EA2\uD2BB\u8EA2\uD2BA" + // 17970 - 17974
-                "\u8EA2\uD2B8\u0000\uEDEE\u0000\uEDEC\u0000\uEDF1\u0000\uEDF2" + // 17975 - 17979
-                "\u8EA2\uD2BC\u0000\uEDEF\u8EA2\uD2B7\u0000\uEDF0\u0000\uE9EB" + // 17980 - 17984
-                "\u8EA2\uD2BE\u0000\uEDED\u0000\u0000\u0000\u0000\u0000\u0000" + // 17985 - 17989
-                "\u8EA2\uD8D8\u0000\u0000\u8EA2\uD8D7\u8EA2\uD8DF\u8EA2\uD8D9" + // 17990 - 17994
-                "\u8EA2\uD8DE\u8EA2\uD8DB\u0000\uF1CA\u8EA2\uD8DD\u0000\u0000" + // 17995 - 17999
-                "\u0000\u0000\u0000\uF1CB\u0000\u0000\u0000\uF1CC\u0000\u0000" + // 18000 - 18004
-                "\u8EA2\uD8DC\u8EA2\uD8DA\u0000\u0000\u0000\u0000\u8EA2\uAECA" + // 18005 - 18009
-                "\u8EA2\uAECB\u0000\uD4E7\u0000\uD4E8\u0000\u0000\u0000\u0000" + // 18010 - 18014
-                "\u8EA2\uB4AF\u0000\uD9CE\u0000\uD9D0\u8EA2\uB4AE\u0000\uD9CF" + // 18015 - 18019
-                "\u8EA2\uBAE0\u0000\uDED8\u0000\u0000\u0000\u0000\u0000\u0000" + // 18020 - 18024
-                "\u0000\u0000\u0000\uE3D0\u0000\uE3D1\u8EA2\uC2A8\u0000\u0000" + // 18025 - 18029
-                "\u0000\uE8B7\u0000\u0000\u0000\uE8B6\u0000\u0000\u8EA2\uCFF0" + // 18030 - 18034
-                "\u8EA2\uD6D2\u8EA2\uD6D1\u0000\u0000\u8EA2\uF1DA\u0000\uC4C8" + // 18035 - 18039
-                "\u8EA2\uA1B9\u0000\u0000\u8EA2\uA1CF\u8EA2\uA1D0\u0000\u0000" + // 18040 - 18044
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC7E3\u0000\uC7E7" + // 18045 - 18049
-                "\u8EA2\uA2A9\u0000\u0000\u0000\uC7E5\u0000\uC7E4\u8EA2\uA2A8" + // 18050 - 18054
-                "\u0000\uC7E6\u0000\uC7E2\u0000\u0000\u0000\u0000\u0000\uC7E1" + // 18055 - 18059
-                "\u8EA2\uA2AA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18060 - 18064
-                "\u0000\u0000\u0000\u0000\u0000\uC9E6\u0000\u0000\u0000\u0000" + // 18065 - 18069
-                "\u0000\uC9E3\u0000\u0000\u8EA2\uB9DD\u8EA2\uB9DA\u0000\u0000" + // 18070 - 18074
-                "\u0000\u0000\u8EA2\uC0E1\u0000\uE2C7\u8EA2\uC0D9\u8EA2\uC0DF" + // 18075 - 18079
-                "\u0000\u0000\u0000\u0000\u0000\uE2C2\u0000\uE2C5\u8EA2\uC0D8" + // 18080 - 18084
-                "\u0000\uE2C0\u8EA2\uC0DC\u8EA2\uC7F2\u0000\uE2C4\u0000\u0000" + // 18085 - 18089
-                "\u8EA2\uC0D7\u0000\u0000\u8EA2\uC0DD\u8EA2\uC0DA\u8EA2\uC0E0" + // 18090 - 18094
-                "\u8EA2\uC0D6\u8EA2\uC0DE\u0000\uE2C3\u0000\uE2C6\u8EA2\uC0DB" + // 18095 - 18099
-                "\u0000\uE2C1\u0000\u0000\u0000\uE6F9\u8EA2\uC7EE\u0000\uE6F8" + // 18100 - 18104
-                "\u8EA2\uC7F5\u8EA2\uC7F4\u0000\uE7A1\u0000\u0000\u0000\uE7A2" + // 18105 - 18109
-                "\u8EA2\uC7F6\u0000\uE6FA\u8EA2\uC7F3\u0000\uE6FE\u8EA2\uC7F8" + // 18110 - 18114
-                "\u8EA2\uC7EF\u0000\u0000\u8EA2\uC7F1\u0000\uE6FB\u8EA2\uC7ED" + // 18115 - 18119
-                "\u8EA2\uC7F0\u8EA2\uC7F7\u0000\uE6FC\u8EA2\uC7F9\u0000\u0000" + // 18120 - 18124
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE6FD" + // 18125 - 18129
-                "\u0000\u0000\u0000\uEBB9\u8EA2\uCEC3\u8EA2\uCEC9\u8EA2\uCEC1" + // 18130 - 18134
-                "\u8EA2\uB1AA\u8EA2\uB1A7\u0000\uD6F0\u0000\u0000\u8EA2\uB1A9" + // 18135 - 18139
-                "\u0000\uD6E9\u0000\u0000\u0000\uD6EA\u0000\u0000\u0000\u0000" + // 18140 - 18144
-                "\u0000\uDCB1\u8EA2\uB7C4\u8EA2\uB7C5\u0000\uDCB2\u8EA2\uB7C1" + // 18145 - 18149
-                "\u8EA2\uB7C3\u8EA2\uB7C7\u8EA2\uB7C6\u8EA2\uB7C2\u0000\u0000" + // 18150 - 18154
-                "\u0000\uDCAE\u0000\uDCAF\u0000\u0000\u8EA2\uBEBA\u0000\uE0F1" + // 18155 - 18159
-                "\u0000\uE0F0\u8EA2\uBEB4\u0000\uE0EE\u0000\u0000\u8EA2\uBEB7" + // 18160 - 18164
-                "\u0000\uE0F2\u8EA2\uBEB8\u0000\uE0F3\u8EA2\uBEB5\u0000\uE0ED" + // 18165 - 18169
-                "\u0000\uE0EF\u8EA2\uBEB9\u0000\u0000\u8EA2\uBEB6\u8EA2\uBEB3" + // 18170 - 18174
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18175 - 18179
-                "\u8EA2\uC5B8\u0000\u0000\u8EA2\uC5AD\u0000\uE5B8\u0000\uE5BB" + // 18180 - 18184
-                "\u0000\uE5BA\u0000\uE5BF\u0000\uE5BE\u8EA2\uC5B9\u8EA2\uC5B7" + // 18185 - 18189
-                "\u8EA2\uC5B0\u8EA2\uC5B4\u8EA2\uC5B3\u0000\uE5BC\u8EA2\uC5B6" + // 18190 - 18194
-                "\u8EA2\uC5B2\u8EA2\uC5BA\u8EA2\uC5B1\u0000\uE5BD\u8EA2\uD8D6" + // 18195 - 18199
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDDDF\u0000\u0000" + // 18200 - 18204
-                "\u0000\uF8D1\u0000\uF8D0\u0000\u0000\u0000\u0000\u0000\uFBE8" + // 18205 - 18209
-                "\u0000\uC6F4\u8EA2\uA8B5\u0000\u0000\u0000\u0000\u0000\uDCAD" + // 18210 - 18214
-                "\u8EA2\uCCA1\u0000\uE9EA\u0000\uA8A9\u0000\u0000\u8EA2\uA4EF" + // 18215 - 18219
-                "\u8EA2\uA4F0\u0000\u0000\u0000\u0000\u8EA2\uA8B6\u0000\uCEF9" + // 18220 - 18224
-                "\u0000\uCEFA\u0000\u0000\u0000\u0000\u0000\uCEF8\u0000\u0000" + // 18225 - 18229
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD2D2\u0000\uD2D3" + // 18230 - 18234
-                "\u0000\uD2D0\u0000\uD2D1\u0000\u0000\u8EA2\uACBE\u0000\u0000" + // 18235 - 18239
-                "\u0000\u0000\u8EA2\uACBF\u0000\uD2CF\u0000\u0000\u0000\u0000" + // 18240 - 18244
-                "\u0000\u0000\u0000\u0000\u8EA2\uB1A6\u0000\u0000\u0000\uD6EB" + // 18245 - 18249
-                "\u0000\uD6EC\u0000\u0000\u0000\uDCB0\u8EA2\uB1AC\u0000\u0000" + // 18250 - 18254
-                "\u0000\uD6F1\u0000\uD6EF\u8EA2\uB1AD\u8EA2\uB1A8\u0000\uD6EE" + // 18255 - 18259
-                "\u0000\uD6ED\u0000\uD6E8\u8EA2\uB1AB\u8EA2\uA8B3\u0000\u0000" + // 18260 - 18264
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18265 - 18269
-                "\u8EA2\uACBC\u8EA2\uACBD\u0000\u0000\u0000\u0000\u0000\uD2CE" + // 18270 - 18274
-                "\u0000\uD2CC\u0000\u0000\u0000\uD2CD\u0000\uD2CB\u0000\u0000" + // 18275 - 18279
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD6E3\u0000\u0000" + // 18280 - 18284
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD6E7\u0000\uD6E6" + // 18285 - 18289
-                "\u8EA2\uB1A4\u0000\uD6E5\u0000\uD6E4\u0000\u0000\u8EA2\uB1A5" + // 18290 - 18294
-                "\u0000\u0000\u0000\u0000\u0000\uDCAB\u8EA2\uB7C0\u8EA2\uB7BF" + // 18295 - 18299
-                "\u0000\uDCA9\u0000\uDCAA\u0000\u0000\u0000\u0000\u0000\u0000" + // 18300 - 18304
-                "\u0000\uE0EC\u0000\uE0EB\u8EA2\uBEB2\u0000\u0000\u0000\u0000" + // 18305 - 18309
-                "\u8EA2\uBEB1\u0000\uDCAC\u0000\u0000\u0000\u0000\u0000\u0000" + // 18310 - 18314
-                "\u0000\u0000\u0000\u0000\u0000\uE5B5\u8EA2\uC5AB\u0000\uE5B6" + // 18315 - 18319
-                "\u8EA2\uC5AA\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCBFE" + // 18320 - 18324
-                "\u8EA2\uD2B6\u0000\uEDEB\u8EA2\uCBFB\u0000\u0000\u8EA2\uCBFC" + // 18325 - 18329
-                "\u8EA2\uCBFD\u0000\uE9E9\u0000\u0000\u0000\u0000\u8EA2\uD2B5" + // 18330 - 18334
-                "\u8EA2\uD2B4\u0000\u0000\u0000\u0000\u8EA2\uD8D5\u0000\uF1C8" + // 18335 - 18339
-                "\u0000\uF1C9\u0000\u0000\u8EA2\uDDDE\u8EA2\uDDDB\u8EA2\uDDDC" + // 18340 - 18344
-                "\u8EA2\uDDDD\u8EA2\uE2B6\u8EA2\uE2B5\u0000\uF6E8\u8EA2\uE6A3" + // 18345 - 18349
-                "\u8EA2\uEBEC\u0000\uC6EC\u0000\u0000\u0000\uD2C9\u0000\u0000" + // 18350 - 18354
-                "\u0000\uDCA7\u8EA2\uC5A9\u0000\u0000\u0000\uC6ED\u0000\u0000" + // 18355 - 18359
-                "\u8EA2\uB1A3\u0000\uDCA8\u0000\u0000\u0000\u0000\u0000\uE0E9" + // 18360 - 18364
-                "\u0000\uE0EA\u0000\u0000\u0000\uC6EE\u0000\uC6EF\u8EA2\uA2E6" + // 18365 - 18369
-                "\u0000\uCBAD\u0000\uCBAC\u0000\uD2CA\u8EA2\uACBB\u8EA2\uBEB0" + // 18370 - 18374
-                "\u0000\uC6F0\u0000\uC6F1\u0000\uC6F2\u0000\uC6F3\u0000\u0000" + // 18375 - 18379
-                "\u0000\u0000\u0000\u0000\u0000\uCBAE\u0000\uCBAF\u8EA2\uA4EE" + // 18380 - 18384
-                "\u8EA2\uA4ED\u0000\u0000\u0000\u0000\u0000\uCEF7\u8EA2\uA8B4" + // 18385 - 18389
-                "\u8EA2\uA8B2\u8EA2\uE2AE\u8EA2\uE2B0\u8EA2\uE2B4\u8EA2\uE6A2" + // 18390 - 18394
-                "\u0000\u0000\u8EA2\uE5FE\u0000\u0000\u0000\u0000\u0000\u0000" + // 18395 - 18399
-                "\u0000\u0000\u0000\uF8CE\u8EA2\uE5FD\u0000\u0000\u0000\u0000" + // 18400 - 18404
-                "\u0000\u0000\u0000\uF9F9\u0000\u0000\u0000\u0000\u0000\u0000" + // 18405 - 18409
-                "\u0000\u0000\u0000\uFAF8\u8EA2\uEDDF\u0000\uFAF7\u8EA2\uEDE1" + // 18410 - 18414
-                "\u8EA2\uEDDE\u8EA2\uEDE0\u0000\uFCBC\u8EA2\uF0C0\u0000\uC6EA" + // 18415 - 18419
-                "\u8EA2\uA8B0\u8EA2\uB0FD\u8EA2\uB0FE\u0000\uDCA4\u8EA2\uC5A5" + // 18420 - 18424
-                "\u0000\uF1C7\u0000\uF8CF\u0000\uFBE7\u8EA2\uF0C1\u0000\uC6EB" + // 18425 - 18429
-                "\u0000\u0000\u8EA2\uA8B1\u0000\uA3A2\u0000\u0000\u0000\u0000" + // 18430 - 18434
-                "\u8EA2\uACB9\u0000\u0000\u8EA2\uACBA\u0000\u0000\u0000\u0000" + // 18435 - 18439
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB1A1\u8EA2\uB1A2" + // 18440 - 18444
-                "\u0000\uDCA5\u0000\uDCA6\u0000\u0000\u0000\u0000\u0000\u0000" + // 18445 - 18449
-                "\u8EA2\uBEAF\u0000\u0000\u8EA2\uC5A8\u8EA2\uC5A7\u8EA2\uC5A6" + // 18450 - 18454
-                "\u0000\uEDEA\u8EA2\uD2AE\u0000\u0000\u0000\uEDE8\u0000\u0000" + // 18455 - 18459
-                "\u8EA2\uD2B0\u8EA2\uD2AD\u8EA2\uD2AA\u8EA2\uD2B1\u8EA2\uD2AB" + // 18460 - 18464
-                "\u8EA2\uD2AC\u0000\uEDE7\u0000\u0000\u0000\u0000\u0000\u0000" + // 18465 - 18469
-                "\u0000\u0000\u8EA2\uDDD5\u0000\u0000\u8EA2\uD8D2\u0000\u0000" + // 18470 - 18474
-                "\u8EA2\uD8D1\u8EA2\uD8D3\u0000\u0000\u8EA2\uDDD2\u0000\uF1C4" + // 18475 - 18479
-                "\u0000\u0000\u8EA2\uD8CF\u0000\u0000\u0000\uF1C2\u0000\u0000" + // 18480 - 18484
-                "\u0000\uF1C6\u0000\uF1C5\u8EA2\uD8D0\u8EA2\uD8D4\u0000\u0000" + // 18485 - 18489
-                "\u0000\uF1C3\u0000\u0000\u8EA2\uDDD9\u0000\uF4C0\u0000\uF6E6" + // 18490 - 18494
-                "\u0000\uF4C1\u0000\uF4BE\u8EA2\uDDD6\u8EA2\uDDD4\u0000\u0000" + // 18495 - 18499
-                "\u8EA2\uDDD7\u0000\u0000\u8EA2\uDDDA\u0000\uF4BF\u8EA2\uDDD8" + // 18500 - 18504
-                "\u8EA2\uDDD3\u0000\u0000\u0000\u0000\u8EA2\uE2AF\u8EA2\uE2B2" + // 18505 - 18509
-                "\u8EA2\uE6A1\u8EA2\uE2AD\u0000\u0000\u8EA2\uE9BE\u8EA2\uE2B3" + // 18510 - 18514
-                "\u0000\u0000\u0000\uF8CD\u8EA2\uE2B1\u0000\uF6E7\u8EA2\uC4FB" + // 18515 - 18519
-                "\u0000\uE5B0\u8EA2\uC5A1\u0000\u0000\u8EA2\uC4F5\u0000\u0000" + // 18520 - 18524
-                "\u8EA2\uC5A2\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC4F6" + // 18525 - 18529
-                "\u8EA2\uC4F7\u0000\u0000\u8EA2\uC5A3\u8EA2\uC4FE\u8EA2\uC4FC" + // 18530 - 18534
-                "\u8EA2\uC4FD\u8EA2\uC4F9\u8EA2\uC4F8\u0000\u0000\u8EA2\uC5A4" + // 18535 - 18539
-                "\u0000\uE5AD\u0000\u0000\u8EA2\uC4FA\u0000\u0000\u0000\uE5B2" + // 18540 - 18544
-                "\u0000\uE5AC\u0000\uE5B3\u0000\uE5B4\u0000\u0000\u0000\uE5AF" + // 18545 - 18549
-                "\u0000\uE5AE\u0000\u0000\u0000\u0000\u8EA2\uCBF4\u0000\uE9E5" + // 18550 - 18554
-                "\u0000\uE9E4\u0000\u0000\u0000\u0000\u8EA2\uCBF9\u0000\u0000" + // 18555 - 18559
-                "\u0000\uEDE6\u0000\uE9E6\u0000\u0000\u0000\u0000\u0000\uE9E8" + // 18560 - 18564
-                "\u8EA2\uCBFA\u0000\uE5AB\u0000\uE9E7\u8EA2\uCBF6\u8EA2\uCBF8" + // 18565 - 18569
-                "\u8EA2\uCBF5\u0000\u0000\u8EA2\uCBF7\u0000\u0000\u0000\u0000" + // 18570 - 18574
-                "\u0000\u0000\u8EA2\uD2B3\u0000\u0000\u0000\u0000\u8EA2\uD2B2" + // 18575 - 18579
-                "\u8EA2\uD2AF\u0000\uEDE9\u8EA2\uD8CE\u8EA2\uB7B7\u8EA2\uB7B4" + // 18580 - 18584
-                "\u0000\u0000\u0000\uDBFE\u8EA2\uB7B3\u0000\uDBFC\u0000\uDCA1" + // 18585 - 18589
-                "\u8EA2\uB7B6\u8EA2\uB7BE\u0000\uD6DE\u0000\uDBFD\u8EA2\uB7BC" + // 18590 - 18594
-                "\u8EA2\uB7BB\u0000\uDCA3\u0000\u0000\u0000\u0000\u0000\u0000" + // 18595 - 18599
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18600 - 18604
-                "\u8EA2\uBEA4\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBEA5" + // 18605 - 18609
-                "\u0000\uE0E6\u0000\u0000\u8EA2\uBEAB\u0000\u0000\u0000\u0000" + // 18610 - 18614
-                "\u8EA2\uBEAD\u8EA2\uBEA6\u0000\uE0E0\u8EA2\uBEAA\u8EA2\uBEA9" + // 18615 - 18619
-                "\u0000\uE0E1\u0000\uE0E7\u0000\u0000\u0000\uE0E8\u8EA2\uBEAC" + // 18620 - 18624
-                "\u0000\uE0DE\u8EA2\uBEA3\u8EA2\uBEA1\u8EA2\uBEA7\u8EA2\uBDFE" + // 18625 - 18629
-                "\u0000\uE0E5\u8EA2\uBEA2\u8EA2\uBEA8\u8EA2\uBEAE\u0000\uE0DF" + // 18630 - 18634
-                "\u0000\uE0E4\u0000\uE0E2\u0000\uE0E3\u0000\u0000\u0000\u0000" + // 18635 - 18639
-                "\u0000\u0000\u0000\uE0DD\u0000\u0000\u0000\u0000\u0000\u0000" + // 18640 - 18644
-                "\u0000\u0000\u0000\uE5B1\u0000\uD2C7\u0000\u0000\u8EA2\uACAA" + // 18645 - 18649
-                "\u8EA2\uACB5\u0000\u0000\u8EA2\uACAC\u8EA2\uACB6\u8EA2\uACB3" + // 18650 - 18654
-                "\u8EA2\uACAB\u0000\u0000\u0000\uD2C3\u8EA2\uACB8\u8EA2\uACA9" + // 18655 - 18659
-                "\u0000\uD2C6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18660 - 18664
-                "\u8EA2\uB0F5\u8EA2\uB0EC\u8EA2\uB0F7\u0000\u0000\u8EA2\uB0EF" + // 18665 - 18669
-                "\u8EA2\uB0FA\u8EA2\uB0FB\u8EA2\uB0ED\u8EA2\uB0F9\u8EA2\uB0F6" + // 18670 - 18674
-                "\u8EA2\uB0F4\u8EA2\uB0F8\u0000\uD6E2\u0000\u0000\u0000\uD6E0" + // 18675 - 18679
-                "\u0000\u0000\u0000\u0000\u8EA2\uB0F2\u0000\u0000\u8EA2\uB0EE" + // 18680 - 18684
-                "\u0000\u0000\u8EA2\uB0F1\u8EA2\uB0FC\u8EA2\uB0F3\u0000\uD6E1" + // 18685 - 18689
-                "\u8EA2\uACB1\u0000\u0000\u0000\uD6DD\u0000\uD6DF\u0000\u0000" + // 18690 - 18694
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB7BD" + // 18695 - 18699
-                "\u8EA2\uB7B2\u8EA2\uB7B0\u0000\u0000\u8EA2\uB7B1\u0000\u0000" + // 18700 - 18704
-                "\u8EA2\uB7B8\u0000\u0000\u8EA2\uB7B9\u8EA2\uB7B5\u0000\uDCA2" + // 18705 - 18709
-                "\u8EA2\uB7BA\u0000\uFBE6\u8EA2\uEFB7\u8EA2\uEFB6\u8EA2\uEFB8" + // 18710 - 18714
-                "\u0000\uC6E8\u8EA2\uACA8\u0000\uD6DC\u0000\uDBFB\u8EA2\uB7AF" + // 18715 - 18719
-                "\u0000\uC6E9\u8EA2\uA1E6\u0000\uC5DE\u0000\u0000\u0000\u0000" + // 18720 - 18724
-                "\u8EA2\uA2E5\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA4EC" + // 18725 - 18729
-                "\u8EA2\uA4EA\u8EA2\uA4EB\u8EA2\uA4E8\u0000\uCBAB\u8EA2\uA4E9" + // 18730 - 18734
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18735 - 18739
-                "\u8EA2\uA8AF\u0000\u0000\u0000\uCEF4\u8EA2\uA8AD\u8EA2\uA8A9" + // 18740 - 18744
-                "\u8EA2\uA8AC\u0000\u0000\u8EA2\uA8A8\u0000\uCEF6\u8EA2\uA8AB" + // 18745 - 18749
-                "\u0000\u0000\u0000\uCEF3\u0000\uCEF2\u0000\u0000\u0000\uCEF5" + // 18750 - 18754
-                "\u8EA2\uA8AE\u8EA2\uA8AA\u0000\u0000\u0000\u0000\u0000\u0000" + // 18755 - 18759
-                "\u0000\u0000\u0000\uD2C5\u0000\uD2C8\u8EA2\uACB0\u8EA2\uACAF" + // 18760 - 18764
-                "\u8EA2\uACAE\u0000\uD2C2\u8EA2\uACB7\u8EA2\uACAD\u0000\u0000" + // 18765 - 18769
-                "\u0000\uD2C4\u8EA2\uB0F0\u0000\u0000\u8EA2\uACB4\u8EA2\uACB2" + // 18770 - 18774
-                "\u8EA2\uC4F2\u0000\u0000\u8EA2\uC4EF\u8EA2\uCBF0\u0000\uE9E2" + // 18775 - 18779
-                "\u0000\uE5A8\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC4F4" + // 18780 - 18784
-                "\u8EA2\uC4F3\u0000\u0000\u8EA2\uCBF3\u8EA2\uCBF1\u0000\uEDE4" + // 18785 - 18789
-                "\u0000\u0000\u0000\uE9E3\u8EA2\uCBF2\u8EA2\uD1FE\u0000\u0000" + // 18790 - 18794
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEDE5\u8EA2\uD1FD" + // 18795 - 18799
-                "\u8EA2\uD2A8\u8EA2\uD2A7\u8EA2\uD2A5\u0000\u0000\u8EA2\uD2A4" + // 18800 - 18804
-                "\u8EA2\uD2A1\u8EA2\uD2A2\u8EA2\uD2A3\u8EA2\uD2A6\u8EA2\uD2A9" + // 18805 - 18809
-                "\u0000\u0000\u0000\u0000\u8EA2\uD8CB\u8EA2\uD8C8\u8EA2\uD8C9" + // 18810 - 18814
-                "\u0000\uF1C1\u8EA2\uD8C7\u8EA2\uD8CD\u8EA2\uD8CC\u8EA2\uD8CA" + // 18815 - 18819
-                "\u0000\u0000\u8EA2\uDDD0\u8EA2\uDDD1\u0000\uF4BC\u0000\u0000" + // 18820 - 18824
-                "\u0000\uF4BD\u8EA2\uDDCF\u0000\u0000\u0000\uF6E5\u8EA2\uE2AC" + // 18825 - 18829
-                "\u0000\uF6E4\u0000\uF8CB\u0000\u0000\u0000\uF8CC\u0000\uF9F8" + // 18830 - 18834
-                "\u8EA2\uE9BD\u8EA2\uE9BC\u8EA2\uEBEB\u8EA2\uEDDD\u8EA2\uB0E4" + // 18835 - 18839
-                "\u8EA2\uB0EB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18840 - 18844
-                "\u0000\u0000\u8EA2\uB7A7\u8EA2\uB7AB\u0000\u0000\u8EA2\uB7AA" + // 18845 - 18849
-                "\u8EA2\uBDF2\u8EA2\uBDFD\u0000\u0000\u0000\u0000\u8EA2\uB7AD" + // 18850 - 18854
-                "\u0000\u0000\u8EA2\uB7A8\u8EA2\uBDF1\u0000\uDBF9\u0000\u0000" + // 18855 - 18859
-                "\u0000\u0000\u0000\uDBF8\u8EA2\uB7A6\u8EA2\uB7A9\u0000\uDBFA" + // 18860 - 18864
-                "\u0000\u0000\u0000\uDBF7\u0000\uDBF6\u8EA2\uB7A5\u8EA2\uB7AE" + // 18865 - 18869
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBDF4\u8EA2\uBDFB" + // 18870 - 18874
-                "\u0000\u0000\u0000\uE0DA\u8EA2\uBDFA\u8EA2\uBDF7\u0000\u0000" + // 18875 - 18879
-                "\u0000\uE0DC\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBDF9" + // 18880 - 18884
-                "\u0000\u0000\u0000\u0000\u8EA2\uBDF3\u8EA2\uBDF5\u8EA2\uBDF8" + // 18885 - 18889
-                "\u8EA2\uBDF6\u0000\uE0DB\u8EA2\uBDFC\u0000\uE0D9\u0000\uE5A7" + // 18890 - 18894
-                "\u0000\u0000\u0000\u0000\u8EA2\uC4F1\u8EA2\uC4F0\u8EA2\uC4EE" + // 18895 - 18899
-                "\u0000\u0000\u0000\uE5AA\u0000\uE5A9\u0000\uCEED\u8EA2\uA4E5" + // 18900 - 18904
-                "\u0000\uCBAA\u8EA2\uA4E3\u0000\uCBA9\u8EA2\uA4E7\u8EA2\uA4E4" + // 18905 - 18909
-                "\u0000\u0000\u0000\u0000\u8EA2\uA8A1\u8EA2\uABFE\u8EA2\uA7FD" + // 18910 - 18914
-                "\u8EA2\uA8A6\u0000\u0000\u0000\uCEEE\u0000\u0000\u0000\uCEF1" + // 18915 - 18919
-                "\u8EA2\uA8A7\u8EA2\uA8A3\u0000\u0000\u8EA2\uA8A4\u0000\u0000" + // 18920 - 18924
-                "\u8EA2\uA7FC\u0000\uCEF0\u8EA2\uA7FE\u0000\uCEEF\u8EA2\uA8A5" + // 18925 - 18929
-                "\u0000\u0000\u8EA2\uA8A2\u0000\u0000\u0000\u0000\u8EA2\uACA4" + // 18930 - 18934
-                "\u0000\uD2C0\u0000\uD2C1\u0000\u0000\u8EA2\uACA7\u8EA2\uACA1" + // 18935 - 18939
-                "\u0000\u0000\u8EA2\uACA6\u0000\u0000\u8EA2\uACA2\u0000\uD2BF" + // 18940 - 18944
-                "\u8EA2\uACA5\u8EA2\uACA3\u0000\u0000\u0000\u0000\u0000\u0000" + // 18945 - 18949
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB0E9" + // 18950 - 18954
-                "\u8EA2\uB0E6\u0000\u0000\u8EA2\uB0E8\u0000\uD6DB\u0000\uD6DA" + // 18955 - 18959
-                "\u0000\uD6D8\u8EA2\uB0E5\u8EA2\uB0EA\u0000\uD6D7\u0000\uD6D9" + // 18960 - 18964
-                "\u8EA2\uB0E7\u8EA2\uB7AC\u0000\uE0D8\u0000\uDBF5\u0000\u0000" + // 18965 - 18969
-                "\u0000\u0000\u0000\uE0D7\u8EA2\uBDEF\u8EA2\uBDEE\u0000\u0000" + // 18970 - 18974
-                "\u8EA2\uBDEC\u8EA2\uBDED\u0000\u0000\u8EA2\uBDF0\u8EA2\uC4EA" + // 18975 - 18979
-                "\u8EA2\uC4E9\u8EA2\uC4ED\u0000\u0000\u8EA2\uC4EC\u8EA2\uC4EB" + // 18980 - 18984
-                "\u0000\uE9E0\u8EA2\uCBEF\u0000\u0000\u8EA2\uCBEE\u0000\uE9E1" + // 18985 - 18989
-                "\u8EA2\uCBED\u8EA2\uD1FB\u0000\u0000\u8EA2\uD1FC\u0000\uEDE3" + // 18990 - 18994
-                "\u0000\u0000\u8EA2\uD8C5\u8EA2\uD8C6\u0000\u0000\u0000\u0000" + // 18995 - 18999
-                "\u8EA2\uE5FC\u0000\uF8CA\u8EA2\uE5FB\u8EA2\uE5FA\u8EA2\uE5F8" + // 19000 - 19004
-                "\u8EA2\uE5F9\u0000\uFAF6\u8EA2\uE9BB\u8EA2\uEDDC\u8EA2\uF1A7" + // 19005 - 19009
-                "\u0000\u0000\u0000\uC5DD\u0000\u0000\u8EA2\uA1E4\u0000\uC6E7" + // 19010 - 19014
-                "\u8EA2\uA1E5\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA2E3" + // 19015 - 19019
-                "\u8EA2\uA2E4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19020 - 19024
-                "\u8EA2\uA4E6\u0000\u0000\u0000\u0000\u8EA2\uA4E2\u0000\u0000" + // 19025 - 19029
-                "\u8EA2\uA4E1\u8EA2\uD8B8\u8EA2\uD8B9\u8EA2\uD8B4\u0000\uF1BF" + // 19030 - 19034
-                "\u0000\uF1C0\u8EA2\uD8B3\u8EA2\uD8C2\u8EA2\uD8BD\u0000\uF1B9" + // 19035 - 19039
-                "\u0000\uF1B6\u8EA2\uD8BC\u8EA2\uD8BA\u0000\u0000\u0000\u0000" + // 19040 - 19044
-                "\u0000\uF1BC\u8EA2\uD8BE\u0000\uF1B7\u0000\u0000\u0000\uF1B8" + // 19045 - 19049
-                "\u0000\u0000\u8EA2\uD8BB\u0000\uF1BA\u8EA2\uD8B7\u0000\u0000" + // 19050 - 19054
-                "\u8EA2\uD8C0\u0000\uF1BD\u8EA2\uD8C3\u8EA2\uD8C4\u0000\uF1BE" + // 19055 - 19059
-                "\u0000\u0000\u0000\u0000\u0000\uF4B2\u0000\uF4B9\u8EA2\uDDC8" + // 19060 - 19064
-                "\u8EA2\uDDCE\u0000\u0000\u8EA2\uDDCC\u0000\uF4B5\u0000\uF4B4" + // 19065 - 19069
-                "\u0000\uF4B1\u8EA2\uDDCA\u0000\u0000\u0000\u0000\u0000\u0000" + // 19070 - 19074
-                "\u0000\uF4B7\u0000\uF4B6\u0000\uF4B3\u0000\u0000\u8EA2\uDDCD" + // 19075 - 19079
-                "\u8EA2\uDDC9\u8EA2\uDDCB\u0000\u0000\u0000\uF4B8\u0000\u0000" + // 19080 - 19084
-                "\u0000\u0000\u0000\u0000\u0000\uF6E3\u8EA2\uE2A9\u0000\u0000" + // 19085 - 19089
-                "\u0000\uF6E0\u0000\uF6E1\u8EA2\uE2AB\u0000\uF6E2\u8EA2\uE2A8" + // 19090 - 19094
-                "\u8EA2\uCBE3\u8EA2\uCBE9\u8EA2\uCBE5\u0000\u0000\u0000\uE9DD" + // 19095 - 19099
-                "\u8EA2\uCBE4\u8EA2\uCBE8\u8EA2\uCBE0\u0000\u0000\u8EA2\uCBE2" + // 19100 - 19104
-                "\u0000\uE9DC\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19105 - 19109
-                "\u8EA2\uCBE6\u8EA2\uCBE1\u0000\u0000\u0000\uE9DE\u0000\u0000" + // 19110 - 19114
-                "\u0000\uE9D9\u0000\u0000\u0000\u0000\u8EA2\uCBEA\u0000\u0000" + // 19115 - 19119
-                "\u0000\uE9DA\u8EA2\uD1EF\u8EA2\uD1EC\u8EA2\uD1F8\u8EA2\uD1F2" + // 19120 - 19124
-                "\u8EA2\uD1F4\u0000\uEDDE\u8EA2\uD1EE\u8EA2\uD1F6\u0000\u0000" + // 19125 - 19129
-                "\u0000\u0000\u8EA2\uD1F5\u8EA2\uD1F3\u0000\u0000\u8EA2\uD1F9" + // 19130 - 19134
-                "\u0000\uEDE1\u8EA2\uD1F0\u8EA2\uD1F7\u0000\u0000\u0000\uEDDF" + // 19135 - 19139
-                "\u0000\u0000\u0000\u0000\u8EA2\uD1EB\u8EA2\uD1ED\u0000\uEDE0" + // 19140 - 19144
-                "\u8EA2\uD1EA\u8EA2\uD1FA\u0000\u0000\u8EA2\uD1F1\u0000\u0000" + // 19145 - 19149
-                "\u0000\u0000\u8EA2\uD8B6\u0000\uF1BB\u0000\u0000\u0000\u0000" + // 19150 - 19154
-                "\u8EA2\uD8C1\u8EA2\uD8BF\u0000\uF1B5\u8EA2\uD8B5\u8EA2\uB6F9" + // 19155 - 19159
-                "\u0000\u0000\u8EA2\uB6FD\u0000\u0000\u8EA2\uB6F2\u0000\u0000" + // 19160 - 19164
-                "\u8EA2\uB6F7\u0000\u0000\u0000\u0000\u0000\uDBEF\u0000\uDBF0" + // 19165 - 19169
-                "\u8EA2\uB6FC\u8EA2\uB6F0\u8EA2\uB6EC\u8EA2\uB6FE\u0000\u0000" + // 19170 - 19174
-                "\u8EA2\uB6F4\u0000\u0000\u0000\u0000\u8EA2\uB6F8\u0000\u0000" + // 19175 - 19179
-                "\u0000\u0000\u0000\u0000\u8EA2\uB6EE\u0000\u0000\u0000\uE0CE" + // 19180 - 19184
-                "\u0000\uE0CF\u8EA2\uBDE9\u0000\uE0D5\u0000\u0000\u8EA2\uBDDD" + // 19185 - 19189
-                "\u8EA2\uBDE6\u8EA2\uBDDC\u0000\uE0D2\u8EA2\uBDE4\u8EA2\uBDE2" + // 19190 - 19194
-                "\u0000\u0000\u8EA2\uBDE3\u0000\uE0D0\u0000\u0000\u8EA2\uBDE7" + // 19195 - 19199
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19200 - 19204
-                "\u8EA2\uBDE0\u8EA2\uBDDE\u0000\uE0D1\u8EA2\uBDE1\u8EA2\uBDE5" + // 19205 - 19209
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE0D3\u0000\u0000" + // 19210 - 19214
-                "\u0000\u0000\u0000\u0000\u8EA2\uBDE8\u0000\u0000\u0000\u0000" + // 19215 - 19219
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBEC0\u8EA2\uBEC2" + // 19220 - 19224
-                "\u8EA2\uBEBE\u8EA2\uBEBF\u0000\u0000\u0000\u0000\u8EA2\uBEC3" + // 19225 - 19229
-                "\u8EA2\uBEC5\u8EA2\uBEC6\u8EA2\uBEC1\u8EA2\uBEC4\u0000\uE0FA" + // 19230 - 19234
-                "\u0000\u0000\u0000\u0000\u8EA2\uC5C1\u0000\u0000\u8EA2\uC5C6" + // 19235 - 19239
-                "\u8EA2\uC5BE\u8EA2\uC5C2\u0000\u0000\u0000\u0000\u8EA2\uC5C7" + // 19240 - 19244
-                "\u8EA2\uC5C3\u0000\uE5C2\u0000\uE5CA\u0000\u0000\u0000\uE5C5" + // 19245 - 19249
-                "\u8EA2\uC5BF\u8EA2\uC5C0\u0000\uE9F5\u0000\uE5CD\u0000\uE5C6" + // 19250 - 19254
-                "\u0000\u0000\u0000\uE5CB\u0000\uE5C4\u8EA2\uC5C5\u0000\uE5CC" + // 19255 - 19259
-                "\u8EA2\uC5C4\u0000\uE5C8\u0000\uE5C3\u0000\uE5C9\u8EA2\uC5C8" + // 19260 - 19264
-                "\u8EA2\uCCAE\u8EA2\uCCB0\u0000\u0000\u0000\u0000\u0000\u0000" + // 19265 - 19269
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19270 - 19274
-                "\u0000\u0000\u0000\uE5C7\u0000\u0000\u0000\u0000\u8EA2\uCCAB" + // 19275 - 19279
-                "\u0000\uE9F3\u8EA2\uCCB1\u0000\uE9F4\u8EA2\uE9B5\u8EA2\uE9B8" + // 19280 - 19284
-                "\u8EA2\uE9AF\u8EA2\uEBE1\u8EA2\uEBE2\u8EA2\uEBE6\u8EA2\uEBE7" + // 19285 - 19289
-                "\u0000\u0000\u8EA2\uEBE4\u8EA2\uEBE5\u8EA2\uEBE3\u0000\u0000" + // 19290 - 19294
-                "\u0000\uFAF4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19295 - 19299
-                "\u0000\uFBE4\u8EA2\uEDD9\u0000\u0000\u0000\u0000\u8EA2\uEDD6" + // 19300 - 19304
-                "\u8EA2\uEDD7\u8EA2\uEDD8\u0000\uFBE5\u0000\u0000\u8EA2\uEFB4" + // 19305 - 19309
-                "\u8EA2\uEFB3\u0000\u0000\u8EA2\uF0BD\u0000\uFCE0\u8EA2\uF0BB" + // 19310 - 19314
-                "\u8EA2\uF0BE\u8EA2\uF0BC\u8EA2\uF1A5\u0000\uFDA4\u0000\uFDB2" + // 19315 - 19319
-                "\u8EA2\uF1F1\u8EA2\uF1DB\u0000\u0000\u8EA2\uF1F0\u8EA2\uF2BE" + // 19320 - 19324
-                "\u8EA2\uF2BF\u0000\uC5D6\u0000\u0000\u0000\u0000\u0000\u0000" + // 19325 - 19329
-                "\u0000\u0000\u0000\uC8C8\u8EA2\uA2E1\u0000\u0000\u0000\u0000" + // 19330 - 19334
-                "\u8EA2\uA4DE\u0000\u0000\u0000\uCBA2\u0000\u0000\u0000\uCBA5" + // 19335 - 19339
-                "\u0000\u0000\u8EA2\uA4DF\u0000\u0000\u0000\uCBA3\u0000\uCBA4" + // 19340 - 19344
-                "\u0000\u0000\u0000\u0000\u0000\uC7D4\u0000\u0000\u0000\uC7DA" + // 19345 - 19349
-                "\u0000\uC7D6\u0000\u0000\u0000\uC7DC\u8EA2\uA2A5\u0000\uC7D9" + // 19350 - 19354
-                "\u0000\uC7CF\u0000\uC7D2\u0000\uC7D5\u0000\uC7D1\u0000\uC7D8" + // 19355 - 19359
-                "\u0000\uC7DB\u0000\uC7D0\u0000\uC7D3\u0000\uC7D7\u0000\uC7DD" + // 19360 - 19364
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19365 - 19369
-                "\u8EA2\uA3C0\u8EA2\uA3BD\u0000\u0000\u0000\uC9C9\u8EA2\uA3BE" + // 19370 - 19374
-                "\u0000\uC9BD\u0000\uC9BF\u0000\uC9D7\u0000\uC9D2\u0000\u0000" + // 19375 - 19379
-                "\u0000\u0000\u0000\u0000\u8EA2\uA3C5\u8EA2\uA3BF\u0000\uC9C1" + // 19380 - 19384
-                "\u0000\uC9C3\u8EA2\uA3C4\u0000\uC9CA\u8EA2\uA3BA\u0000\uC9D6" + // 19385 - 19389
-                "\u0000\uC9D8\u0000\uC9BE\u0000\uC9CF\u0000\u0000\u8EA2\uA3B8" + // 19390 - 19394
-                "\u0000\uC9D5\u0000\u0000\u0000\uC9C6\u0000\u0000\u0000\uC9D0" + // 19395 - 19399
-                "\u0000\uC9D1\u8EA2\uA3B9\u0000\uC9CE\u0000\uC9CC\u0000\u0000" + // 19400 - 19404
-                "\u0000\uC9CD\u0000\uC9D3\u8EA2\uA3C1\u0000\uC9C0\u0000\u0000" + // 19405 - 19409
-                "\u0000\uF5D0\u8EA2\uE3D9\u8EA2\uE7B0\u0000\u0000\u8EA2\uEFD2" + // 19410 - 19414
-                "\u0000\uCBC8\u8EA2\uB3A2\u0000\uD8BF\u0000\uDDC7\u8EA2\uC7DA" + // 19415 - 19419
-                "\u8EA2\uC7D9\u0000\uEFA7\u8EA2\uD4CF\u0000\uEFA8\u8EA2\uDFDD" + // 19420 - 19424
-                "\u0000\uF7C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFDC3" + // 19425 - 19429
-                "\u0000\uCBC9\u8EA2\uA8EB\u8EA2\uB3A3\u0000\u0000\u0000\u0000" + // 19430 - 19434
-                "\u0000\uDDC8\u0000\u0000\u8EA2\uB9D2\u8EA2\uB9D3\u0000\u0000" + // 19435 - 19439
-                "\u8EA2\uC0CB\u0000\u0000\u0000\uE2AF\u0000\uE6ED\u0000\u0000" + // 19440 - 19444
-                "\u8EA2\uC7DC\u8EA2\uC7DB\u8EA2\uC7DD\u0000\u0000\u8EA2\uCEB9" + // 19445 - 19449
-                "\u8EA2\uCEBA\u0000\uEBB0\u0000\uF2C7\u0000\uEFA9\u0000\uF2C8" + // 19450 - 19454
-                "\u0000\u0000\u8EA2\uDFE1\u8EA2\uDFDE\u8EA2\uDFE0\u8EA2\uDFDF" + // 19455 - 19459
-                "\u0000\uF5D2\u0000\u0000\u8EA2\uE3DA\u8EA2\uE7B2\u8EA2\uE7B1" + // 19460 - 19464
-                "\u8EA2\uA5A4\u0000\uD8C1\u0000\uD8C0\u8EA2\uB3A4\u0000\u0000" + // 19465 - 19469
-                "\u8EA2\uB9D4\u0000\u0000\u0000\u0000\u8EA2\uAEDA\u0000\uD4E9" + // 19470 - 19474
-                "\u0000\uD4EC\u0000\u0000\u0000\u0000\u8EA2\uAED1\u8EA2\uAED7" + // 19475 - 19479
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD4EB\u8EA2\uAECC" + // 19480 - 19484
-                "\u0000\u0000\u0000\uD0D2\u8EA2\uB4BD\u8EA2\uAED8\u0000\u0000" + // 19485 - 19489
-                "\u8EA2\uAECF\u0000\u0000\u0000\uD4EA\u8EA2\uAECE\u0000\u0000" + // 19490 - 19494
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19495 - 19499
-                "\u8EA2\uB4B4\u0000\u0000\u0000\u0000\u0000\uD9D1\u0000\uD9D5" + // 19500 - 19504
-                "\u8EA2\uB4C4\u8EA2\uB4B2\u8EA2\uB4C0\u0000\uD9D6\u8EA2\uB4C2" + // 19505 - 19509
-                "\u0000\u0000\u8EA2\uB4C8\u0000\u0000\u8EA2\uB4CC\u0000\u0000" + // 19510 - 19514
-                "\u0000\u0000\u8EA2\uB4C3\u8EA2\uB4B7\u8EA2\uB4BF\u0000\u0000" + // 19515 - 19519
-                "\u8EA2\uB4CD\u8EA2\uB4CB\u8EA2\uB4C1\u8EA2\uB4BC\u8EA2\uB4B5" + // 19520 - 19524
-                "\u8EA2\uBAE8\u8EA2\uB4B3\u0000\uD9DA\u8EA2\uB4BA\u0000\uD9DB" + // 19525 - 19529
-                "\u0000\uD9D7\u8EA2\uB4B0\u8EA2\uB4C6\u8EA2\uB4B8\u0000\u0000" + // 19530 - 19534
-                "\u0000\u0000\u0000\u0001\u0000\u0002\u0000\u0003\u0000\u0004" + // 19535 - 19539
-                "\u0000\u0005\u0000\u0006\u0000\u0007\u0000\u0008\u0000\u0009" + // 19540 - 19544
-                "\u0000\n\u0000\u000B\u0000\u000C\u0000\r\u0000\u000E" + // 19545 - 19549
-                "\u0000\u000F\u0000\u0010\u0000\u0011\u0000\u0012\u0000\u0013" + // 19550 - 19554
-                "\u0000\u0014\u0000\u0015\u0000\u0016\u0000\u0017\u0000\u0018" + // 19555 - 19559
-                "\u0000\u0019\u0000\u001A\u0000\u001B\u0000\u001C\u0000\u001D" + // 19560 - 19564
-                "\u0000\u001E\u0000\u001F\u0000\u0020\u0000\u0021\u0000\"" + // 19565 - 19569
-                "\u0000\u0023\u0000\u0024\u0000\u0025\u0000\u0026\u0000\u0027" + // 19570 - 19574
-                "\u0000\u0028\u0000\u0029\u0000\u002A\u0000\u002B\u0000\u002C" + // 19575 - 19579
-                "\u0000\u002D\u0000\u002E\u0000\u002F\u0000\u0030\u0000\u0031" + // 19580 - 19584
-                "\u0000\u0032\u0000\u0033\u0000\u0034\u0000\u0035\u0000\u0036" + // 19585 - 19589
-                "\u0000\u0037\u0000\u0038\u0000\u0039\u0000\u003A\u0000\u003B" + // 19590 - 19594
-                "\u0000\u003C\u0000\u003D\u0000\u003E\u0000\u003F\u8EA2\uE2A1" + // 19595 - 19599
-                "\u8EA2\uE1FA\u0000\u0000\u0000\u0000\u8EA2\uD8A3\u8EA2\uE1FB" + // 19600 - 19604
-                "\u0000\uF6DC\u8EA2\uE1F7\u0000\u0000\u0000\uF6D9\u8EA2\uE2A6" + // 19605 - 19609
-                "\u0000\uF6DA\u8EA2\uE1F8\u8EA2\uE1F9\u8EA2\uE1FD\u0000\uF6DF" + // 19610 - 19614
-                "\u0000\u0000\u0000\uF6DE\u0000\u0000\u0000\u0000\u8EA2\uE1FC" + // 19615 - 19619
-                "\u0000\uF8C5\u8EA2\uE5EA\u8EA2\uE5F0\u0000\uF8C6\u8EA2\uE5E7" + // 19620 - 19624
-                "\u0000\uF8C3\u0000\uF8C0\u8EA2\uE5F2\u0000\uF8C4\u0000\u0000" + // 19625 - 19629
-                "\u0000\uF8C1\u8EA2\uE5E9\u8EA2\uE5EC\u8EA2\uE5ED\u8EA2\uE5EE" + // 19630 - 19634
-                "\u8EA2\uE5F1\u0000\u0000\u8EA2\uE2A3\u8EA2\uE5E8\u0000\uF8C2" + // 19635 - 19639
-                "\u8EA2\uE5EF\u8EA2\uE9B4\u8EA2\uE5EB\u0000\u0000\u0000\u0000" + // 19640 - 19644
-                "\u0000\u0000\u8EA2\uE9AB\u0000\uF9F5\u8EA2\uE9AE\u0000\uF9F6" + // 19645 - 19649
-                "\u8EA2\uE9B7\u8EA2\uE9AD\u8EA2\uE9AA\u0000\u0000\u8EA2\uE9AC" + // 19650 - 19654
-                "\u8EA2\uE9B0\u8EA2\uE9B3\u8EA2\uE9B2\u8EA2\uE9B6\u8EA2\uE9A9" + // 19655 - 19659
-                "\u0000\u0000\u0000\uF9F4\u8EA2\uE9B1\u0000\uF1AF\u0000\uF1AC" + // 19660 - 19664
-                "\u0000\uF1A7\u0000\uF1AA\u8EA2\uD7FC\u0000\u0000\u8EA2\uD1C6" + // 19665 - 19669
-                "\u8EA2\uD7F7\u8EA2\uD7FA\u8EA2\uD8AD\u8EA2\uD8A1\u8EA2\uD7F5" + // 19670 - 19674
-                "\u8EA2\uDDBA\u8EA2\uD8AF\u8EA2\uD7F9\u8EA2\uD8A9\u0000\u0000" + // 19675 - 19679
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDDBD\u0000\uF4AE" + // 19680 - 19684
-                "\u0000\u0000\u0000\u0000\u0000\uF4A2\u0000\u0000\u0000\u0000" + // 19685 - 19689
-                "\u0000\uF4A6\u8EA2\uDDBF\u8EA2\uDDC5\u8EA2\uDDC3\u0000\uF4A4" + // 19690 - 19694
-                "\u0000\uF4A5\u0000\uF4AC\u8EA2\uDDC6\u8EA2\uDDBE\u0000\uF4A7" + // 19695 - 19699
-                "\u0000\u0000\u8EA2\uDDC2\u8EA2\uDDC1\u8EA2\uDDC7\u0000\uF4AD" + // 19700 - 19704
-                "\u0000\u0000\u0000\uF4A8\u0000\uF4AB\u8EA2\uDDC0\u0000\uF4AF" + // 19705 - 19709
-                "\u0000\uF4A9\u0000\uF4B0\u0000\uF4A3\u8EA2\uDDC4\u0000\u0000" + // 19710 - 19714
-                "\u8EA2\uDDBC\u0000\u0000\u0000\u0000\u8EA2\uE2A5\u0000\u0000" + // 19715 - 19719
-                "\u0000\u0000\u0000\uF6DD\u8EA2\uE2A2\u8EA2\uE2A4\u0000\u0000" + // 19720 - 19724
-                "\u0000\uF6DB\u8EA2\uE1FE\u0000\uF4AA\u0000\u0000\u8EA2\uD1D2" + // 19725 - 19729
-                "\u0000\u0000\u0000\uEDCB\u8EA2\uD1CD\u0000\uEDCF\u8EA2\uD1C5" + // 19730 - 19734
-                "\u0000\uE9D2\u8EA2\uD1C9\u0000\u0000\u8EA2\uD1E2\u8EA2\uD1CA" + // 19735 - 19739
-                "\u8EA2\uD1C8\u0000\uEDD4\u0000\u0000\u8EA2\uD1E0\u0000\u0000" + // 19740 - 19744
-                "\u8EA2\uD1C7\u8EA2\uD1D9\u8EA2\uD1D8\u8EA2\uD1E5\u8EA2\uD1CF" + // 19745 - 19749
-                "\u0000\uEDD8\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19750 - 19754
-                "\u0000\u0000\u0000\u0000\u8EA2\uD7FE\u0000\u0000\u0000\uF1B3" + // 19755 - 19759
-                "\u0000\uF1A9\u8EA2\uD8AC\u8EA2\uD7F6\u0000\uF1AB\u8EA2\uD8A4" + // 19760 - 19764
-                "\u0000\uF1B2\u0000\uF1AD\u8EA2\uD8A2\u8EA2\uDDBB\u8EA2\uD8A8" + // 19765 - 19769
-                "\u8EA2\uD8AE\u8EA2\uD8A7\u8EA2\uD7F4\u8EA2\uD8A5\u8EA2\uD8B0" + // 19770 - 19774
-                "\u8EA2\uD8B2\u0000\uF1A8\u8EA2\uD8B1\u0000\uF1AE\u0000\uF1B4" + // 19775 - 19779
-                "\u0000\u0000\u0000\uF1B1\u0000\u0000\u8EA2\uD8AB\u0000\uF1B0" + // 19780 - 19784
-                "\u8EA2\uD8A6\u0000\u0000\u8EA2\uD7F8\u8EA2\uD7FD\u0000\u0000" + // 19785 - 19789
-                "\u8EA2\uD8AA\u8EA2\uCBCC\u8EA2\uD1C2\u0000\u0000\u8EA2\uCBD3" + // 19790 - 19794
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19795 - 19799
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19800 - 19804
-                "\u8EA2\uCBBE\u8EA2\uD1CC\u8EA2\uD1D6\u0000\uEDCC\u8EA2\uD1D5" + // 19805 - 19809
-                "\u8EA2\uD1E1\u0000\uEDCE\u8EA2\uD1D3\u0000\u0000\u8EA2\uD1D7" + // 19810 - 19814
-                "\u0000\uEDD9\u0000\u0000\u8EA2\uD1CE\u0000\uEDD1\u0000\u0000" + // 19815 - 19819
-                "\u8EA2\uD1DA\u8EA2\uD7FB\u0000\uEDDD\u0000\uEDDC\u8EA2\uD1DC" + // 19820 - 19824
-                "\u8EA2\uD1CB\u8EA2\uD1E6\u0000\uEDD7\u0000\u0000\u0000\uEDCD" + // 19825 - 19829
-                "\u8EA2\uD1DF\u0000\u0000\u8EA2\uD1E3\u8EA2\uD1E8\u8EA2\uD1DD" + // 19830 - 19834
-                "\u8EA2\uD1D1\u0000\uEDD0\u0000\uEDD3\u0000\uEDDB\u0000\uEDD6" + // 19835 - 19839
-                "\u0000\u0000\u8EA2\uD1D4\u8EA2\uCBC8\u0000\u0000\u0000\u0000" + // 19840 - 19844
-                "\u8EA2\uD1D0\u8EA2\uD1E7\u0000\uEDD2\u0000\u0000\u0000\uEDD5" + // 19845 - 19849
-                "\u8EA2\uD1E9\u0000\uEDCA\u8EA2\uD1DE\u8EA2\uD1C4\u8EA2\uD1E4" + // 19850 - 19854
-                "\u8EA2\uD1DB\u0000\uE9D5\u0000\uE9C6\u8EA2\uCBB7\u0000\u0000" + // 19855 - 19859
-                "\u8EA2\uCBD4\u0000\uE9CA\u8EA2\uCBD1\u8EA2\uCBDE\u8EA2\uCBBD" + // 19860 - 19864
-                "\u8EA2\uCBC6\u0000\u0000\u0000\u0000\u8EA2\uCBDC\u8EA2\uCBD2" + // 19865 - 19869
-                "\u0000\uE9C5\u0000\u0000\u0000\u0000\u8EA2\uCBC4\u0000\uE9BF" + // 19870 - 19874
-                "\u0000\uE9BD\u0000\uE9CF\u0000\u0000\u0000\u0000\u8EA2\uCBC2" + // 19875 - 19879
-                "\u8EA2\uCBBF\u8EA2\uCBC0\u0000\u0000\u8EA2\uCBD8\u0000\u0000" + // 19880 - 19884
-                "\u8EA2\uCBDD\u8EA2\uCBDB\u0000\uE9C3\u8EA2\uCBDF\u0000\uE9C7" + // 19885 - 19889
-                "\u0000\uE9CE\u0000\u0000\u8EA2\uCBB8\u8EA2\uD1C3\u8EA2\uCBC1" + // 19890 - 19894
-                "\u0000\u0000\u0000\uE9C1\u0000\uE9D3\u0000\uE9D0\u0000\uE9C4" + // 19895 - 19899
-                "\u8EA2\uCBCB\u8EA2\uCBBC\u0000\uE9D1\u8EA2\uCBCD\u0000\uE9CB" + // 19900 - 19904
-                "\u0000\uE9CD\u0000\uE9BC\u0000\u0000\u8EA2\uCBCF\u8EA2\uCBC7" + // 19905 - 19909
-                "\u8EA2\uCBBA\u0000\uE9CC\u8EA2\uCBD7\u8EA2\uCBDA\u8EA2\uCBC3" + // 19910 - 19914
-                "\u8EA2\uCBCE\u0000\u0000\u0000\uE9C2\u0000\uEDC9\u8EA2\uC4AD" + // 19915 - 19919
-                "\u8EA2\uC4B7\u0000\uE4E2\u8EA2\uC4C1\u0000\uE4EF\u0000\uE4E6" + // 19920 - 19924
-                "\u8EA2\uC4B4\u0000\uE4E5\u8EA2\uC4AB\u8EA2\uC4B9\u8EA2\uC4CD" + // 19925 - 19929
-                "\u0000\uE0C5\u0000\uE9D7\u8EA2\uC4BC\u8EA2\uCBB4\u8EA2\uC4BE" + // 19930 - 19934
-                "\u8EA2\uC4CC\u0000\uE4EC\u8EA2\uC4B5\u0000\uE4E0\u0000\uE4F0" + // 19935 - 19939
-                "\u0000\uEDDA\u8EA2\uC4AA\u0000\u0000\u8EA2\uC4C3\u0000\u0000" + // 19940 - 19944
-                "\u0000\u0000\u0000\u0000\u8EA2\uC4C2\u0000\u0000\u0000\u0000" + // 19945 - 19949
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19950 - 19954
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19955 - 19959
-                "\u0000\u0000\u0000\u0000\u8EA2\uCBD0\u0000\uE9D4\u8EA2\uCBC5" + // 19960 - 19964
-                "\u8EA2\uCBCA\u0000\uE9C9\u0000\u0000\u8EA2\uCBB6\u0000\uE9D6" + // 19965 - 19969
-                "\u0000\u0000\u0000\uE9C0\u8EA2\uCBB5\u8EA2\uCBD6\u0000\uE9D8" + // 19970 - 19974
-                "\u8EA2\uCBB9\u8EA2\uCBC9\u0000\u0000\u8EA2\uCBBB\u8EA2\uCBD9" + // 19975 - 19979
-                "\u8EA2\uCBD5\u0000\uE9BE\u0000\uE9C8\u8EA2\uBDBE\u8EA2\uBDB8" + // 19980 - 19984
-                "\u0000\u0000\u0000\uE0C2\u0000\uE0CA\u8EA2\uBDB4\u8EA2\uBDAD" + // 19985 - 19989
-                "\u8EA2\uBDAE\u0000\u0000\u8EA2\uBDB0\u0000\uE0B1\u8EA2\uBDBD" + // 19990 - 19994
-                "\u0000\u0000\u0000\uE0BF\u0000\uE0C8\u0000\u0000\u0000\u0000" + // 19995 - 19999
-                "\u8EA2\uBDBF\u8EA2\uBDD7\u8EA2\uBDCF\u0000\uE0AD\u8EA2\uBDD5" + // 20000 - 20004
-                "\u0000\uE0B9\u0000\u0000\u0000\uE0B7\u0000\u0000\u8EA2\uBDDB" + // 20005 - 20009
-                "\u0000\uE0B6\u8EA2\uBDC5\u8EA2\uBDB9\u8EA2\uBDC3\u0000\uE0CD" + // 20010 - 20014
-                "\u8EA2\uBDC9\u8EA2\uBDC6\u8EA2\uBDB5\u0000\uE0C9\u8EA2\uBDD3" + // 20015 - 20019
-                "\u8EA2\uBDD0\u8EA2\uBDD8\u0000\uE0B0\u8EA2\uBDC4\u0000\uE0CC" + // 20020 - 20024
-                "\u0000\u0000\u8EA2\uBDCB\u0000\u0000\u0000\u0000\u0000\uE0BA" + // 20025 - 20029
-                "\u0000\uE0BD\u0000\u0000\u8EA2\uBDCA\u0000\uE0CB\u8EA2\uBDBA" + // 20030 - 20034
-                "\u8EA2\uB6C8\u0000\u0000\u0000\u0000\u8EA2\uBDD4\u8EA2\uBDD2" + // 20035 - 20039
-                "\u8EA2\uBDD6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20040 - 20044
-                "\u0000\u0000\u0000\u0000\u8EA2\uB2E6\u8EA2\uB2E3\u8EA2\uB2E1" + // 20045 - 20049
-                "\u0000\u0000\u0000\u0000\u0000\uD8A6\u8EA2\uB2E4\u0000\uD8AB" + // 20050 - 20054
-                "\u8EA2\uB2DE\u8EA2\uB2ED\u0000\u0000\u8EA2\uB2EF\u8EA2\uB2DF" + // 20055 - 20059
-                "\u0000\u0000\u0000\uD8A8\u8EA2\uB2F0\u8EA2\uB2EB\u8EA2\uB2DD" + // 20060 - 20064
-                "\u8EA2\uB2E2\u8EA2\uB2EC\u8EA2\uB2E8\u8EA2\uB2E5\u0000\u0000" + // 20065 - 20069
-                "\u0000\uD8AD\u8EA2\uB2EE\u8EA2\uB2E0\u0000\u0000\u0000\u0000" + // 20070 - 20074
-                "\u8EA2\uB2E9\u8EA2\uB2DB\u0000\uD8AC\u0000\uD8A9\u8EA2\uB2E7" + // 20075 - 20079
-                "\u0000\u0000\u8EA2\uB2EA\u8EA2\uB2DC\u0000\uD8AA\u0000\uD8A7" + // 20080 - 20084
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDDB2" + // 20085 - 20089
-                "\u8EA2\uB9A8\u0000\uDDB1\u0000\u0000\u8EA2\uB9AB\u8EA2\uB9AE" + // 20090 - 20094
-                "\u0000\uDDAE\u0000\uDDAC\u8EA2\uB9A3\u8EA2\uB9AC\u8EA2\uB9AA" + // 20095 - 20099
-                "\u8EA2\uB9A7\u8EA2\uB9AF\u8EA2\uB9B0\u8EA2\uB9B2\u8EA2\uB9B3" + // 20100 - 20104
-                "\u8EA2\uB9A2\u8EA2\uB6CF\u0000\u0000\u0000\u0000\u8EA2\uBDC1" + // 20105 - 20109
-                "\u0000\u0000\u0000\uDBD2\u0000\u0000\u0000\u0000\u0000\u0000" + // 20110 - 20114
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20115 - 20119
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20120 - 20124
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20125 - 20129
-                "\u0000\u0000\u0000\uE0C7\u0000\uDBDF\u0000\uE0B5\u8EA2\uBDBB" + // 20130 - 20134
-                "\u0000\uE0C3\u0000\u0000\u8EA2\uBDAF\u0000\uE0B2\u0000\uE0AE" + // 20135 - 20139
-                "\u8EA2\uBDCD\u0000\uE0B4\u0000\uE0B8\u0000\uE0B3\u0000\uE0BC" + // 20140 - 20144
-                "\u8EA2\uBDD1\u8EA2\uBDC8\u0000\u0000\u0000\u0000\u8EA2\uBDB6" + // 20145 - 20149
-                "\u0000\uE0C1\u0000\uE0BB\u8EA2\uBDC2\u0000\uE0AB\u8EA2\uBDCE" + // 20150 - 20154
-                "\u8EA2\uBDC7\u0000\uE0AF\u8EA2\uBDBC\u0000\uE0BE\u8EA2\uBDD9" + // 20155 - 20159
-                "\u8EA2\uBDDA\u0000\u0000\u0000\uE0AC\u8EA2\uBDCC\u0000\uE0C0" + // 20160 - 20164
-                "\u8EA2\uBDC0\u8EA2\uBDB2\u8EA2\uBDB3\u0000\uE0C4\u8EA2\uBDB7" + // 20165 - 20169
-                "\u8EA2\uB6C4\u0000\u0000\u8EA2\uB6E0\u0000\u0000\u0000\uDBE9" + // 20170 - 20174
-                "\u0000\uDBDD\u0000\uDBE8\u0000\uDBD3\u8EA2\uB6D0\u8EA2\uB6E2" + // 20175 - 20179
-                "\u8EA2\uB6DA\u0000\uDBD4\u0000\uDBCE\u8EA2\uB6E8\u0000\u0000" + // 20180 - 20184
-                "\u8EA2\uB6E1\u8EA2\uB6E3\u0000\uDBD6\u0000\uDBDE\u8EA2\uB6E5" + // 20185 - 20189
-                "\u8EA2\uB6CE\u8EA2\uB6DF\u8EA2\uB6D3\u8EA2\uB6E7\u0000\uDBE3" + // 20190 - 20194
-                "\u0000\uDBCB\u0000\uDBE1\u8EA2\uB6D8\u8EA2\uB6D6\u8EA2\uB6D7" + // 20195 - 20199
-                "\u0000\uDBD8\u8EA2\uB6D2\u8EA2\uB6D1\u0000\uDBCD\u8EA2\uB6CB" + // 20200 - 20204
-                "\u8EA2\uB6E9\u0000\uDBCF\u8EA2\uB6D5\u0000\uDBED\u0000\u0000" + // 20205 - 20209
-                "\u0000\uDBE7\u8EA2\uB6CA\u0000\uDBE4\u0000\uDBE2\u0000\uDBEB" + // 20210 - 20214
-                "\u8EA2\uB6DC\u0000\uDBE6\u8EA2\uB0B5\u8EA2\uB6DD\u0000\uDBE5" + // 20215 - 20219
-                "\u8EA2\uB6E4\u0000\uDBCA\u8EA2\uB6D9\u0000\uDBDC\u8EA2\uB6CD" + // 20220 - 20224
-                "\u0000\uDBDB\u0000\u0000\u0000\uDBD9\u0000\uDBD1\u0000\uDBD0" + // 20225 - 20229
-                "\u8EA2\uBDAC\u8EA2\uB6E6\u0000\u0000\u0000\u0000\u0000\uCCB2" + // 20230 - 20234
-                "\u0000\u0000\u0000\uD0A7\u8EA2\uA9B2\u0000\u0000\u8EA2\uA5D3" + // 20235 - 20239
-                "\u0000\uD0AC\u0000\u0000\u8EA2\uA9B3\u0000\uD0A8\u0000\uD0AB" + // 20240 - 20244
-                "\u0000\uD0AA\u0000\uD0A9\u0000\uD0A6\u0000\u0000\u0000\u0000" + // 20245 - 20249
-                "\u0000\u0000\u8EA2\uAEAB\u0000\u0000\u0000\uD4CA\u8EA2\uAEAE" + // 20250 - 20254
-                "\u0000\uD4C8\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uAEAA" + // 20255 - 20259
-                "\u0000\uD4CB\u0000\uD4C9\u0000\uD4CC\u8EA2\uAEAC\u8EA2\uAEAD" + // 20260 - 20264
-                "\u0000\u0000\u8EA2\uAEA9\u8EA2\uAEAF\u0000\u0000\u0000\u0000" + // 20265 - 20269
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDEB7" + // 20270 - 20274
-                "\u0000\uD9AA\u8EA2\uB3EC\u8EA2\uB3EE\u8EA2\uB3ED\u8EA2\uB3EF" + // 20275 - 20279
-                "\u0000\uD9AB\u0000\u0000\u0000\u0000\u0000\uDEB4\u0000\u0000" + // 20280 - 20284
-                "\u0000\uDEB5\u0000\uDEB6\u0000\u0000\u0000\uE3B7\u8EA2\uC1EC" + // 20285 - 20289
-                "\u0000\u0000\u8EA2\uC1EB\u8EA2\uC1ED\u8EA2\uC1EE\u0000\uE3B8" + // 20290 - 20294
-                "\u0000\u0000\u0000\uE3B6\u8EA2\uB0C5\u0000\u0000\u8EA2\uB0BF" + // 20295 - 20299
-                "\u8EA2\uB0C8\u8EA2\uB0C6\u0000\uD6CC\u8EA2\uB0B7\u0000\uD6BD" + // 20300 - 20304
-                "\u0000\uD6BC\u0000\uD6C4\u0000\uD6CA\u8EA2\uB0C3\u0000\uD6C9" + // 20305 - 20309
-                "\u8EA2\uB0B4\u0000\uDBC8\u0000\u0000\u8EA2\uB0CC\u8EA2\uB0B3" + // 20310 - 20314
-                "\u8EA2\uB0AE\u0000\uD6C2\u0000\uD6CE\u0000\uD6BB\u0000\u0000" + // 20315 - 20319
-                "\u8EA2\uB0BB\u8EA2\uB0C0\u0000\u0000\u0000\u0000\u0000\u0000" + // 20320 - 20324
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20325 - 20329
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20330 - 20334
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDBEA" + // 20335 - 20339
-                "\u8EA2\uB6C5\u8EA2\uB6C9\u0000\u0000\u0000\uDBD7\u0000\uDBD5" + // 20340 - 20344
-                "\u0000\u0000\u0000\u0000\u0000\uDBCC\u8EA2\uB6C7\u8EA2\uB6C6" + // 20345 - 20349
-                "\u0000\uDBE0\u0000\u0000\u8EA2\uB6CC\u0000\uDBDA\u0000\u0000" + // 20350 - 20354
-                "\u8EA2\uB6DE\u8EA2\uB6EA\u0000\uDBC9\u8EA2\uB6DB\u8EA2\uB6D4" + // 20355 - 20359
-                "\u0000\uDBEC\u8EA2\uABE6\u0000\uD1FC\u8EA2\uABE0\u0000\u0000" + // 20360 - 20364
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20365 - 20369
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20370 - 20374
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20375 - 20379
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20380 - 20384
-                "\u8EA2\uB0AF\u0000\uD6C1\u0000\uD6C6\u0000\u0000\u0000\u0000" + // 20385 - 20389
-                "\u0000\u0000\u8EA2\uB0B8\u8EA2\uB0BE\u8EA2\uB0BA\u8EA2\uB0AD" + // 20390 - 20394
-                "\u8EA2\uB0B0\u8EA2\uB0A9\u8EA2\uB0AA\u0000\uD6CD\u0000\uD6BE" + // 20395 - 20399
-                "\u8EA2\uB0B9\u8EA2\uB0C2\u0000\uD6C8\u0000\uD6BA\u0000\u0000" + // 20400 - 20404
-                "\u0000\uD6C3\u8EA2\uB0B1\u0000\uD6C5\u8EA2\uB0B2\u8EA2\uB0BC" + // 20405 - 20409
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD6C7\u8EA2\uB0CB" + // 20410 - 20414
-                "\u8EA2\uB0AB\u0000\uD6C0\u0000\uD6BF\u0000\uD6CB\u8EA2\uB0A8" + // 20415 - 20419
-                "\u8EA2\uB0C9\u8EA2\uB0BD\u8EA2\uB0CA\u8EA2\uB0C4\u8EA2\uB0B6" + // 20420 - 20424
-                "\u8EA2\uABDE\u8EA2\uABE1\u0000\u0000\u8EA2\uABE4\u8EA2\uABD9" + // 20425 - 20429
-                "\u0000\u0000\u0000\u0000\u8EA2\uABE7\u8EA2\uABEA\u8EA2\uABEC" + // 20430 - 20434
-                "\u8EA2\uABD6\u0000\uD1F9\u0000\uD1FE\u8EA2\uB0AC\u0000\uD2B0" + // 20435 - 20439
-                "\u8EA2\uABE5\u8EA2\uABED\u8EA2\uABDD\u8EA2\uABD5\u0000\u0000" + // 20440 - 20444
-                "\u0000\u0000\u0000\u0000\u8EA2\uB0C7\u0000\uD2A3\u8EA2\uABE2" + // 20445 - 20449
-                "\u8EA2\uABDA\u8EA2\uABDC\u0000\uD2A8\u0000\u0000\u8EA2\uABDF" + // 20450 - 20454
-                "\u0000\uD2A2\u8EA2\uABD2\u8EA2\uABE8\u0000\u0000\u8EA2\uABEB" + // 20455 - 20459
-                "\u0000\u0000\u0000\u0000\u0000\uD1FD\u0000\u0000\u0000\uD2AB" + // 20460 - 20464
-                "\u8EA2\uABCF\u0000\uD2AD\u0000\uD1FB\u0000\uD2B1\u8EA2\uABE9" + // 20465 - 20469
-                "\u8EA2\uABD1\u0000\uD2AE\u8EA2\uB0C1\u8EA2\uA7E8\u0000\uD2A1" + // 20470 - 20474
-                "\u0000\uD1FA\u8EA2\uABD8\u8EA2\uABD0\u0000\uD2AF\u0000\uD2A7" + // 20475 - 20479
-                "\u8EA2\uABE3\u0000\uD2AC\u0000\uD2AA\u8EA2\uABDB\u0000\uD2A4" + // 20480 - 20484
-                "\u8EA2\uABD3\u0000\uD2A5\u0000\uD2A6\u8EA2\uABD4\u8EA2\uA7E7" + // 20485 - 20489
-                "\u0000\uCED3\u8EA2\uA7DA\u8EA2\uA7DC\u0000\uCED1\u0000\uCED6" + // 20490 - 20494
-                "\u8EA2\uA7DD\u8EA2\uA7EA\u0000\u0000\u0000\uD1F8\u0000\uCEDC" + // 20495 - 20499
-                "\u0000\u0000\u0000\uCEC6\u8EA2\uA7E9\u0000\u0000\u8EA2\uA7ED" + // 20500 - 20504
-                "\u8EA2\uA7D9\u8EA2\uA7EF\u8EA2\uA7E0\u0000\uCECF\u8EA2\uA7D5" + // 20505 - 20509
-                "\u0000\uCECE\u0000\uCEE0\u0000\uCED5\u0000\u0000\u8EA2\uA7D3" + // 20510 - 20514
-                "\u8EA2\uABD7\u0000\uCEDB\u0000\uCEDF\u8EA2\uA7E1\u8EA2\uA7E6" + // 20515 - 20519
-                "\u0000\u0000\u0000\uCEE1\u0000\uCEDA\u0000\uCECC\u0000\uCEC2" + // 20520 - 20524
-                "\u0000\u0000\u0000\uCEC7\u0000\u0000\u8EA2\uA7D7\u0000\uCEC3" + // 20525 - 20529
-                "\u8EA2\uA7EE\u0000\u0000\u8EA2\uA7D1\u8EA2\uA7D0\u8EA2\uA7DE" + // 20530 - 20534
-                "\u8EA2\uA7D2\u0000\uCEDE\u0000\uD6B9\u0000\uCED7\u8EA2\uA7DF" + // 20535 - 20539
-                "\u0000\uCEC4\u0000\u0000\u0000\uD2A9\u0000\u0000\u0000\u0000" + // 20540 - 20544
-                "\u0000\u0000\u8EA2\uA7EC\u0000\u0000\u0000\u0000\u0000\u0000" + // 20545 - 20549
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD2E7\u0000\u0000" + // 20550 - 20554
-                "\u0000\u0000\u8EA2\uD2E8\u0000\u0000\u0000\uEEB6\u8EA2\uD2EA" + // 20555 - 20559
-                "\u8EA2\uD2E9\u0000\u0000\u0000\uA3A3\u0000\u0000\u8EA2\uD9B6" + // 20560 - 20564
-                "\u8EA2\uD9B7\u8EA2\uD9B3\u0000\u0000\u8EA2\uD9B4\u0000\uF1E6" + // 20565 - 20569
-                "\u0000\uF1E7\u8EA2\uD9B5\u0000\u0000\u0000\uF4E1\u0000\u0000" + // 20570 - 20574
-                "\u0000\u0000\u0000\uF4DD\u0000\uF4E2\u0000\uF4DE\u0000\uF4E0" + // 20575 - 20579
-                "\u0000\uF4DC\u0000\u0000\u0000\uF4DF\u0000\u0000\u0000\u0000" + // 20580 - 20584
-                "\u0000\u0000\u0000\u0000\u0000\uF6FD\u8EA2\uDEBC\u0000\u0000" + // 20585 - 20589
-                "\u8EA2\uE6B8\u0000\u0000\u8EA2\uE6B7\u0000\u0000\u8EA2\uE9D8" + // 20590 - 20594
-                "\u0000\uFAA7\u0000\uFAA8\u8EA2\uEDEE\u8EA2\uEBF4\u0000\u0000" + // 20595 - 20599
-                "\u8EA2\uEDED\u0000\u0000\u8EA2\uF1AD\u8EA2\uF1F2\u0000\uC8CE" + // 20600 - 20604
-                "\u0000\u0000\u0000\u0000\u0000\uCBB7\u0000\u0000\u8EA2\uA8C9" + // 20605 - 20609
-                "\u0000\uCFAB\u0000\u0000\u8EA2\uC7D5\u8EA2\uC7D1\u8EA2\uC7D4" + // 20610 - 20614
-                "\u8EA2\uC7D2\u0000\uE6E4\u8EA2\uC7CC\u0000\uE6DF\u0000\u0000" + // 20615 - 20619
-                "\u0000\u0000\u0000\u0000\u8EA2\uCEB4\u0000\uEBA2\u0000\uEBA5" + // 20620 - 20624
-                "\u0000\u0000\u8EA2\uCEB6\u0000\u0000\u0000\uEBAD\u8EA2\uCEB5" + // 20625 - 20629
-                "\u0000\uEBA7\u0000\u0000\u0000\uEEF8\u8EA2\uCEB7\u0000\u0000" + // 20630 - 20634
-                "\u0000\uEBAC\u8EA2\uCEB3\u0000\uEBAE\u0000\u0000\u0000\u0000" + // 20635 - 20639
-                "\u0000\u0000\u0000\uEBA3\u0000\u0000\u0000\uE6E2\u0000\uEBA6" + // 20640 - 20644
-                "\u0000\u0000\u0000\uEBA4\u0000\uEBA8\u0000\uEBAA\u0000\uEBA1" + // 20645 - 20649
-                "\u0000\uEBAF\u0000\uEBAB\u0000\u0000\u0000\uEBA9\u8EA2\uCEB2" + // 20650 - 20654
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEFA1" + // 20655 - 20659
-                "\u0000\u0000\u0000\uEEFB\u0000\u0000\u0000\u0000\u0000\u0000" + // 20660 - 20664
-                "\u0000\uEFA4\u0000\u0000\u8EA2\uD4BF\u0000\uEFA5\u8EA2\uD4CB" + // 20665 - 20669
-                "\u8EA2\uD4C4\u0000\uEEF4\u8EA2\uD4CC\u8EA2\uD4C6\u0000\uEEFE" + // 20670 - 20674
-                "\u8EA2\uA7E5\u0000\uCAE8\u0000\uCBA1\u0000\uCAF6\u8EA2\uA4CE" + // 20675 - 20679
-                "\u0000\uCAEB\u0000\uCAFA\u8EA2\uA4D6\u0000\uCAE9\u0000\uCAEA" + // 20680 - 20684
-                "\u8EA2\uA7E3\u8EA2\uA4CF\u0000\uCAF1\u0000\uCAFC\u8EA2\uA4DD" + // 20685 - 20689
-                "\u8EA2\uA4D0\u0000\uCAEF\u0000\u0000\u0000\uCAF4\u8EA2\uA7CF" + // 20690 - 20694
-                "\u0000\uCAFD\u8EA2\uA4D7\u0000\uCAF3\u0000\u0000\u0000\uCAFE" + // 20695 - 20699
-                "\u0000\uCAE7\u8EA2\uA4D4\u0000\uCAEC\u8EA2\uA4D8\u8EA2\uA7E4" + // 20700 - 20704
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20705 - 20709
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20710 - 20714
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCECD\u0000\uCEDD" + // 20715 - 20719
-                "\u8EA2\uA7D6\u0000\uCED4\u0000\u0000\u8EA2\uA7EB\u0000\uCEC5" + // 20720 - 20724
-                "\u0000\u0000\u0000\uCEC8\u8EA2\uA7E2\u0000\u0000\u8EA2\uA7D4" + // 20725 - 20729
-                "\u8EA2\uA7D8\u0000\uCED0\u0000\uCED2\u8EA2\uA7DB\u0000\uCED9" + // 20730 - 20734
-                "\u0000\uCECB\u0000\uCEC9\u0000\uCECA\u0000\uCED8\u0000\uC6E5" + // 20735 - 20739
-                "\u0000\uC6E4\u0000\uCAE5\u8EA2\uA1E1\u0000\u0000\u0000\u0000" + // 20740 - 20744
-                "\u8EA2\uA2D9\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA2DD" + // 20745 - 20749
-                "\u8EA2\uA2DF\u8EA2\uA2E0\u0000\uC8C6\u0000\uC8C7\u8EA2\uA2DC" + // 20750 - 20754
-                "\u0000\uC8C2\u0000\u0000\u8EA2\uA2DA\u0000\u0000\u8EA2\uA2DE" + // 20755 - 20759
-                "\u0000\uC8C3\u0000\u0000\u0000\uC8BE\u0000\u0000\u0000\uC8BF" + // 20760 - 20764
-                "\u0000\u0000\u0000\uC8C5\u8EA2\uA2DB\u0000\uC8BD\u0000\uCAE6" + // 20765 - 20769
-                "\u0000\uC8C0\u0000\uC8C1\u0000\uC8C4\u0000\u0000\u0000\u0000" + // 20770 - 20774
-                "\u0000\u0000\u8EA2\uA4DB\u8EA2\uA4D9\u8EA2\uA4CC\u0000\uCAF2" + // 20775 - 20779
-                "\u8EA2\uA4D3\u0000\uCAED\u8EA2\uA4CD\u0000\u0000\u8EA2\uA4D5" + // 20780 - 20784
-                "\u0000\u0000\u8EA2\uA4D2\u0000\uCAF0\u8EA2\uA4D1\u0000\uCAF7" + // 20785 - 20789
-                "\u8EA2\uA4DA\u0000\uCAF9\u0000\u0000\u0000\uCAFB\u0000\u0000" + // 20790 - 20794
-                "\u8EA2\uA4CB\u0000\u0000\u0000\uCAEE\u8EA2\uA4DC\u0000\u0000" + // 20795 - 20799
-                "\u0000\uCAF5\u0000\uCAF8\u0000\u0000\u0000\uD3D1\u8EA2\uB9C8" + // 20800 - 20804
-                "\u0000\uE1FD\u0000\u0000\u8EA2\uC7C1\u0000\uF7BB\u0000\u0000" + // 20805 - 20809
-                "\u8EA2\uE6FD\u0000\u0000\u0000\u0000\u0000\uCBC4\u0000\u0000" + // 20810 - 20814
-                "\u0000\u0000\u0000\u0000\u0000\uDDBD\u0000\u0000\u0000\u0000" + // 20815 - 20819
-                "\u0000\u0000\u0000\uDDBC\u0000\u0000\u8EA2\uC0B6\u0000\uE1FE" + // 20820 - 20824
-                "\u8EA2\uC0B8\u8EA2\uC0B7\u0000\u0000\u0000\u0000\u8EA2\uC7C2" + // 20825 - 20829
-                "\u0000\uE6D7\u8EA2\uCEAB\u8EA2\uCEAE\u8EA2\uCEAD\u0000\u0000" + // 20830 - 20834
-                "\u8EA2\uCEAC\u8EA2\uD4B7\u8EA2\uD4B9\u8EA2\uD4B8\u0000\u0000" + // 20835 - 20839
-                "\u0000\uF2B6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF2B5" + // 20840 - 20844
-                "\u0000\u0000\u0000\uF5C6\u8EA2\uDFC7\u8EA2\uDFC9\u8EA2\uDFC8" + // 20845 - 20849
-                "\u0000\u0000\u0000\u0000\u0000\uF7BC\u0000\u0000\u0000\u0000" + // 20850 - 20854
-                "\u0000\u0000\u8EA2\uE7A1\u8EA2\uE6FE\u0000\u0000\u8EA2\uE9F8" + // 20855 - 20859
-                "\u0000\uFABC\u0000\u0000\u0000\u0000\u0000\uFBAA\u8EA2\uEEA3" + // 20860 - 20864
-                "\u8EA2\uEEA2\u8EA2\uD1BF\u8EA2\uD1BE\u8EA2\uD1C1\u8EA2\uD7F2" + // 20865 - 20869
-                "\u8EA2\uD7F1\u0000\uF1A6\u8EA2\uD7F3\u0000\u0000\u0000\uF4A1" + // 20870 - 20874
-                "\u8EA2\uDDB9\u0000\u0000\u8EA2\uE1F6\u8EA2\uE5E6\u8EA2\uEDD5" + // 20875 - 20879
-                "\u0000\u0000\u0000\uC5D4\u0000\uC6E2\u0000\uC6E1\u0000\u0000" + // 20880 - 20884
-                "\u0000\uCEC0\u8EA2\uA1C1\u8EA2\uA1DF\u0000\uC8BC\u0000\u0000" + // 20885 - 20889
-                "\u8EA2\uA2D8\u8EA2\uA4C9\u8EA2\uA4CA\u0000\uCEC1\u0000\u0000" + // 20890 - 20894
-                "\u8EA2\uA7CE\u0000\u0000\u0000\uD1F7\u8EA2\uABCD\u8EA2\uABCE" + // 20895 - 20899
-                "\u0000\u0000\u0000\uD6B4\u0000\uD6B8\u8EA2\uB0A7\u0000\uD6B7" + // 20900 - 20904
-                "\u0000\uD6B5\u0000\uD6B6\u0000\u0000\u8EA2\uB6C3\u0000\uDBC7" + // 20905 - 20909
-                "\u0000\uE0AA\u0000\u0000\u0000\uE0A8\u0000\uE0A9\u8EA2\uBDAB" + // 20910 - 20914
-                "\u0000\u0000\u0000\u0000\u0000\uE9BB\u0000\uC5D5\u0000\u0000" + // 20915 - 20919
-                "\u8EA2\uA1E0\u0000\u0000\u0000\uC6E3\u0000\u0000\u0000\u0000" + // 20920 - 20924
-                "\u8EA2\uA1E3\u0000\u0000\u0000\u0000\u0000\uC6E6\u8EA2\uA1E2" + // 20925 - 20929
-                "\u0000\uE4DA\u0000\u0000\u0000\u0000\u8EA2\uCBB1\u8EA2\uCBB2" + // 20930 - 20934
-                "\u0000\uEDC7\u0000\uEDC8\u8EA2\uD7F0\u8EA2\uD7EF\u8EA2\uE1F5" + // 20935 - 20939
-                "\u8EA2\uEFB2\u0000\uC5D1\u8EA2\uA1C0\u0000\uC6E0\u0000\u0000" + // 20940 - 20944
-                "\u0000\uCAE4\u8EA2\uA4C8\u0000\u0000\u0000\uD1F5\u0000\uE4DC" + // 20945 - 20949
-                "\u0000\uC5D2\u0000\u0000\u8EA2\uABCA\u0000\uD1F6\u8EA2\uABCB" + // 20950 - 20954
-                "\u0000\u0000\u0000\uF3FE\u0000\uC5D3\u0000\u0000\u0000\u0000" + // 20955 - 20959
-                "\u8EA2\uA7CD\u0000\u0000\u8EA2\uABCC\u0000\u0000\u8EA2\uB0A5" + // 20960 - 20964
-                "\u8EA2\uB0A4\u8EA2\uB0A2\u0000\u0000\u8EA2\uB0A1\u8EA2\uB0A6" + // 20965 - 20969
-                "\u8EA2\uB0A3\u0000\u0000\u0000\u0000\u0000\uDBC5\u0000\uDBC6" + // 20970 - 20974
-                "\u0000\u0000\u0000\u0000\u0000\uE0A7\u8EA2\uBDA8\u0000\u0000" + // 20975 - 20979
-                "\u8EA2\uBDA9\u8EA2\uBDAA\u0000\u0000\u0000\u0000\u0000\u0000" + // 20980 - 20984
-                "\u8EA2\uC4A7\u8EA2\uC4A8\u8EA2\uC4A6\u0000\u0000\u8EA2\uC4A4" + // 20985 - 20989
-                "\u8EA2\uC4A5\u0000\uE4DD\u8EA2\uCBB3\u8EA2\uD1C0\u8EA2\uA7CB" + // 20990 - 20994
-                "\u0000\u0000\u8EA2\uABC7\u0000\uD1F2\u8EA2\uABC8\u0000\u0000" + // 20995 - 20999
-                "\u0000\uD1F3\u0000\u0000\u8EA2\uAFFE\u0000\uD6B2\u0000\uD6B1" + // 21000 - 21004
-                "\u0000\u0000\u8EA2\uB6C2\u8EA2\uB6C0\u8EA2\uB6C1\u8EA2\uB6BF" + // 21005 - 21009
-                "\u0000\u0000\u8EA2\uB6BE\u0000\u0000\u0000\u0000\u8EA2\uBDA3" + // 21010 - 21014
-                "\u8EA2\uBDA6\u0000\uE0A5\u8EA2\uBDA4\u0000\uE0A4\u8EA2\uBDA5" + // 21015 - 21019
-                "\u0000\u0000\u8EA2\uC4A3\u0000\u0000\u0000\u0000\u8EA2\uCBAE" + // 21020 - 21024
-                "\u8EA2\uCBAF\u8EA2\uCBB0\u0000\u0000\u8EA2\uD1BC\u8EA2\uD1BB" + // 21025 - 21029
-                "\u0000\uEDC6\u8EA2\uD1BA\u8EA2\uD1BD\u8EA2\uD7EC\u0000\u0000" + // 21030 - 21034
-                "\u0000\u0000\u8EA2\uD7ED\u8EA2\uD7EE\u0000\u0000\u8EA2\uDDB8" + // 21035 - 21039
-                "\u0000\uF3FD\u0000\uF6D8\u8EA2\uE5E5\u0000\u0000\u0000\uFAF3" + // 21040 - 21044
-                "\u8EA2\uA1BF\u0000\u0000\u0000\uD1F4\u8EA2\uABC9\u0000\uD6B3" + // 21045 - 21049
-                "\u0000\u0000\u0000\u0000\u0000\uDBC4\u0000\u0000\u0000\uE0A6" + // 21050 - 21054
-                "\u8EA2\uBDA7\u0000\u0000\u0000\uE4DB\u8EA2\uEBE0\u0000\u0000" + // 21055 - 21059
-                "\u8EA2\uEBDC\u8EA2\uEBDE\u0000\uFAF1\u0000\u0000\u0000\u0000" + // 21060 - 21064
-                "\u0000\u0000\u8EA2\uEDD3\u8EA2\uEDD4\u0000\uFBE2\u8EA2\uEDD2" + // 21065 - 21069
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEFB1\u0000\uFCBB" + // 21070 - 21074
-                "\u8EA2\uEFAF\u8EA2\uEFB0\u8EA2\uF0BA\u0000\u0000\u0000\u0000" + // 21075 - 21079
-                "\u0000\uFDA3\u8EA2\uF1A3\u8EA2\uF1A1\u8EA2\uF1A2\u8EA2\uF1A4" + // 21080 - 21084
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uF2AB\u0000\u0000" + // 21085 - 21089
-                "\u0000\uC5CE\u0000\uC8B9\u0000\u0000\u0000\uCEBC\u0000\u0000" + // 21090 - 21094
-                "\u8EA2\uA7CA\u0000\u0000\u0000\u0000\u8EA2\uABC6\u0000\u0000" + // 21095 - 21099
-                "\u0000\u0000\u0000\u0000\u8EA2\uAFF7\u8EA2\uAFF9\u0000\u0000" + // 21100 - 21104
-                "\u8EA2\uAFF8\u0000\u0000\u8EA2\uAFFA\u0000\uDBC3\u8EA2\uB6BB" + // 21105 - 21109
-                "\u8EA2\uAFFB\u0000\u0000\u8EA2\uB6BA\u8EA2\uB6BC\u8EA2\uB6BD" + // 21110 - 21114
-                "\u8EA2\uBCFD\u0000\uE0A2\u8EA2\uBCFE\u8EA2\uBDA2\u0000\uE0A3" + // 21115 - 21119
-                "\u0000\uE0A1\u8EA2\uBDA1\u0000\uF3F1\u8EA2\uDDA2\u0000\u0000" + // 21120 - 21124
-                "\u8EA2\uDDAD\u0000\uF3F3\u8EA2\uDDB4\u0000\u0000\u8EA2\uDDA9" + // 21125 - 21129
-                "\u0000\u0000\u8EA2\uDDA4\u0000\u0000\u0000\u0000\u8EA2\uDDB5" + // 21130 - 21134
-                "\u8EA2\uDCFE\u8EA2\uDDAB\u0000\u0000\u0000\uF3FA\u8EA2\uDDB0" + // 21135 - 21139
-                "\u8EA2\uDDB6\u8EA2\uDDAA\u0000\uF3F2\u8EA2\uDDAC\u8EA2\uDDA1" + // 21140 - 21144
-                "\u0000\uF3F9\u0000\u0000\u0000\u0000\u8EA2\uDDB3\u8EA2\uDDA6" + // 21145 - 21149
-                "\u0000\uF3F5\u0000\u0000\u8EA2\uDDA8\u8EA2\uDDA5\u0000\uF3FB" + // 21150 - 21154
-                "\u8EA2\uDDA7\u0000\uF3F4\u0000\uF3F7\u8EA2\uDDAF\u8EA2\uDDA3" + // 21155 - 21159
-                "\u8EA2\uDDB2\u0000\u0000\u8EA2\uDDAE\u0000\u0000\u0000\u0000" + // 21160 - 21164
-                "\u0000\u0000\u0000\uF6CF\u8EA2\uE1F3\u0000\uF6D4\u0000\uF6D5" + // 21165 - 21169
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF6CE\u8EA2\uE1F2" + // 21170 - 21174
-                "\u0000\u0000\u8EA2\uE1EF\u8EA2\uE1F0\u0000\uF6D2\u8EA2\uE1EA" + // 21175 - 21179
-                "\u8EA2\uE1EE\u0000\uF6D1\u0000\u0000\u8EA2\uE1EB\u0000\u0000" + // 21180 - 21184
-                "\u0000\u0000\u8EA2\uC1E3\u8EA2\uC1E1\u0000\u0000\u8EA2\uC1DD" + // 21185 - 21189
-                "\u0000\uE3AF\u8EA2\uC1DB\u0000\uE3B5\u8EA2\uC1E0\u8EA2\uC1E7" + // 21190 - 21194
-                "\u8EA2\uC1DE\u8EA2\uC1E6\u0000\u0000\u0000\u0000\u0000\uE7FC" + // 21195 - 21199
-                "\u0000\uE7F9\u0000\u0000\u0000\uE7FA\u0000\u0000\u8EA2\uC9A1" + // 21200 - 21204
-                "\u8EA2\uC8F7\u0000\uE7F8\u0000\uE7F5\u8EA2\uC8F8\u0000\u0000" + // 21205 - 21209
-                "\u0000\u0000\u0000\uE7F7\u8EA2\uC8FB\u0000\u0000\u8EA2\uC8FD" + // 21210 - 21214
-                "\u0000\u0000\u0000\u0000\u8EA2\uC9A6\u0000\u0000\u0000\u0000" + // 21215 - 21219
-                "\u8EA2\uC9A5\u8EA2\uC8FE\u0000\uE7F4\u8EA2\uC8F6\u0000\uE7F2" + // 21220 - 21224
-                "\u8EA2\uC8F9\u0000\uE7FD\u8EA2\uC8FC\u0000\u0000\u8EA2\uC9A2" + // 21225 - 21229
-                "\u0000\uE7F6\u0000\uE7F3\u8EA2\uC9A4\u8EA2\uC9A3\u0000\uE7FB" + // 21230 - 21234
-                "\u0000\u0000\u8EA2\uC8FA\u0000\u0000\u0000\uECA3\u8EA2\uCFD4" + // 21235 - 21239
-                "\u0000\u0000\u8EA2\uCFD1\u0000\uECA4\u0000\u0000\u0000\uECA2" + // 21240 - 21244
-                "\u0000\u0000\u8EA2\uCFD8\u8EA2\uCFD5\u8EA2\uCFCE\u8EA2\uD1A8" + // 21245 - 21249
-                "\u8EA2\uD7D9\u0000\u0000\u0000\u0000\u0000\uF0FA\u0000\u0000" + // 21250 - 21254
-                "\u8EA2\uD7E8\u0000\uF0FE\u0000\uF1A3\u8EA2\uD7CB\u0000\u0000" + // 21255 - 21259
-                "\u0000\uF0FD\u0000\u0000\u8EA2\uD7E6\u8EA2\uD7E7\u8EA2\uD7DD" + // 21260 - 21264
-                "\u8EA2\uD7DC\u8EA2\uD7D4\u0000\u0000\u0000\u0000\u8EA2\uD7DE" + // 21265 - 21269
-                "\u8EA2\uD7E5\u8EA2\uD7E4\u0000\u0000\u0000\uF0F8\u0000\uF0F6" + // 21270 - 21274
-                "\u8EA2\uD7D6\u8EA2\uD7D3\u0000\u0000\u8EA2\uD7D0\u8EA2\uD7E3" + // 21275 - 21279
-                "\u0000\uF1A2\u8EA2\uD7E1\u0000\uF0FC\u0000\uF0FB\u0000\u0000" + // 21280 - 21284
-                "\u8EA2\uD7DB\u0000\u0000\u8EA2\uD7CA\u8EA2\uD7CC\u8EA2\uD7CE" + // 21285 - 21289
-                "\u8EA2\uD7E0\u8EA2\uD7DA\u0000\uF0F7\u0000\u0000\u8EA2\uD7D1" + // 21290 - 21294
-                "\u0000\u0000\u8EA2\uD7DF\u0000\u0000\u0000\u0000\u0000\u0000" + // 21295 - 21299
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD7D2\u0000\u0000" + // 21300 - 21304
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21305 - 21309
-                "\u0000\u0000\u0000\uF3F8\u8EA2\uDDB1\u8EA2\uD0F1\u0000\uEDB8" + // 21310 - 21314
-                "\u0000\uEDC0\u0000\u0000\u8EA2\uD1B0\u0000\uEDC1\u8EA2\uD0F2" + // 21315 - 21319
-                "\u8EA2\uD1B6\u8EA2\uD1A9\u8EA2\uD1AF\u0000\uEDBE\u0000\u0000" + // 21320 - 21324
-                "\u0000\u0000\u8EA2\uD1AC\u0000\u0000\u8EA2\uD1B3\u0000\u0000" + // 21325 - 21329
-                "\u0000\uEDC3\u0000\u0000\u0000\uEDBD\u8EA2\uD1A5\u8EA2\uD0F6" + // 21330 - 21334
-                "\u8EA2\uD1B8\u8EA2\uD0F3\u8EA2\uD1B1\u0000\uEDBA\u0000\u0000" + // 21335 - 21339
-                "\u8EA2\uD0FD\u0000\u0000\u8EA2\uD0FE\u0000\uEDB9\u0000\uEDB6" + // 21340 - 21344
-                "\u8EA2\uD0F9\u0000\uEDBC\u0000\u0000\u0000\uEDB5\u0000\u0000" + // 21345 - 21349
-                "\u8EA2\uD1B2\u8EA2\uD1B5\u8EA2\uD1A2\u8EA2\uD7D5\u0000\u0000" + // 21350 - 21354
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21355 - 21359
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD7CD\u0000\u0000" + // 21360 - 21364
-                "\u8EA2\uD7C9\u0000\uF1A1\u0000\u0000\u0000\u0000\u0000\uF0F4" + // 21365 - 21369
-                "\u0000\uF0F9\u0000\uF0F5\u8EA2\uD7D7\u8EA2\uD7E2\u0000\uF0F3" + // 21370 - 21374
-                "\u8EA2\uD7CF\u8EA2\uD7D8\u8EA2\uC3E8\u8EA2\uC3ED\u8EA2\uC3D9" + // 21375 - 21379
-                "\u0000\u0000\u8EA2\uC3EA\u8EA2\uC3D6\u0000\u0000\u0000\u0000" + // 21380 - 21384
-                "\u8EA2\uC3DD\u8EA2\uC3DE\u0000\uE4CE\u8EA2\uC3F1\u8EA2\uC3EF" + // 21385 - 21389
-                "\u0000\u0000\u8EA2\uC3D2\u8EA2\uC3F4\u0000\u0000\u8EA2\uC3F5" + // 21390 - 21394
-                "\u8EA2\uC3F7\u0000\uE4D2\u0000\uE4CA\u0000\u0000\u8EA2\uB5FA" + // 21395 - 21399
-                "\u8EA2\uC3DA\u8EA2\uC3EC\u8EA2\uC3DB\u0000\uE4C7\u0000\uE4D7" + // 21400 - 21404
-                "\u8EA2\uC3F3\u0000\uE4D5\u0000\uE4D1\u8EA2\uC3D0\u0000\uE4C9" + // 21405 - 21409
-                "\u0000\u0000\u8EA2\uC3D3\u0000\uE4D6\u0000\u0000\u8EA2\uC3E3" + // 21410 - 21414
-                "\u8EA2\uC3CF\u0000\u0000\u0000\uE4CF\u8EA2\uC3E7\u8EA2\uC3D7" + // 21415 - 21419
-                "\u0000\uE4D0\u8EA2\uC3E0\u0000\uE4C6\u0000\uDFFD\u8EA2\uC3E9" + // 21420 - 21424
-                "\u8EA2\uBCE2\u8EA2\uC3D4\u0000\u0000\u0000\u0000\u8EA2\uC3EE" + // 21425 - 21429
-                "\u0000\uE4CB\u8EA2\uC3EB\u0000\uE4C8\u8EA2\uC3E5\u0000\uE4D3" + // 21430 - 21434
-                "\u8EA2\uC3DC\u8EA2\uC3F9\u0000\u0000\u0000\u0000\u0000\u0000" + // 21435 - 21439
-                "\u0000\u0000\u8EA2\uE6C5\u0000\u0000\u0000\uF8E5\u8EA2\uE6C6" + // 21440 - 21444
-                "\u8EA2\uEDF1\u0000\uFCE5\u8EA2\uF0C8\u0000\uC8D0\u0000\uCFAE" + // 21445 - 21449
-                "\u0000\uCFAD\u8EA2\uACF0\u0000\uD3A1\u0000\u0000\u0000\u0000" + // 21450 - 21454
-                "\u8EA2\uACEF\u8EA2\uB2A6\u0000\u0000\u0000\uD7CF\u8EA2\uB8B7" + // 21455 - 21459
-                "\u8EA2\uB2A5\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDCE1" + // 21460 - 21464
-                "\u8EA2\uB8BA\u8EA2\uB8B8\u8EA2\uB8B9\u0000\uDCE0\u0000\u0000" + // 21465 - 21469
-                "\u8EA2\uBFA7\u8EA2\uBFA8\u8EA2\uBFA6\u0000\u0000\u0000\uE5FA" + // 21470 - 21474
-                "\u8EA2\uC6B4\u8EA2\uC6B3\u8EA2\uC6B5\u0000\uE5F9\u0000\uE5F8" + // 21475 - 21479
-                "\u0000\u0000\u0000\u0000\u8EA2\uD2FA\u8EA2\uD2FC\u0000\u0000" + // 21480 - 21484
-                "\u0000\uEEC9\u8EA2\uD2FB\u8EA2\uD9CF\u0000\uF1F2\u8EA2\uE2E5" + // 21485 - 21489
-                "\u0000\u0000\u8EA2\uE2E4\u0000\uF8E6\u8EA2\uE6C7\u0000\uF8E8" + // 21490 - 21494
-                "\u0000\uF8E7\u8EA2\uE9DD\u8EA2\uEBFC\u0000\uFAFE\u0000\uC8D1" + // 21495 - 21499
-                "\u8EA2\uACF1\u0000\uD3A2\u8EA2\uB6AB\u0000\uDBAD\u0000\uDBC2" + // 21500 - 21504
-                "\u0000\uDBB8\u0000\u0000\u0000\uDBBC\u0000\uDBBB\u8EA2\uB5F3" + // 21505 - 21509
-                "\u0000\u0000\u8EA2\uB6B2\u8EA2\uB6B8\u8EA2\uB6B0\u8EA2\uB6B7" + // 21510 - 21514
-                "\u0000\u0000\u0000\u0000\u8EA2\uB6A4\u8EA2\uB5F4\u8EA2\uB6B6" + // 21515 - 21519
-                "\u8EA2\uB6A6\u0000\uDBB0\u0000\uDBBD\u0000\u0000\u8EA2\uB6AF" + // 21520 - 21524
-                "\u0000\uDBB6\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB6AE" + // 21525 - 21529
-                "\u8EA2\uB5F5\u0000\uDBBE\u0000\u0000\u0000\uDBC0\u8EA2\uB6B1" + // 21530 - 21534
-                "\u0000\uDBC1\u0000\uDBAF\u8EA2\uB5FC\u8EA2\uB6B3\u0000\u0000" + // 21535 - 21539
-                "\u0000\u0000\u0000\uDBB5\u0000\uDBBF\u8EA2\uB5FE\u8EA2\uB6AA" + // 21540 - 21544
-                "\u8EA2\uB5F9\u8EA2\uB5FD\u0000\uDBBA\u8EA2\uB5F8\u0000\uDBAE" + // 21545 - 21549
-                "\u0000\uDBB7\u0000\uDBB4\u8EA2\uB6A3\u0000\uD6A2\u8EA2\uBCE3" + // 21550 - 21554
-                "\u0000\uDBB1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21555 - 21559
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21560 - 21564
-                "\u0000\u0000\u8EA2\uA3E7\u0000\u0000\u8EA2\uA3E2\u8EA2\uA3E4" + // 21565 - 21569
-                "\u8EA2\uA3E6\u8EA2\uA3E3\u0000\uCAA6\u8EA2\uA3E0\u0000\u0000" + // 21570 - 21574
-                "\u8EA2\uA3E1\u0000\uCAA3\u0000\uCAA4\u8EA2\uA3E5\u8EA2\uA3E8" + // 21575 - 21579
-                "\u0000\uCAA5\u8EA2\uA3E9\u0000\u0000\u0000\u0000\u0000\u0000" + // 21580 - 21584
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA6C9" + // 21585 - 21589
-                "\u0000\u0000\u8EA2\uA6C3\u8EA2\uA6BE\u0000\uCDA5\u8EA2\uA6C6" + // 21590 - 21594
-                "\u8EA2\uA6C4\u8EA2\uA6BD\u8EA2\uA6CA\u8EA2\uA6CD\u8EA2\uA6C8" + // 21595 - 21599
-                "\u8EA2\uA6C1\u0000\uCDA7\u8EA2\uA6C7\u0000\uCDA8\u8EA2\uA6C2" + // 21600 - 21604
-                "\u8EA2\uA6C5\u8EA2\uA6BC\u8EA2\uA6C0\u8EA2\uA6CC\u0000\uCDA9" + // 21605 - 21609
-                "\u0000\u0000\u0000\uCDAA\u0000\u0000\u8EA2\uA6BF\u8EA2\uA6CB" + // 21610 - 21614
-                "\u0000\uCDA4\u0000\uCDA6\u0000\u0000\u0000\u0000\u0000\u0000" + // 21615 - 21619
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA1F8" + // 21620 - 21624
-                "\u0000\uA1F7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21625 - 21629
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21630 - 21634
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21635 - 21639
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21640 - 21644
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21645 - 21649
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21650 - 21654
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21655 - 21659
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21660 - 21664
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21665 - 21669
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21670 - 21674
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21675 - 21679
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCBC7\u0000\u0000" + // 21680 - 21684
-                "\u8EA2\uB9D0\u0000\u0000\u8EA2\uB9D1\u8EA2\uC7D8\u8EA2\uCEB8" + // 21685 - 21689
-                "\u8EA2\uD4CE\u0000\uF5D1\u0000\uD6A9\u0000\uD6B0\u0000\uD5FD" + // 21690 - 21694
-                "\u0000\uD6AB\u8EA2\uAFEB\u0000\uD6AD\u0000\uD5FA\u0000\u0000" + // 21695 - 21699
-                "\u0000\uD5F9\u8EA2\uAFDD\u0000\u0000\u8EA2\uAFE1\u0000\uD6A4" + // 21700 - 21704
-                "\u8EA2\uAFF3\u8EA2\uAFEA\u8EA2\uAFE2\u0000\uD6A8\u0000\uD6A5" + // 21705 - 21709
-                "\u0000\u0000\u0000\uD5FB\u0000\uD5FE\u0000\u0000\u0000\u0000" + // 21710 - 21714
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21715 - 21719
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21720 - 21724
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21725 - 21729
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21730 - 21734
-                "\u8EA2\uB6A8\u0000\u0000\u8EA2\uB5F6\u8EA2\uB5F7\u8EA2\uB5FB" + // 21735 - 21739
-                "\u0000\u0000\u8EA2\uB6AC\u8EA2\uB6A9\u0000\u0000\u8EA2\uB6A2" + // 21740 - 21744
-                "\u8EA2\uB6A1\u0000\uDBB3\u8EA2\uB6A5\u8EA2\uB6B4\u8EA2\uB5F2" + // 21745 - 21749
-                "\u0000\u0000\u8EA2\uB6B5\u8EA2\uB6A7\u8EA2\uB6B9\u8EA2\uB6AD" + // 21750 - 21754
-                "\u0000\uDBB2\u8EA2\uABA6\u8EA2\uAAFC\u8EA2\uABB3\u8EA2\uABC3" + // 21755 - 21759
-                "\u0000\uD1E3\u8EA2\uABA8\u8EA2\uABBA\u0000\u0000\u8EA2\uAAFE" + // 21760 - 21764
-                "\u8EA2\uABC1\u8EA2\uABC2\u8EA2\uABC5\u8EA2\uABBC\u8EA2\uABAD" + // 21765 - 21769
-                "\u8EA2\uABB5\u0000\uD1E9\u0000\uD1DC\u0000\uD1E4\u0000\uD1F0" + // 21770 - 21774
-                "\u0000\uD1D9\u0000\uD1DB\u0000\u0000\u0000\u0000\u0000\u0000" + // 21775 - 21779
-                "\u8EA2\uABA5\u0000\uD1ED\u0000\uD1E6\u8EA2\uABBF\u8EA2\uABA2" + // 21780 - 21784
-                "\u0000\uD1EF\u0000\uD1EA\u8EA2\uABAB\u0000\u0000\u0000\u0000" + // 21785 - 21789
-                "\u0000\uD1EE\u8EA2\uABB2\u8EA2\uABAA\u0000\uD1E7\u8EA2\uABBE" + // 21790 - 21794
-                "\u8EA2\uABB6\u0000\u0000\u0000\uD1E1\u8EA2\uABC4\u8EA2\uABA9" + // 21795 - 21799
-                "\u0000\uD1DD\u8EA2\uABBB\u8EA2\uABB1\u0000\uD1E2\u8EA2\uABB7" + // 21800 - 21804
-                "\u0000\uD1DA\u8EA2\uAAFD\u0000\uD1EB\u0000\uD6A7\u0000\uD1E0" + // 21805 - 21809
-                "\u8EA2\uABB0\u8EA2\uABAF\u8EA2\uABA4\u0000\u0000\u8EA2\uABC0" + // 21810 - 21814
-                "\u0000\u0000\u8EA2\uABB9\u0000\u0000\u0000\u0000\u0000\uD1D8" + // 21815 - 21819
-                "\u0000\uDEB2\u8EA2\uBCCC\u0000\u0000\u0000\uE4C4\u8EA2\uCAE1" + // 21820 - 21824
-                "\u8EA2\uCAE0\u0000\u0000\u0000\u0000\u0000\uC5CC\u0000\uC8B4" + // 21825 - 21829
-                "\u8EA2\uA7B3\u0000\uCEA5\u0000\u0000\u0000\uCEA4\u0000\u0000" + // 21830 - 21834
-                "\u8EA2\uAAFA\u8EA2\uAAFB\u0000\u0000\u8EA2\uAFD9\u8EA2\uAFDA" + // 21835 - 21839
-                "\u0000\uD5F4\u0000\uD5F5\u0000\u0000\u0000\uD5F6\u8EA2\uB5F1" + // 21840 - 21844
-                "\u0000\u0000\u0000\u0000\u0000\uDBAC\u0000\u0000\u0000\uDFE7" + // 21845 - 21849
-                "\u0000\u0000\u0000\uDFE6\u8EA2\uC3CE\u8EA2\uC6C1\u8EA2\uCAE2" + // 21850 - 21854
-                "\u8EA2\uD7C8\u0000\u0000\u0000\u0000\u0000\uF6CD\u0000\uF9F2" + // 21855 - 21859
-                "\u0000\uC5CD\u0000\u0000\u0000\uC6DC\u0000\uC6DD\u0000\uC6DB" + // 21860 - 21864
-                "\u0000\uC6DE\u0000\uC6DA\u0000\u0000\u0000\u0000\u0000\uC8B7" + // 21865 - 21869
-                "\u0000\u0000\u8EA2\uA2D7\u0000\uC8B6\u0000\uC8B8\u0000\u0000" + // 21870 - 21874
-                "\u0000\u0000\u8EA2\uA2D2\u8EA2\uA2D1\u8EA2\uA2D4\u8EA2\uA2D3" + // 21875 - 21879
-                "\u8EA2\uA2D6\u0000\uC8B5\u8EA2\uA2D0\u8EA2\uA2D5\u8EA2\uD7C0" + // 21880 - 21884
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF0F0\u0000\u0000" + // 21885 - 21889
-                "\u0000\uF0ED\u0000\uF0F1\u8EA2\uD7BE\u0000\uF0EE\u8EA2\uD7C1" + // 21890 - 21894
-                "\u8EA2\uD7C2\u8EA2\uD7C7\u0000\u0000\u0000\u0000\u8EA2\uD7C3" + // 21895 - 21899
-                "\u0000\u0000\u0000\u0000\u8EA2\uDCFD\u0000\u0000\u0000\u0000" + // 21900 - 21904
-                "\u0000\u0000\u0000\uF3F0\u0000\u0000\u8EA2\uE1E8\u0000\uF3EF" + // 21905 - 21909
-                "\u8EA2\uE1E6\u8EA2\uE1E7\u0000\uF6CC\u0000\uF8BB\u8EA2\uE5D6" + // 21910 - 21914
-                "\u0000\u0000\u0000\uF8BA\u0000\u0000\u0000\u0000\u8EA2\uE8FD" + // 21915 - 21919
-                "\u8EA2\uE8FE\u0000\u0000\u0000\uF9F1\u0000\u0000\u8EA2\uE8FC" + // 21920 - 21924
-                "\u0000\uFAEF\u0000\u0000\u8EA2\uEFAE\u0000\uFCBA\u8EA2\uF0B8" + // 21925 - 21929
-                "\u8EA2\uF0B9\u0000\u0000\u0000\uC5CB\u0000\u0000\u0000\uC8B2" + // 21930 - 21934
-                "\u0000\uC8B3\u0000\uCAD5\u0000\u0000\u8EA2\uA7B2\u0000\uD1D7" + // 21935 - 21939
-                "\u0000\uD5F3\u0000\uDBAA\u0000\u0000\u0000\u0000\u0000\uD9B7" + // 21940 - 21944
-                "\u0000\u0000\u0000\uDFE4\u0000\uDFE5\u8EA2\uBCC7\u0000\u0000" + // 21945 - 21949
-                "\u0000\u0000\u0000\u0000\u0000\uE4C1\u0000\u0000\u8EA2\uC3C5" + // 21950 - 21954
-                "\u0000\uE4BE\u0000\uE4BF\u0000\uE4BD\u8EA2\uC3CA\u8EA2\uC3C9" + // 21955 - 21959
-                "\u8EA2\uC3C6\u0000\uE4C3\u0000\u0000\u0000\u0000\u8EA2\uC3C8" + // 21960 - 21964
-                "\u0000\uDFE0\u0000\u0000\u0000\u0000\u8EA2\uC3CC\u8EA2\uC3C7" + // 21965 - 21969
-                "\u0000\uE4C0\u0000\uE4BC\u0000\uE4C2\u8EA2\uC3CB\u0000\u0000" + // 21970 - 21974
-                "\u0000\u0000\u0000\u0000\u0000\uE9A5\u0000\u0000\u8EA2\uCADF" + // 21975 - 21979
-                "\u8EA2\uCADE\u8EA2\uCADD\u0000\uE9A3\u0000\u0000\u0000\u0000" + // 21980 - 21984
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE9A4\u8EA2\uD0EC" + // 21985 - 21989
-                "\u8EA2\uD0EF\u0000\uEDB2\u0000\u0000\u0000\u0000\u0000\uEDB1" + // 21990 - 21994
-                "\u8EA2\uD0F0\u8EA2\uD0EB\u0000\uEDB4\u8EA2\uD0ED\u0000\u0000" + // 21995 - 21999
-                "\u0000\uEDB3\u8EA2\uD0EA\u0000\u0000\u8EA2\uD0EE\u0000\uF0F2" + // 22000 - 22004
-                "\u0000\uF0EF\u8EA2\uD7C6\u8EA2\uD7C5\u0000\u0000\u8EA2\uD7C4" + // 22005 - 22009
-                "\u8EA2\uD7BF\u0000\u0000\u8EA2\uC0B4\u0000\uEAF7\u0000\u0000" + // 22010 - 22014
-                "\u0000\u0000\u8EA2\uD4AB\u8EA2\uD4B2\u0000\uEEEF\u0000\u0000" + // 22015 - 22019
-                "\u8EA2\uD4B6\u0000\uEEF3\u8EA2\uD4AE\u8EA2\uD4AC\u0000\u0000" + // 22020 - 22024
-                "\u8EA2\uD4B5\u0000\u0000\u0000\uEEEE\u8EA2\uD4B4\u0000\uEEF0" + // 22025 - 22029
-                "\u0000\uEEF1\u8EA2\uD4AD\u0000\uEEF2\u8EA2\uD4B3\u8EA2\uD4AF" + // 22030 - 22034
-                "\u8EA2\uD4B0\u8EA2\uD4B1\u0000\uEAFD\u0000\u0000\u0000\u0000" + // 22035 - 22039
-                "\u0000\u0000\u8EA2\uDABE\u8EA2\uDACA\u0000\u0000\u0000\uF2B4" + // 22040 - 22044
-                "\u8EA2\uDAC5\u8EA2\uDAC7\u0000\u0000\u0000\uF2B2\u8EA2\uDABF" + // 22045 - 22049
-                "\u8EA2\uDAC3\u0000\u0000\u8EA2\uDAC6\u0000\uF2B0\u0000\uF2B3" + // 22050 - 22054
-                "\u8EA2\uDAC9\u8EA2\uDAC1\u8EA2\uDAC2\u8EA2\uDAC8\u8EA2\uDAC0" + // 22055 - 22059
-                "\u8EA2\uDAC4\u0000\uF2B1\u8EA2\uDFC0\u0000\u0000\u8EA2\uDFBF" + // 22060 - 22064
-                "\u0000\uF5C2\u8EA2\uDFC5\u0000\uF5C4\u0000\u0000\u0000\u0000" + // 22065 - 22069
-                "\u0000\uF5C1\u8EA2\uDFC1\u0000\uF5C5\u8EA2\uDFC2\u0000\u0000" + // 22070 - 22074
-                "\u8EA2\uDFC3\u8EA2\uDFC6\u0000\u0000\u0000\uF5C3\u0000\u0000" + // 22075 - 22079
-                "\u8EA2\uE3C1\u0000\u0000\u0000\u0000\u8EA2\uE3C4\u0000\u0000" + // 22080 - 22084
-                "\u8EA2\uE3BE\u8EA2\uE3C0\u0000\u0000\u0000\u0000\u8EA2\uE3BF" + // 22085 - 22089
-                "\u8EA2\uE3C2\u8EA2\uE3C3\u8EA2\uDFC4\u8EA2\uE3BD\u0000\u0000" + // 22090 - 22094
-                "\u0000\u0000\u0000\uF8F8\u8EA2\uE6F7\u8EA2\uE6FA\u8EA2\uE6FC" + // 22095 - 22099
-                "\u8EA2\uE6F5\u8EA2\uE6F6\u8EA2\uE6F9\u8EA2\uE6FB\u0000\uF8F9" + // 22100 - 22104
-                "\u0000\uF8F7\u0000\uF8F6\u8EA2\uE6F8\u8EA2\uE6F4\u8EA2\uE9F6" + // 22105 - 22109
-                "\u0000\uFABB\u0000\u0000\u8EA2\uE9F7\u0000\u0000\u0000\u0000" + // 22110 - 22114
-                "\u8EA2\uECB8\u0000\uFBA8\u8EA2\uECBA\u0000\uFBA9\u8EA2\uECB7" + // 22115 - 22119
-                "\u8EA2\uECB9\u0000\uFBF2\u0000\u0000\u8EA2\uEEA1\u0000\uFBF1" + // 22120 - 22124
-                "\u8EA2\uEFCC\u8EA2\uEFCB\u0000\u0000\u8EA2\uEFCA\u0000\u0000" + // 22125 - 22129
-                "\u0000\u0000\u8EA2\uF1B7\u8EA2\uF1B8\u8EA2\uF1BA\u8EA2\uF1B9" + // 22130 - 22134
-                "\u0000\u0000\u8EA2\uA2F0\u0000\uC8E9\u0000\uCDFD\u0000\u0000" + // 22135 - 22139
-                "\u0000\uCDFB\u8EA2\uA7AB\u8EA2\uA7A7\u8EA2\uA7AE\u0000\uCDFA" + // 22140 - 22144
-                "\u0000\uCEA3\u8EA2\uA7A9\u8EA2\uA7A5\u0000\uCEA2\u8EA2\uA7AC" + // 22145 - 22149
-                "\u0000\uCDF9\u8EA2\uA7AD\u0000\uCDFC\u0000\uCDFE\u8EA2\uA7B1" + // 22150 - 22154
-                "\u8EA2\uA7B0\u8EA2\uA7A8\u0000\uCDF8\u0000\uCDF7\u0000\uCEA1" + // 22155 - 22159
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22160 - 22164
-                "\u0000\u0000\u8EA2\uAAF0\u8EA2\uAAF6\u0000\u0000\u0000\uD1D3" + // 22165 - 22169
-                "\u0000\uD1D0\u8EA2\uAAED\u8EA2\uAAF2\u0000\u0000\u0000\uD1D6" + // 22170 - 22174
-                "\u0000\uD1CE\u8EA2\uAAF1\u0000\uD1D1\u0000\uD1D4\u0000\u0000" + // 22175 - 22179
-                "\u0000\u0000\u8EA2\uAAF4\u0000\u0000\u0000\uD1CF\u8EA2\uAAF9" + // 22180 - 22184
-                "\u0000\uD1D2\u0000\u0000\u0000\uD1D5\u8EA2\uAAEE\u8EA2\uAAF3" + // 22185 - 22189
-                "\u8EA2\uAAF7\u8EA2\uAAEF\u8EA2\uAAEC\u0000\u0000\u0000\u0000" + // 22190 - 22194
-                "\u8EA2\uAAF8\u8EA2\uAAF5\u0000\u0000\u0000\u0000\u0000\u0000" + // 22195 - 22199
-                "\u0000\u0000\u0000\u0000\u8EA2\uBCCF\u0000\uDFED\u8EA2\uBCF7" + // 22200 - 22204
-                "\u8EA2\uBCDF\u8EA2\uBCE1\u0000\u0000\u8EA2\uBCEE\u8EA2\uBCED" + // 22205 - 22209
-                "\u8EA2\uBCCD\u0000\uDFF8\u0000\uDFFA\u8EA2\uBCD5\u8EA2\uBCDC" + // 22210 - 22214
-                "\u8EA2\uBCE4\u0000\uDFF9\u8EA2\uBCDB\u8EA2\uBCE7\u8EA2\uBCFA" + // 22215 - 22219
-                "\u0000\u0000\u8EA2\uBCEF\u0000\u0000\u0000\u0000\u0000\u0000" + // 22220 - 22224
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA4C9\u0000\u0000" + // 22225 - 22229
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22230 - 22234
-                "\u8EA2\uBCFB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22235 - 22239
-                "\u8EA2\uBCD1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22240 - 22244
-                "\u8EA2\uC3F8\u0000\uE4CC\u0000\u0000\u8EA2\uC3F6\u8EA2\uC3E1" + // 22245 - 22249
-                "\u8EA2\uC3E6\u8EA2\uC3DF\u0000\u0000\u8EA2\uC3F2\u8EA2\uC3D1" + // 22250 - 22254
-                "\u8EA2\uC3D8\u0000\u0000\u8EA2\uC3F0\u8EA2\uC3FA\u8EA2\uC3E2" + // 22255 - 22259
-                "\u0000\u0000\u8EA2\uC3D5\u8EA2\uDCFA\u8EA2\uDCF9\u0000\uF3ED" + // 22260 - 22264
-                "\u0000\uF3EE\u8EA2\uE5D3\u0000\u0000\u0000\u0000\u0000\uC5C6" + // 22265 - 22269
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBCBE" + // 22270 - 22274
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDFD9\u0000\uDFD8" + // 22275 - 22279
-                "\u8EA2\uC3C3\u0000\u0000\u8EA2\uE1E4\u0000\uFAEE\u8EA2\uEFAD" + // 22280 - 22284
-                "\u0000\uC5C7\u0000\u0000\u0000\uD5E8\u0000\u0000\u0000\uDAFC" + // 22285 - 22289
-                "\u0000\uDAFB\u8EA2\uBCBF\u8EA2\uBCC0\u0000\uE4BA\u8EA2\uCADC" + // 22290 - 22294
-                "\u0000\uE8FE\u8EA2\uD7BD\u0000\u0000\u0000\uC5C8\u0000\uC6D8" + // 22295 - 22299
-                "\u0000\u0000\u0000\uCDF4\u8EA2\uA7A3\u0000\u0000\u8EA2\uAAEA" + // 22300 - 22304
-                "\u0000\uD1CB\u0000\uDAFD\u0000\u0000\u8EA2\uBCC1\u0000\uDFDA" + // 22305 - 22309
-                "\u0000\uE4BB\u0000\u0000\u8EA2\uD0E8\u8EA2\uD0E9\u0000\u0000" + // 22310 - 22314
-                "\u0000\u0000\u8EA2\uDCFB\u0000\uF6CB\u8EA2\uF0FE\u0000\uC5C9" + // 22315 - 22319
-                "\u0000\u0000\u8EA2\uA7A4\u0000\uCDF5\u0000\uD1CC\u0000\u0000" + // 22320 - 22324
-                "\u8EA2\uAAEB\u0000\uF8B8\u8EA2\uE1E1\u0000\u0000\u8EA2\uE1E2" + // 22325 - 22329
-                "\u8EA2\uE1DE\u0000\u0000\u0000\uF6C7\u8EA2\uE5CD\u0000\u0000" + // 22330 - 22334
-                "\u8EA2\uE5D0\u0000\u0000\u0000\u0000\u8EA2\uE5D1\u8EA2\uE5CF" + // 22335 - 22339
-                "\u8EA2\uE5D2\u0000\uF8B9\u8EA2\uE5CE\u0000\u0000\u0000\u0000" + // 22340 - 22344
-                "\u8EA2\uE8FA\u0000\uF9EF\u8EA2\uE8F9\u8EA2\uE8F8\u8EA2\uE8F7" + // 22345 - 22349
-                "\u0000\uF9EE\u0000\uF9F0\u0000\u0000\u8EA2\uEBDB\u0000\uFAED" + // 22350 - 22354
-                "\u0000\uFAEC\u0000\u0000\u0000\u0000\u8EA2\uEDCF\u8EA2\uEDCE" + // 22355 - 22359
-                "\u8EA2\uEDD1\u0000\uFCB7\u0000\uFBE1\u8EA2\uEFAC\u8EA2\uEDD0" + // 22360 - 22364
-                "\u0000\u0000\u0000\u0000\u8EA2\uEFAB\u0000\uFCB9\u0000\uFCB8" + // 22365 - 22369
-                "\u0000\uFCDF\u8EA2\uF0B7\u8EA2\uF0FD\u0000\uC5C5\u0000\u0000" + // 22370 - 22374
-                "\u0000\u0000\u8EA2\uBCB7\u8EA2\uD7BA\u0000\uA7E1\u0000\u0000" + // 22375 - 22379
-                "\u0000\uC8AD\u8EA2\uA2CD\u0000\uCAD3\u0000\uCAD1\u0000\u0000" + // 22380 - 22384
-                "\u0000\uCAD2\u0000\u0000\u8EA2\uA7A2\u0000\uCDF3\u0000\uD1C9" + // 22385 - 22389
-                "\u8EA2\uC3B9\u8EA2\uC3B4\u0000\u0000\u8EA2\uC3A8\u0000\u0000" + // 22390 - 22394
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22395 - 22399
-                "\u0000\u0000\u8EA2\uCAD0\u0000\u0000\u8EA2\uCAC1\u8EA2\uCACC" + // 22400 - 22404
-                "\u0000\u0000\u8EA2\uCAD3\u0000\uE8F8\u0000\uDFD1\u8EA2\uCAD1" + // 22405 - 22409
-                "\u0000\uE8F3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE8F2" + // 22410 - 22414
-                "\u8EA2\uCAD8\u0000\u0000\u8EA2\uCAC2\u8EA2\uCACF\u8EA2\uCAC3" + // 22415 - 22419
-                "\u8EA2\uCACE\u0000\uE8F6\u8EA2\uCAD2\u8EA2\uBCA7\u0000\u0000" + // 22420 - 22424
-                "\u0000\u0000\u0000\u0000\u8EA2\uCAD9\u8EA2\uCACA\u0000\uE8F9" + // 22425 - 22429
-                "\u8EA2\uD0E1\u0000\uECF7\u0000\u0000\u8EA2\uCAD7\u8EA2\uCAD6" + // 22430 - 22434
-                "\u0000\uE8FB\u8EA2\uD0D4\u0000\uECF8\u8EA2\uD0D5\u0000\u0000" + // 22435 - 22439
-                "\u8EA2\uCAC6\u8EA2\uCAC7\u8EA2\uCAC4\u8EA2\uCAC9\u8EA2\uCAC5" + // 22440 - 22444
-                "\u8EA2\uCADA\u0000\uE8F5\u0000\uECF9\u0000\uE8F7\u0000\uE8FC" + // 22445 - 22449
-                "\u0000\u0000\u8EA2\uCAC8\u0000\u0000\u8EA2\uCAD4\u0000\uDFC1" + // 22450 - 22454
-                "\u0000\u0000\u8EA2\uBCAF\u8EA2\uBBFC\u8EA2\uBCAC\u8EA2\uC2FD" + // 22455 - 22459
-                "\u0000\uDFC4\u8EA2\uBCB0\u8EA2\uBCB3\u0000\uDFC3\u8EA2\uBCA1" + // 22460 - 22464
-                "\u8EA2\uBCB2\u8EA2\uBCB1\u0000\uDFC5\u8EA2\uBBF8\u0000\uDFC0" + // 22465 - 22469
-                "\u0000\uDFC8\u0000\u0000\u0000\uDFC6\u8EA2\uBCAE\u0000\u0000" + // 22470 - 22474
-                "\u8EA2\uBCA4\u0000\uDFCA\u8EA2\uBCB5\u8EA2\uBCAD\u8EA2\uBCB6" + // 22475 - 22479
-                "\u0000\uDFD2\u0000\uDFD0\u8EA2\uBCAB\u8EA2\uBCAA\u0000\u0000" + // 22480 - 22484
-                "\u8EA2\uBCA8\u8EA2\uBCA2\u0000\uDFC9\u0000\u0000\u0000\uDFC7" + // 22485 - 22489
-                "\u8EA2\uAFBB\u8EA2\uBBF9\u0000\u0000\u8EA2\uC3BD\u8EA2\uBBFA" + // 22490 - 22494
-                "\u0000\uDFC2\u0000\uDFCF\u8EA2\uC3A1\u0000\u0000\u0000\uDFCB"   // 22495 - 22499
-                ;
-
-            index2c =
-                "\u0000\uDFCC\u8EA2\uBBFB\u8EA2\uBCB4\u8EA2\uC2FE\u8EA2\uBCA5" + // 22500 - 22504
-                "\u8EA2\uBBFE\u0000\uDFCE\u8EA2\uBCA6\u8EA2\uBCA3\u0000\u0000" + // 22505 - 22509
-                "\u0000\u0000\u0000\uDFD3\u0000\u0000\u0000\u0000\u0000\u0000" + // 22510 - 22514
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB0DA\u8EA2\uB0DB" + // 22515 - 22519
-                "\u8EA2\uB0DC\u0000\uD6D3\u0000\u0000\u0000\uD6CF\u8EA2\uB0D1" + // 22520 - 22524
-                "\u0000\u0000\u8EA2\uB0D9\u8EA2\uB0DE\u0000\uD6D4\u0000\u0000" + // 22525 - 22529
-                "\u8EA2\uB0CF\u8EA2\uB0D5\u8EA2\uB0CE\u8EA2\uB0D8\u0000\u0000" + // 22530 - 22534
-                "\u0000\u0000\u8EA2\uB0D4\u0000\uD6D0\u0000\uD6D2\u8EA2\uB0DD" + // 22535 - 22539
-                "\u0000\u0000\u8EA2\uB0CD\u8EA2\uB0D0\u8EA2\uB0D6\u0000\u0000" + // 22540 - 22544
-                "\u8EA2\uB0D7\u8EA2\uB0DF\u8EA2\uB0D3\u0000\u0000\u0000\uD6D1" + // 22545 - 22549
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22550 - 22554
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22555 - 22559
-                "\u0000\uDBF2\u8EA2\uB6F1\u0000\u0000\u0000\u0000\u8EA2\uB6F3" + // 22560 - 22564
-                "\u8EA2\uB6EF\u0000\u0000\u8EA2\uB6FB\u8EA2\uB6ED\u8EA2\uB6FA" + // 22565 - 22569
-                "\u0000\uDBEE\u8EA2\uB6EB\u8EA2\uBDDF\u8EA2\uB6F5\u0000\uDBF1" + // 22570 - 22574
-                "\u0000\u0000\u8EA2\uB6F6\u0000\uDAEC\u8EA2\uB5E5\u8EA2\uB5CD" + // 22575 - 22579
-                "\u0000\uDAE1\u0000\uDAE5\u8EA2\uB5E4\u0000\u0000\u8EA2\uB5D7" + // 22580 - 22584
-                "\u0000\uDAE6\u0000\uDAE0\u8EA2\uB5CC\u0000\u0000\u0000\uDFBF" + // 22585 - 22589
-                "\u8EA2\uB5E7\u8EA2\uB5D5\u0000\uDAEB\u8EA2\uB5D8\u8EA2\uB5E6" + // 22590 - 22594
-                "\u0000\uDAEA\u0000\u0000\u8EA2\uBBF5\u0000\u0000\u0000\uDAD7" + // 22595 - 22599
-                "\u8EA2\uB5D3\u0000\uDADC\u0000\uDAE7\u0000\u0000\u0000\uDAE2" + // 22600 - 22604
-                "\u8EA2\uB5DC\u8EA2\uB5D2\u8EA2\uB5D0\u8EA2\uB5E2\u0000\uDAD4" + // 22605 - 22609
-                "\u0000\uDAE8\u0000\uDAD8\u0000\uDFBE\u8EA2\uB5E0\u0000\uDAD9" + // 22610 - 22614
-                "\u0000\u0000\u0000\uDAD5\u0000\uDAE4\u0000\uDADF\u0000\uDADD" + // 22615 - 22619
-                "\u8EA2\uB5D4\u0000\uDAE9\u8EA2\uB5D1\u8EA2\uB5DE\u8EA2\uB5DA" + // 22620 - 22624
-                "\u8EA2\uBBF7\u8EA2\uBBF6\u0000\u0000\u0000\u0000\u0000\u0000" + // 22625 - 22629
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22630 - 22634
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB5CF\u8EA2\uBCA9" + // 22635 - 22639
-                "\u0000\u0000\u8EA2\uDAAF\u0000\uEEE1\u0000\uF2AA\u8EA2\uDAB9" + // 22640 - 22644
-                "\u8EA2\uDAB5\u0000\u0000\u8EA2\uDAB3\u8EA2\uDAAE\u8EA2\uDABD" + // 22645 - 22649
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF2AE\u0000\u0000" + // 22650 - 22654
-                "\u8EA2\uDAAA\u8EA2\uDAB6\u8EA2\uDAB7\u8EA2\uDAAD\u8EA2\uDAAC" + // 22655 - 22659
-                "\u8EA2\uDABA\u0000\u0000\u8EA2\uDAB0\u8EA2\uDAAB\u8EA2\uDAB1" + // 22660 - 22664
-                "\u0000\u0000\u8EA2\uDABC\u8EA2\uDAA9\u8EA2\uDABB\u8EA2\uDAB8" + // 22665 - 22669
-                "\u0000\uF2AC\u0000\uF2AB\u0000\u0000\u0000\u0000\u0000\uF2AD" + // 22670 - 22674
-                "\u8EA2\uDAB4\u8EA2\uDAA8\u0000\u0000\u0000\u0000\u0000\u0000" + // 22675 - 22679
-                "\u0000\u0000\u0000\u0000\u8EA2\uDFA7\u0000\uF5BC\u8EA2\uDFAB" + // 22680 - 22684
-                "\u8EA2\uDFA8\u8EA2\uDFAF\u8EA2\uDFB5\u8EA2\uDFAA\u0000\u0000" + // 22685 - 22689
-                "\u8EA2\uDFBE\u0000\uF5B9\u8EA2\uDFB8\u8EA2\uDFAD\u8EA2\uDFB9" + // 22690 - 22694
-                "\u8EA2\uDFB4\u8EA2\uDFBB\u8EA2\uDFAC\u0000\uF5BE\u0000\uF5BD" + // 22695 - 22699
-                "\u8EA2\uDFAE\u8EA2\uDFBC\u8EA2\uDFA6\u8EA2\uDFBA\u8EA2\uAFCD" + // 22700 - 22704
-                "\u8EA2\uAFC1\u0000\uD5DA\u8EA2\uAFBA\u8EA2\uAFB7\u8EA2\uAFB8" + // 22705 - 22709
-                "\u0000\uD5DB\u8EA2\uAFC7\u8EA2\uAFCE\u0000\uD5DD\u8EA2\uAFBE" + // 22710 - 22714
-                "\u8EA2\uAFBD\u0000\uD5E5\u0000\uD5E4\u0000\uD5D6\u0000\uD5DC" + // 22715 - 22719
-                "\u0000\uD5DF\u8EA2\uAFCA\u0000\u0000\u0000\u0000\u8EA2\uAFC4" + // 22720 - 22724
-                "\u0000\uD5D9\u8EA2\uAFB5\u8EA2\uAFCC\u8EA2\uAFC3\u8EA2\uAFC5" + // 22725 - 22729
-                "\u8EA2\uAFC9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22730 - 22734
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22735 - 22739
-                "\u0000\u0000\u8EA2\uB5CB\u0000\u0000\u0000\uDADB\u0000\uDAEF" + // 22740 - 22744
-                "\u0000\uDAEE\u0000\u0000\u0000\uDAE3\u0000\u0000\u8EA2\uB5DD" + // 22745 - 22749
-                "\u8EA2\uB5D9\u8EA2\uB5D6\u8EA2\uB5E8\u0000\uDADE\u0000\uDAD6" + // 22750 - 22754
-                "\u0000\u0000\u0000\u0000\u8EA2\uB5DB\u0000\uDFCD\u0000\uDADA" + // 22755 - 22759
-                "\u8EA2\uB5E3\u0000\u0000\u0000\uDAF0\u0000\uDAED\u8EA2\uB5DF" + // 22760 - 22764
-                "\u8EA2\uB5CE\u0000\u0000\u0000\u0000\u8EAD\uA1D3\u8EAD\uA1D4" + // 22765 - 22769
-                "\u8EAD\uA1D5\u8EAD\uA1D6\u8EAD\uA1D7\u8EAD\uA1D8\u8EAD\uA1D9" + // 22770 - 22774
-                "\u8EAD\uA1DA\u8EAD\uA1DB\u8EAD\uA1DC\u8EAD\uA1DD\u8EAD\uA1DE" + // 22775 - 22779
-                "\u8EAD\uA1DF\u8EAD\uA1E0\u8EAD\uA1E1\u8EAD\uA1E2\u8EAD\uA1E3" + // 22780 - 22784
-                "\u8EAD\uA1E4\u8EAD\uA1E5\u8EAD\uA1E6\u8EAD\uA1E7\u8EAD\uA1E8" + // 22785 - 22789
-                "\u8EAD\uA1E9\u8EAD\uA1EA\u8EAD\uA1EB\u8EAD\uA1EC\u8EAD\uA1ED" + // 22790 - 22794
-                "\u8EAD\uA1EE\u8EAD\uA1EF\u8EAD\uA1F0\u8EAD\uA1F1\u8EAD\uA1F2" + // 22795 - 22799
-                "\u8EAD\uA1F3\u8EAD\uA1F4\u8EAD\uA1F5\u8EAD\uA1F6\u8EAD\uA1F7" + // 22800 - 22804
-                "\u8EAD\uA1F8\u8EAD\uA1F9\u8EAD\uA1FA\u8EAD\uA1FB\u8EAD\uA1FC" + // 22805 - 22809
-                "\u8EAD\uA1FD\u8EAD\uA1FE\u8EAD\uA2A1\u8EAD\uA2A2\u8EAD\uA2A3" + // 22810 - 22814
-                "\u8EAD\uA2A4\u8EAD\uA2A5\u8EAD\uA2A6\u8EAD\uA2A7\u8EAD\uA2A8" + // 22815 - 22819
-                "\u8EAD\uA2A9\u8EAD\uA2AA\u8EAD\uA2AB\u8EAD\uA2AC\u8EAD\uA2AD" + // 22820 - 22824
-                "\u8EAD\uA2AE\u8EAD\uA2AF\u8EAD\uA2B0\u8EAD\uA2B1\u8EAD\uA2B2" + // 22825 - 22829
-                "\u8EAD\uA2B3\u8EA2\uAAE1\u0000\uD1BD\u0000\uD1C8\u8EA2\uAADA" + // 22830 - 22834
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD1C0\u0000\uD5D4" + // 22835 - 22839
-                "\u0000\uD1BA\u0000\u0000\u8EA2\uAAD7\u8EA2\uAADE\u8EA2\uAAD6" + // 22840 - 22844
-                "\u8EA2\uAAD9\u8EA2\uAADD\u8EA2\uAFB4\u0000\uD1C7\u0000\u0000" + // 22845 - 22849
-                "\u8EA2\uAAE2\u8EA2\uAAE3\u8EA2\uAAE5\u0000\uD1B9\u0000\u0000" + // 22850 - 22854
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22855 - 22859
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22860 - 22864
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22865 - 22869
-                "\u0000\u0000\u0000\uD5E3\u8EA2\uAFC0\u0000\uD5E1\u0000\uD5E2" + // 22870 - 22874
-                "\u8EA2\uAFB6\u8EA2\uAFC6\u0000\u0000\u0000\uD5D8\u0000\u0000" + // 22875 - 22879
-                "\u0000\u0000\u8EA2\uB5CA\u8EA2\uAFC8\u8EA2\uAFC2\u0000\u0000" + // 22880 - 22884
-                "\u8EA2\uAFB9\u0000\u0000\u8EA2\uAFCB\u8EA2\uAFBC\u0000\uD5DE" + // 22885 - 22889
-                "\u8EA2\uB5E1\u8EA2\uAFBF\u0000\uD5E0\u0000\uD5D7\u0000\u0000" + // 22890 - 22894
-                "\u8EA2\uBFD2\u0000\u0000\u0000\uE1D7\u0000\uE1EB\u0000\u0000" + // 22895 - 22899
-                "\u8EA2\uBFE1\u0000\uE1ED\u0000\u0000\u8EA2\uBFDD\u0000\uE1E2" + // 22900 - 22904
-                "\u0000\uE1DC\u0000\uE1E4\u0000\uE1D9\u0000\uE1EA\u8EA2\uBFDE" + // 22905 - 22909
-                "\u8EA2\uBFCC\u8EA2\uBFE0\u8EA2\uBFC7\u8EA2\uBFE9\u0000\u0000" + // 22910 - 22914
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22915 - 22919
-                "\u0000\u0000\u8EA2\uBFF2\u0000\u0000\u0000\u0000\u0000\u0000" + // 22920 - 22924
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBFC4" + // 22925 - 22929
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22930 - 22934
-                "\u8EA2\uC6EC\u0000\u0000\u8EA2\uC7A4\u0000\uE5DC\u8EA2\uC6F1" + // 22935 - 22939
-                "\u0000\u0000\u8EA2\uC6EF\u8EA2\uC6DA\u0000\uE6B0\u8EA2\uC6EA" + // 22940 - 22944
-                "\u8EA2\uC6FE\u8EA2\uC6E6\u0000\uE6B8\u8EA2\uC6FD\u8EA2\uC6E4" + // 22945 - 22949
-                "\u0000\uE1E9\u8EA2\uC6F4\u8EA2\uC6E5\u8EA2\uC6FB\u0000\uE6B7" + // 22950 - 22954
-                "\u0000\uE6AF\u0000\u0000\u8EA2\uC6CF\u0000\uCAC0\u8EA2\uA4B3" + // 22955 - 22959
-                "\u0000\u0000\u8EA2\uA4A9\u0000\uCABD\u0000\u0000\u0000\uCAD0" + // 22960 - 22964
-                "\u8EA2\uA4AE\u8EA2\uA4B4\u0000\uCAC2\u0000\uCAC4\u0000\u0000" + // 22965 - 22969
-                "\u8EA2\uA4AA\u0000\u0000\u8EA2\uA4AB\u8EA2\uA4AC\u0000\u0000" + // 22970 - 22974
-                "\u0000\uCACF\u0000\uCAC9\u0000\uCACE\u8EA2\uA4AD\u0000\uCACD" + // 22975 - 22979
-                "\u0000\uCABF\u0000\uCABE\u0000\uCACB\u0000\u0000\u0000\u0000" + // 22980 - 22984
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22985 - 22989
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22990 - 22994
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCDE3\u8EA2\uA6FD" + // 22995 - 22999
-                "\u8EA2\uA6F6\u0000\uCDDE\u0000\uCDF1\u8EA2\uA6F2\u8EA2\uA6F9" + // 23000 - 23004
-                "\u8EA2\uA6FB\u8EA2\uA6FE\u0000\uCDEC\u0000\u0000\u8EA2\uA6FA" + // 23005 - 23009
-                "\u8EA2\uA6F3\u0000\uCDEA\u8EA2\uA6F7\u0000\u0000\u8EA2\uA7A1" + // 23010 - 23014
-                "\u0000\uCDDB\u0000\u0000\u8EA2\uA6FC\u0000\uCDE5\u0000\uCDE4" + // 23015 - 23019
-                "\u8EA2\uA6F5\u0000\uCDD9\u0000\uCDD4\u0000\uD1B7\u8EA2\uAAD3" + // 23020 - 23024
-                "\u8EA2\uAAD4\u0000\u0000\u0000\u0000\u8EA2\uAFB2\u0000\uD5D2" + // 23025 - 23029
-                "\u0000\uDAD3\u0000\uDFBD\u8EA2\uBBF4\u0000\uC5C3\u0000\u0000" + // 23030 - 23034
-                "\u0000\uC4DF\u0000\uC5C4\u0000\u0000\u8EA2\uA1DE\u0000\uC6D7" + // 23035 - 23039
-                "\u0000\uC6D6\u0000\uC6D4\u0000\uC6D5\u0000\u0000\u0000\u0000" + // 23040 - 23044
-                "\u0000\u0000\u0000\uC8AC\u8EA2\uA2C9\u8EA2\uA2CB\u0000\uC8AB" + // 23045 - 23049
-                "\u8EA2\uA2C3\u0000\u0000\u8EA2\uA2C4\u0000\u0000\u8EA2\uA2CA" + // 23050 - 23054
-                "\u8EA2\uA2C6\u8EA2\uA2C8\u0000\uC8AA\u8EA2\uA2C5\u8EA2\uA2CC" + // 23055 - 23059
-                "\u8EA2\uA2C7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23060 - 23064
-                "\u0000\u0000\u0000\u0000\u0000\uCAC3\u0000\uCACC\u0000\uCACA" + // 23065 - 23069
-                "\u8EA2\uA4B2\u8EA2\uA4AF\u8EA2\uA4B7\u0000\uCAC8\u8EA2\uA4B8" + // 23070 - 23074
-                "\u0000\u0000\u0000\uCAC1\u8EA2\uA4B5\u0000\u0000\u0000\uCAC7" + // 23075 - 23079
-                "\u8EA2\uA4B1\u8EA2\uA4B0\u0000\uCAC5\u8EA2\uA4B6\u0000\uCAC6" + // 23080 - 23084
-                "\u0000\uCDD5\u0000\uFCB6\u8EA2\uEFA8\u0000\u0000\u8EA2\uEFA9" + // 23085 - 23089
-                "\u8EA2\uEFAA\u0000\u0000\u0000\u0000\u8EA2\uF2AA\u0000\uC5C1" + // 23090 - 23094
-                "\u8EA2\uA1DD\u0000\uC6D3\u0000\u0000\u0000\uC8A7\u0000\uC8A8" + // 23095 - 23099
-                "\u0000\uC8A6\u0000\u0000\u0000\uC8A9\u0000\uCABC\u0000\uCABB" + // 23100 - 23104
-                "\u0000\u0000\u8EA2\uA6F0\u0000\uCDD1\u0000\uCDD0\u0000\u0000" + // 23105 - 23109
-                "\u0000\u0000\u8EA2\uAFB1\u0000\uDAD1\u0000\uDAD2\u0000\u0000" + // 23110 - 23114
-                "\u0000\u0000\u0000\u0000\u0000\uDFBC\u8EA2\uC2F8\u0000\uE4A8" + // 23115 - 23119
-                "\u0000\uE4A9\u8EA2\uC2FA\u8EA2\uC2FC\u8EA2\uC2FB\u0000\u0000" + // 23120 - 23124
-                "\u8EA2\uCABE\u0000\u0000\u8EA2\uCABD\u0000\uE8F0\u8EA2\uCABF" + // 23125 - 23129
-                "\u0000\u0000\u8EA2\uD0D3\u0000\uECF6\u0000\u0000\u0000\uF0DD" + // 23130 - 23134
-                "\u0000\u0000\u0000\uF3E1\u0000\uF6C3\u0000\uF3E2\u0000\u0000" + // 23135 - 23139
-                "\u0000\uC5C2\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA4A8" + // 23140 - 23144
-                "\u0000\u0000\u0000\u0000\u8EA2\uA6F1\u0000\uCDD3\u0000\uCDD2" + // 23145 - 23149
-                "\u8EA2\uCAB3\u0000\u0000\u0000\uECE8\u8EA2\uD0C2\u0000\u0000" + // 23150 - 23154
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD0C7" + // 23155 - 23159
-                "\u0000\uF0D7\u8EA2\uD0C1\u8EA2\uD7AE\u8EA2\uD0D0\u0000\uECF0" + // 23160 - 23164
-                "\u0000\u0000\u0000\uECEE\u0000\uF0D5\u8EA2\uD0CD\u8EA2\uD0C9" + // 23165 - 23169
-                "\u0000\uECF4\u0000\u0000\u8EA2\uD7A5\u0000\u0000\u0000\u0000" + // 23170 - 23174
-                "\u0000\u0000\u0000\uECF2\u8EA2\uD0C8\u0000\u0000\u8EA2\uD7A3" + // 23175 - 23179
-                "\u0000\u0000\u8EA2\uD0CC\u0000\u0000\u8EA2\uD0CF\u8EA2\uD0C6" + // 23180 - 23184
-                "\u0000\u0000\u0000\uECF3\u0000\u0000\u0000\u0000\u0000\uECED" + // 23185 - 23189
-                "\u8EA2\uD7A4\u0000\uF0D6\u8EA2\uD0CE\u0000\uECEF\u0000\uECF1" + // 23190 - 23194
-                "\u8EA2\uD0CB\u0000\uECF5\u8EA2\uD0CA\u8EA2\uD0C5\u8EA2\uD0C4" + // 23195 - 23199
-                "\u0000\uF0D4\u8EA2\uD0D2\u8EA2\uD7A7\u8EA2\uDCEB\u0000\uF0D9" + // 23200 - 23204
-                "\u0000\u0000\u8EA2\uD7AD\u0000\u0000\u8EA2\uD7AB\u0000\u0000" + // 23205 - 23209
-                "\u8EA2\uDCEC\u0000\u0000\u0000\uF0DA\u8EA2\uD7AC\u8EA2\uC2F7" + // 23210 - 23214
-                "\u8EA2\uCAAB\u0000\u0000\u0000\u0000\u0000\uE3FE\u8EA2\uC2EF" + // 23215 - 23219
-                "\u8EA2\uC2F3\u0000\uE8E6\u0000\uE3F5\u8EA2\uC2EC\u8EA2\uC2ED" + // 23220 - 23224
-                "\u0000\uE8E8\u0000\uE3FD\u0000\uE4A1\u0000\uE3FC\u8EA2\uC2F5" + // 23225 - 23229
-                "\u0000\u0000\u0000\u0000\u8EA2\uCAAF\u8EA2\uCAB0\u8EA2\uCAB5" + // 23230 - 23234
-                "\u0000\uECE7\u8EA2\uCABC\u0000\u0000\u0000\uE8EE\u0000\u0000" + // 23235 - 23239
-                "\u0000\uE8ED\u8EA2\uCAB7\u0000\u0000\u0000\uECE6\u8EA2\uCAAC" + // 23240 - 23244
-                "\u0000\uE8EC\u0000\u0000\u8EA2\uCABB\u0000\uE8EA\u0000\uE8EB" + // 23245 - 23249
-                "\u0000\u0000\u8EA2\uCAB8\u8EA2\uD0D1\u0000\uECE4\u0000\uDFB5" + // 23250 - 23254
-                "\u0000\u0000\u8EA2\uCABA\u0000\uECEB\u8EA2\uCAB2\u0000\u0000" + // 23255 - 23259
-                "\u0000\uECE5\u0000\u0000\u0000\uECEA\u8EA2\uCAAD\u8EA2\uCAB1" + // 23260 - 23264
-                "\u8EA2\uCAAE\u8EA2\uCAB4\u0000\uE8EF\u0000\uECE3\u0000\uE8E9" + // 23265 - 23269
-                "\u0000\u0000\u8EA2\uD0C3\u8EA2\uCAB6\u0000\u0000\u0000\uECE9" + // 23270 - 23274
-                "\u0000\u0000\u0000\uECEC\u0000\u0000\u8EA2\uB8E6\u0000\u0000" + // 23275 - 23279
-                "\u8EA2\uB8ED\u0000\u0000\u0000\u0000\u0000\uDDA6\u8EA2\uB8FB" + // 23280 - 23284
-                "\u8EA2\uB8F6\u0000\uDDA1\u0000\uDCFD\u8EA2\uB8F2\u8EA2\uB8EE" + // 23285 - 23289
-                "\u8EA2\uB8E0\u0000\uDCF4\u8EA2\uB8E5\u8EA2\uB8DD\u0000\u0000" + // 23290 - 23294
-                "\u0000\uDCFC\u0000\uDCFE\u8EA2\uB8EA\u8EA2\uB8E7\u0000\uDCF9" + // 23295 - 23299
-                "\u8EA2\uB8F7\u0000\uDCF6\u8EA2\uB8E8\u8EA2\uBFEA\u8EA2\uB8F0" + // 23300 - 23304
-                "\u0000\u0000\u8EA2\uB8EF\u0000\uDCF5\u0000\u0000\u0000\uDDA2" + // 23305 - 23309
-                "\u0000\u0000\u0000\uDCF8\u8EA2\uB8DE\u8EA2\uB8E3\u8EA2\uB8F4" + // 23310 - 23314
-                "\u8EA2\uB8FA\u0000\uDDA7\u8EA2\uB8DF\u8EA2\uB8EB\u8EA2\uB8F1" + // 23315 - 23319
-                "\u0000\uDCFB\u0000\u0000\u0000\u0000\u8EA2\uB8FC\u8EA2\uB8F5" + // 23320 - 23324
-                "\u8EA2\uB8F8\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23325 - 23329
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23330 - 23334
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDCFA\u0000\u0000" + // 23335 - 23339
-                "\u8EA2\uBFD1\u0000\uDFBA\u0000\uE3FA\u0000\u0000\u8EA2\uBBED" + // 23340 - 23344
-                "\u8EA2\uBBF2\u8EA2\uBBE6\u0000\uE4A6\u0000\u0000\u0000\uE3FB" + // 23345 - 23349
-                "\u0000\uDFB9\u8EA2\uBBE4\u8EA2\uBBF3\u0000\u0000\u0000\uE4A5" + // 23350 - 23354
-                "\u0000\uDFB7\u0000\uE3F4\u8EA2\uBBF0\u0000\u0000\u0000\uDFBB" + // 23355 - 23359
-                "\u8EA2\uBBE8\u8EA2\uBBE2\u0000\uDFB1\u8EA2\uBBE5\u0000\u0000" + // 23360 - 23364
-                "\u8EA2\uBBEE\u0000\u0000\u0000\uE3F3\u0000\uE3F8\u0000\uDFAE" + // 23365 - 23369
-                "\u8EA2\uBBEF\u0000\u0000\u0000\uE3F6\u0000\u0000\u0000\u0000" + // 23370 - 23374
-                "\u0000\u0000\u0000\uDFAF\u0000\u0000\u0000\u0000\u0000\u0000" + // 23375 - 23379
-                "\u0000\uE4A4\u8EA2\uCAAA\u8EA2\uC2F6\u0000\u0000\u8EA2\uC2EE" + // 23380 - 23384
-                "\u8EA2\uCAA9\u0000\u0000\u8EA2\uC2F2\u8EA2\uC2F4\u0000\u0000" + // 23385 - 23389
-                "\u0000\u0000\u8EA2\uC2F1\u0000\u0000\u0000\uE4A3\u0000\u0000" + // 23390 - 23394
-                "\u8EA2\uC2F0\u0000\uE4A7\u0000\u0000\u0000\u0000\u0000\u0000" + // 23395 - 23399
-                "\u8EA2\uCAB9\u0000\u0000\u0000\u0000\u0000\uE4A2\u0000\uE8E7" + // 23400 - 23404
-                "\u8EA2\uB5C9\u8EA2\uBBEC\u0000\u0000\u8EA2\uB5C7\u8EA2\uBBE1" + // 23405 - 23409
-                "\u0000\uDAC5\u0000\uDACC\u0000\uDAD0\u8EA2\uB5C1\u8EA2\uBBDC" + // 23410 - 23414
-                "\u8EA2\uB5C5\u0000\uDAC1\u8EA2\uBBDE\u8EA2\uB5C8\u8EA2\uBBE0" + // 23415 - 23419
-                "\u8EA2\uB5BD\u0000\u0000\u0000\uDFA9\u0000\u0000\u8EA2\uB5BB" + // 23420 - 23424
-                "\u8EA2\uB5BC\u0000\uDACB\u0000\u0000\u0000\u0000\u0000\uDACA" + // 23425 - 23429
-                "\u8EA2\uB5BF\u0000\uDACF\u8EA2\uB5C3\u0000\uDAC8\u8EA2\uB5C0" + // 23430 - 23434
-                "\u0000\u0000\u0000\uDACD\u0000\uDFAD\u0000\uDFAA\u8EA2\uBBDF" + // 23435 - 23439
-                "\u0000\u0000\u8EA2\uB5BE\u0000\u0000\u0000\uDAC3\u0000\u0000" + // 23440 - 23444
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23445 - 23449
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDFB2\u0000\uDFB6" + // 23450 - 23454
-                "\u8EA2\uBBE3\u0000\uE3F7\u0000\uDFB4\u8EA2\uBBE7\u0000\uDFB8" + // 23455 - 23459
-                "\u8EA2\uC2EB\u8EA2\uBBE9\u0000\uE3F9\u0000\uDFB0\u0000\uDFB3" + // 23460 - 23464
-                "\u8EA2\uBBEA\u0000\u0000\u8EA2\uBBEB\u8EA2\uBBF1\u8EA2\uAFA6" + // 23465 - 23469
-                "\u8EA2\uAFA8\u0000\u0000\u8EA2\uAFAA\u0000\uD5CA\u0000\uD5D0" + // 23470 - 23474
-                "\u8EA2\uB5B7\u8EA2\uAFAE\u8EA2\uAFA5\u0000\uDABE\u8EA2\uB5B5" + // 23475 - 23479
-                "\u0000\u0000\u0000\uD5CF\u0000\uD5CD\u8EA2\uAFB0\u0000\u0000" + // 23480 - 23484
-                "\u8EA2\uB5B6\u0000\u0000\u8EA2\uAFA7\u0000\u0000\u0000\uD5CE" + // 23485 - 23489
-                "\u8EA2\uAFAB\u0000\uD5D1\u8EA2\uAFAD\u0000\u0000\u0000\u0000" + // 23490 - 23494
-                "\u0000\uD5CC\u8EA2\uAFAC\u8EA2\uAFAF\u8EA2\uAFA9\u0000\u0000" + // 23495 - 23499
-                "\u0000\uD5CB\u0000\uDABF\u0000\u0000\u8EA2\uAFA4\u0000\uDABD" + // 23500 - 23504
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDAC0" + // 23505 - 23509
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23510 - 23514
-                "\u0000\u0000\u0000\u0000\u8EA2\uB5B9\u8EA2\uB5C2\u0000\uDFAB" + // 23515 - 23519
-                "\u0000\u0000\u0000\uDAC2\u0000\uDAC7\u0000\uDFAC\u8EA2\uB5C4" + // 23520 - 23524
-                "\u0000\uDACE\u8EA2\uBBDD\u8EA2\uB5BA\u0000\uDAC6\u0000\uDAC9" + // 23525 - 23529
-                "\u0000\uDAC4\u8EA2\uB5B8\u8EA2\uB5C6\u8EA2\uAACB\u8EA2\uAFA3" + // 23530 - 23534
-                "\u8EA2\uAACC\u0000\uD1B2\u8EA2\uAACF\u8EA2\uAAC5\u0000\uD1B1" + // 23535 - 23539
-                "\u8EA2\uAAC7\u0000\u0000\u8EA2\uAAC8\u0000\u0000\u0000\u0000" + // 23540 - 23544
-                "\u8EA2\uAACA\u0000\uD1AD\u0000\u0000\u0000\u0000\u0000\uD5C5" + // 23545 - 23549
-                "\u0000\u0000\u0000\u0000\u8EA2\uAAC6\u8EA2\uAAC2\u0000\uD5C6" + // 23550 - 23554
-                "\u0000\u0000\u0000\u0000\u8EA2\uAAD0\u0000\uD5C2\u8EA2\uAFA1" + // 23555 - 23559
-                "\u8EA2\uAAC9\u0000\u0000\u8EA2\uAEFE\u8EA2\uAAC4\u8EA2\uAACD" + // 23560 - 23564
-                "\u0000\u0000\u0000\u0000\u0000\uD1B0\u0000\uD5C3\u0000\uD1B6" + // 23565 - 23569
-                "\u0000\uD5C4\u8EA2\uAAD1\u8EA2\uAFA2\u0000\uD1AF\u0000\uD5C8" + // 23570 - 23574
-                "\u0000\uD1B5\u0000\uD1B4\u0000\uD1B3\u0000\uD5C7\u8EA2\uAAD2" + // 23575 - 23579
-                "\u0000\uD5C9\u0000\uD1AE\u0000\u0000\u8EA2\uAAC3\u0000\u0000" + // 23580 - 23584
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23585 - 23589
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23590 - 23594
-                "\u0000\u0000\u0000\uDABC\u8EA2\uA4A6\u0000\u0000\u0000\u0000" + // 23595 - 23599
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23600 - 23604
-                "\u0000\u0000\u8EA2\uA6EE\u8EA2\uA6E1\u8EA2\uA6DF\u8EA2\uA6ED" + // 23605 - 23609
-                "\u8EA2\uA6E8\u0000\uD1AB\u0000\uCDC4\u8EA2\uA6E9\u8EA2\uA6EC" + // 23610 - 23614
-                "\u0000\uD1A7\u8EA2\uA6EB\u0000\uCDC5\u0000\uCDCA\u0000\uCDC8" + // 23615 - 23619
-                "\u8EA2\uA6E2\u0000\u0000\u8EA2\uA6DD\u8EA2\uA6E4\u0000\uCDCF" + // 23620 - 23624
-                "\u8EA2\uA6EF\u0000\uD1A8\u8EA2\uA6E5\u0000\u0000\u0000\uD1A9" + // 23625 - 23629
-                "\u0000\uCDCB\u8EA2\uA6E7\u0000\u0000\u8EA2\uAACE\u0000\uD1AA" + // 23630 - 23634
-                "\u8EA2\uA6DC\u0000\uCDCC\u0000\uD1AC\u0000\uCDCD\u0000\uCDC9" + // 23635 - 23639
-                "\u0000\uCDCE\u8EA2\uA6E6\u8EA2\uA6DB\u8EA2\uA6EA\u0000\uCDC6" + // 23640 - 23644
-                "\u0000\u0000\u0000\u0000\u8EA2\uA6DE\u8EA2\uA6E3\u8EA2\uA6E0" + // 23645 - 23649
-                "\u0000\uCDC7\u0000\u0000\u8EA2\uAAC0\u0000\u0000\u8EA2\uAAC1" + // 23650 - 23654
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23655 - 23659
-                "\u0000\u0000\u8EA2\uA4BE\u0000\uCADF\u8EA2\uA4BF\u8EA2\uA4C3" + // 23660 - 23664
-                "\u0000\uCADE\u0000\u0000\u8EA2\uA4C7\u8EA2\uA4C2\u8EA2\uA4C5" + // 23665 - 23669
-                "\u0000\uCAD7\u0000\uCAD8\u0000\uCAD9\u0000\uCADA\u0000\u0000" + // 23670 - 23674
-                "\u0000\uCAE1\u0000\u0000\u8EA2\uA4C1\u0000\uCADC\u0000\uCAE2" + // 23675 - 23679
-                "\u0000\u0000\u8EA2\uA4C0\u8EA2\uA4C6\u0000\u0000\u0000\uCADB" + // 23680 - 23684
-                "\u8EA2\uA4C4\u0000\uCADD\u0000\uCAD6\u0000\uCAE0\u0000\u0000" + // 23685 - 23689
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23690 - 23694
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCEBA\u0000\u0000" + // 23695 - 23699
-                "\u8EA2\uA7B5\u0000\uCEA6\u0000\u0000\u0000\uCEB0\u0000\uCEB1" + // 23700 - 23704
-                "\u0000\uCEA9\u0000\uCEBB\u0000\uCEAB\u8EA2\uA7BD\u0000\uCEB6" + // 23705 - 23709
-                "\u8EA2\uA7B8\u0000\uCEAC\u8EA2\uA7C7\u8EA2\uA7C8\u8EA2\uA7C0" + // 23710 - 23714
-                "\u8EA2\uA7B9\u0000\uCEB9\u8EA2\uA7C5\u0000\uCEB4\u0000\uCEB2" + // 23715 - 23719
-                "\u8EA2\uE8F4\u8EA2\uE8F5\u0000\u0000\u0000\uC5C0\u0000\u0000" + // 23720 - 23724
-                "\u0000\uC6D2\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA1DC" + // 23725 - 23729
-                "\u0000\u0000\u0000\u0000\u0000\uCAB4\u0000\uCAB6\u0000\u0000" + // 23730 - 23734
-                "\u8EA2\uA2C2\u8EA2\uA3F8\u8EA2\uA3F7\u8EA2\uA3F6\u0000\u0000" + // 23735 - 23739
-                "\u8EA2\uA2C1\u8EA2\uA2C0\u0000\uC8A5\u0000\uCAB5\u0000\uCAB3" + // 23740 - 23744
-                "\u0000\uC8A4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCDBF" + // 23745 - 23749
-                "\u8EA2\uA6D9\u0000\u0000\u0000\uCDC0\u8EA2\uA3FD\u0000\u0000" + // 23750 - 23754
-                "\u8EA2\uA4A1\u8EA2\uA3FE\u8EA2\uA6DA\u0000\u0000\u0000\u0000" + // 23755 - 23759
-                "\u8EA2\uA3FA\u0000\u0000\u0000\uCABA\u0000\uCAB8\u0000\u0000" + // 23760 - 23764
-                "\u8EA2\uA3F9\u8EA2\uA3FB\u8EA2\uA4A3\u0000\u0000\u0000\uCAB7" + // 23765 - 23769
-                "\u0000\u0000\u8EA2\uA3FC\u8EA2\uA4A7\u0000\uCDC2\u0000\u0000" + // 23770 - 23774
-                "\u8EA2\uA4A4\u0000\uCAB9\u0000\u0000\u8EA2\uA4A2\u8EA2\uA4A5" + // 23775 - 23779
-                "\u0000\u0000\u0000\uCDC1\u0000\u0000\u0000\uCDC3\u0000\uCDBB" + // 23780 - 23784
-                "\u0000\uCDBC\u8EA2\uA6D6\u0000\u0000\u0000\u0000\u0000\uD1A1" + // 23785 - 23789
-                "\u8EA2\uAABF\u0000\uD1A4\u0000\uD0FE\u0000\uD1A6\u0000\uD1A2" + // 23790 - 23794
-                "\u0000\uD1A3\u0000\uD1A5\u0000\u0000\u0000\u0000\u0000\u0000" + // 23795 - 23799
-                "\u0000\uD5C1\u0000\uD5C0\u0000\uD5BF\u0000\u0000\u0000\u0000" + // 23800 - 23804
-                "\u0000\u0000\u8EA2\uB5B3\u0000\uDAB5\u0000\uDAB8\u0000\uDAB6" + // 23805 - 23809
-                "\u0000\u0000\u8EA2\uB5B2\u0000\uDABB\u0000\u0000\u0000\uDAB7" + // 23810 - 23814
-                "\u8EA2\uB5B4\u0000\uDABA\u0000\uDAB9\u0000\u0000\u0000\u0000" + // 23815 - 23819
-                "\u0000\u0000\u8EA2\uBBDA\u8EA2\uBBD9\u0000\u0000\u0000\uDFA8" + // 23820 - 23824
-                "\u0000\uDFA6\u0000\uDFA7\u8EA2\uBBDB\u0000\uE3F1\u8EA2\uC2EA" + // 23825 - 23829
-                "\u0000\uE3F2\u8EA2\uC2E9\u0000\u0000\u0000\u0000\u8EA2\uD0C0" + // 23830 - 23834
-                "\u0000\u0000\u0000\u0000\u0000\uECE2\u8EA2\uCAA8\u0000\uECE1" + // 23835 - 23839
-                "\u0000\u0000\u0000\uE8E5\u0000\u0000\u8EA2\uD7A2\u8EA2\uD7A1" + // 23840 - 23844
-                "\u0000\uF3DB\u8EA2\uDCE9\u8EA2\uE5CB\u8EA2\uC2E8\u0000\u0000" + // 23845 - 23849
-                "\u0000\u0000\u8EA2\uCAA6\u8EA2\uCAA5\u0000\u0000\u0000\uE8E3" + // 23850 - 23854
-                "\u0000\u0000\u0000\uECDF\u8EA2\uD0BF\u0000\uF0D3\u8EA2\uD6FE" + // 23855 - 23859
-                "\u0000\uF3DA\u0000\u0000\u0000\uFBDF\u8EA2\uEFA7\u0000\uA7D9" + // 23860 - 23864
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA6D5\u0000\u0000" + // 23865 - 23869
-                "\u8EA2\uAABE\u0000\uDAB1\u8EA2\uBBD8\u0000\uE3F0\u0000\u0000" + // 23870 - 23874
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF6C1\u0000\u0000" + // 23875 - 23879
-                "\u0000\u0000\u0000\uA7DA\u0000\uCAB0\u0000\u0000\u0000\uCAAF" + // 23880 - 23884
-                "\u0000\uD0FD\u0000\u0000\u8EA2\uAEFD\u0000\u0000\u0000\uDAB3" + // 23885 - 23889
-                "\u0000\uDDA9\u0000\uDAB4\u0000\uDAB2\u0000\uDFA5\u0000\u0000" + // 23890 - 23894
-                "\u8EA2\uCAA7\u0000\uE8E4\u0000\uECE0\u0000\u0000\u8EA2\uA1AC" + // 23895 - 23899
-                "\u8EA2\uA2BF\u0000\u0000\u8EA2\uA3F5\u0000\uCAB1\u8EA2\uA3F4" + // 23900 - 23904
-                "\u0000\uCAB2\u0000\u0000\u0000\u0000\u0000\uCDBE\u8EA2\uA6D8" + // 23905 - 23909
-                "\u8EA2\uA6D7\u0000\uCDBD\u8EA2\uA1DA\u0000\u0000\u8EA2\uA1DB" + // 23910 - 23914
-                "\u0000\u0000\u8EA2\uA2BC\u0000\u0000\u0000\u0000\u0000\uCAAA" + // 23915 - 23919
-                "\u8EA2\uA3F0\u8EA2\uA3EE\u0000\uCAAB\u8EA2\uA3ED\u8EA2\uA3EF" + // 23920 - 23924
-                "\u8EA2\uA3F1\u0000\u0000\u0000\uCAA9\u0000\u0000\u0000\u0000" + // 23925 - 23929
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCDB5\u0000\uCDB6" + // 23930 - 23934
-                "\u0000\uCDB3\u0000\u0000\u0000\u0000\u0000\uCDB2\u8EA2\uAAB9" + // 23935 - 23939
-                "\u0000\uCDB4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0F8" + // 23940 - 23944
-                "\u0000\u0000\u8EA2\uAAB8\u8EA2\uAABA\u8EA2\uAAB7\u8EA2\uAABB" + // 23945 - 23949
-                "\u0000\uD0F9\u0000\uD5BD\u8EA2\uAEF7\u0000\u0000\u8EA2\uAEF9" + // 23950 - 23954
-                "\u0000\uD5BB\u8EA2\uAEFA\u0000\uD5BC\u8EA2\uAEF8\u0000\u0000" + // 23955 - 23959
-                "\u8EA2\uAAB6\u8EA2\uB5AB\u8EA2\uB5AE\u8EA2\uB5AF\u8EA2\uB5AC" + // 23960 - 23964
-                "\u0000\uDAAD\u0000\uDAAC\u0000\uDAAA\u0000\uDAAB\u8EA2\uB5AD" + // 23965 - 23969
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDAAE" + // 23970 - 23974
-                "\u0000\u0000\u0000\uE5DB\u8EA2\uC5DA\u0000\u0000\u0000\u0000" + // 23975 - 23979
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCCC8\u0000\u0000" + // 23980 - 23984
-                "\u8EA2\uCCC1\u8EA2\uCCC2\u0000\u0000\u0000\uE9FE\u0000\uE9FC" + // 23985 - 23989
-                "\u0000\uE9FD\u8EA2\uCCCA\u0000\u0000\u8EA2\uCCC9\u8EA2\uCCC6" + // 23990 - 23994
-                "\u8EA2\uCCC5\u8EA2\uCCC4\u8EA2\uCCC3\u8EA2\uCCC7\u8EA2\uCCC0" + // 23995 - 23999
-                "\u0000\u0000\u8EA2\uD2D3\u8EA2\uD2D8\u8EA2\uD2D6\u0000\u0000" + // 24000 - 24004
-                "\u0000\u0000\u0000\u0000\u8EA2\uD2D5\u8EA2\uD2D4\u8EA2\uD2D7" + // 24005 - 24009
-                "\u0000\u0000\u8EA2\uD8F8\u0000\u0000\u0000\uF1D7\u0000\uF4D2" + // 24010 - 24014
-                "\u8EA2\uDDFB\u0000\u0000\u0000\uF4D3\u8EA2\uDDFA\u8EA2\uE2CB" + // 24015 - 24019
-                "\u8EA2\uE2CA\u0000\uF6F1\u0000\u0000\u8EA2\uE6AF\u0000\uF8D6" + // 24020 - 24024
-                "\u8EA2\uE9CE\u0000\uFBEB\u8EA2\uEDE5\u0000\u0000\u8EA2\uF0C5" + // 24025 - 24029
-                "\u8EA2\uF0C4\u8EA2\uA1E7\u0000\uD2ED\u0000\uD2EE\u8EA2\uB7E6" + // 24030 - 24034
-                "\u0000\u0000\u0000\uE5DD\u0000\uC6FD\u0000\uCBB5\u0000\uDEFB" + // 24035 - 24039
-                "\u8EA2\uBBD7\u0000\u0000\u0000\uDEFC\u8EA2\uBBD6\u0000\uDEF9" + // 24040 - 24044
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC2E0" + // 24045 - 24049
-                "\u8EA2\uC2E2\u0000\uE3EB\u8EA2\uC2E1\u8EA2\uC2DF\u8EA2\uC2DE" + // 24050 - 24054
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC9F9\u0000\uE8DF" + // 24055 - 24059
-                "\u0000\uE8DD\u0000\u0000\u0000\uE8DE\u8EA2\uC9F7\u8EA2\uC9F8" + // 24060 - 24064
-                "\u0000\u0000\u0000\uE8DB\u8EA2\uD0BA\u8EA2\uD0B8\u0000\u0000" + // 24065 - 24069
-                "\u0000\uECD7\u8EA2\uD0B9\u0000\uECD8\u0000\uECD6\u0000\uE8DC" + // 24070 - 24074
-                "\u0000\u0000\u0000\u0000\u8EA2\uD6F7\u8EA2\uD6F5\u8EA2\uD6F6" + // 24075 - 24079
-                "\u8EA2\uD0B7\u8EA2\uDCE8\u0000\uF3D9\u8EA2\uDCE7\u8EA2\uE1D1" + // 24080 - 24084
-                "\u8EA2\uE1D2\u8EA2\uD6F8\u8EA2\uE5CA\u0000\u0000\u0000\uC4DB" + // 24085 - 24089
-                "\u0000\uC6CD\u0000\uC8A1\u8EA2\uA2BB\u0000\uC7FE\u0000\u0000" + // 24090 - 24094
-                "\u0000\uCDB1\u0000\uE3EC\u0000\uA7D3\u0000\uC5BC\u0000\uC6CE" + // 24095 - 24099
-                "\u0000\uD0F7\u0000\uDEFD\u0000\uA7D4\u8EA2\uE1D0\u0000\u0000" + // 24100 - 24104
-                "\u8EA2\uE4BE\u8EA2\uE5C9\u0000\u0000\u0000\u0000\u8EA2\uE8F0" + // 24105 - 24109
-                "\u8EA2\uE8F1\u0000\u0000\u0000\uF9EB\u0000\u0000\u8EA2\uEBD7" + // 24110 - 24114
-                "\u0000\u0000\u0000\uFAE9\u0000\u0000\u8EA2\uEBD8\u0000\u0000" + // 24115 - 24119
-                "\u8EA2\uEDCC\u0000\uFBDE\u0000\u0000\u0000\uFBDD\u8EA2\uEDCB" + // 24120 - 24124
-                "\u0000\uFCB5\u0000\u0000\u8EA2\uEFA5\u0000\u0000\u0000\u0000" + // 24125 - 24129
-                "\u0000\uA7CE\u0000\u0000\u0000\uC4D5\u0000\uC7FC\u8EA2\uA2BA" + // 24130 - 24134
-                "\u8EA2\uA3EA\u0000\uCBD6\u0000\uDAA5\u0000\u0000\u0000\u0000" + // 24135 - 24139
-                "\u0000\uC4D6\u0000\uC6CA\u0000\uC6C9\u0000\uC6C8\u0000\u0000" + // 24140 - 24144
-                "\u0000\u0000\u0000\uCAA7\u0000\u0000\u0000\u0000\u0000\uD5B8" + // 24145 - 24149
-                "\u0000\u0000\u8EA2\uC2DD\u0000\uC4D7\u0000\uC4D8\u0000\uC4D9" + // 24150 - 24154
-                "\u0000\uC5BB\u0000\u0000\u0000\u0000\u0000\uD0F3\u0000\u0000" + // 24155 - 24159
-                "\u8EA2\uAAB0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDEF8" + // 24160 - 24164
-                "\u0000\uC4DA\u8EA2\uA1BD\u8EA2\uC9E9\u8EA2\uC9ED\u8EA2\uC9E8" + // 24165 - 24169
-                "\u0000\u0000\u0000\uE8D9\u0000\u0000\u8EA2\uC9EB\u0000\uE8DA" + // 24170 - 24174
-                "\u8EA2\uC9F1\u8EA2\uC9F0\u8EA2\uC9EF\u0000\u0000\u0000\u0000" + // 24175 - 24179
-                "\u8EA2\uC9F4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24180 - 24184
-                "\u8EA2\uD0AE\u8EA2\uD0B0\u0000\uECD5\u8EA2\uD0B1\u0000\u0000" + // 24185 - 24189
-                "\u8EA2\uD0AC\u0000\u0000\u8EA2\uD0AB\u8EA2\uD0B5\u0000\u0000" + // 24190 - 24194
-                "\u8EA2\uD0B3\u0000\uECD4\u8EA2\uD0B6\u8EA2\uD0AD\u8EA2\uD0B2" + // 24195 - 24199
-                "\u8EA2\uD0B4\u8EA2\uD0AF\u0000\u0000\u0000\u0000\u0000\u0000" + // 24200 - 24204
-                "\u0000\u0000\u8EA2\uD6EB\u8EA2\uD6F0\u8EA2\uD6EA\u8EA2\uD6EF" + // 24205 - 24209
-                "\u0000\u0000\u8EA2\uD6E8\u8EA2\uD6F2\u8EA2\uD6EE\u8EA2\uD6F3" + // 24210 - 24214
-                "\u8EA2\uD6ED\u8EA2\uD6E9\u8EA2\uD6F1\u0000\u0000\u8EA2\uD6F4" + // 24215 - 24219
-                "\u8EA2\uD6EC\u0000\u0000\u8EA2\uDCE6\u0000\uF3D8\u0000\u0000" + // 24220 - 24224
-                "\u0000\uF3D6\u0000\u0000\u0000\uF3D5\u0000\uF3D7\u0000\u0000" + // 24225 - 24229
-                "\u0000\u0000\u0000\uA3A4\u0000\uA3A5\u0000\uA3A6\u0000\uA3A7" + // 24230 - 24234
-                "\u0000\uA3A8\u0000\uA3A9\u0000\uA3AA\u0000\uA3AB\u0000\uA3B2" + // 24235 - 24239
-                "\u0000\uA3B1\u0000\uA3B0\u0000\uA3AF\u0000\uA3AE\u0000\uA3AD" + // 24240 - 24244
-                "\u0000\uA3AC\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24245 - 24249
-                "\u0000\uA3B8\u0000\uA3BB\u0000\u0000\u0000\u0000\u0000\u0000" + // 24250 - 24254
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24255 - 24259
-                "\u0000\u0000\u0000\u0000\u0000\uA1FC\u0000\uA1FB\u0000\u0000" + // 24260 - 24264
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24265 - 24269
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24270 - 24274
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24275 - 24279
-                "\u0000\uA1F5\u0000\uA1F4\u0000\u0000\u0000\u0000\u0000\u0000" + // 24280 - 24284
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24285 - 24289
-                "\u0000\uA1FE\u0000\uA1FD\u0000\u0000\u0000\u0000\u8EA2\uAFFD" + // 24290 - 24294
-                "\u0000\u0000\u0000\uE5FE\u0000\uE1C8\u0000\uE5FD\u0000\uEACE" + // 24295 - 24299
-                "\u0000\u0000\u0000\uC8D8\u8EA2\uA1E8\u0000\uC8D9\u0000\uC8DA" + // 24300 - 24304
-                "\u0000\u0000\u0000\u0000\u8EA2\uA8CB\u8EA2\uA4F6\u0000\u0000" + // 24305 - 24309
-                "\u8EA2\uA4F7\u0000\uCBBA\u0000\u0000\u8EA2\uA4F4\u0000\uCBB9" + // 24310 - 24314
-                "\u0000\u0000\u0000\uCBBC\u8EA2\uA4F5\u0000\uCBBE\u0000\uCBBD" + // 24315 - 24319
-                "\u8EA2\uA4F8\u0000\uCBBB\u0000\u0000\u0000\u0000\u0000\u0000" + // 24320 - 24324
-                "\u0000\uCFB4\u0000\uCFB2\u8EA2\uA8CD\u0000\u0000\u0000\uCFB1" + // 24325 - 24329
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCFB6\u0000\uCFB8" + // 24330 - 24334
-                "\u0000\uCFB5\u0000\u0000\u8EA2\uA8D0\u8EA2\uA8CC\u0000\uCFB9" + // 24335 - 24339
-                "\u0000\u0000\u0000\uCFB3\u0000\uCBBF\u0000\u0000\u0000\uCFB7" + // 24340 - 24344
-                "\u8EA2\uA8CF\u0000\u0000\u0000\u0000\u8EA2\uA8CE\u0000\u0000" + // 24345 - 24349
-                "\u0000\uCFB0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24350 - 24354
-                "\u0000\u0000\u0000\uA2EA\u0000\u0000\u0000\uA2A2\u0000\u0000" + // 24355 - 24359
-                "\u0000\u0000\u0000\u0000\u0000\uA2EB\u0000\u0000\u0000\u0000" + // 24360 - 24364
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24365 - 24369
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24370 - 24374
-                "\u8EAD\uA4C5\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24375 - 24379
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24380 - 24384
-                "\u0000\u0000\u8EAD\uA4C6\u0000\u0000\u0000\u0000\u0000\u0000" + // 24385 - 24389
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24390 - 24394
-                "\u0000\u0000\u8EAD\uA1CA\u0000\u0000\u0000\u0000\u0000\u0000" + // 24395 - 24399
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24400 - 24404
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24405 - 24409
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24410 - 24414
-                "\u0000\u0000\u0000\u0000\u8EAD\uA1AF\u0000\u0000\u0000\u0000" + // 24415 - 24419
-                "\u0000\u0000\u0000\uA1B7\u0000\u0000\u0000\u0000\u0000\u0000" + // 24420 - 24424
-                "\u0000\uA1E4\u0000\uA1E5\u0000\u0000\u0000\u0000\u0000\uA1E6" + // 24425 - 24429
-                "\u0000\uA1E7\u0000\u0000\u0000\u0000\u8EAD\uA1CF\u8EAD\uA1D0" + // 24430 - 24434
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA1AD\u0000\uA1AC" + // 24435 - 24439
-                "\u0000\uA1A6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24440 - 24444
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1CB" + // 24445 - 24449
-                "\u0000\u0000\u0000\uA1EB\u8EAD\uA1B3\u0000\u0000\u0000\uA1EA" + // 24450 - 24454
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24455 - 24459
-                "\u0000\uA1EF\u0000\u0000\u0000\u0000\u0000\uA2A3\u0000\u0000" + // 24460 - 24464
-                "\u0000\uF4D1\u8EA2\uDDF1\u0000\u0000\u8EA2\uDDF9\u8EA2\uDDF6" + // 24465 - 24469
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE2C6\u0000\u0000" + // 24470 - 24474
-                "\u0000\u0000\u8EA2\uE2C3\u0000\u0000\u0000\uF6F0\u0000\u0000" + // 24475 - 24479
-                "\u8EA2\uE2C7\u8EA2\uE2C9\u8EA2\uE2C8\u8EA2\uE2C4\u8EA2\uE2C5" + // 24480 - 24484
-                "\u0000\u0000\u0000\u0000\u8EA2\uE6AD\u0000\u0000\u0000\uF8D5" + // 24485 - 24489
-                "\u0000\u0000\u8EA2\uE6AA\u8EA2\uE6AC\u8EA2\uE6A9\u8EA2\uE6AE" + // 24490 - 24494
-                "\u0000\u0000\u0000\u0000\u8EA2\uE6AB\u0000\u0000\u8EA2\uE9C9" + // 24495 - 24499
-                "\u8EA2\uE9CC\u8EA2\uE9C8\u0000\uF9FC\u8EA2\uE9CA\u8EA2\uE9CB" + // 24500 - 24504
-                "\u8EA2\uE9CD\u0000\uF9FD\u0000\uFAA1\u0000\uF9FE\u8EA2\uEBEF" + // 24505 - 24509
-                "\u0000\u0000\u8EA2\uEBF1\u0000\u0000\u8EA2\uEBF0\u0000\u0000" + // 24510 - 24514
-                "\u0000\u0000\u0000\u0000\u8EA2\uEDE4\u0000\u0000\u0000\u0000" + // 24515 - 24519
-                "\u8EA2\uF0C3\u8EA2\uF1AA\u0000\uC6FC\u0000\u0000\u0000\u0000" + // 24520 - 24524
-                "\u8EA2\uA4F2\u0000\uCFA3\u8EA2\uA8C3\u8EA2\uBBD4\u8EA2\uBBC0" + // 24525 - 24529
-                "\u8EA2\uBBCD\u8EA2\uBBBE\u0000\u0000\u8EA2\uBBD5\u0000\u0000" + // 24530 - 24534
-                "\u0000\uDEF7\u0000\u0000\u8EA2\uBBCF\u8EA2\uC2D5\u8EA2\uBBC1" + // 24535 - 24539
-                "\u0000\uDEF4\u0000\u0000\u8EA2\uBBC5\u0000\u0000\u0000\uDEF5" + // 24540 - 24544
-                "\u8EA2\uBBC4\u8EA2\uBBC9\u0000\u0000\u0000\u0000\u8EA2\uBBC6" + // 24545 - 24549
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBBCC\u0000\u0000" + // 24550 - 24554
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC2D9\u0000\u0000" + // 24555 - 24559
-                "\u0000\u0000\u0000\u0000\u8EA2\uC2DC\u8EA2\uC2D4\u0000\u0000" + // 24560 - 24564
-                "\u8EA2\uC2D6\u0000\u0000\u8EA2\uC2DB\u8EA2\uC2DA\u0000\uE3E9" + // 24565 - 24569
-                "\u0000\u0000\u8EA2\uBBBF\u8EA2\uC2D8\u0000\u0000\u0000\u0000" + // 24570 - 24574
-                "\u0000\uE3EA\u0000\u0000\u8EA2\uC2D3\u8EA2\uC2D7\u0000\u0000" + // 24575 - 24579
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC9EE\u0000\u0000" + // 24580 - 24584
-                "\u8EA2\uC9F5\u8EA2\uC9EC\u0000\u0000\u8EA2\uC9F3\u8EA2\uC9EA" + // 24585 - 24589
-                "\u8EA2\uC9F2\u8EA2\uC9F6\u8EA2\uAEF3\u0000\uD5B6\u0000\u0000" + // 24590 - 24594
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD9F7\u0000\uD9F6" + // 24595 - 24599
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB4F8\u8EA2\uB4FC" + // 24600 - 24604
-                "\u8EA2\uB4FE\u0000\uD9F8\u8EA2\uB5A3\u0000\u0000\u0000\uD9FC" + // 24605 - 24609
-                "\u8EA2\uB5A5\u0000\u0000\u0000\uD9FE\u0000\u0000\u0000\uD9FA" + // 24610 - 24614
-                "\u0000\uDAA4\u0000\u0000\u0000\uDAA1\u8EA2\uB4FA\u0000\uD9F9" + // 24615 - 24619
-                "\u0000\u0000\u8EA2\uB4F9\u8EA2\uB4F7\u8EA2\uB5A7\u8EA2\uB4FB" + // 24620 - 24624
-                "\u0000\u0000\u0000\uD9FB\u8EA2\uB5A6\u0000\uDAA2\u8EA2\uB5A2" + // 24625 - 24629
-                "\u8EA2\uB5A1\u0000\uDAA3\u8EA2\uB4FD\u0000\uD9FD\u0000\u0000" + // 24630 - 24634
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB5A8\u0000\u0000" + // 24635 - 24639
-                "\u8EA2\uB5A4\u8EA2\uBBCB\u8EA2\uBBD2\u8EA2\uBBC7\u0000\uDEF6" + // 24640 - 24644
-                "\u8EA2\uBBC3\u8EA2\uBBD3\u8EA2\uBBBD\u8EA2\uBBD0\u8EA2\uBBCE" + // 24645 - 24649
-                "\u8EA2\uBBC8\u0000\u0000\u8EA2\uBBD1\u8EA2\uBBCA\u0000\u0000" + // 24650 - 24654
-                "\u8EA2\uBBC2\u0000\uC9FD\u0000\uC9FE\u0000\u0000\u0000\u0000" + // 24655 - 24659
-                "\u8EA2\uA6BA\u0000\uCDA2\u0000\uCDA3\u8EA2\uA6BB\u0000\uCDA1" + // 24660 - 24664
-                "\u0000\u0000\u0000\u0000\u0000\uD0F0\u8EA2\uA9F9\u0000\uD0EF" + // 24665 - 24669
-                "\u0000\uD0ED\u0000\uD0EE\u0000\uD5AE\u0000\uD5AC\u0000\u0000" + // 24670 - 24674
-                "\u0000\u0000\u8EA2\uAEED\u0000\uD5AD\u8EA2\uAEEC\u0000\u0000" + // 24675 - 24679
-                "\u0000\uD5A2\u8EA2\uB4F6\u0000\u0000\u0000\u0000\u0000\uD9F4" + // 24680 - 24684
-                "\u0000\uD9F5\u0000\u0000\u0000\u0000\u0000\uD9F3\u0000\u0000" + // 24685 - 24689
-                "\u0000\uE8D8\u8EA2\uC9E7\u0000\uECD2\u0000\uECD3\u0000\u0000" + // 24690 - 24694
-                "\u8EA2\uD0AA\u0000\uF3D4\u8EA2\uE1CE\u8EA2\uE1CF\u0000\u0000" + // 24695 - 24699
-                "\u0000\uFAE8\u8EA2\uF0B6\u8EA2\uA1AB\u0000\uC5BA\u0000\u0000" + // 24700 - 24704
-                "\u0000\uC4D4\u0000\u0000\u8EA2\uA1D8\u8EA2\uA1D7\u0000\u0000" + // 24705 - 24709
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC7FB\u8EA2\uA2B7" + // 24710 - 24714
-                "\u8EA2\uA2B8\u8EA2\uA2B6\u0000\u0000\u8EA2\uA2B9\u0000\u0000" + // 24715 - 24719
-                "\u0000\uD2DC\u0000\u0000\u8EA2\uACC3\u8EA2\uACC4\u8EA2\uACC5" + // 24720 - 24724
-                "\u0000\u0000\u0000\uD2E3\u8EA2\uACC2\u0000\uD2DF\u8EA2\uACC6" + // 24725 - 24729
-                "\u0000\uD2E0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24730 - 24734
-                "\u8EA2\uB1B2\u8EA2\uB1B6\u8EA2\uB1B4\u8EA2\uB1B3\u0000\u0000" + // 24735 - 24739
-                "\u8EA2\uB1B7\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB1B8" + // 24740 - 24744
-                "\u8EA2\uB1B9\u8EA2\uB1B1\u0000\u0000\u8EA2\uB1B0\u0000\u0000" + // 24745 - 24749
-                "\u0000\uD6F8\u0000\uD6F9\u0000\u0000\u8EA2\uB1BA\u8EA2\uB1B5" + // 24750 - 24754
-                "\u0000\u0000\u8EA2\uB7D3\u0000\u0000\u8EA2\uB1BB\u0000\uD6FA" + // 24755 - 24759
-                "\u0000\uD6F7\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB7CD" + // 24760 - 24764
-                "\u0000\u0000\u8EA2\uB7CC\u0000\u0000\u8EA2\uB7CE\u8EA2\uB7CF" + // 24765 - 24769
-                "\u8EA2\uB7D1\u8EA2\uB7D0\u8EA2\uB7D5\u0000\uDCBA\u0000\uDCB7" + // 24770 - 24774
-                "\u0000\uDCBB\u8EA2\uB7CB\u0000\uDCBC\u8EA2\uB7D4\u0000\uDCB9" + // 24775 - 24779
-                "\u8EA2\uB7D2\u0000\uDCB8\u0000\u0000\u0000\uE9F6\u0000\u0000" + // 24780 - 24784
-                "\u8EA2\uD2D0\u8EA2\uD2D1\u0000\uEDFC\u0000\u0000\u0000\u0000" + // 24785 - 24789
-                "\u8EA2\uD2CF\u8EA2\uD2D2\u0000\uEDFE\u0000\uEDFB\u8EA2\uD2CB" + // 24790 - 24794
-                "\u8EA2\uD2C8\u8EA2\uD2CD\u8EA2\uD2CA\u0000\uEEA4\u8EA2\uD2CC" + // 24795 - 24799
-                "\u0000\u0000\u0000\u0000\u8EA2\uD2CE\u0000\uEEA2\u0000\u0000" + // 24800 - 24804
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF1D4\u8EA2\uD8F2" + // 24805 - 24809
-                "\u0000\u0000\u8EA2\uD8EC\u8EA2\uD8F0\u8EA2\uD8F6\u8EA2\uD8F7" + // 24810 - 24814
-                "\u8EA2\uD8F3\u8EA2\uD8F4\u8EA2\uD8F1\u0000\u0000\u8EA2\uD8EE" + // 24815 - 24819
-                "\u0000\u0000\u0000\uF1D6\u0000\uF1D3\u8EA2\uD8ED\u8EA2\uD8EF" + // 24820 - 24824
-                "\u0000\u0000\u0000\uF1D5\u8EA2\uD8F5\u0000\u0000\u0000\uF4D0" + // 24825 - 24829
-                "\u0000\u0000\u0000\u0000\u8EA2\uDDF5\u8EA2\uDDEF\u0000\uF4CF" + // 24830 - 24834
-                "\u0000\u0000\u0000\u0000\u0000\uF4CD\u0000\u0000\u8EA2\uDDF7" + // 24835 - 24839
-                "\u0000\uF4CE\u8EA2\uDDF2\u8EA2\uDDF3\u8EA2\uDDF0\u8EA2\uDDF8" + // 24840 - 24844
-                "\u8EA2\uDDF4\u8EA2\uB4F5\u8EA2\uB4F4\u0000\uD9ED\u0000\u0000" + // 24845 - 24849
-                "\u0000\uD9EC\u0000\uD9EB\u0000\uD9EF\u0000\uD9EA\u0000\u0000" + // 24850 - 24854
-                "\u0000\u0000\u8EA2\uBBB9\u8EA2\uBBB6\u0000\uDEEE\u8EA2\uBBB5" + // 24855 - 24859
-                "\u8EA2\uBBBA\u0000\u0000\u0000\uDEF0\u8EA2\uBBB8\u0000\uDEED" + // 24860 - 24864
-                "\u0000\uDEEF\u8EA2\uBBB7\u0000\u0000\u8EA2\uC2CE\u0000\u0000" + // 24865 - 24869
-                "\u8EA2\uC2CF\u8EA2\uC2D0\u0000\u0000\u0000\u0000\u0000\u0000" + // 24870 - 24874
-                "\u0000\u0000\u0000\uE8CE\u0000\uE8D6\u8EA2\uC9E5\u0000\uE8D0" + // 24875 - 24879
-                "\u0000\uE8D4\u8EA2\uC9E6\u0000\uE8D5\u0000\uE8D1\u0000\uE8D2" + // 24880 - 24884
-                "\u0000\uE8CF\u0000\uE8D3\u0000\uECD0\u8EA2\uBBB4\u0000\uECD1" + // 24885 - 24889
-                "\u0000\uECCF\u0000\u0000\u0000\uECCE\u8EA2\uD6E7\u0000\uF0D1" + // 24890 - 24894
-                "\u8EA2\uDCE4\u8EA2\uDCE5\u0000\u0000\u0000\u0000\u0000\uF8B1" + // 24895 - 24899
-                "\u0000\uF9EA\u0000\u0000\u0000\uC4D0\u0000\u0000\u0000\uC7F9" + // 24900 - 24904
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24905 - 24909
-                "\u0000\uDBB9\u0000\u0000\u8EA2\uBCE6\u8EA2\uBCFC\u8EA2\uBCF1" + // 24910 - 24914
-                "\u0000\uDFFB\u0000\u0000\u0000\uDFF6\u8EA2\uBCE0\u0000\uDFF7" + // 24915 - 24919
-                "\u8EA2\uBCF0\u0000\u0000\u8EA2\uBCE9\u8EA2\uBCF6\u0000\uDFF3" + // 24920 - 24924
-                "\u8EA2\uBCCE\u8EA2\uBCF8\u0000\uDFE9\u8EA2\uBCD6\u0000\uDFEC" + // 24925 - 24929
-                "\u0000\uDFEB\u0000\u0000\u0000\uDFFC\u0000\u0000\u8EA2\uBCD0" + // 24930 - 24934
-                "\u8EA2\uBCF2\u8EA2\uBCF3\u0000\uDFEE\u0000\uDFEA\u8EA2\uBCDE" + // 24935 - 24939
-                "\u0000\u0000\u0000\uDFF5\u8EA2\uBCD9\u0000\u0000\u8EA2\uBCF4" + // 24940 - 24944
-                "\u0000\uDFF1\u8EA2\uBCEC\u8EA2\uBCF9\u8EA2\uBCD3\u8EA2\uBCD8" + // 24945 - 24949
-                "\u8EA2\uBCD2\u0000\u0000\u0000\uDFF0\u8EA2\uBCE5\u8EA2\uC3E4" + // 24950 - 24954
-                "\u8EA2\uBCD4\u0000\uDFF4\u8EA2\uBCDD\u8EA2\uBCF5\u0000\uDFEF" + // 24955 - 24959
-                "\u8EA2\uBCDA\u8EA2\uBCD7\u8EA2\uBCE8\u0000\uDFF2\u0000\uDFE8" + // 24960 - 24964
-                "\u0000\uDFFE\u8EA2\uBCEB\u8EA2\uBCEA\u0000\u0000\u0000\u0000" + // 24965 - 24969
-                "\u8EAD\uA3C6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24970 - 24974
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24975 - 24979
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24980 - 24984
-                "\u8EAD\uA3C0\u8EAD\uA3C1\u8EAD\uA3C2\u8EAD\uA3C3\u8EAD\uA3C4" + // 24985 - 24989
-                "\u8EAD\uA3C5\u8EAD\uA3C7\u8EAD\uA3C8\u8EAD\uA3C9\u8EAD\uA3CA" + // 24990 - 24994
-                "\u8EAD\uA3CB\u8EAD\uA3CC\u8EAD\uA3CD\u8EAD\uA3CE\u8EAD\uA3CF" + // 24995 - 24999
-                "\u8EAD\uA3D0\u8EAD\uA3D1\u8EAD\uA3D2\u8EAD\uA3D3\u8EAD\uA3D4" + // 25000 - 25004
-                "\u8EAD\uA3D5\u8EAD\uA3D6\u8EAD\uA3D7\u8EAD\uA3D8\u8EAD\uA3D9" + // 25005 - 25009
-                "\u8EAD\uA3DA\u8EAD\uA3DB\u8EAD\uA3DC\u8EAD\uA3DD\u8EAD\uA3DE" + // 25010 - 25014
-                "\u8EAD\uA3DF\u8EAD\uA3E0\u8EAD\uA3E1\u8EAD\uA3E2\u8EAD\uA3E3" + // 25015 - 25019
-                "\u8EAD\uA3E4\u8EAD\uA3E5\u8EAD\uA3E6\u8EAD\uA3E8\u8EAD\uA3E9" + // 25020 - 25024
-                "\u8EAD\uA3EA\u8EAD\uA3EB\u8EAD\uA3EC\u8EAD\uA3ED\u8EAD\uA3EE" + // 25025 - 25029
-                "\u8EAD\uA3EF\u8EAD\uA3F0\u8EAD\uA3F1\u0000\uA7C7\u8EA2\uA1D3" + // 25030 - 25034
-                "\u0000\u0000\u0000\uC6C6\u8EA2\uA1D4\u0000\uC7F7\u0000\u0000" + // 25035 - 25039
-                "\u0000\uC7F5\u0000\uC7F6\u0000\uC7F8\u0000\u0000\u0000\uC9FA" + // 25040 - 25044
-                "\u0000\uC9F9\u0000\u0000\u8EA2\uA3DC\u0000\uC9FB\u0000\u0000" + // 25045 - 25049
-                "\u0000\u0000\u8EA2\uA3DD\u8EA2\uA6B8\u0000\u0000\u8EA2\uA6B9" + // 25050 - 25054
-                "\u0000\u0000\u0000\uCCF8\u0000\uCCFA\u0000\uCCFC\u0000\uCCF9" + // 25055 - 25059
-                "\u0000\uCCFD\u0000\uCCFB\u0000\u0000\u0000\u0000\u0000\u0000" + // 25060 - 25064
-                "\u0000\u0000\u0000\u0000\u0000\uD0EA\u0000\uD0E7\u0000\uD0E9" + // 25065 - 25069
-                "\u0000\uD0EB\u0000\uD0E8\u8EA2\uAEE8\u8EA2\uA9F8\u0000\u0000" + // 25070 - 25074
-                "\u0000\u0000\u0000\u0000\u8EA2\uAEEA\u8EA2\uAEE9\u0000\uD5A7" + // 25075 - 25079
-                "\u0000\u0000\u0000\uD5A3\u0000\u0000\u0000\u0000\u0000\uD5A4" + // 25080 - 25084
-                "\u0000\uD5A6\u0000\uD5A8\u0000\uD5A5\u0000\u0000\u0000\uD5AA" + // 25085 - 25089
-                "\u0000\uD5A9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25090 - 25094
-                "\u0000\u0000\u0000\uD9EE\u0000\uF9E7\u0000\u0000\u0000\u0000" + // 25095 - 25099
-                "\u0000\uF9E8\u0000\u0000\u8EA2\uE8EF\u0000\u0000\u8EA2\uEBD6" + // 25100 - 25104
-                "\u8EA2\uEBD5\u0000\u0000\u0000\u0000\u8EA2\uEDC9\u8EA2\uEDCA" + // 25105 - 25109
-                "\u8EA2\uEFA4\u8EA2\uF0B5\u0000\u0000\u0000\uC4CD\u0000\uC4CE" + // 25110 - 25114
-                "\u0000\u0000\u0000\uC4CF\u0000\uC5B6\u0000\uC6C5\u8EA2\uA2B3" + // 25115 - 25119
-                "\u0000\uC7F3\u0000\uC7F4\u0000\u0000\u0000\uC9F7\u0000\uC9F8" + // 25120 - 25124
-                "\u0000\uC9F6\u0000\uC9F5\u0000\u0000\u0000\uCCF5\u0000\u0000" + // 25125 - 25129
-                "\u0000\u0000\u8EA2\uA6B6\u0000\uCCF7\u0000\uCCF6\u8EA2\uA6B7" + // 25130 - 25134
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0E6\u0000\u0000" + // 25135 - 25139
-                "\u0000\uD5A1\u8EA2\uAEE7\u0000\u0000\u8EA2\uB4F3\u0000\u0000" + // 25140 - 25144
-                "\u0000\uD9E9\u0000\uDEEC\u8EA2\uB4F2\u0000\uDEEB\u0000\u0000" + // 25145 - 25149
-                "\u0000\uE8CD\u0000\u0000\u8EA2\uC9E4\u0000\uF0D0\u0000\u0000" + // 25150 - 25154
-                "\u0000\uF3D2\u8EA2\uDCE3\u0000\u0000\u0000\uF9E9\u0000\u0000" + // 25155 - 25159
-                "\u0000\uFBDC\u8EA2\uC2C7\u0000\uE3E0\u0000\uE3E7\u0000\u0000" + // 25160 - 25164
-                "\u8EA2\uC2BB\u0000\u0000\u8EA2\uC2C5\u8EA2\uC2BA\u8EA2\uC2C3" + // 25165 - 25169
-                "\u0000\uE3E1\u8EA2\uC2C8\u8EA2\uC2BC\u0000\uE3E2\u8EA2\uC2CB" + // 25170 - 25174
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25175 - 25179
-                "\u0000\u0000\u0000\u0000\u8EA2\uC9D5\u0000\uE8CA\u0000\uE8C9" + // 25180 - 25184
-                "\u0000\uE8CB\u8EA2\uC9E1\u8EA2\uC9D7\u8EA2\uC9DD\u8EA2\uC9D2" + // 25185 - 25189
-                "\u8EA2\uC9E0\u8EA2\uC9DF\u8EA2\uC9E3\u8EA2\uC9DC\u0000\uE8C6" + // 25190 - 25194
-                "\u8EA2\uC9DB\u0000\uE8CC\u0000\u0000\u8EA2\uC9D4\u0000\uE8C7" + // 25195 - 25199
-                "\u0000\u0000\u8EA2\uC9E2\u0000\uE8C8\u8EA2\uC9D6\u8EA2\uC9D9" + // 25200 - 25204
-                "\u8EA2\uC9DE\u8EA2\uC9D8\u8EA2\uC9D3\u0000\u0000\u0000\u0000" + // 25205 - 25209
-                "\u0000\u0000\u0000\u0000\u8EA2\uC9DA\u8EA2\uCFFC\u0000\uECCB" + // 25210 - 25214
-                "\u8EA2\uD0A1\u8EA2\uCFFE\u8EA2\uD0A3\u8EA2\uD0A5\u0000\u0000" + // 25215 - 25219
-                "\u0000\uECC9\u0000\u0000\u8EA2\uCFFD\u0000\u0000\u8EA2\uCFFB" + // 25220 - 25224
-                "\u0000\uD9E3\u0000\uD9DF\u8EA2\uB4F0\u8EA2\uB4E0\u8EA2\uB4E3" + // 25225 - 25229
-                "\u0000\u0000\u0000\uD9E7\u8EA2\uB4ED\u8EA2\uB4E5\u0000\uD9E0" + // 25230 - 25234
-                "\u0000\uD9E8\u0000\u0000\u8EA2\uB4EA\u8EA2\uB4E8\u0000\u0000" + // 25235 - 25239
-                "\u0000\u0000\u8EA2\uB4D9\u8EA2\uB4EE\u8EA2\uB4E2\u8EA2\uB4DD" + // 25240 - 25244
-                "\u0000\u0000\u8EA2\uB4D3\u8EA2\uB4EF\u8EA2\uB4DF\u8EA2\uB4D2" + // 25245 - 25249
-                "\u0000\u0000\u0000\uD9E6\u8EA2\uB4E4\u8EA2\uB4F1\u8EA2\uB4E1" + // 25250 - 25254
-                "\u8EA2\uB4D5\u8EA2\uB4DA\u8EA2\uB4D1\u0000\u0000\u0000\uD9E5" + // 25255 - 25259
-                "\u0000\u0000\u8EA2\uB4DE\u8EA2\uB4DB\u0000\uD9E1\u8EA2\uB4D4" + // 25260 - 25264
-                "\u0000\u0000\u8EA2\uB4EC\u0000\uD9E2\u0000\u0000\u8EA2\uB4DC" + // 25265 - 25269
-                "\u8EA2\uB4D8\u0000\u0000\u0000\u0000\u8EA2\uB4EB\u0000\u0000" + // 25270 - 25274
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25275 - 25279
-                "\u0000\uDEE5\u8EA2\uBAFD\u0000\u0000\u8EA2\uBAFA\u8EA2\uBBAD" + // 25280 - 25284
-                "\u8EA2\uBBA1\u8EA2\uBBAE\u0000\u0000\u0000\uDEE7\u8EA2\uA9E6" + // 25285 - 25289
-                "\u0000\uD0E4\u0000\u0000\u0000\uD0DF\u0000\u0000\u0000\u0000" + // 25290 - 25294
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD4FE\u8EA2\uAEE4" + // 25295 - 25299
-                "\u0000\u0000\u0000\uD4FD\u0000\u0000\u0000\u0000\u8EA2\uAEE2" + // 25300 - 25304
-                "\u0000\u0000\u0000\uD4F2\u0000\u0000\u0000\uD4F7\u0000\u0000" + // 25305 - 25309
-                "\u8EA2\uAEE1\u8EA2\uAEDE\u8EA2\uAEE3\u0000\uD4F3\u8EA2\uAEDD" + // 25310 - 25314
-                "\u0000\u0000\u0000\uD4F6\u0000\uD4F4\u0000\u0000\u8EA2\uAEE5" + // 25315 - 25319
-                "\u0000\uD4F5\u0000\uD4F9\u0000\u0000\u0000\u0000\u0000\uD4FA" + // 25320 - 25324
-                "\u0000\u0000\u0000\uD4FC\u0000\u0000\u0000\u0000\u0000\u0000" + // 25325 - 25329
-                "\u0000\uD4FB\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uAEDF" + // 25330 - 25334
-                "\u8EA2\uAEE0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25335 - 25339
-                "\u8EA2\uAEE6\u0000\u0000\u8EA2\uB4D7\u0000\uD9DE\u8EA2\uBBA6" + // 25340 - 25344
-                "\u8EA2\uB4D6\u8EA2\uB4E9\u0000\u0000\u0000\u0000\u0000\uD9E4" + // 25345 - 25349
-                "\u0000\u0000\u8EA2\uB4E7\u0000\u0000\u8EA2\uA4F1\u0000\uCBB0" + // 25350 - 25354
-                "\u0000\u0000\u0000\uCEFB\u0000\u0000\u0000\uD2D5\u0000\uD2D6" + // 25355 - 25359
-                "\u0000\uD2D7\u8EA2\uB7C9\u8EA2\uB1AE\u0000\uD6F2\u0000\u0000" + // 25360 - 25364
-                "\u0000\u0000\u0000\uDCB3\u8EA2\uB7C8\u0000\u0000\u0000\u0000" + // 25365 - 25369
-                "\u8EA2\uBEBC\u0000\uE0F7\u0000\u0000\u8EA2\uBEBB\u0000\uE0F6" + // 25370 - 25374
-                "\u0000\u0000\u0000\u0000\u8EA2\uC5BB\u0000\uEDF3\u8EA2\uD2C3" + // 25375 - 25379
-                "\u8EA2\uD2C0\u8EA2\uD2C1\u8EA2\uD2C2\u0000\u0000\u0000\u0000" + // 25380 - 25384
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDDE4\u0000\u0000" + // 25385 - 25389
-                "\u8EA2\uE2BE\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE9C0" + // 25390 - 25394
-                "\u8EA2\uE9BF\u0000\u0000\u8EA2\uEDE3\u0000\uC6F6\u8EA2\uA8B7" + // 25395 - 25399
-                "\u0000\uD6F3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE0F8" + // 25400 - 25404
-                "\u8EA2\uC5BC\u0000\u0000\u0000\u0000\u8EA2\uCCA9\u0000\u0000" + // 25405 - 25409
-                "\u0000\uEDF4\u8EA2\uD8E0\u0000\u0000\u8EA2\uE2BF\u8EA2\uE9C1" + // 25410 - 25414
-                "\u0000\uC6F7\u8EA2\uA6B2\u8EA2\uA6AB\u0000\u0000\u8EA2\uA6AE" + // 25415 - 25419
-                "\u0000\u0000\u0000\uCCF4\u0000\uCCEB\u8EA2\uA6B5\u8EA2\uA6B3" + // 25420 - 25424
-                "\u0000\u0000\u0000\uCCF0\u0000\uCCEE\u8EA2\uA6AA\u0000\uCCED" + // 25425 - 25429
-                "\u8EA2\uA6A8\u8EA2\uA6A7\u0000\uCCEC\u0000\uCCEA\u0000\uCCF3" + // 25430 - 25434
-                "\u0000\uCCEF\u0000\uCCE7\u0000\u0000\u8EA2\uA6AF\u0000\u0000" + // 25435 - 25439
-                "\u0000\uD0DB\u0000\u0000\u0000\uD0E2\u8EA2\uA9F0\u0000\uD0DA" + // 25440 - 25444
-                "\u8EA2\uA9E8\u8EA2\uA9E4\u0000\u0000\u8EA2\uA9F4\u8EA2\uA9E3" + // 25445 - 25449
-                "\u0000\u0000\u0000\uD0DD\u8EA2\uA9ED\u0000\uD0E0\u0000\uD0E3" + // 25450 - 25454
-                "\u0000\u0000\u0000\uD0DE\u8EA2\uA9F1\u0000\uD0E1\u0000\u0000" + // 25455 - 25459
-                "\u0000\uD4F8\u8EA2\uA9F7\u8EA2\uA9E5\u0000\u0000\u0000\u0000" + // 25460 - 25464
-                "\u8EA2\uA9E7\u8EA2\uA9EE\u8EA2\uA9F2\u8EA2\uA9F6\u8EA2\uA9F3" + // 25465 - 25469
-                "\u8EA2\uA9EC\u8EA2\uA9EF\u0000\u0000\u0000\u0000\u8EA2\uA9E9" + // 25470 - 25474
-                "\u0000\uD0E5\u8EA2\uA9EB\u8EA2\uA9EA\u8EA2\uA9F5\u0000\uD0DC" + // 25475 - 25479
-                "\u8EA2\uA2AC\u0000\uC7F2\u0000\uC7F1\u0000\uC7EE\u0000\uC7EC" + // 25480 - 25484
-                "\u8EA2\uA2AE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25485 - 25489
-                "\u0000\uC9F3\u0000\u0000\u0000\u0000\u0000\uC9F0\u8EA2\uA3D6" + // 25490 - 25494
-                "\u8EA2\uA3D9\u8EA2\uA3D8\u0000\u0000\u0000\uC9EA\u0000\uC9F2" + // 25495 - 25499
-                "\u0000\u0000\u0000\u0000\u0000\uC9EF\u8EA2\uA3D5\u8EA2\uA3D3" + // 25500 - 25504
-                "\u0000\uC9EE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC9E9" + // 25505 - 25509
-                "\u0000\uC9EC\u0000\u0000\u8EA2\uA3D4\u8EA2\uA3DB\u8EA2\uA3D7" + // 25510 - 25514
-                "\u0000\uC9ED\u0000\uC9F1\u0000\uC9F4\u8EA2\uA3D2\u8EA2\uA3DA" + // 25515 - 25519
-                "\u0000\uC9EB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25520 - 25524
-                "\u0000\u0000\u0000\uCCE9\u0000\uCCF1\u0000\u0000\u8EA2\uA6B0" + // 25525 - 25529
-                "\u8EA2\uA6A9\u0000\uCCF2\u8EA2\uA6B4\u8EA2\uA6A5\u8EA2\uA6AC" + // 25530 - 25534
-                "\u0000\u0000\u0000\u0000\u0000\uCCE8\u8EA2\uA6A6\u0000\uCCE6" + // 25535 - 25539
-                "\u8EA2\uA6AD\u8EA2\uA6B1\u0000\uCCE5\u0000\u0000\u8EA2\uABF7" + // 25540 - 25544
-                "\u8EA2\uB0E0\u0000\u0000\u8EA2\uCBEB\u0000\u0000\u0000\uF4BB" + // 25545 - 25549
-                "\u0000\uC5DA\u0000\uCEEA\u8EA2\uABF8\u8EA2\uABF9\u8EA2\uBDEA" + // 25550 - 25554
-                "\u0000\uE0D6\u0000\u0000\u0000\u0000\u8EA2\uC4E8\u0000\u0000" + // 25555 - 25559
-                "\u0000\u0000\u0000\uE5A6\u8EA2\uCBEC\u0000\u0000\u0000\u0000" + // 25560 - 25564
-                "\u0000\uEDE2\u0000\u0000\u0000\uF8C9\u0000\uC5DB\u8EA2\uBDEB" + // 25565 - 25569
-                "\u0000\uC5DC\u0000\u0000\u0000\uC8CA\u8EA2\uA2E2\u0000\uC8C9" + // 25570 - 25574
-                "\u0000\uCBA8\u0000\uCBA7\u0000\uCBA6\u8EA2\uA4E0\u0000\u0000" + // 25575 - 25579
-                "\u0000\u0000\u0000\u0000\u0000\uCEEB\u0000\u0000\u0000\uCEEC" + // 25580 - 25584
-                "\u8EA2\uA7FB\u0000\u0000\u8EA2\uABFA\u0000\u0000\u8EA2\uABFD" + // 25585 - 25589
-                "\u0000\uD2BD\u8EA2\uABFB\u0000\u0000\u0000\uD2BC\u8EA2\uABFC" + // 25590 - 25594
-                "\u0000\uD2BE\u0000\u0000\u8EA2\uB0E3\u8EA2\uB0E2\u8EA2\uB0E1" + // 25595 - 25599
-                "\u0000\uD6D6\u0000\u0000\u8EA2\uB7A2\u8EA2\uB7A3\u0000\uDBF4" + // 25600 - 25604
-                "\u8EA2\uB7A1\u8EA2\uB7A4\u8EA2\uA3D1\u0000\u0000\u0000\u0000" + // 25605 - 25609
-                "\u0000\u0000\u0000\uCCE3\u8EA2\uA6A4\u0000\u0000\u0000\uCCE1" + // 25610 - 25614
-                "\u0000\uCCE2\u0000\uCCE0\u8EA2\uAEDC\u0000\u0000\u0000\u0000" + // 25615 - 25619
-                "\u0000\u0000\u0000\uD0D8\u0000\uD0D7\u0000\uD0D9\u0000\uD0D6" + // 25620 - 25624
-                "\u0000\u0000\u8EA2\uA9E2\u0000\uCCE4\u0000\uD0D5\u0000\u0000" + // 25625 - 25629
-                "\u0000\uD4EF\u0000\uD4F0\u0000\u0000\u0000\uD4F1\u0000\u0000" + // 25630 - 25634
-                "\u8EA2\uB4D0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDEE4" + // 25635 - 25639
-                "\u8EA2\uBAF6\u0000\uD9DD\u0000\u0000\u0000\u0000\u0000\u0000" + // 25640 - 25644
-                "\u0000\u0000\u0000\uE3DF\u0000\u0000\u0000\uE8C5\u0000\uE8C4" + // 25645 - 25649
-                "\u8EA2\uC9D1\u0000\u0000\u0000\uECC7\u0000\uF0CD\u0000\u0000" + // 25650 - 25654
-                "\u8EA2\uE1CC\u8EA2\uEDC8\u8EA2\uEFA3\u0000\uC4CC\u0000\uC6C3" + // 25655 - 25659
-                "\u0000\u0000\u0000\uC6C4\u8EA2\uA2B1\u0000\uC7ED\u0000\uC7F0" + // 25660 - 25664
-                "\u0000\u0000\u8EA2\uA2AF\u8EA2\uA2AD\u0000\uC7EF\u8EA2\uA2B0" + // 25665 - 25669
-                "\u8EA2\uA2B2\u0000\uECBF\u8EA2\uC9C2\u8EA2\uC9CB\u0000\uE8BA" + // 25670 - 25674
-                "\u0000\u0000\u0000\uE8BE\u8EA2\uC9C1\u8EA2\uC9C7\u8EA2\uC9CC" + // 25675 - 25679
-                "\u8EA2\uC9BD\u0000\uE8BC\u8EA2\uC9C5\u0000\u0000\u0000\u0000" + // 25680 - 25684
-                "\u8EA2\uC9C9\u8EA2\uC9CF\u8EA2\uC9BF\u8EA2\uC9C8\u0000\u0000" + // 25685 - 25689
-                "\u0000\uE8BB\u8EA2\uC9CE\u0000\u0000\u0000\u0000\u0000\u0000" + // 25690 - 25694
-                "\u8EA2\uC9C0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uECC3" + // 25695 - 25699
-                "\u8EA2\uCFF2\u0000\uECC1\u0000\uECC0\u8EA2\uCFF4\u8EA2\uCFF9" + // 25700 - 25704
-                "\u0000\u0000\u8EA2\uCFF5\u0000\u0000\u8EA2\uCFF8\u0000\uECC6" + // 25705 - 25709
-                "\u0000\u0000\u0000\uF0AE\u0000\uECC5\u0000\u0000\u8EA2\uCFF1" + // 25710 - 25714
-                "\u8EA2\uCFF7\u0000\u0000\u0000\uECC4\u8EA2\uCFF6\u0000\u0000" + // 25715 - 25719
-                "\u8EA2\uCFF3\u0000\u0000\u0000\uECC2\u0000\u0000\u0000\u0000" + // 25720 - 25724
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD6D7" + // 25725 - 25729
-                "\u0000\u0000\u8EA2\uD6D9\u8EA2\uD6D4\u0000\uF0CA\u8EA2\uD6D6" + // 25730 - 25734
-                "\u8EA2\uB4B6\u8EA2\uB4C9\u0000\uD9D8\u0000\u0000\u8EA2\uB4CF" + // 25735 - 25739
-                "\u0000\uD9D2\u0000\uD9D4\u8EA2\uB4BE\u8EA2\uB4B9\u0000\uD4ED" + // 25740 - 25744
-                "\u0000\uD9D3\u8EA2\uB4BB\u8EA2\uB4CA\u8EA2\uB4CE\u8EA2\uB4C5" + // 25745 - 25749
-                "\u0000\u0000\u8EA2\uB4C7\u0000\u0000\u0000\u0000\u0000\u0000" + // 25750 - 25754
-                "\u8EA2\uB4B1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25755 - 25759
-                "\u8EA2\uBAE3\u0000\u0000\u8EA2\uBAEC\u8EA2\uBAEB\u0000\uDEE0" + // 25760 - 25764
-                "\u8EA2\uBAE4\u0000\u0000\u0000\uDEE1\u0000\uDEDF\u0000\u0000" + // 25765 - 25769
-                "\u8EA2\uBAE6\u0000\uDEDC\u8EA2\uBAEA\u0000\u0000\u8EA2\uBAE5" + // 25770 - 25774
-                "\u8EA2\uBAE7\u8EA2\uBAE1\u0000\uDEDA\u0000\u0000\u8EA2\uBAF4" + // 25775 - 25779
-                "\u8EA2\uBAF3\u8EA2\uBAF0\u0000\uDED9\u0000\uDEDD\u0000\uDEDE" + // 25780 - 25784
-                "\u8EA2\uAECD\u8EA2\uBAED\u0000\uDEDB\u0000\uD9D9\u8EA2\uBAEF" + // 25785 - 25789
-                "\u8EA2\uBAE2\u8EA2\uBAF2\u8EA2\uBAF1\u0000\u0000\u8EA2\uBAF5" + // 25790 - 25794
-                "\u0000\u0000\u8EA2\uC2B6\u0000\u0000\u8EA2\uBAEE\u8EA2\uA5F9" + // 25795 - 25799
-                "\u0000\u0000\u0000\uD0CD\u0000\uCCD7\u0000\u0000\u0000\u0000" + // 25800 - 25804
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25805 - 25809
-                "\u0000\uD0CE\u8EA2\uA9D5\u0000\u0000\u0000\u0000\u8EA2\uA9DB" + // 25810 - 25814
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0D4\u8EA2\uA9D9" + // 25815 - 25819
-                "\u8EA2\uA9DF\u0000\u0000\u8EA2\uA9D6\u8EA2\uA9DA\u8EA2\uA9DC" + // 25820 - 25824
-                "\u8EA2\uA9DE\u8EA2\uA9D8\u0000\u0000\u8EA2\uA9D7\u8EA2\uA9D2" + // 25825 - 25829
-                "\u8EA2\uA9D3\u0000\uD0CF\u0000\u0000\u0000\uD0D1\u0000\uD0D0" + // 25830 - 25834
-                "\u8EA2\uA9D4\u8EA2\uA9DD\u0000\u0000\u0000\u0000\u0000\u0000" + // 25835 - 25839
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25840 - 25844
-                "\u0000\uD0D3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25845 - 25849
-                "\u0000\u0000\u0000\u0000\u8EA2\uA9D1\u8EA2\uAED5\u0000\u0000" + // 25850 - 25854
-                "\u8EA2\uAED4\u8EA2\uAED9\u8EA2\uAED0\u0000\u0000\u8EA2\uAED3" + // 25855 - 25859
-                "\u8EA2\uAED2\u0000\u0000\u8EA2\uAED6\u0000\uC9DF\u8EA2\uA3CA" + // 25860 - 25864
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA3CB\u0000\u0000" + // 25865 - 25869
-                "\u0000\uC9E1\u0000\u0000\u8EA2\uA3CD\u0000\uC9DD\u8EA2\uA3CE" + // 25870 - 25874
-                "\u8EA2\uA3CC\u0000\uC9E0\u0000\uC9E2\u0000\uC9E5\u0000\uC9E4" + // 25875 - 25879
-                "\u0000\uC9DE\u8EA2\uA3CF\u0000\u0000\u0000\u0000\u0000\u0000" + // 25880 - 25884
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25885 - 25889
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25890 - 25894
-                "\u0000\u0000\u0000\uCCDB\u8EA2\uA5FE\u0000\u0000\u0000\uCCDD" + // 25895 - 25899
-                "\u0000\u0000\u0000\uCCDC\u0000\u0000\u8EA2\uA6A1\u0000\uCCDA" + // 25900 - 25904
-                "\u0000\uCCD9\u8EA2\uA5F5\u0000\u0000\u8EA2\uA5F4\u0000\u0000" + // 25905 - 25909
-                "\u8EA2\uA5F2\u8EA2\uA5F7\u8EA2\uA5F6\u8EA2\uA5F3\u8EA2\uA5FC" + // 25910 - 25914
-                "\u8EA2\uA5FD\u8EA2\uA5FA\u8EA2\uA5F8\u0000\uCCD8\u0000\u0000" + // 25915 - 25919
-                "\u0000\u0000\u0000\u0000\u8EA2\uA5FB\u0000\uCCDE\u8EA2\uA6A2" + // 25920 - 25924
-                "\u0000\u0000\u0000\u0000\u0000\uFCF0\u8EA2\uF0DD\u0000\uFCF2" + // 25925 - 25929
-                "\u0000\u0000\u8EA2\uF0DC\u8EA2\uF0DE\u0000\uFCF1\u8EA2\uF1C6" + // 25930 - 25934
-                "\u0000\u0000\u8EA2\uF1FB\u0000\u0000\u0000\u0000\u0000\u0000" + // 25935 - 25939
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCFE5\u0000\u0000" + // 25940 - 25944
-                "\u0000\u0000\u0000\u0000\u0000\uE7DC\u0000\u0000\u8EA2\uCFA6" + // 25945 - 25949
-                "\u0000\u0000\u8EA2\uD5D9\u0000\uF2FA\u0000\uF2FB\u0000\u0000" + // 25950 - 25954
-                "\u0000\uCFE6\u0000\u0000\u0000\uEFEA\u0000\uF9C8\u0000\uD3F2" + // 25955 - 25959
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF2FC\u0000\u0000" + // 25960 - 25964
-                "\u0000\uFCCE\u0000\uD3F3\u8EA2\uBAB1\u0000\u0000\u8EA2\uC1CE" + // 25965 - 25969
-                "\u0000\u0000\u8EA2\uC1D0\u0000\u0000\u8EA2\uC1CF\u0000\u0000" + // 25970 - 25974
-                "\u8EA2\uC8E3\u8EA2\uC8E0\u0000\uE7DD\u0000\u0000\u0000\uE7DE" + // 25975 - 25979
-                "\u8EA2\uC8E1\u8EA2\uC8E2\u0000\u0000\u8EA2\uCFA8\u8EA2\uCFAD" + // 25980 - 25984
-                "\u0000\uEBE7\u8EA2\uCFA7\u8EA2\uCFA9\u8EA2\uCFB0\u0000\uFAE5" + // 25985 - 25989
-                "\u0000\uFAE4\u0000\uFAE6\u8EA2\uEBD2\u0000\u0000\u8EA2\uEDC6" + // 25990 - 25994
-                "\u8EA2\uEDC5\u0000\u0000\u0000\uFBD9\u0000\uFBDB\u0000\uFBDA" + // 25995 - 25999
-                "\u8EA2\uEDC7\u0000\uFCB4\u8EA2\uF0B4\u0000\u0000\u0000\u0000" + // 26000 - 26004
-                "\u0000\u0000\u0000\uFCDD\u0000\u0000\u8EA2\uF0B3\u8EA2\uF0FC" + // 26005 - 26009
-                "\u0000\u0000\u0000\u0000\u8EA2\uA1AA\u0000\u0000\u0000\u0000" + // 26010 - 26014
-                "\u0000\uC6BF\u0000\uC6BE\u0000\u0000\u0000\uC7E0\u0000\uC7DF" + // 26015 - 26019
-                "\u8EA2\uA2A7\u0000\uC7DE\u8EA2\uA2A6\u0000\u0000\u0000\u0000" + // 26020 - 26024
-                "\u0000\uC9DB\u8EA2\uA3C9\u0000\u0000\u8EA2\uA3C8\u0000\u0000" + // 26025 - 26029
-                "\u0000\u0000\u0000\uC9D9\u0000\uC9DC\u0000\u0000\u0000\u0000" + // 26030 - 26034
-                "\u8EA2\uA3C7\u0000\u0000\u0000\uC9DA\u0000\u0000\u0000\u0000" + // 26035 - 26039
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA5F0" + // 26040 - 26044
-                "\u0000\u0000\u8EA2\uA5F1\u0000\uCCD6\u0000\u0000\u0000\u0000" + // 26045 - 26049
-                "\u0000\u0000\u0000\u0000\u0000\uD0CC\u0000\uF3C6\u8EA2\uDCD5" + // 26050 - 26054
-                "\u8EA2\uDCD3\u8EA2\uDCD1\u8EA2\uDCD0\u0000\uF3C8\u8EA2\uDCCF" + // 26055 - 26059
-                "\u0000\uF3C9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26060 - 26064
-                "\u8EA2\uDCCD\u8EA2\uDCCE\u0000\uF3C5\u0000\uF3CA\u0000\uF3C7" + // 26065 - 26069
-                "\u0000\u0000\u0000\u0000\u8EA2\uDCCC\u0000\u0000\u0000\uF6BC" + // 26070 - 26074
-                "\u0000\u0000\u8EA2\uE1C8\u8EA2\uE1C6\u8EA2\uE1CB\u8EA2\uE1C9" + // 26075 - 26079
-                "\u0000\u0000\u8EA2\uE1C7\u8EA2\uE1CA\u0000\u0000\u0000\u0000" + // 26080 - 26084
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26085 - 26089
-                "\u0000\uF8AC\u8EA2\uE5BE\u8EA2\uE5BF\u0000\uF8AD\u0000\u0000" + // 26090 - 26094
-                "\u8EA2\uE5C0\u8EA2\uE5BC\u8EA2\uE5C1\u8EA2\uE5BD\u0000\uF6BD" + // 26095 - 26099
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE8EB\u8EA2\uE8ED" + // 26100 - 26104
-                "\u0000\uF9E4\u8EA2\uE8EC\u0000\uF9E3\u0000\uF9E2\u0000\u0000" + // 26105 - 26109
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF9E5\u8EA2\uEBD3" + // 26110 - 26114
-                "\u8EA2\uEBD4\u0000\u0000\u8EA2\uC4D6\u8EA2\uC4DD\u8EA2\uC4DF" + // 26115 - 26119
-                "\u8EA2\uC4E5\u0000\u0000\u0000\uE5A2\u8EA2\uC4D1\u0000\u0000" + // 26120 - 26124
-                "\u0000\uE4F8\u0000\u0000\u8EA2\uC4E0\u0000\uE4FD\u8EA2\uC4E6" + // 26125 - 26129
-                "\u0000\uE4F4\u0000\u0000\u8EA2\uC4E3\u0000\u0000\u8EA2\uC4D3" + // 26130 - 26134
-                "\u8EA2\uC4E4\u8EA2\uC4D2\u0000\u0000\u0000\uE5A4\u0000\u0000" + // 26135 - 26139
-                "\u8EA2\uC4DE\u0000\uE4F5\u8EA2\uC4E7\u0000\u0000\u0000\uE4FA" + // 26140 - 26144
-                "\u8EA2\uC4D7\u0000\uE5A1\u8EA2\uC4E2\u8EA2\uC4D5\u8EA2\uC4DC" + // 26145 - 26149
-                "\u8EA2\uC4D8\u8EA2\uC4D4\u0000\uE4F7\u0000\uE4FE\u0000\uE4FC" + // 26150 - 26154
-                "\u0000\uE4F9\u0000\uE5A3\u0000\uE4F6\u8EA2\uC4DB\u0000\u0000" + // 26155 - 26159
-                "\u0000\uE4FB\u0000\u0000\u0000\uE0D4\u0000\u0000\u8EA2\uC4E1" + // 26160 - 26164
-                "\u0000\u0000\u8EA2\uC4D9\u0000\u0000\u0000\u0000\u0000\u0000" + // 26165 - 26169
-                "\u0000\u0000\u0000\u0000\u8EA2\uC4DA\u0000\u0000\u0000\u0000" + // 26170 - 26174
-                "\u8EA2\uCBE7\u0000\u0000\u0000\uE9DB\u0000\u0000\u0000\u0000" + // 26175 - 26179
-                "\u0000\uD4D4\u0000\u0000\u8EA2\uAEC8\u8EA2\uAEBC\u8EA2\uAEC0" + // 26180 - 26184
-                "\u0000\uD4D9\u0000\uD4E4\u8EA2\uAEBD\u0000\uD4DF\u8EA2\uAEC2" + // 26185 - 26189
-                "\u8EA2\uAEC9\u8EA2\uB4A4\u0000\u0000\u8EA2\uAEC7\u0000\uD4E6" + // 26190 - 26194
-                "\u0000\uD4D3\u8EA2\uAEBF\u8EA2\uAEB6\u0000\u0000\u0000\uD4DB" + // 26195 - 26199
-                "\u0000\u0000\u0000\u0000\u8EA2\uAEB5\u0000\u0000\u0000\u0000" + // 26200 - 26204
-                "\u8EA2\uAEBA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26205 - 26209
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26210 - 26214
-                "\u0000\u0000\u0000\u0000\u8EA2\uAEB3\u0000\uD4E3\u0000\u0000" + // 26215 - 26219
-                "\u0000\u0000\u8EA2\uB3FA\u0000\u0000\u0000\uD9C9\u8EA2\uB4AA" + // 26220 - 26224
-                "\u0000\uD9C7\u0000\uD9C4\u8EA2\uB4A1\u0000\uD9C0\u8EA2\uB4A5" + // 26225 - 26229
-                "\u0000\uD9CB\u8EA2\uB3F9\u8EA2\uB3FE\u8EA2\uB3FD\u0000\uD4D5" + // 26230 - 26234
-                "\u0000\uD9C6\u8EA2\uB4A8\u0000\u0000\u8EA2\uB4AB\u8EA2\uB3F6" + // 26235 - 26239
-                "\u0000\u0000\u0000\uDECE\u0000\u0000\u8EA2\uE2A7\u8EA2\uE5F6" + // 26240 - 26244
-                "\u8EA2\uE2AA\u0000\u0000\u8EA2\uE5F7\u0000\uF8C7\u8EA2\uE5F5" + // 26245 - 26249
-                "\u0000\u0000\u0000\u0000\u8EA2\uE5F4\u0000\u0000\u8EA2\uE5F3" + // 26250 - 26254
-                "\u0000\uF8C8\u0000\u0000\u0000\u0000\u0000\uF9F7\u0000\u0000" + // 26255 - 26259
-                "\u0000\u0000\u8EA2\uE9B9\u8EA2\uE9BA\u0000\u0000\u0000\u0000" + // 26260 - 26264
-                "\u0000\u0000\u0000\u0000\u8EA2\uEBEA\u8EA2\uEBE9\u0000\uFAF5" + // 26265 - 26269
-                "\u0000\u0000\u8EA2\uEBE8\u8EA2\uEDDA\u8EA2\uEDDB\u0000\u0000" + // 26270 - 26274
-                "\u0000\u0000\u8EA2\uEFB5\u8EA2\uF0BF\u0000\u0000\u0000\u0000" + // 26275 - 26279
-                "\u8EA2\uF1A6\u8EA2\uF2AC\u0000\uFDC6\u8EA2\uF2C0\u0000\uC5D7" + // 26280 - 26284
-                "\u0000\u0000\u0000\uCEE7\u0000\uCEE8\u0000\u0000\u0000\u0000" + // 26285 - 26289
-                "\u0000\uD2BB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26290 - 26294
-                "\u0000\uF4BA\u0000\uC5D8\u0000\u0000\u0000\uCEE9\u0000\uD6D5" + // 26295 - 26299
-                "\u0000\uE5A5\u0000\uC5D9\u0000\u0000\u0000\uDBF3\u0000\uE9DF" + // 26300 - 26304
-                "\u8EA2\uA1C2\u8EA2\uCFE8\u8EA2\uCFE2\u8EA2\uCFDF\u0000\u0000" + // 26305 - 26309
-                "\u0000\u0000\u8EA2\uBACF\u8EA2\uCFE5\u0000\u0000\u8EA2\uCFDE" + // 26310 - 26314
-                "\u8EA2\uCFE4\u8EA2\uCFE3\u0000\u0000\u8EA2\uCFE0\u0000\u0000" + // 26315 - 26319
-                "\u0000\uECB9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26320 - 26324
-                "\u0000\uECB8\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uECBA" + // 26325 - 26329
-                "\u8EA2\uCFE6\u0000\uF0BB\u8EA2\uCFE7\u0000\u0000\u0000\u0000" + // 26330 - 26334
-                "\u0000\u0000\u8EA2\uD6CF\u0000\u0000\u8EA2\uD6C8\u0000\u0000" + // 26335 - 26339
-                "\u0000\uF0C7\u8EA2\uD6CC\u0000\uF0BF\u0000\uF0C3\u8EA2\uD6CB" + // 26340 - 26344
-                "\u0000\u0000\u0000\uF0C2\u0000\uF0BE\u0000\uF0C1\u0000\uF0BC" + // 26345 - 26349
-                "\u0000\uF0C6\u8EA2\uD6CD\u8EA2\uD6C9\u0000\uF0C5\u8EA2\uD6C7" + // 26350 - 26354
-                "\u0000\uF0C4\u8EA2\uD6CE\u8EA2\uD6CA\u0000\uECBB\u0000\u0000" + // 26355 - 26359
-                "\u0000\uF0C8\u8EA2\uD6D0\u0000\uF0C0\u0000\uF0BD\u0000\u0000" + // 26360 - 26364
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDCD2\u8EA2\uDCD4" + // 26365 - 26369
-                "\u0000\uE8A7\u8EA2\uC9B5\u8EA2\uC9B7\u0000\u0000\u8EA2\uC9BA" + // 26370 - 26374
-                "\u0000\u0000\u0000\uE8AC\u0000\u0000\u0000\uE8B3\u0000\uE8AD" + // 26375 - 26379
-                "\u0000\u0000\u0000\u0000\u8EA2\uC9B0\u0000\uE8AE\u0000\uE8AF" + // 26380 - 26384
-                "\u8EA2\uC9B3\u0000\uE8B4\u0000\u0000\u8EA2\uC9B1\u8EA2\uC9B6" + // 26385 - 26389
-                "\u0000\uE8AB\u8EA2\uC9AF\u0000\uE8B1\u0000\uE8A9\u0000\u0000" + // 26390 - 26394
-                "\u0000\u0000\u0000\u0000\u0000\uE8A8\u8EA2\uC9B4\u8EA2\uC9B9" + // 26395 - 26399
-                "\u0000\u0000\u0000\uE8B2\u0000\u0000\u0000\u0000\u0000\u0000" + // 26400 - 26404
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC9AE" + // 26405 - 26409
-                "\u0000\u0000\u0000\uECB7\u8EA2\uCFEE\u0000\u0000\u8EA2\uCFEB" + // 26410 - 26414
-                "\u0000\u0000\u0000\uECB1\u0000\uECBD\u0000\uECBE\u0000\u0000" + // 26415 - 26419
-                "\u0000\uECB4\u8EA2\uCFE9\u0000\uECB6\u8EA2\uCFE1\u0000\uECBC" + // 26420 - 26424
-                "\u0000\u0000\u8EA2\uCFED\u0000\uECB3\u8EA2\uCFEF\u0000\uECB2" + // 26425 - 26429
-                "\u0000\u0000\u8EA2\uCFEA\u8EA2\uCFEC\u0000\uECB5\u8EA2\uC1F6" + // 26430 - 26434
-                "\u0000\u0000\u8EA2\uC2A7\u8EA2\uC1EF\u8EA2\uC1F8\u0000\uE3CC" + // 26435 - 26439
-                "\u0000\uE3CD\u0000\uE3C5\u8EA2\uC2A3\u0000\uE3CF\u8EA2\uC1F4" + // 26440 - 26444
-                "\u8EA2\uC1F3\u8EA2\uC1F1\u8EA2\uC2A5\u0000\uE3C3\u8EA2\uC1FD" + // 26445 - 26449
-                "\u8EA2\uC1F2\u0000\uE3C6\u8EA2\uC1FB\u0000\uE3C1\u8EA2\uC1F7" + // 26450 - 26454
-                "\u8EA2\uC1FE\u8EA2\uC2A2\u0000\u0000\u0000\u0000\u8EA2\uC2A6" + // 26455 - 26459
-                "\u0000\uE3CA\u8EA2\uC1F0\u0000\uE3C4\u8EA2\uC1F5\u0000\u0000" + // 26460 - 26464
-                "\u0000\uE3BF\u0000\u0000\u0000\uE3CB\u8EA2\uC2A1\u0000\uE3C7" + // 26465 - 26469
-                "\u0000\uE3C8\u0000\uE3CE\u0000\uE3C2\u0000\uA3A1\u0000\uE3C0" + // 26470 - 26474
-                "\u8EA2\uC1F9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26475 - 26479
-                "\u0000\u0000\u0000\uE3C9\u0000\u0000\u0000\u0000\u8EA2\uC2A4" + // 26480 - 26484
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE8B5\u0000\uE8B0" + // 26485 - 26489
-                "\u0000\u0000\u8EA2\uC9BC\u8EA2\uC9B8\u0000\u0000\u8EA2\uC9B2" + // 26490 - 26494
-                "\u0000\uE8AA\u0000\uE8A6\u8EA2\uC9BB\u0000\uDEBE\u8EA2\uBAD5" + // 26495 - 26499
-                "\u0000\uDEC4\u0000\uDECA\u0000\uE1C3\u0000\u0000\u0000\u0000" + // 26500 - 26504
-                "\u0000\uDEC8\u8EA2\uBAD2\u0000\uDED5\u0000\uDEC1\u0000\uDEC9" + // 26505 - 26509
-                "\u8EA2\uBADA\u8EA2\uC1FC\u8EA2\uBADF\u8EA2\uBAD3\u0000\u0000" + // 26510 - 26514
-                "\u8EA2\uBACA\u8EA2\uBAD7\u8EA2\uBAD1\u0000\uDEC7\u8EA2\uBADD" + // 26515 - 26519
-                "\u0000\u0000\u0000\u0000\u0000\uDEC3\u0000\uDED7\u0000\uDED0" + // 26520 - 26524
-                "\u0000\u0000\u0000\uDEC5\u0000\uDEC2\u0000\u0000\u0000\uDECD" + // 26525 - 26529
-                "\u0000\u0000\u8EA2\uBADE\u8EA2\uBAD0\u8EA2\uBAD6\u8EA2\uBAD8" + // 26530 - 26534
-                "\u8EA2\uBACC\u8EA2\uBADB\u0000\uDEBF\u8EA2\uBACB\u0000\u0000" + // 26535 - 26539
-                "\u0000\uDEC6\u0000\uDED6\u0000\uDED2\u8EA2\uBACD\u0000\uDECC" + // 26540 - 26544
-                "\u0000\u0000\u0000\u0000\u0000\uDED3\u0000\uDECF\u0000\uDECB" + // 26545 - 26549
-                "\u0000\u0000\u8EA2\uBAD4\u0000\u0000\u0000\u0000\u0000\u0000" + // 26550 - 26554
-                "\u0000\u0000\u0000\u0000\u0000\uDED1\u0000\u0000\u0000\u0000" + // 26555 - 26559
-                "\u0000\u0000\u8EA2\uC1FA\u8EA2\uB4AC\u0000\uD9CC\u0000\u0000" + // 26560 - 26564
-                "\u0000\uD9BE\u0000\uD9BB\u8EA2\uB4A3\u0000\uD9B8\u0000\u0000" + // 26565 - 26569
-                "\u8EA2\uB4A9\u0000\u0000\u0000\uD9BF\u8EA2\uB4AD\u0000\u0000" + // 26570 - 26574
-                "\u8EA2\uB3F7\u8EA2\uB4A7\u0000\uD9C2\u8EA2\uB3F8\u8EA2\uB3FB" + // 26575 - 26579
-                "\u8EA2\uB4A2\u0000\u0000\u0000\u0000\u0000\uD9C3\u0000\uD9C1" + // 26580 - 26584
-                "\u0000\uD9CD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26585 - 26589
-                "\u0000\uD9C8\u0000\u0000\u0000\uD9BC\u0000\uDAF6\u0000\u0000" + // 26590 - 26594
-                "\u0000\uD9BD\u8EA2\uB3FC\u0000\uD9CA\u0000\uD9C5\u8EA2\uB4A6" + // 26595 - 26599
-                "\u0000\uD9BA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD9B9" + // 26600 - 26604
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26605 - 26609
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26610 - 26614
-                "\u8EA2\uB3F4\u8EA2\uB3F5\u8EA2\uBACE\u0000\u0000\u0000\u0000" + // 26615 - 26619
-                "\u0000\u0000\u0000\uDEBD\u0000\uDEC0\u8EA2\uBAD9\u0000\uDED4" + // 26620 - 26624
-                "\u8EA2\uBADC\u0000\uD0B7\u0000\uD0C2\u0000\uD0BF\u8EA2\uA9C1" + // 26625 - 26629
-                "\u0000\uD0C3\u8EA2\uA9C7\u8EA2\uA9C8\u0000\uD0BE\u0000\uD0C4" + // 26630 - 26634
-                "\u0000\uD0BA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26635 - 26639
-                "\u0000\uD0B9\u8EA2\uA9C0\u0000\u0000\u0000\u0000\u0000\u0000" + // 26640 - 26644
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA9C5\u0000\u0000" + // 26645 - 26649
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26650 - 26654
-                "\u0000\u0000\u8EA2\uA9CF\u0000\u0000\u8EA2\uAEC6\u0000\uD4DE" + // 26655 - 26659
-                "\u8EA2\uAEB4\u0000\u0000\u8EA2\uAEB9\u0000\uD4D7\u0000\uD4E2" + // 26660 - 26664
-                "\u8EA2\uAEB7\u0000\uD4D2\u0000\uD4DC\u0000\uD4E1\u8EA2\uAEBE" + // 26665 - 26669
-                "\u0000\u0000\u0000\uD4DD\u0000\uD4E0\u0000\u0000\u0000\u0000" + // 26670 - 26674
-                "\u8EA2\uAEC1\u0000\uD4D8\u8EA2\uAEB8\u0000\u0000\u0000\u0000" + // 26675 - 26679
-                "\u0000\u0000\u8EA2\uAEC4\u8EA2\uAEC5\u0000\u0000\u0000\uD4DA" + // 26680 - 26684
-                "\u8EA2\uAEC3\u0000\uD4D6\u0000\uD4E5\u0000\u0000\u8EA2\uAEBB" + // 26685 - 26689
-                "\u0000\uCCC5\u8EA2\uA5DD\u8EA2\uA5DF\u0000\u0000\u0000\uCCC8" + // 26690 - 26694
-                "\u0000\u0000\u0000\uCCCA\u8EA2\uA5DB\u8EA2\uA5E0\u0000\u0000" + // 26695 - 26699
-                "\u0000\u0000\u0000\uCCD3\u0000\uCCCF\u8EA2\uA5E8\u0000\uCCD5" + // 26700 - 26704
-                "\u0000\u0000\u0000\uCCCC\u8EA2\uA5DE\u0000\uCCC9\u0000\u0000" + // 26705 - 26709
-                "\u0000\u0000\u0000\uCCC4\u0000\uCCC2\u0000\u0000\u8EA2\uA5EC" + // 26710 - 26714
-                "\u0000\u0000\u0000\uCCD0\u0000\u0000\u0000\u0000\u0000\u0000" + // 26715 - 26719
-                "\u0000\u0000\u0000\u0000\u8EA2\uA9C9\u8EA2\uA9BD\u8EA2\uA9CC" + // 26720 - 26724
-                "\u0000\u0000\u0000\u0000\u8EA2\uA9BF\u0000\uD0BC\u0000\uD0CA" + // 26725 - 26729
-                "\u0000\uD0B8\u0000\uD0C9\u0000\uD0C1\u0000\uD0C6\u0000\uD0B6" + // 26730 - 26734
-                "\u8EA2\uA9BE\u8EA2\uA9C4\u0000\uD0C5\u8EA2\uA9D0\u0000\uD0C7" + // 26735 - 26739
-                "\u0000\u0000\u0000\uD0BD\u0000\u0000\u0000\u0000\u8EA2\uA9C6" + // 26740 - 26744
-                "\u8EA2\uA9C3\u0000\uD0BB\u0000\u0000\u8EA2\uA9BC\u0000\uD0C8" + // 26745 - 26749
-                "\u8EA2\uA9CB\u0000\uD0C0\u8EA2\uA9CD\u0000\uD0CB\u0000\uC9D4" + // 26750 - 26754
-                "\u8EA2\uA3C3\u0000\uC9C8\u0000\uC9C5\u0000\u0000\u8EA2\uA3BC" + // 26755 - 26759
-                "\u0000\uC9C4\u8EA2\uA3C6\u0000\uC9C7\u0000\u0000\u0000\uC9CB" + // 26760 - 26764
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC9C2\u8EA2\uA3C2" + // 26765 - 26769
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA3BB" + // 26770 - 26774
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26775 - 26779
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26780 - 26784
-                "\u0000\u0000\u8EA2\uA5EB\u8EA2\uA5EA\u0000\uCCD1\u8EA2\uA5ED" + // 26785 - 26789
-                "\u8EA2\uA5EF\u8EA2\uA5E4\u8EA2\uA5E7\u8EA2\uA5EE\u0000\uCCD2" + // 26790 - 26794
-                "\u0000\u0000\u0000\u0000\u8EA2\uA5E1\u8EA2\uA5E5\u0000\u0000" + // 26795 - 26799
-                "\u0000\u0000\u8EA2\uA5E9\u8EA2\uA9CA\u0000\uCCCD\u8EA2\uA9CE" + // 26800 - 26804
-                "\u0000\uCCC0\u8EA2\uA5E6\u0000\uCCC1\u0000\uCCCE\u0000\uCCC7" + // 26805 - 26809
-                "\u0000\uCCC3\u0000\u0000\u8EA2\uA5E2\u0000\uCCC6\u0000\uCCCB" + // 26810 - 26814
-                "\u0000\uCCD4\u8EA2\uA5E3\u8EA2\uA5DC\u0000\uD9B4\u0000\uC4B2" + // 26815 - 26819
-                "\u0000\u0000\u0000\uC4C5\u0000\uA4BF\u0000\uC5AB\u0000\u0000" + // 26820 - 26824
-                "\u0000\uC5AA\u0000\uC5A9\u0000\uC6A5\u0000\uC6A4\u0000\u0000" + // 26825 - 26829
-                "\u8EA2\uA1CE\u8EA2\uA2A3\u0000\u0000\u0000\u0000\u0000\u0000" + // 26830 - 26834
-                "\u0000\uCCB8\u0000\uCCB5\u0000\uCCB7\u0000\uCCB6\u0000\u0000" + // 26835 - 26839
-                "\u0000\u0000\u0000\uD0B2\u0000\u0000\u0000\u0000\u0000\uDEBB" + // 26840 - 26844
-                "\u0000\u0000\u0000\uC4B3\u0000\u0000\u0000\uC5AC\u0000\u0000" + // 26845 - 26849
-                "\u0000\uC6A7\u0000\uC6A6\u0000\u0000\u8EA2\uA3B4\u0000\u0000" + // 26850 - 26854
-                "\u0000\u0000\u0000\uCCB9\u0000\u0000\u0000\u0000\u0000\uA7BA" + // 26855 - 26859
-                "\u0000\u0000\u0000\u0000\u8EA2\uA1B7\u0000\u0000\u0000\uC6A9" + // 26860 - 26864
-                "\u0000\uC6A8\u0000\uC7CD\u0000\uC7CE\u8EA2\uA3B5\u0000\uC9BB" + // 26865 - 26869
-                "\u0000\u0000\u0000\uC9BC\u0000\u0000\u0000\uCCBA\u0000\uCCBB" + // 26870 - 26874
-                "\u0000\uCCBC\u0000\u0000\u0000\uD0B3\u8EA2\uA9B7\u0000\u0000" + // 26875 - 26879
-                "\u0000\u0000\u0000\uD4CE\u8EA2\uA9B4\u0000\uD0B0\u8EA2\uA9B5" + // 26880 - 26884
-                "\u0000\uD0AF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0AD" + // 26885 - 26889
-                "\u0000\u0000\u0000\uD0AE\u0000\u0000\u0000\u0000\u0000\u0000" + // 26890 - 26894
-                "\u8EA2\uAEB0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26895 - 26899
-                "\u0000\uD9AC\u8EA2\uB3F1\u0000\u0000\u0000\uD9AF\u8EA2\uB3F0" + // 26900 - 26904
-                "\u0000\uDBAB\u0000\uD9AE\u0000\uD9AD\u0000\u0000\u0000\uDEBA" + // 26905 - 26909
-                "\u0000\u0000\u0000\uDEB9\u0000\uDEB8\u0000\uE3B9\u0000\u0000" + // 26910 - 26914
-                "\u0000\u0000\u0000\uE3BC\u0000\uE3BD\u0000\uE3BB\u0000\u0000" + // 26915 - 26919
-                "\u0000\uE3BA\u0000\u0000\u0000\u0000\u8EA2\uC9AA\u0000\u0000" + // 26920 - 26924
-                "\u8EA2\uC9AB\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCFDD" + // 26925 - 26929
-                "\u0000\uECAF\u8EA2\uCFDC\u0000\u0000\u0000\uF0BA\u8EA2\uDCCB" + // 26930 - 26934
-                "\u0000\uF3C4\u0000\u0000\u8EA2\uE5BA\u0000\uF9E1\u0000\uA7B4" + // 26935 - 26939
-                "\u0000\uC4C4\u0000\uC5A4\u8EA2\uA1B6\u0000\u0000\u0000\uC5A5" + // 26940 - 26944
-                "\u0000\uC5A6\u8EA2\uC9A8\u8EA2\uC9A9\u0000\uE8A3\u0000\uE8A2" + // 26945 - 26949
-                "\u8EA2\uCCE1\u0000\u0000\u0000\u0000\u0000\uECAA\u0000\uECAB" + // 26950 - 26954
-                "\u0000\uECAC\u0000\uECAE\u8EA2\uCFDA\u8EA2\uCFDB\u0000\uECAD" + // 26955 - 26959
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF0B8\u0000\u0000" + // 26960 - 26964
-                "\u0000\uF0B9\u0000\u0000\u0000\u0000\u8EA2\uE5B9\u8EA2\uEBD1" + // 26965 - 26969
-                "\u8EA2\uEBD0\u8EA2\uEEFE\u0000\u0000\u0000\uC4B0\u0000\u0000" + // 26970 - 26974
-                "\u0000\u0000\u0000\u0000\u0000\uC5FC\u0000\uC5FB\u0000\u0000" + // 26975 - 26979
-                "\u0000\u0000\u0000\uC7C9\u0000\u0000\u0000\u0000\u8EA2\uA1FE" + // 26980 - 26984
-                "\u0000\u0000\u0000\u0000\u0000\uC9B7\u0000\uC9B8\u0000\uC9B6" + // 26985 - 26989
-                "\u0000\uC9B9\u8EA2\uA3B1\u8EA2\uA3B2\u0000\u0000\u0000\u0000" + // 26990 - 26994
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26995 - 26999
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27000 - 27004
-                "\u0000\uCCB4\u8EA2\uA5D5\u0000\u0000\u0000\uCCB3\u0000\u0000" + // 27005 - 27009
-                "\u8EA2\uC4A2\u8EA2\uC3FE\u8EA2\uC3FD\u0000\u0000\u8EA2\uC3FC" + // 27010 - 27014
-                "\u8EA2\uC3FB\u0000\uE4D8\u8EA2\uC4A1\u0000\uE9B9\u8EA2\uCBAB" + // 27015 - 27019
-                "\u8EA2\uCBAD\u0000\uE9BA\u8EA2\uCBAC\u0000\uEDC5\u0000\u0000" + // 27020 - 27024
-                "\u0000\uEDC4\u8EA2\uD1B9\u0000\u0000\u0000\u0000\u8EA2\uD7EA" + // 27025 - 27029
-                "\u8EA2\uD7E9\u8EA2\uD7EB\u0000\u0000\u0000\u0000\u0000\uF1A4" + // 27030 - 27034
-                "\u0000\u0000\u8EA2\uDDB7\u0000\uF3FC\u0000\u0000\u8EA2\uE1F4" + // 27035 - 27039
-                "\u0000\uF6D6\u8EA2\uE5E4\u0000\uFBE3\u0000\uC5CF\u0000\uC6DF" + // 27040 - 27044
-                "\u0000\uC8BA\u0000\uCAE3\u0000\uCEBD\u0000\uCEBE\u0000\u0000" + // 27045 - 27049
-                "\u0000\u0000\u0000\uD1F1\u0000\u0000\u0000\u0000\u8EA2\uAFFC" + // 27050 - 27054
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE4D9" + // 27055 - 27059
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD2D9\u0000\uF1A5" + // 27060 - 27064
-                "\u0000\uF6D7\u0000\uC5D0\u0000\u0000\u0000\uC8BB\u0000\u0000" + // 27065 - 27069
-                "\u0000\u0000\u8EA2\uA7CC\u0000\uCEBF\u0000\uC4AE\u0000\uC4AF" + // 27070 - 27074
-                "\u0000\u0000\u0000\uC4C3\u0000\u0000\u0000\u0000\u0000\uC5A1" + // 27075 - 27079
-                "\u0000\uC5A2\u0000\uC5A3\u8EA2\uA1CC\u0000\uC5FA\u0000\u0000" + // 27080 - 27084
-                "\u8EA2\uA1CB\u0000\u0000\u0000\uC7C7\u0000\u0000\u8EA2\uA1FD" + // 27085 - 27089
-                "\u0000\uC7C5\u0000\uC7C6\u8EA2\uA1FC\u0000\u0000\u0000\u0000" + // 27090 - 27094
-                "\u0000\uC7C8\u0000\uC7C4\u0000\u0000\u0000\u0000\u0000\u0000" + // 27095 - 27099
-                "\u0000\u0000\u8EA2\uA3AE\u0000\uCFCF\u8EA2\uA3AF\u0000\u0000" + // 27100 - 27104
-                "\u0000\u0000\u8EA2\uA3B0\u0000\u0000\u0000\u0000\u0000\uC9B2" + // 27105 - 27109
-                "\u0000\uC9B1\u0000\u0000\u0000\u0000\u0000\uC9B5\u0000\uC9B3" + // 27110 - 27114
-                "\u0000\uC9B4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCCB0" + // 27115 - 27119
-                "\u0000\u0000\u0000\uCCAF\u8EA2\uA5D4\u8EA2\uA5D1\u8EA2\uA5D2" + // 27120 - 27124
-                "\u0000\u0000\u8EA2\uA5D0\u0000\uCCB1\u0000\uCCAD\u0000\uCCAC" + // 27125 - 27129
-                "\u0000\u0000\u0000\uCCAE\u0000\uCCAB\u0000\u0000\u0000\u0000" + // 27130 - 27134
-                "\u0000\u0000\u0000\u0000\u0000\uDCBE\u0000\u0000\u8EA2\uB7DD" + // 27135 - 27139
-                "\u0000\u0000\u0000\u0000\u8EA2\uB7D6\u8EA2\uB7D8\u8EA2\uB7DA" + // 27140 - 27144
-                "\u0000\u0000\u8EA2\uB7DB\u8EA2\uB7D9\u0000\uDCBF\u0000\u0000" + // 27145 - 27149
-                "\u8EA2\uB7DE\u0000\u0000\u8EA2\uB7D7\u0000\u0000\u0000\u0000" + // 27150 - 27154
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27155 - 27159
-                "\u0000\u0000\u0000\u0000\u8EA2\uBECC\u0000\uE0FC\u8EA2\uBED4" + // 27160 - 27164
-                "\u0000\u0000\u8EA2\uBEC9\u0000\u0000\u8EA2\uBED5\u0000\u0000" + // 27165 - 27169
-                "\u8EA2\uBECA\u8EA2\uBECB\u0000\u0000\u0000\u0000\u8EA2\uBED3" + // 27170 - 27174
-                "\u8EA2\uBED2\u8EA2\uBECF\u0000\uDCBD\u0000\uE0FD\u8EA2\uBECD" + // 27175 - 27179
-                "\u8EA2\uBED0\u0000\uE0FE\u8EA2\uBED1\u8EA2\uBECE\u0000\u0000" + // 27180 - 27184
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27185 - 27189
-                "\u0000\u0000\u8EA2\uC5D4\u0000\u0000\u8EA2\uC5D8\u0000\uE5D5" + // 27190 - 27194
-                "\u0000\u0000\u8EA2\uCCB8\u0000\uE5D8\u0000\uF0B5\u0000\u0000" + // 27195 - 27199
-                "\u0000\uA7AD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27200 - 27204
-                "\u8EA2\uA1AE\u0000\u0000\u0000\uC5F4\u0000\uC5F5\u0000\u0000" + // 27205 - 27209
-                "\u0000\u0000\u0000\uC7C2\u0000\u0000\u8EA2\uA3AC\u0000\u0000" + // 27210 - 27214
-                "\u0000\uD0A4\u0000\uD0A3\u8EA2\uAEA3\u8EA2\uAEA2\u0000\uD9A8" + // 27215 - 27219
-                "\u0000\uA7AE\u0000\uC4FD\u8EA2\uA1B5\u0000\u0000\u0000\u0000" + // 27220 - 27224
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA5CD\u0000\u0000" + // 27225 - 27229
-                "\u0000\uD0A5\u0000\u0000\u0000\uD4C3\u0000\u0000\u0000\uD4C1" + // 27230 - 27234
-                "\u0000\uD4C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27235 - 27239
-                "\u0000\uF0B6\u0000\uA7AF\u0000\uC5F6\u0000\u0000\u0000\u0000" + // 27240 - 27244
-                "\u0000\u0000\u0000\uC7C3\u8EA2\uA1FB\u0000\u0000\u0000\u0000" + // 27245 - 27249
-                "\u0000\u0000\u0000\u0000\u0000\uC9AF\u0000\uC9B0\u0000\u0000" + // 27250 - 27254
-                "\u8EA2\uA3AD\u0000\u0000\u0000\u0000\u8EA2\uA5CE\u0000\uCCA9" + // 27255 - 27259
-                "\u8EA2\uA5CF\u0000\u0000\u0000\uE9A9\u8EA2\uCBA7\u0000\uE9B7" + // 27260 - 27264
-                "\u8EA2\uCAF5\u0000\u0000\u8EA2\uCBAA\u0000\u0000\u0000\u0000" + // 27265 - 27269
-                "\u8EA2\uCAE5\u8EA2\uCAFA\u0000\uE9AC\u0000\uE9B5\u0000\uE9B3" + // 27270 - 27274
-                "\u8EA2\uCAE7\u8EA2\uCAFC\u0000\uE9B2\u0000\u0000\u0000\u0000" + // 27275 - 27279
-                "\u0000\uE9AB\u8EA2\uCAF8\u0000\u0000\u0000\u0000\u0000\u0000" + // 27280 - 27284
-                "\u0000\u0000\u8EA2\uCBA4\u0000\u0000\u0000\u0000\u0000\u0000" + // 27285 - 27289
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27290 - 27294
-                "\u8EA2\uD0FC\u0000\u0000\u8EA2\uD0F8\u8EA2\uD0F4\u8EA2\uD1AA" + // 27295 - 27299
-                "\u8EA2\uD1A7\u0000\uEDB7\u0000\u0000\u0000\u0000\u8EA2\uD1AE" + // 27300 - 27304
-                "\u8EA2\uD0FB\u0000\uEDC2\u8EA2\uD1A4\u0000\u0000\u0000\u0000" + // 27305 - 27309
-                "\u8EA2\uD0F7\u8EA2\uD1A3\u0000\uEDBF\u8EA2\uD1B7\u0000\u0000" + // 27310 - 27314
-                "\u8EA2\uD1B4\u8EA2\uD1A6\u8EA2\uD0F5\u0000\u0000\u0000\u0000" + // 27315 - 27319
-                "\u8EA2\uD1AB\u8EA2\uD1AD\u0000\uEDBB\u8EA2\uD1A1\u8EA2\uD0FA" + // 27320 - 27324
-                "\u0000\uC4C2\u0000\uC4F8\u0000\u0000\u0000\uC4F7\u0000\uC5F3" + // 27325 - 27329
-                "\u0000\uC5F2\u0000\uC7BE\u0000\uC7BD\u0000\uC7BF\u0000\uC7BC" + // 27330 - 27334
-                "\u0000\u0000\u0000\uC9AC\u0000\uC9AB\u0000\uC9AD\u0000\u0000" + // 27335 - 27339
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCCA3\u0000\u0000" + // 27340 - 27344
-                "\u0000\uCCA2\u0000\uCCA4\u0000\u0000\u0000\uD0A2\u0000\u0000" + // 27345 - 27349
-                "\u0000\uA2F9\u8EA2\uAEA1\u0000\uA2FA\u0000\uD9A7\u0000\uA2FC" + // 27350 - 27354
-                "\u0000\uA2FB\u8EA2\uBAC4\u0000\u0000\u0000\uA2FD\u0000\uE7FE" + // 27355 - 27359
-                "\u0000\uA2FE\u0000\u0000\u0000\uC4AB\u0000\u0000\u0000\uC4F9" + // 27360 - 27364
-                "\u0000\uC7C0\u0000\uCCA5\u0000\u0000\u0000\uC4AC\u0000\uC4FC" + // 27365 - 27369
-                "\u0000\uC4FA\u0000\uC4FB\u0000\u0000\u0000\u0000\u0000\uC7C1" + // 27370 - 27374
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC9AE\u0000\uCCA7" + // 27375 - 27379
-                "\u0000\uCCA6\u0000\uCCA8\u0000\u0000\u0000\u0000\u0000\u0000" + // 27380 - 27384
-                "\u0000\uD4C0\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA1A5" + // 27385 - 27389
-                "\u0000\u0000\u0000\uC5AD\u0000\u0000\u0000\u0000\u0000\u0000" + // 27390 - 27394
-                "\u0000\u0000\u0000\u0000\u8EA2\uA2A4\u0000\u0000\u0000\u0000" + // 27395 - 27399
-                "\u0000\u0000\u8EA2\uA3B6\u8EA2\uA3B7\u0000\u0000\u0000\u0000" + // 27400 - 27404
-                "\u8EA2\uA5D9\u0000\u0000\u8EA2\uA5DA\u0000\u0000\u8EA2\uA9B9" + // 27405 - 27409
-                "\u8EA2\uA9B8\u8EA2\uA9BB\u8EA2\uA9BA\u0000\uD0B4\u0000\u0000" + // 27410 - 27414
-                "\u8EA2\uB3F3\u0000\uD4D0\u8EA2\uAEB2\u0000\uD4CF\u0000\u0000" + // 27415 - 27419
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBAC8\u0000\uDEBC" + // 27420 - 27424
-                "\u0000\u0000\u8EA2\uBAC9\u0000\u0000\u0000\u0000\u0000\u0000" + // 27425 - 27429
-                "\u0000\u0000\u8EA2\uC9AD\u0000\uE8A5\u0000\u0000\u0000\u0000" + // 27430 - 27434
-                "\u0000\u0000\u0000\u0000\u0000\uECB0\u0000\u0000\u8EA2\uE5BB" + // 27435 - 27439
-                "\u0000\u0000\u0000\uA7BC\u0000\u0000\u0000\u0000\u8EA2\uA1B8" + // 27440 - 27444
-                "\u0000\u0000\u0000\uC6AA\u0000\u0000\u0000\u0000\u0000\u0000" + // 27445 - 27449
-                "\u0000\u0000\u8EA2\uD2F1\u0000\u0000\u0000\u0000\u0000\u0000" + // 27450 - 27454
-                "\u0000\u0000\u0000\uF1EA\u0000\uF1EF\u0000\uF1E8\u8EA2\uD9C4" + // 27455 - 27459
-                "\u8EA2\uD9BB\u8EA2\uD9C7\u8EA2\uD9BF\u8EA2\uD9C5\u0000\uF1F0" + // 27460 - 27464
-                "\u0000\uF1E9\u8EA2\uD9B8\u8EA2\uD9BE\u8EA2\uD9C8\u8EA2\uD9C1" + // 27465 - 27469
-                "\u8EA2\uD9C6\u8EA2\uD9BA\u0000\u0000\u0000\u0000\u8EA2\uD9C2" + // 27470 - 27474
-                "\u0000\uF1EB\u8EA2\uD9C0\u0000\uF1EE\u0000\uF1ED\u8EA2\uD9BC" + // 27475 - 27479
-                "\u8EA2\uD9BD\u8EA2\uD9B9\u8EA2\uD9C3\u0000\uF1EC\u8EA2\uD9CA" + // 27480 - 27484
-                "\u8EA2\uD9C9\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDEC7" + // 27485 - 27489
-                "\u8EA2\uDEC3\u0000\uF4E9\u0000\u0000\u8EA2\uDEBD\u0000\uF4E3" + // 27490 - 27494
-                "\u0000\uF4F3\u8EA2\uDEC9\u0000\uF4EB\u0000\uF4E7\u8EA2\uDEC0" + // 27495 - 27499
-                "\u0000\uF4EE\u0000\uF4F1\u8EA2\uDECB\u0000\uF4E6\u8EA2\uDEC2" + // 27500 - 27504
-                "\u0000\uF4EF\u8EA2\uDECD\u8EA2\uDECA\u8EA2\uDEBE\u0000\uF4EA" + // 27505 - 27509
-                "\u0000\uF4E4\u0000\uF4F2\u0000\uECA1\u0000\u0000\u0000\uECA5" + // 27510 - 27514
-                "\u8EA2\uCFCF\u0000\uEBFE\u0000\uECA8\u8EA2\uCFD2\u8EA2\uCFD3" + // 27515 - 27519
-                "\u0000\uECA6\u0000\uECA7\u8EA2\uCFD9\u8EA2\uCFD6\u8EA2\uCFD7" + // 27520 - 27524
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF0B3\u8EA2\uD6C3" + // 27525 - 27529
-                "\u0000\uF0B0\u8EA2\uD6C0\u0000\uF0B2\u0000\uF0B4\u0000\u0000" + // 27530 - 27534
-                "\u8EA2\uD6C1\u0000\uF0B1\u0000\u0000\u8EA2\uD6C2\u0000\u0000" + // 27535 - 27539
-                "\u8EA2\uD6BF\u0000\u0000\u0000\u0000\u0000\uF3C1\u8EA2\uDCC9" + // 27540 - 27544
-                "\u0000\uF3C2\u8EA2\uDCC7\u0000\u0000\u8EA2\uDCC8\u8EA2\uDCC6" + // 27545 - 27549
-                "\u8EA2\uDCC5\u0000\u0000\u0000\u0000\u8EA2\uDCCA\u0000\uF3C0" + // 27550 - 27554
-                "\u0000\u0000\u0000\u0000\u8EA2\uE1C4\u8EA2\uE1C5\u0000\u0000" + // 27555 - 27559
-                "\u8EA2\uCFD0\u8EA2\uE1C3\u0000\uF3C3\u0000\uF8AB\u8EA2\uE5B7" + // 27560 - 27564
-                "\u8EA2\uE5B8\u0000\u0000\u0000\uFAE2\u0000\uFAE3\u8EA2\uEBCF" + // 27565 - 27569
-                "\u8EA2\uEBCE\u0000\uFBD8\u0000\uFBD7\u8EA2\uEEFD\u0000\u0000" + // 27570 - 27574
-                "\u0000\uC4AA\u0000\uDEAE\u0000\u0000\u8EA2\uBAC2\u8EA2\uBABB" + // 27575 - 27579
-                "\u0000\u0000\u0000\uDEAB\u0000\u0000\u8EA2\uBAC3\u0000\u0000" + // 27580 - 27584
-                "\u0000\u0000\u0000\u0000\u8EA2\uBAB9\u8EA2\uBABC\u0000\uDEAA" + // 27585 - 27589
-                "\u8EA2\uBABD\u0000\u0000\u0000\u0000\u0000\uDEAD\u8EA2\uBAC1" + // 27590 - 27594
-                "\u0000\u0000\u8EA2\uBAB7\u8EA2\uBAB6\u0000\uDEAF\u0000\u0000" + // 27595 - 27599
-                "\u0000\uDEB0\u0000\uDEAC\u0000\uDEB1\u8EA2\uBAB5\u8EA2\uBAC0" + // 27600 - 27604
-                "\u8EA2\uBABE\u8EA2\uBAB8\u0000\u0000\u0000\u0000\u0000\u0000" + // 27605 - 27609
-                "\u0000\uDEA9\u8EA2\uBABA\u0000\u0000\u0000\u0000\u0000\u0000" + // 27610 - 27614
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27615 - 27619
-                "\u0000\uE3B1\u0000\uE3AB\u8EA2\uC1DC\u0000\uE3B4\u8EA2\uC1E2" + // 27620 - 27624
-                "\u8EA2\uC1E5\u0000\uE3AD\u0000\uE3AE\u8EA2\uC1DF\u0000\uE3AC" + // 27625 - 27629
-                "\u8EA2\uC1E8\u0000\uE3B2\u8EA2\uC1E9\u0000\u0000\u8EA2\uC1E4" + // 27630 - 27634
-                "\u0000\uE3B3\u0000\u0000\u8EA2\uC1D9\u0000\uE3B0\u8EA2\uC1DA" + // 27635 - 27639
-                "\u8EA2\uB3E6\u8EA2\uB3DA\u0000\u0000\u0000\uD8F6\u0000\u0000" + // 27640 - 27644
-                "\u8EA2\uB3DF\u8EA2\uB3E5\u0000\uD8F5\u8EA2\uB3D8\u0000\uD8F9" + // 27645 - 27649
-                "\u8EA2\uB3DC\u8EA2\uB3D5\u0000\uD8F7\u8EA2\uB3D9\u0000\uD8FC" + // 27650 - 27654
-                "\u0000\uD9A3\u0000\u0000\u8EA2\uB3EA\u0000\u0000\u8EA2\uB3D4" + // 27655 - 27659
-                "\u0000\u0000\u0000\uD8FD\u0000\u0000\u8EA2\uB3E9\u0000\u0000" + // 27660 - 27664
-                "\u0000\u0000\u0000\uD8F8\u8EA2\uB3DB\u0000\uD8F4\u8EA2\uB3D6" + // 27665 - 27669
-                "\u8EA2\uB3D2\u8EA2\uB3E0\u8EA2\uB3D3\u8EA2\uB3D1\u8EA2\uB3DD" + // 27670 - 27674
-                "\u8EA2\uB3E3\u8EA2\uB3E4\u0000\uD8FA\u0000\u0000\u0000\u0000" + // 27675 - 27679
-                "\u8EA2\uBABF\u8EA2\uB3E1\u8EA2\uB3D0\u8EA2\uB3E2\u0000\u0000" + // 27680 - 27684
-                "\u0000\uD9A6\u8EA2\uB3E7\u0000\uD9A5\u8EA2\uB3CF\u0000\u0000" + // 27685 - 27689
-                "\u8EA2\uB3D7\u8EA2\uB3E8\u0000\uD9A1\u0000\uD8FE\u0000\uD8FB" + // 27690 - 27694
-                "\u0000\uD9A2\u0000\u0000\u0000\u0000\u0000\uD8F2\u0000\u0000" + // 27695 - 27699
-                "\u0000\u0000\u0000\uD8F3\u0000\u0000\u0000\u0000\u0000\uCBD2" + // 27700 - 27704
-                "\u0000\u0000\u0000\uCBD5\u0000\uCBD4\u0000\uCBD3\u0000\u0000" + // 27705 - 27709
-                "\u0000\u0000\u8EA2\uA5A5\u0000\u0000\u8EA2\uA8ED\u0000\u0000" + // 27710 - 27714
-                "\u8EA2\uA8EF\u0000\uCFD2\u0000\u0000\u0000\u0000\u0000\uCFD4" + // 27715 - 27719
-                "\u8EA2\uA8EC\u8EA2\uA8EE\u0000\uCFD3\u8EA2\uA8F1\u8EA2\uA8F0" + // 27720 - 27724
-                "\u8EA2\uA8F2\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27725 - 27729
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uADD7" + // 27730 - 27734
-                "\u8EA2\uADD5\u0000\uD3DF\u8EA2\uADD4\u0000\uD3E4\u0000\uD3E1" + // 27735 - 27739
-                "\u0000\uD3DE\u0000\u0000\u0000\uD3E5\u0000\u0000\u0000\uD3E0" + // 27740 - 27744
-                "\u0000\uD3E3\u0000\u0000\u0000\uD3E2\u8EA2\uADD6\u0000\u0000" + // 27745 - 27749
-                "\u0000\uD3DD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD8CF" + // 27750 - 27754
-                "\u8EA2\uB3AF\u8EA2\uB3B5\u0000\uD8CC\u0000\uD8D3\u0000\u0000" + // 27755 - 27759
-                "\u0000\uD8CE\u8EA2\uB3B2\u8EA2\uB3B4\u0000\uD8D1\u8EA2\uB3AE" + // 27760 - 27764
-                "\u8EA2\uB3B1\u0000\uD4B1\u0000\u0000\u0000\u0000\u0000\u0000" + // 27765 - 27769
-                "\u0000\u0000\u8EA2\uADEA\u0000\uD4AA\u8EA2\uADEB\u0000\u0000" + // 27770 - 27774
-                "\u0000\uD4BF\u0000\u0000\u0000\uD4B6\u0000\uD4A1\u0000\uD4A2" + // 27775 - 27779
-                "\u8EA2\uADFE\u0000\uD9A4\u0000\u0000\u0000\uD4AF\u0000\uD4AE" + // 27780 - 27784
-                "\u8EA2\uADEC\u0000\uD4B2\u8EA2\uB3DE\u0000\uD4A9\u8EA2\uADF7" + // 27785 - 27789
-                "\u0000\uD4B8\u0000\uD4B7\u0000\uD4AD\u8EA2\uADEF\u8EA2\uADF8" + // 27790 - 27794
-                "\u0000\u0000\u8EA2\uADE9\u0000\uD4AC\u8EA2\uADF9\u0000\uD4B5" + // 27795 - 27799
-                "\u8EA2\uADED\u0000\uD4A3\u0000\u0000\u0000\uD4A6\u0000\uD4A5" + // 27800 - 27804
-                "\u8EA2\uADFA\u0000\uD4B3\u0000\uD4A8\u0000\uD4BC\u0000\uD4BE" + // 27805 - 27809
-                "\u8EA2\uADF4\u0000\uD4BB\u0000\u0000\u8EA2\uADFC\u8EA2\uADEE" + // 27810 - 27814
-                "\u8EA2\uADFD\u0000\u0000\u8EA2\uADF2\u0000\u0000\u8EA2\uADFB" + // 27815 - 27819
-                "\u0000\u0000\u8EA2\uADF3\u0000\u0000\u0000\u0000\u0000\u0000" + // 27820 - 27824
-                "\u0000\u0000\u0000\uD4AB\u0000\u0000\u0000\u0000\u0000\u0000" + // 27825 - 27829
-                "\u0000\uE3AA\u8EA2\uC1D6\u8EA2\uC1D7\u0000\uA7A6\u0000\uC4A7" + // 27830 - 27834
-                "\u0000\u0000\u0000\uC4E8\u0000\u0000\u0000\u0000\u0000\uCBE7" + // 27835 - 27839
-                "\u0000\uC4A8\u8EA2\uA1A9\u0000\uC4C0\u0000\u0000\u0000\u0000" + // 27840 - 27844
-                "\u0000\uC4E9\u0000\uC4EB\u8EA2\uA1B1\u0000\uC4EC\u0000\uC4EA" + // 27845 - 27849
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC7A7\u0000\u0000" + // 27850 - 27854
-                "\u0000\uCBE8\u0000\u0000\u0000\u0000\u0000\uCBE9\u0000\uCFE7" + // 27855 - 27859
-                "\u0000\uA7A8\u0000\uC4C1\u0000\uC4ED\u0000\u0000\u0000\uC7A8" + // 27860 - 27864
-                "\u0000\uC7AA\u0000\uC7A9\u0000\u0000\u0000\uC8EC\u0000\u0000" + // 27865 - 27869
-                "\u0000\u0000\u0000\uCBEA\u0000\uCBEB\u0000\uCFE8\u0000\uCFE9" + // 27870 - 27874
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD3FE" + // 27875 - 27879
-                "\u0000\u0000\u0000\u0000\u8EA2\uC1D8\u0000\u0000\u0000\u0000" + // 27880 - 27884
-                "\u8EA2\uEDC4\u0000\uC4A9\u0000\u0000\u0000\u0000\u0000\u0000" + // 27885 - 27889
-                "\u0000\u0000\u0000\u0000\u8EA2\uAEA5\u8EA2\uAEA6\u0000\uD4C6" + // 27890 - 27894
-                "\u0000\u0000\u8EA2\uAEA7\u0000\u0000\u8EA2\uAEA4\u0000\uD4C7" + // 27895 - 27899
-                "\u0000\uD4C5\u0000\uD4C4\u8EA2\uAEA8\u0000\u0000\u8EA2\uB3EB" + // 27900 - 27904
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBAC5\u0000\u0000" + // 27905 - 27909
-                "\u0000\u0000\u8EA2\uC1EA\u8EA2\uC9A7\u0000\u0000\u0000\u0000" + // 27910 - 27914
-                "\u0000\u0000\u0000\uECA9\u0000\uF0B7\u8EA2\uD6C4\u0000\u0000" + // 27915 - 27919
-                "\u0000\uC4AD\u0000\uC4BB\u0000\u0000\u0000\u0000\u0000\u0000" + // 27920 - 27924
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27925 - 27929
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27930 - 27934
-                "\u0000\u0000\u0000\uD9A9\u0000\uDEB3\u0000\u0000\u0000\uE8A1" + // 27935 - 27939
-                "\u0000\u0000\u8EA2\uA1A3\u0000\uC4FE\u0000\u0000\u0000\uC5F9" + // 27940 - 27944
-                "\u0000\uC5F7\u0000\uC5F8\u0000\u0000\u0000\u0000\u0000\uCCAA" + // 27945 - 27949
-                "\u0000\u0000\u0000\u0000\u0000\uE6AD\u0000\u0000\u0000\u0000" + // 27950 - 27954
-                "\u0000\u0000\u8EA2\uC6D8\u0000\u0000\u0000\u0000\u0000\u0000" + // 27955 - 27959
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC6D4\u8EA2\uC6FA" + // 27960 - 27964
-                "\u8EA2\uC6D3\u0000\uEAE8\u8EA2\uCDDA\u0000\u0000\u0000\u0000" + // 27965 - 27969
-                "\u8EA2\uCDC9\u0000\u0000\u0000\u0000\u8EA2\uCDB3\u8EA2\uCDD1" + // 27970 - 27974
-                "\u0000\uEAE0\u8EA2\uCDC2\u8EA2\uCDCC\u0000\uEAE3\u8EA2\uCDC5" + // 27975 - 27979
-                "\u0000\uEAE1\u8EA2\uCDB6\u8EA2\uCDD4\u8EA2\uCDB5\u8EA2\uCDC8" + // 27980 - 27984
-                "\u0000\u0000\u8EA2\uCDB4\u0000\u0000\u0000\u0000\u8EA2\uCDC6" + // 27985 - 27989
-                "\u8EA2\uCDCF\u8EA2\uCDCD\u8EA2\uCDC1\u8EA2\uCDBC\u8EA2\uCDBA" + // 27990 - 27994
-                "\u0000\u0000\u8EA2\uCDBB\u8EA2\uCDCE\u8EA2\uCDD9\u8EA2\uCDC3" + // 27995 - 27999
-                "\u0000\uEAE2\u0000\u0000\u8EA2\uCDBE\u0000\u0000\u8EA2\uCDD2" + // 28000 - 28004
-                "\u0000\u0000\u0000\uEAE5\u8EA2\uCDBD\u8EA2\uCDB7\u8EA2\uCDC7" + // 28005 - 28009
-                "\u0000\uEAE9\u0000\u0000\u0000\u0000\u0000\uEADD\u8EA2\uA9AF" + // 28010 - 28014
-                "\u8EA2\uA9A5\u0000\uCFFB\u0000\uCFF2\u0000\uCFFA\u8EA2\uA8FE" + // 28015 - 28019
-                "\u0000\u0000\u8EA2\uA9AC\u0000\u0000\u8EA2\uA9A3\u0000\uCFF6" + // 28020 - 28024
-                "\u8EA2\uA9A4\u0000\u0000\u8EA2\uA8FD\u0000\uCFFD\u0000\uCFF0" + // 28025 - 28029
-                "\u0000\uCFF9\u0000\uCFEF\u0000\u0000\u8EA2\uA9A1\u8EA2\uA9A6" + // 28030 - 28034
-                "\u0000\u0000\u8EA2\uA9AD\u0000\uCFF7\u0000\uCFF4\u8EA2\uA9A8" + // 28035 - 28039
-                "\u0000\uCFFC\u8EA2\uA9AB\u8EA2\uA9A7\u0000\uCFF1\u0000\uCFFE" + // 28040 - 28044
-                "\u0000\uCFF5\u0000\uCFEE\u0000\uCFEA\u0000\u0000\u0000\u0000" + // 28045 - 28049
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28050 - 28054
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA9B1\u0000\u0000" + // 28055 - 28059
-                "\u0000\uD4BA\u0000\uD4A4\u0000\u0000\u0000\uD4B4\u0000\u0000" + // 28060 - 28064
-                "\u0000\uD4B9\u8EA2\uADF1\u8EA2\uADF0\u8EA2\uADF5\u8EA2\uADF6" + // 28065 - 28069
-                "\u0000\uD4A7\u0000\u0000\u0000\uD4B0\u0000\u0000\u0000\u0000" + // 28070 - 28074
-                "\u0000\u0000\u0000\uD4BD\u0000\u0000\u0000\uD5F2\u0000\uD5EB" + // 28075 - 28079
-                "\u0000\uD5EE\u0000\u0000\u0000\uD5F1\u0000\u0000\u8EA2\uAFD7" + // 28080 - 28084
-                "\u0000\u0000\u0000\uD5EC\u8EA2\uAFD5\u0000\u0000\u0000\uD5F0" + // 28085 - 28089
-                "\u0000\u0000\u0000\u0000\u0000\uD5ED\u0000\u0000\u8EA2\uAFD8" + // 28090 - 28094
-                "\u0000\uD5EF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28095 - 28099
-                "\u0000\u0000\u0000\u0000\u8EA2\uB5EE\u0000\uDBA5\u8EA2\uB5ED" + // 28100 - 28104
-                "\u8EA2\uB5EF\u0000\uDBA4\u0000\uDBA9\u8EA2\uAFD6\u0000\u0000" + // 28105 - 28109
-                "\u8EA2\uB5EC\u8EA2\uB5F0\u0000\u0000\u0000\uDBA6\u8EA2\uB5EB" + // 28110 - 28114
-                "\u0000\uDBA8\u0000\u0000\u0000\uDBA7\u0000\u0000\u8EA2\uBCCA" + // 28115 - 28119
-                "\u0000\u0000\u8EA2\uBCC5\u0000\u0000\u0000\uDFDB\u0000\uDFDF" + // 28120 - 28124
-                "\u0000\uDFDC\u8EA2\uBCC8\u8EA2\uBCCB\u0000\u0000\u0000\uDFDD" + // 28125 - 28129
-                "\u0000\u0000\u0000\uDFDE\u0000\uDFE3\u8EA2\uC3CD\u8EA2\uBCC9" + // 28130 - 28134
-                "\u0000\uDFE1\u8EA2\uBCC6\u8EA2\uBCC4\u0000\u0000\u0000\uDFE2" + // 28135 - 28139
-                "\u0000\u0000\u8EA2\uA7C6\u0000\u0000\u8EA2\uA7C4\u8EA2\uA7BC" + // 28140 - 28144
-                "\u8EA2\uA7B4\u8EA2\uA7BB\u0000\uCEAD\u0000\u0000\u0000\uCEB3" + // 28145 - 28149
-                "\u0000\u0000\u0000\uCEA7\u8EA2\uA7BF\u8EA2\uA7BE\u8EA2\uA7B6" + // 28150 - 28154
-                "\u0000\u0000\u0000\uCEB5\u8EA2\uA7C2\u8EA2\uA7B7\u0000\uCEB8" + // 28155 - 28159
-                "\u8EA2\uA7C9\u0000\uCEA8\u0000\u0000\u0000\uCEAF\u8EA2\uA7BA" + // 28160 - 28164
-                "\u8EA2\uA7C3\u0000\uCEB7\u0000\u0000\u0000\uCEAA\u0000\uCEAE" + // 28165 - 28169
-                "\u0000\u0000\u8EA2\uA7C1\u0000\u0000\u0000\u0000\u0000\u0000" + // 28170 - 28174
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28175 - 28179
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28180 - 28184
-                "\u0000\u0000\u8EA2\uABBD\u0000\uD1DF\u0000\uD1EC\u0000\u0000" + // 28185 - 28189
-                "\u8EA2\uABB8\u8EA2\uABAE\u0000\uD1E5\u8EA2\uABAC\u0000\uD1DE" + // 28190 - 28194
-                "\u8EA2\uABA7\u0000\uD1E8\u8EA2\uABB4\u8EA2\uABA1\u8EA2\uABA3" + // 28195 - 28199
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD9CB" + // 28200 - 28204
-                "\u0000\uF4F4\u8EA2\uDECE\u0000\u0000\u0000\u0000\u0000\uF7A7" + // 28205 - 28209
-                "\u0000\u0000\u8EA2\uE6C4\u8EA2\uE6C3\u0000\uFAAD\u8EA2\uEBFB" + // 28210 - 28214
-                "\u0000\u0000\u8EA2\uEDF0\u0000\uFCE4\u8EA2\uA2E9\u0000\u0000" + // 28215 - 28219
-                "\u0000\u0000\u0000\uCFAC\u0000\uCBB8\u0000\u0000\u0000\u0000" + // 28220 - 28224
-                "\u8EA2\uACEE\u0000\u0000\u0000\u0000\u8EA2\uB2A4\u8EA2\uB1FD" + // 28225 - 28229
-                "\u8EA2\uB2A3\u8EA2\uB2A1\u0000\uD7CE\u8EA2\uB2A2\u8EA2\uB1FE" + // 28230 - 28234
-                "\u0000\u0000\u8EA2\uB8B6\u0000\u0000\u8EA2\uBFA4\u8EA2\uBFA5" + // 28235 - 28239
-                "\u8EA2\uC6B0\u8EA2\uC6B1\u0000\uE5F5\u0000\uE5F6\u8EA2\uC6AF" + // 28240 - 28244
-                "\u8EA2\uC6B2\u8EA2\uC6AE\u0000\uE5F4\u0000\u0000\u0000\uEAC8" + // 28245 - 28249
-                "\u0000\u0000\u0000\uE5F7\u8EA2\uCDA3\u0000\u0000\u0000\uEEC7" + // 28250 - 28254
-                "\u8EA2\uD2F9\u0000\uEEC8\u0000\u0000\u0000\uF1F1\u8EA2\uD9CE" + // 28255 - 28259
-                "\u8EA2\uD9CC\u8EA2\uD9CD\u8EA2\uDED1\u8EA2\uDED0\u8EA2\uDECF" + // 28260 - 28264
-                "\u8EA2\uA5B6\u8EA2\uA5C2\u8EA2\uA5C9\u0000\uCBF5\u8EA2\uA5BB" + // 28265 - 28269
-                "\u8EA2\uA5B4\u0000\uCBF4\u8EA2\uA5B7\u0000\uCBF8\u8EA2\uA5BA" + // 28270 - 28274
-                "\u0000\u0000\u0000\uCBF3\u0000\u0000\u0000\uCBEE\u0000\u0000" + // 28275 - 28279
-                "\u0000\uCBFD\u8EA2\uA5C4\u0000\uCBFE\u8EA2\uA5C8\u0000\u0000" + // 28280 - 28284
-                "\u8EA2\uA5C6\u8EA2\uA5CA\u0000\uCBFB\u8EA2\uA5BE\u8EA2\uA5B2" + // 28285 - 28289
-                "\u0000\u0000\u8EA2\uA5C0\u0000\uCBF2\u8EA2\uA5C5\u0000\uCBED" + // 28290 - 28294
-                "\u8EA2\uA5C7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28295 - 28299
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28300 - 28304
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28305 - 28309
-                "\u0000\u0000\u0000\uCFF8\u0000\uCFEC\u0000\u0000\u0000\u0000" + // 28310 - 28314
-                "\u8EA2\uA9A2\u8EA2\uA9AA\u0000\u0000\u0000\uCFEB\u0000\uCFF3" + // 28315 - 28319
-                "\u0000\uD0A1\u0000\u0000\u8EA2\uA9B0\u8EA2\uA9AE\u8EA2\uA9A9" + // 28320 - 28324
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCFED\u8EA2\uA1F0" + // 28325 - 28329
-                "\u0000\uC7BA\u8EA2\uA1F4\u0000\u0000\u8EA2\uA1F8\u8EA2\uA1F5" + // 28330 - 28334
-                "\u0000\u0000\u0000\u0000\u8EA2\uA1F2\u0000\uC7AC\u0000\uC7AE" + // 28335 - 28339
-                "\u0000\uC7BB\u0000\u0000\u0000\uC7B0\u8EA2\uA1EA\u0000\uC7B3" + // 28340 - 28344
-                "\u0000\uC7B1\u0000\uC7B2\u8EA2\uA1FA\u8EA2\uA1F7\u8EA2\uA1EE" + // 28345 - 28349
-                "\u0000\uC7AF\u0000\u0000\u0000\u0000\u8EA2\uA1EB\u0000\uC7AD" + // 28350 - 28354
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA1F3\u0000\u0000" + // 28355 - 28359
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA1F6\u0000\u0000" + // 28360 - 28364
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28365 - 28369
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA1EC\u8EA2\uA3A8" + // 28370 - 28374
-                "\u0000\u0000\u0000\uC9A4\u0000\uC8F5\u0000\u0000\u0000\u0000" + // 28375 - 28379
-                "\u8EA2\uA3A9\u0000\uC8F2\u0000\u0000\u0000\uC9A6\u0000\u0000" + // 28380 - 28384
-                "\u0000\uC8FA\u0000\u0000\u0000\uC8F9\u8EA2\uA2FB\u0000\uC8FD" + // 28385 - 28389
-                "\u0000\uC8F8\u8EA2\uA3A2\u8EA2\uA3AA\u0000\uC4EF\u0000\uC4EE" + // 28390 - 28394
-                "\u8EA2\uA1B2\u0000\uC4F0\u0000\uC4F6\u0000\u0000\u0000\uC4F1" + // 28395 - 28399
-                "\u0000\uC4F2\u8EA2\uA1B4\u8EA2\uA1B3\u0000\uC4F4\u0000\uC4F5" + // 28400 - 28404
-                "\u0000\u0000\u0000\uC4F3\u0000\u0000\u0000\u0000\u0000\u0000" + // 28405 - 28409
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC5EA\u0000\uC5EB" + // 28410 - 28414
-                "\u0000\uC5EC\u0000\uC5ED\u0000\uC5E9\u0000\uC5F0\u8EA2\uA1CA" + // 28415 - 28419
-                "\u0000\u0000\u8EA2\uA1C6\u8EA2\uA1C9\u0000\uC5F1\u0000\uC6A3" + // 28420 - 28424
-                "\u0000\u0000\u8EA2\uA1C8\u0000\u0000\u0000\uC5EE\u0000\uC5EF" + // 28425 - 28429
-                "\u0000\uC5E8\u0000\u0000\u0000\u0000\u8EA2\uA1C5\u8EA2\uA1C7" + // 28430 - 28434
-                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28435 - 28439
-                "\u0000\u0000\u0000\uC7B7\u8EA2\uA1EF\u0000\uC7B4\u0000\uC7B8" + // 28440 - 28444
-                "\u8EA2\uA1F9\u8EA2\uA1ED\u0000\uC7B5\u8EA2\uA1F1\u0000\u0000" + // 28445 - 28449
-                "\u0000\u0000\u0000\u0000\u0000\uC7B6\u0000\u0000\u0000\uC7B9" + // 28450 - 28454
-                "\u0000\u0000\u0000\uC7AB"
-                ;
-        }
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM964.java.template	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,10532 @@
+
+/*
+ * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ */
+
+package $PACKAGE$;
+
+import java.nio.CharBuffer;
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+import sun.nio.cs.HistoricallyNamedCharset;
+
+public class IBM964
+    extends Charset
+    implements HistoricallyNamedCharset
+{
+
+    public IBM964() {
+        super("x-IBM964", $ALIASES$);
+    }
+
+    public String historicalName() {
+        return "Cp964";
+    }
+
+    public boolean contains(Charset cs) {
+        return (cs instanceof IBM964);
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new Decoder(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new Encoder(this);
+    }
+
+    protected static class Decoder extends CharsetDecoder {
+        private final int SS2 =  0x8E;
+        private final int SS3 =  0x8F;
+
+        private String mappingTableG2;
+
+        public Decoder(Charset cs) {
+                super(cs, 1.0f, 1.0f);
+        }
+
+        private CoderResult decodeArrayLoop(ByteBuffer src, CharBuffer dst) {
+            byte[] sa = src.array();
+            int sp = src.arrayOffset() + src.position();
+            int sl = src.arrayOffset() + src.limit();
+            assert (sp <= sl);
+            sp = (sp <= sl ? sp : sl);
+            char[] da = dst.array();
+            int dp = dst.arrayOffset() + dst.position();
+            int dl = dst.arrayOffset() + dst.limit();
+            assert (dp <= dl);
+            dp = (dp <= dl ? dp : dl);
+
+            try {
+            while (sp < sl) {
+                int byte1, byte2;
+                int inputSize = 1;
+                char outputChar = '\uFFFD';
+                byte1 = sa[sp] & 0xff;
+
+                if (byte1 == SS2) {
+                    if (sl - sp < 4) {
+                        return CoderResult.UNDERFLOW;
+                    }
+                    byte1 = sa[sp + 1] & 0xff;
+                    inputSize = 2;
+                    if ( byte1 == 0xa2)
+                        mappingTableG2 = mappingTableG2a2;
+                    else if ( byte1 == 0xac)
+                        mappingTableG2 = mappingTableG2ac;
+                    else if ( byte1 == 0xad)
+                        mappingTableG2 = mappingTableG2ad;
+                    else
+                        return CoderResult.malformedForLength(2);
+                    byte1 = sa[sp + 2] & 0xff;
+                    if ( byte1 < 0xa1 || byte1 > 0xfe) {
+                        return CoderResult.malformedForLength(3);
+                    }
+                    byte2 = sa[sp + 3] & 0xff;
+                    if ( byte2 < 0xa1 || byte2 > 0xfe) {
+                      return CoderResult.malformedForLength(4);
+                    }
+                    inputSize = 4;
+                    outputChar = mappingTableG2.charAt(((byte1 - 0xa1) * 94) + byte2 - 0xa1);
+                } else if(byte1 == SS3 ) {
+                    return CoderResult.malformedForLength(1);
+                } else if ( byte1 <= 0x9f ) {                // valid single byte
+                    outputChar = byteToCharTable.charAt(byte1);
+                } else if (byte1 < 0xa1 || byte1 > 0xfe) {   // invalid range?
+                    return CoderResult.malformedForLength(1);
+                } else {                                     // G1
+                    if (sl - sp < 2) {
+                        return CoderResult.UNDERFLOW;
+                    }
+                    byte2 = sa[sp + 1] & 0xff;
+                    inputSize = 2;
+                    if ( byte2 < 0xa1 || byte2 > 0xfe) {
+                        return CoderResult.malformedForLength(2);
+                    }
+                    outputChar = mappingTableG1.charAt(((byte1 - 0xa1) * 94) + byte2 - 0xa1);
+                }
+                if  (outputChar == '\uFFFD')
+                    return CoderResult.unmappableForLength(inputSize);
+                if (dl - dp < 1)
+                    return CoderResult.OVERFLOW;
+                da[dp++] = outputChar;
+                sp += inputSize;
+            }
+            return CoderResult.UNDERFLOW;
+            } finally {
+                src.position(sp - src.arrayOffset());
+                dst.position(dp - dst.arrayOffset());
+            }
+        }
+
+        private CoderResult decodeBufferLoop(ByteBuffer src, CharBuffer dst) {
+            int mark = src.position();
+            try {
+                while (src.hasRemaining()) {
+                    int byte1, byte2;
+                    int inputSize = 1;
+                    char outputChar = '\uFFFD';
+                    byte1 = src.get() & 0xff;
+
+                    if (byte1 == SS2) {
+                        if (src.remaining() < 3)
+                            return CoderResult.UNDERFLOW;
+                        byte1 = src.get() & 0xff;
+                        inputSize = 2;
+                        if ( byte1 == 0xa2)
+                            mappingTableG2 = mappingTableG2a2;
+                        else if ( byte1 == 0xac)
+                            mappingTableG2 = mappingTableG2ac;
+                        else if ( byte1 == 0xad)
+                          mappingTableG2 = mappingTableG2ad;
+                        else
+                            return CoderResult.malformedForLength(2);
+                        byte1 = src.get() & 0xff;
+                        if ( byte1 < 0xa1 || byte1 > 0xfe)
+                            return CoderResult.malformedForLength(3);
+                        byte2 = src.get() & 0xff;
+                        if ( byte2 < 0xa1 || byte2 > 0xfe)
+                            return CoderResult.malformedForLength(4);
+                        inputSize = 4;
+                        outputChar = mappingTableG2.charAt(((byte1 - 0xa1) * 94) + byte2 - 0xa1);
+                    } else if (byte1 == SS3 ) {
+                        return CoderResult.malformedForLength(1);
+                    } else if ( byte1 <= 0x9f ) {                // valid single byte
+                        outputChar = byteToCharTable.charAt(byte1);
+                    } else if (byte1 < 0xa1 || byte1 > 0xfe) {   // invalid range?
+                        return CoderResult.malformedForLength(1);
+                    } else {                                     // G1
+                        if (src.remaining() < 1)
+                            return CoderResult.UNDERFLOW;
+                        byte2 = src.get() & 0xff;
+                        if ( byte2 < 0xa1 || byte2 > 0xfe) {
+                            return CoderResult.malformedForLength(2);
+                        }
+                        inputSize = 2;
+                        outputChar = mappingTableG1.charAt(((byte1 - 0xa1) * 94) + byte2 - 0xa1);
+                    }
+
+                    if (outputChar == '\uFFFD')
+                        return CoderResult.unmappableForLength(inputSize);
+                    if (!dst.hasRemaining())
+                        return CoderResult.OVERFLOW;
+                    dst.put(outputChar);
+                    mark += inputSize;
+                }
+                return CoderResult.UNDERFLOW;
+            } finally {
+                    src.position(mark);
+            }
+        }
+
+        protected CoderResult decodeLoop(ByteBuffer src, CharBuffer dst) {
+            if (true && src.hasArray() && dst.hasArray())
+                return decodeArrayLoop(src, dst);
+            else
+                return decodeBufferLoop(src, dst);
+        }
+
+        private final static String byteToCharTable;
+        private final static String mappingTableG1;
+        private final static String mappingTableG2a2;
+        private final static String mappingTableG2ac;
+        private final static String mappingTableG2ad;
+
+        static {
+            byteToCharTable =
+                "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
+                "\u0008\u0009\n\u000B\u000C\r\u000E\u000F" +
+                "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
+                "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" +
+                "\u0020\u0021\"\u0023\u0024\u0025\u0026\u0027" +
+                "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" +
+                "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
+                "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" +
+                "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
+                "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" +
+                "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
+                "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" +
+                "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
+                "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" +
+                "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
+                "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" +
+                "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" +
+                "\u0088\u0089\u008A\u008B\u008C\u008D\uFFFD\uFFFD" +
+                "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" +
+                "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F"
+                ;
+            mappingTableG1 =
+                "\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A" +
+                "\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52" +
+                "\u00B7\uFE54\uFE55\uFE56\uFE57\uFE31\u2014\uFE32" +
+                "\uFE58\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35" +
+                "\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39" +
+                "\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D" +
+                "\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41" +
+                "\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A\uFE5B" +
+                "\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D" +
+                "\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\u00A7" +
+                "\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605" +
+                "\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105" +
+                "\u203E\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E" +
+                "\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\u00D7" +
+                "\u00F7\u00B1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267" +
+                "\u2260\u221E\u2252\u2261\uFE62\uFE63\uFE64\uFE65" +
+                "\uFE66\u223C\u2229\u222A\u22A5\u2220\u221F\u22BF" +
+                "\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642" +
+                "\u2295\u2299\u2191\u2193\u2192\u2190\u2196\u2197" +
+                "\u2199\u2198\u2225\uFF5C\uFF0F\uFF3C\u2215\uFE68" +
+                "\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103" +
+                "\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E" +
+                "\u33CE\u33A1\u338E\u338F\u33C4\u00B0\u5159\u515B" +
+                "\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581" +
+                "\u2582\u2583\u2584\u2585\u2586\u2587\u2588\u258F" +
+                "\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534" +
+                "\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C" +
+                "\u2510\u2514\u2518\u256D\u256E\u2570\u256F\u2550" +
+                "\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571" +
+                "\u2572\u2573\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFF10\uFF11\uFF12\uFF13\uFF14\uFF15" +
+                "\uFF16\uFF17\uFF18\uFF19\u2160\u2161\u2162\u2163" +
+                "\u2164\u2165\u2166\u2167\u2168\u2169\u3021\u3022" +
+                "\u3023\u3024\u3025\u3026\u3027\u3028\u3029\u5341" +
+                "\u5344\u5345\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26" +
+                "\uFF27\uFF28\uFF29\uFF2A\uFF2B\uFF2C\uFF2D\uFF2E" +
+                "\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36" +
+                "\uFF37\uFF38\uFF39\uFF3A\uFF41\uFF42\uFF43\uFF44" +
+                "\uFF45\uFF46\uFF47\uFF48\uFF49\uFF4A\uFF4B\uFF4C" +
+                "\uFF4D\uFF4E\uFF4F\uFF50\uFF51\uFF52\uFF53\uFF54" +
+                "\uFF55\uFF56\uFF57\uFF58\uFF59\uFF5A\u0391\u0392" +
+                "\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A" +
+                "\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3" +
+                "\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2" +
+                "\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA" +
+                "\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3" +
+                "\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u3105\u3106" +
+                "\u3107\u3108\u3109\u310A\u310B\u310C\u310D\u310E" +
+                "\u310F\u3110\u3111\u3112\u3113\u3114\u3115\u3116" +
+                "\u3117\u3118\u3119\u311A\u311B\u311C\u311D\u311E" +
+                "\u311F\u3120\u3121\u3122\u3123\u3124\u3125\u3126" +
+                "\u3127\u3128\u3129\u02D9\u02C9\u02CA\u02C7\u02CB" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2460\u2461" +
+                "\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469" +
+                "\u2474\u2475\u2476\u2477\u2478\u2479\u247A\u247B" +
+                "\u247C\u247D\u2170\u2171\u2172\u2173\u2174\u2175" +
+                "\u2176\u2177\u2178\u2179\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\u4E00\u4E28\u4E36\u4E3F" +
+                "\u4E59\u4E85\u4E8C\u4EA0\u4EBA\u513F\u5165\u516B" +
+                "\u5182\u5196\u51AB\u51E0\u51F5\u5200\u529B\u52F9" +
+                "\u5315\u531A\u5338\u5341\u535C\u5369\u5382\u53B6" +
+                "\u53C8\u53E3\u56D7\u571F\u58EB\u590A\u5915\u5927" +
+                "\u5973\u5B50\u5B80\u5BF8\u5C0F\u5C22\u5C38\u5C6E" +
+                "\u5C71\u5DDB\u5DE5\u5DF1\u5DFE\u5E72\u5E7A\u5E7F" +
+                "\u5EF4\u5EFE\u5F0B\u5F13\u5F50\u5F61\u5F73\u5FC3" +
+                "\u6208\u6236\u624B\u652F\u6534\u6587\u6597\u65A4" +
+                "\u65B9\u65E0\u65E5\u66F0\u6708\u6728\u6B20\u6B62" +
+                "\u6B79\u6BB3\u6BCB\u6BD4\u6BDB\u6C0F\u6C14\u6C34" +
+                "\u706B\u722A\u7236\u723B\u723F\u7247\u7259\u725B" +
+                "\u72AC\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528" +
+                "\u7530\u758B\u7592\u7676\u767D\u76AE\u76BF\u76EE" +
+                "\u77DB\u77E2\u77F3\u793A\u79B8\u79BE\u7A74\u7ACB" +
+                "\u7AF9\u7C73\u7CF8\u7F36\u7F51\u7F8A\u7FBD\u8001" +
+                "\u800C\u8012\u8033\u807F\u8089\u81E3\u81EA\u81F3" +
+                "\u81FC\u820C\u821B\u821F\u826E\u8272\u8278\u864D" +
+                "\u866B\u8840\u884C\u8863\u897E\u898B\u89D2\u8A00" +
+                "\u8C37\u8C46\u8C55\u8C78\u8C9D\u8D64\u8D70\u8DB3" +
+                "\u8EAB\u8ECA\u8F9B\u8FB0\u8FB5\u9091\u9149\u91C6" +
+                "\u91CC\u91D1\u9577\u9580\u961C\u96B6\u96B9\u96E8" +
+                "\u9752\u975E\u9762\u9769\u97CB\u97ED\u97F3\u9801" +
+                "\u98A8\u98DB\u98DF\u9996\u9999\u99AC\u9AA8\u9AD8" +
+                "\u9ADF\u9B25\u9B2F\u9B32\u9B3C\u9B5A\u9CE5\u9E75" +
+                "\u9E7F\u9EA5\u9EBB\u9EC3\u9ECD\u9ED1\u9EF9\u9EFD" +
+                "\u9F0E\u9F13\u9F20\u9F3B\u9F4A\u9F52\u9F8D\u9F9C" +
+                "\u9FA0\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2400\u2401" +
+                "\u2402\u2403\u2404\u2405\u2406\u2407\u2408\u2409" +
+                "\u240A\u240B\u240C\u240D\u240E\u240F\u2410\u2411" +
+                "\u2412\u2413\u2414\u2415\u2416\u2417\u2418\u2419" +
+                "\u241A\u241B\u241C\u241D\u241E\u241F\u2421\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D" +
+                "\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200" +
+                "\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B" +
+                "\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F" +
+                "\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9" +
+                "\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51" +
+                "\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5" +
+                "\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13" +
+                "\u624D\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B" +
+                "\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1" +
+                "\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4" +
+                "\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6" +
+                "\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339" +
+                "\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD" +
+                "\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24" +
+                "\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3" +
+                "\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4" +
+                "\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79" +
+                "\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236" +
+                "\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19\u4E16" +
+                "\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5" +
+                "\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9" +
+                "\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA" +
+                "\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D" +
+                "\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB" +
+                "\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC" +
+                "\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0" +
+                "\u53E5\u53ED\u53FB\u56DB\u56DA\u5916\u592E\u5931" +
+                "\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6" +
+                "\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5" +
+                "\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E" +
+                "\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10" +
+                "\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC" +
+                "\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532" +
+                "\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2" +
+                "\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52" +
+                "\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09" +
+                "\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2" +
+                "\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149" +
+                "\u5147\u5146\u5148\u5168\u5171\u518D\u51B0\u5217" +
+                "\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320" +
+                "\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401" +
+                "\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406" +
+                "\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D" +
+                "\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984" +
+                "\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58" +
+                "\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE" +
+                "\u5E06\u5E76\u5E74\u5F0F\u5F1B\u5FD9\u5FD6\u620E" +
+                "\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9" +
+                "\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734" +
+                "\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57" +
+                "\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D" +
+                "\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8" +
+                "\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033" +
+                "\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC" +
+                "\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840" +
+                "\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F" +
+                "\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50" +
+                "\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46" +
+                "\u4F63\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D" +
+                "\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7" +
+                "\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA" +
+                "\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E" +
+                "\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442" +
+                "\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435" +
+                "\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C" +
+                "\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D" +
+                "\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E" +
+                "\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D" +
+                "\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B" +
+                "\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E" +
+                "\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87" +
+                "\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79" +
+                "\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA" +
+                "\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289" +
+                "\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F" +
+                "\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B" +
+                "\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751" +
+                "\u675C\u6756\u675E\u6749\u6746\u6760\u6753\u6757" +
+                "\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89" +
+                "\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68" +
+                "\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86" +
+                "\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D" +
+                "\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C" +
+                "\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0" +
+                "\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098" +
+                "\u809B\u809A\u80B2\u826F\u8292\u828B\u828D\u898B" +
+                "\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70" +
+                "\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5" +
+                "\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149" +
+                "\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26" +
+                "\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F" +
+                "\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86" +
+                "\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E" +
+                "\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177" +
+                "\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A" +
+                "\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354" +
+                "\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4" +
+                "\u53D7\u5473\u5475\u5496\u5478\u5495\u5480\u547B" +
+                "\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476" +
+                "\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA" +
+                "\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C" +
+                "\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB" +
+                "\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB" +
+                "\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64" +
+                "\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A" +
+                "\u5C48\u5C45\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB" +
+                "\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11" +
+                "\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26" +
+                "\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0" +
+                "\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016" +
+                "\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216" +
+                "\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4" +
+                "\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4" +
+                "\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7" +
+                "\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6" +
+                "\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613" +
+                "\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A" +
+                "\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C" +
+                "\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F" +
+                "\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A" +
+                "\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3" +
+                "\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE" +
+                "\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9" +
+                "\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1" +
+                "\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0\u7095" +
+                "\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248" +
+                "\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9" +
+                "\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A" +
+                "\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940" +
+                "\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54" +
+                "\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1" +
+                "\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D" +
+                "\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1" +
+                "\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7" +
+                "\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1" +
+                "\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580" +
+                "\u961C\u9640\u963F\u963B\u9644\u9642\u96B9\u96E8" +
+                "\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF" +
+                "\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8" +
+                "\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA" +
+                "\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E" +
+                "\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9" +
+                "\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC" +
+                "\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7" +
+                "\u54C2\u54BD\u54AA\u54C1\u54C4\u54C8\u54AF\u54AB" +
+                "\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B" +
+                "\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951" +
+                "\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8" +
+                "\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69" +
+                "\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F" +
+                "\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F" +
+                "\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88" +
+                "\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D" +
+                "\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062" +
+                "\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC" +
+                "\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307" +
+                "\u62F1\u62F7\u62EF\u62EC\u62FE\u62F4\u6311\u6302" +
+                "\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620" +
+                "\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF" +
+                "\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5" +
+                "\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8" +
+                "\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2" +
+                "\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9" +
+                "\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E" +
+                "\u6D17\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39" +
+                "\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB" +
+                "\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4" +
+                "\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7" +
+                "\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D" +
+                "\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2" +
+                "\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3" +
+                "\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC" +
+                "\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949" +
+                "\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F" +
+                "\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09" +
+                "\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8010\u800D" +
+                "\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC" +
+                "\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222" +
+                "\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5" +
+                "\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4" +
+                "\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679" +
+                "\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02" +
+                "\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC" +
+                "\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5\u8FED\u8FEB\u8FE4" +
+                "\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD" +
+                "\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB" +
+                "\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999" +
+                "\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025" +
+                "\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012" +
+                "\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B" +
+                "\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B" +
+                "\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6" +
+                "\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F" +
+                "\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC" +
+                "\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1" +
+                "\u5509\u54EE\u54EA\u54E6\u5527\u5507\u54FD\u550F" +
+                "\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F" +
+                "\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B" +
+                "\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09" +
+                "\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5" +
+                "\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD" +
+                "\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE" +
+                "\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91" +
+                "\u5F90\u6059\u6063\u6065\u6050\u6055\u606D\u6069" +
+                "\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085" +
+                "\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F" +
+                "\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D" +
+                "\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599" +
+                "\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C" +
+                "\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838" +
+                "\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3" +
+                "\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C" +
+                "\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89" +
+                "\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A" +
+                "\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93" +
+                "\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A" +
+                "\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9" +
+                "\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8" +
+                "\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE" +
+                "\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7" +
+                "\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B" +
+                "\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728" +
+                "\u77E9\u7830\u7827\u7838\u781D\u7834\u7837\u7825" +
+                "\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F" +
+                "\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7" +
+                "\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06" +
+                "\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22" +
+                "\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B" +
+                "\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8004\u8018" +
+                "\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0" +
+                "\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD" +
+                "\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A" +
+                "\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A" +
+                "\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339" +
+                "\u8336\u8317\u8340\u8331\u8328\u8343\u8654\u868A" +
+                "\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870" +
+                "\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E" +
+                "\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11" +
+                "\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2" +
+                "\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA" +
+                "\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD" +
+                "\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC" +
+                "\u91D9\u9583\u9662\u9663\u9661\u965B\u965D\u9664" +
+                "\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25" +
+                "\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043" +
+                "\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075" +
+                "\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195" +
+                "\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310" +
+                "\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546" +
+                "\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531" +
+                "\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C" +
+                "\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709" +
+                "\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802" +
+                "\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49" +
+                "\u5A66\u5A6A\u5A40\u5A3C\u5A62\u5A5A\u5A46\u5A4A" +
+                "\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09" +
+                "\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E" +
+                "\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24" +
+                "\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7" +
+                "\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C" +
+                "\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0" +
+                "\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4" +
+                "\u60E6\u60BD\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8" +
+                "\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B" +
+                "\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377" +
+                "\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B" +
+                "\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392" +
+                "\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556" +
+                "\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554" +
+                "\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D" +
+                "\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B" +
+                "\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1" +
+                "\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885" +
+                "\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA" +
+                "\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2" +
+                "\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB" +
+                "\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5" +
+                "\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA" +
+                "\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF" +
+                "\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D" +
+                "\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405" +
+                "\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6\u74F7" +
+                "\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4" +
+                "\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB" +
+                "\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843" +
+                "\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20" +
+                "\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92" +
+                "\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C" +
+                "\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31" +
+                "\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A" +
+                "\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124" +
+                "\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398" +
+                "\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393" +
+                "\u8389\u83A0\u8377\u837B\u837C\u8386\u83A7\u8655" +
+                "\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB" +
+                "\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892" +
+                "\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23" +
+                "\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A" +
+                "\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66" +
+                "\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017" +
+                "\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F" +
+                "\u9022\u9016\u901B\u9014\u90E8\u90ED\u90FD\u9157" +
+                "\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589" +
+                "\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677" +
+                "\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803" +
+                "\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D" +
+                "\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700" +
+                "\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB" +
+                "\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D" +
+                "\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583" +
+                "\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC" +
+                "\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A" +
+                "\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9" +
+                "\u58FA\u5960\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7" +
+                "\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B" +
+                "\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D" +
+                "\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C" +
+                "\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6" +
+                "\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4" +
+                "\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F" +
+                "\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6" +
+                "\u63CD\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE" +
+                "\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E" +
+                "\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670" +
+                "\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE" +
+                "\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7" +
+                "\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2" +
+                "\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA" +
+                "\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC" +
+                "\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21" +
+                "\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B" +
+                "\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34" +
+                "\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB\u6E89" +
+                "\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119" +
+                "\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C" +
+                "\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A" +
+                "\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B" +
+                "\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB" +
+                "\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696" +
+                "\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F" +
+                "\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98\u7A97\u7A96" +
+                "\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54" +
+                "\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50" +
+                "\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62" +
+                "\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085" +
+                "\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E" +
+                "\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8" +
+                "\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4" +
+                "\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA" +
+                "\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B" +
+                "\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE" +
+                "\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60" +
+                "\u8A55\u8A5E\u8A3C\u8A41\u8A54\u8A5B\u8A50\u8A46" +
+                "\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC" +
+                "\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6" +
+                "\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB" +
+                "\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC" +
+                "\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102" +
+                "\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215" +
+                "\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594" +
+                "\u958F\u958B\u9591\u9593\u9592\u958E\u968A\u968E" +
+                "\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1" +
+                "\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805" +
+                "\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED" +
+                "\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5" +
+                "\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF" +
+                "\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2" +
+                "\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC" +
+                "\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5" +
+                "\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858" +
+                "\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862" +
+                "\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD" +
+                "\u5ABC\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79" +
+                "\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F" +
+                "\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E" +
+                "\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106" +
+                "\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D" +
+                "\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416" +
+                "\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687" +
+                "\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D" +
+                "\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A" +
+                "\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963" +
+                "\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2" +
+                "\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5" +
+                "\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C" +
+                "\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169" +
+                "\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165" +
+                "\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345" +
+                "\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441" +
+                "\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0" +
+                "\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE" +
+                "\u76DF\u775B\u776B\u7766\u775E\u7763\u7779\u776A" +
+                "\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0" +
+                "\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F" +
+                "\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20" +
+                "\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60" +
+                "\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91" +
+                "\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9" +
+                "\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170" +
+                "\u8178\u8165\u816E\u8173\u816B\u8179\u817A\u8166" +
+                "\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466" +
+                "\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463" +
+                "\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713" +
+                "\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706" +
+                "\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD" +
+                "\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72" +
+                "\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0" +
+                "\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B" +
+                "\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8" +
+                "\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8" +
+                "\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03" +
+                "\u8F09\u8EFE\u8F0A\u8F9F\u8FB2\u904B\u904A\u9053" +
+                "\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E" +
+                "\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A" +
+                "\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E" +
+                "\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245" +
+                "\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD" +
+                "\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756" +
+                "\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C" +
+                "\u98FC\u98F4\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1" +
+                "\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5" +
+                "\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE" +
+                "\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE" +
+                "\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D" +
+                "\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718" +
+                "\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885" +
+                "\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1" +
+                "\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE" +
+                "\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF" +
+                "\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57" +
+                "\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147" +
+                "\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158" +
+                "\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F" +
+                "\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1" +
+                "\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995" +
+                "\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB" +
+                "\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3" +
+                "\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4" +
+                "\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22\u6EFF" +
+                "\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B" +
+                "\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7" +
+                "\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292" +
+                "\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D" +
+                "\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1" +
+                "\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7" +
+                "\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31" +
+                "\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75" +
+                "\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9" +
+                "\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0" +
+                "\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5" +
+                "\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC\u7F70\u7FE0\u7FE1" +
+                "\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188" +
+                "\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E" +
+                "\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2" +
+                "\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1" +
+                "\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718" +
+                "\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8" +
+                "\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3" +
+                "\u8A8D\u8AA1\u8A93\u8AA4\u8AAA\u8AA5\u8AA8\u8A98" +
+                "\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1" +
+                "\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15" +
+                "\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E" +
+                "\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178" +
+                "\u9177\u9174\u9278\u92AC\u9280\u9285\u9298\u9296" +
+                "\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8" +
+                "\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC" +
+                "\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF" +
+                "\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0" +
+                "\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B" +
+                "\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108" +
+                "\u5109\u5105\u51DC\u5287\u5288\u5289\u528D\u528A" +
+                "\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634" +
+                "\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630" +
+                "\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6" +
+                "\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE" +
+                "\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62" +
+                "\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0" +
+                "\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D" +
+                "\u6155\u6182\u617C\u6170\u616B\u617E\u61A7\u6190" +
+                "\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E" +
+                "\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0" +
+                "\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB" +
+                "\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578" +
+                "\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01" +
+                "\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02" +
+                "\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6" +
+                "\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D" +
+                "\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97" +
+                "\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1" +
+                "\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483" +
+                "\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626" +
+                "\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C" +
+                "\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5" +
+                "\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B" +
+                "\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7" +
+                "\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB" +
+                "\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9" +
+                "\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF\u7FE9" +
+                "\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517" +
+                "\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523" +
+                "\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774" +
+                "\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C" +
+                "\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915" +
+                "\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8" +
+                "\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6" +
+                "\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6" +
+                "\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1" +
+                "\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F" +
+                "\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F" +
+                "\u8F29\u8F26\u8F2A\u8F1C\u8F1E\u8F25\u9069\u906E" +
+                "\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187" +
+                "\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92E4" +
+                "\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD" +
+                "\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B" +
+                "\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912" +
+                "\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2" +
+                "\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77" +
+                "\u9B6F\u9D06\u9D09\u9D03\u9EA9\u9EBE\u9ECE\u58A8" +
+                "\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA" +
+                "\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669" +
+                "\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C" +
+                "\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D" +
+                "\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9" +
+                "\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5" +
+                "\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2" +
+                "\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9" +
+                "\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59" +
+                "\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47" +
+                "\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1" +
+                "\u6FA1\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9" +
+                "\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2" +
+                "\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4" +
+                "\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C" +
+                "\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E" +
+                "\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D" +
+                "\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9" +
+                "\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A" +
+                "\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10" +
+                "\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9" +
+                "\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548" +
+                "\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783" +
+                "\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925" +
+                "\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1" +
+                "\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7" +
+                "\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4" +
+                "\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F" +
+                "\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072" +
+                "\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333" +
+                "\u932F\u9322\u92FC\u932B\u9304\u931A\u9310\u9326" +
+                "\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA" +
+                "\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B" +
+                "\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D" +
+                "\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A" +
+                "\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28" +
+                "\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8" +
+                "\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5" +
+                "\u568E\u5680\u5690\u5685\u5687\u568F\u58D5\u58D3" +
+                "\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68" +
+                "\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9" +
+                "\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA" +
+                "\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED" +
+                "\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2" +
+                "\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C" +
+                "\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB" +
+                "\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5" +
+                "\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED" +
+                "\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9" +
+                "\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3" +
+                "\u77AA\u77B0\u77AC\u77A7\u77AD\u77EF\u78F7\u78FA" +
+                "\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07" +
+                "\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE" +
+                "\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37" +
+                "\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34" +
+                "\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC" +
+                "\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA" +
+                "\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209" +
+                "\u8271\u85AA\u8584\u857E\u859C\u8591\u8594\u85AF" +
+                "\u859B\u8587\u85A8\u858A\u85A6\u8667\u87C0\u87D1" +
+                "\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB" +
+                "\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17" +
+                "\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41" +
+                "\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8" +
+                "\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45" +
+                "\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139" +
+                "\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A" +
+                "\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A" +
+                "\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8" +
+                "\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935" +
+                "\u9A01\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F" +
+                "\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B" +
+                "\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5E\u61E3" +
+                "\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7" +
+                "\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8" +
+                "\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B" +
+                "\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE" +
+                "\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658" +
+                "\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61" +
+                "\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E" +
+                "\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61" +
+                "\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD" +
+                "\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0" +
+                "\u85BA\u85B9\u87EF\u87EC\u87F2\u87E0\u8986\u89B2" +
+                "\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59" +
+                "\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D" +
+                "\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A" +
+                "\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A" +
+                "\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9" +
+                "\u96DB\u96DE\u9724\u97A3\u97A6\u97AD\u97F9\u984D" +
+                "\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D" +
+                "\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E" +
+                "\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D" +
+                "\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u56A8\u58DE" +
+                "\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6" +
+                "\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA" +
+                "\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018" +
+                "\u7206\u720D\u7258\u72A2\u7378\u737A\u74BD\u74CA" +
+                "\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1" +
+                "\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40" +
+                "\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7E73\u7F85\u7FB6" +
+                "\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4" +
+                "\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960" +
+                "\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A" +
+                "\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72" +
+                "\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD" +
+                "\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3" +
+                "\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4" +
+                "\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761" +
+                "\u97DC\u97FB\u985E\u9858\u985B\u98BC\u9945\u9949" +
+                "\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89" +
+                "\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4" +
+                "\u52F8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43" +
+                "\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519" +
+                "\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B" +
+                "\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7" +
+                "\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D" +
+                "\u7E7C\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9" +
+                "\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815" +
+                "\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F" +
+                "\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4" +
+                "\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952" +
+                "\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D" +
+                "\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137" +
+                "\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC" +
+                "\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA" +
+                "\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3" +
+                "\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823" +
+                "\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74\u8B77" +
+                "\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA" +
+                "\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2" +
+                "\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45" +
+                "\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25" +
+                "\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C" +
+                "\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F" +
+                "\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051" +
+                "\u7058\u7380\u74E4\u758A\u766E\u766C\u79B3\u7C60" +
+                "\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80" +
+                "\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451" +
+                "\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55" +
+                "\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3" +
+                "\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200" +
+                "\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64" +
+                "\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F" +
+                "\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768" +
+                "\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1" +
+                "\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9" +
+                "\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836" +
+                "\u8839\u8862\u8B93\u8B92\u8B96\u8277\u8D1B\u91C0" +
+                "\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22" +
+                "\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77" +
+                "\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0" +
+                "\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23" +
+                "\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65" +
+                "\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77" +
+                "\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31" +
+                "\u9E1B\u9E1E\u7C72\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD"
+                ;
+            mappingTableG2a2 =
+                "\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47" +
+                "\u4E8D\u56D7\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E" +
+                "\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9" +
+                "\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC" +
+                "\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1" +
+                "\u4EDD\u4EDA\u520C\u5209\u531C\u534C\u5722\u5723" +
+                "\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73" +
+                "\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15\u6C36" +
+                "\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A" +
+                "\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00" +
+                "\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04" +
+                "\u4EF4\u4F12\u51B1\u5213\u5210\u52A6\u5322\u531F" +
+                "\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734" +
+                "\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F" +
+                "\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF" +
+                "\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF" +
+                "\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260" +
+                "\u625A\u6265\u6537\u65EF\u65EE\u673E\u6739\u6738" +
+                "\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52" +
+                "\u6C5C\u6C4F\u6C4A\u6C54\u6C4B\u6C4C\u7071\u725E" +
+                "\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278" +
+                "\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097" +
+                "\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56" +
+                "\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52" +
+                "\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F" +
+                "\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363" +
+                "\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445" +
+                "\u5419\u541C\u5425\u5418\u543D\u544F\u5441\u5428" +
+                "\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C" +
+                "\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0" +
+                "\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E" +
+                "\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89" +
+                "\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E" +
+                "\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78" +
+                "\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3" +
+                "\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000" +
+                "\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287" +
+                "\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D" +
+                "\u6272\u6274\u65F0\u65F4\u65F3\u65F2\u65F5\u6745" +
+                "\u6747\u6759\u6755\u674C\u6748\u675D\u674D\u675A" +
+                "\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84" +
+                "\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87" +
+                "\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074" +
+                "\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA" +
+                "\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539" +
+                "\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090" +
+                "\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293" +
+                "\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1" +
+                "\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D" +
+                "\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76" +
+                "\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A" +
+                "\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92" +
+                "\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235" +
+                "\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C" +
+                "\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488" +
+                "\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D" +
+                "\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7" +
+                "\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776" +
+                "\u5780\u5775\u577B\u5773\u5774\u5762\u5768\u577D" +
+                "\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC" +
+                "\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0" +
+                "\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44" +
+                "\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC" +
+                "\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5" +
+                "\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22" +
+                "\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5" +
+                "\u602D\u6026\u6019\u6032\u600B\u6034\u600A\u6017" +
+                "\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E" +
+                "\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD" +
+                "\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3" +
+                "\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB" +
+                "\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B" +
+                "\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785" +
+                "\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784" +
+                "\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783" +
+                "\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E" +
+                "\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6" +
+                "\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3" +
+                "\u6CC6\u6CED\u6CF2\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D" +
+                "\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9" +
+                "\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086" +
+                "\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6" +
+                "\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC" +
+                "\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC" +
+                "\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598" +
+                "\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9" +
+                "\u77FB\u77FA\u77F7\u7942\u793F\u79C5\u7A78\u7A7B" +
+                "\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8" +
+                "\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298" +
+                "\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4" +
+                "\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2" +
+                "\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3" +
+                "\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3" +
+                "\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5" +
+                "\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9" +
+                "\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9" +
+                "\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397" +
+                "\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF" +
+                "\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6" +
+                "\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0" +
+                "\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B" +
+                "\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4" +
+                "\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD" +
+                "\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB" +
+                "\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8" +
+                "\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB\u5CDE" +
+                "\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF" +
+                "\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22" +
+                "\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3" +
+                "\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054" +
+                "\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C" +
+                "\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E" +
+                "\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303" +
+                "\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313" +
+                "\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA" +
+                "\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622" +
+                "\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F" +
+                "\u6710\u67C1\u67F2\u67C8\u67BA\u67DC\u67BB\u67F8" +
+                "\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5" +
+                "\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9" +
+                "\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC" +
+                "\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA" +
+                "\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0" +
+                "\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F" +
+                "\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A" +
+                "\u6D11\u6D00\u6D1D\u6D42\u6D01\u6D18\u6D37\u6D03" +
+                "\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09" +
+                "\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4" +
+                "\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273" +
+                "\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6" +
+                "\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6" +
+                "\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6" +
+                "\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7" +
+                "\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A" +
+                "\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812" +
+                "\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A" +
+                "\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6" +
+                "\u79CE\u7A80\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78" +
+                "\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58" +
+                "\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037" +
+                "\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5" +
+                "\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7" +
+                "\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9" +
+                "\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4" +
+                "\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0" +
+                "\u82EA\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674" +
+                "\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3" +
+                "\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1" +
+                "\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8" +
+                "\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E" +
+                "\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5" +
+                "\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C" +
+                "\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194" +
+                "\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A" +
+                "\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E" +
+                "\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A" +
+                "\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1\u550A" +
+                "\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701" +
+                "\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD" +
+                "\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1" +
+                "\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F" +
+                "\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC" +
+                "\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7" +
+                "\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC" +
+                "\u5F33\u5F30\u5F67\u605D\u605A\u6067\u6041\u60A2" +
+                "\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B" +
+                "\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310" +
+                "\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339" +
+                "\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354" +
+                "\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357" +
+                "\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2" +
+                "\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A" +
+                "\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831" +
+                "\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834" +
+                "\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A" +
+                "\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D" +
+                "\u8082\u6B88\u6BE6\u6BE4\u6BE8\u6BE3\u6BE2\u6BE7" +
+                "\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92" +
+                "\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F" +
+                "\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F" +
+                "\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84" +
+                "\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3" +
+                "\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE" +
+                "\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE" +
+                "\u70E1\u7242\u7278\u7277\u7276\u7300\u72FA\u72F4" +
+                "\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5" +
+                "\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB" +
+                "\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF" +
+                "\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB" +
+                "\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D" +
+                "\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719" +
+                "\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F" +
+                "\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831" +
+                "\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB" +
+                "\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD" +
+                "\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8" +
+                "\u7B10\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E" +
+                "\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D" +
+                "\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13" +
+                "\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60" +
+                "\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016" +
+                "\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB" +
+                "\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319" +
+                "\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322" +
+                "\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316" +
+                "\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C" +
+                "\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652" +
+                "\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697" +
+                "\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7" +
+                "\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844" +
+                "\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F" +
+                "\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B" +
+                "\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1" +
+                "\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC" +
+                "\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5" +
+                "\u90D8\u90DB\u90D7\u90DC\u90E4\u9150\u914E\u914F" +
+                "\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF" +
+                "\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053" +
+                "\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A" +
+                "\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064" +
+                "\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B" +
+                "\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575" +
+                "\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562" +
+                "\u5536\u5535\u5530\u5552\u5545\u550C\u5532\u5565" +
+                "\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A" +
+                "\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800" +
+                "\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807" +
+                "\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC" +
+                "\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D" +
+                "\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38" +
+                "\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64" +
+                "\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E" +
+                "\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51" +
+                "\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59" +
+                "\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D" +
+                "\u5D26\u5D25\u5D0F\u5D30\u5D12\u5D23\u5D1F\u5D2E" +
+                "\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36" +
+                "\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE" +
+                "\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD" +
+                "\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD" +
+                "\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E" +
+                "\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390" +
+                "\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4" +
+                "\u633B\u639F\u6378\u6385\u6381\u6391\u638D\u6370" +
+                "\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662" +
+                "\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE" +
+                "\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874" +
+                "\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA" +
+                "\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889" +
+                "\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36" +
+                "\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C" +
+                "\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9" +
+                "\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF" +
+                "\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA" +
+                "\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9" +
+                "\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB" +
+                "\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104" +
+                "\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8" +
+                "\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F" +
+                "\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF" +
+                "\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401" +
+                "\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B" +
+                "\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF\u75CB" +
+                "\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F" +
+                "\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B" +
+                "\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826" +
+                "\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B" +
+                "\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94" +
+                "\u7A90\u7B35\u7B3B\u7B34\u7B25\u7B30\u7B22\u7B24" +
+                "\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F" +
+                "\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3" +
+                "\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29" +
+                "\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63" +
+                "\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0" +
+                "\u7FD1\u7FC7\u7FCF\u7FC9\u801F\u801E\u801B\u8047" +
+                "\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F" +
+                "\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211" +
+                "\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3" +
+                "\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381" +
+                "\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C" +
+                "\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388" +
+                "\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u8659" +
+                "\u8656\u86BF\u86B7\u86C2\u86C1\u86C5\u86BA\u86B0" +
+                "\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC" +
+                "\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2" +
+                "\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899" +
+                "\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982" +
+                "\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39" +
+                "\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79" +
+                "\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD" +
+                "\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C" +
+                "\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3" +
+                "\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153" +
+                "\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9" +
+                "\u91EA\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588" +
+                "\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804" +
+                "\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3" +
+                "\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082" +
+                "\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591" +
+                "\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588" +
+                "\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C" +
+                "\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837" +
+                "\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825" +
+                "\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838" +
+                "\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A" +
+                "\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95" +
+                "\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9" +
+                "\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA" +
+                "\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30" +
+                "\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51" +
+                "\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59" +
+                "\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40" +
+                "\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9" +
+                "\u60B9\u60CC\u60E2\u60CE\u60C4\u6114\u60F2\u610A" +
+                "\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1" +
+                "\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A" +
+                "\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3" +
+                "\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5" +
+                "\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3" +
+                "\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9" +
+                "\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C" +
+                "\u659D\u659E\u65AE\u65D0\u65D2\u667C\u666C\u667B" +
+                "\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3" +
+                "\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6" +
+                "\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1" +
+                "\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6" +
+                "\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A" +
+                "\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1" +
+                "\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B" +
+                "\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0" +
+                "\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49" +
+                "\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41" +
+                "\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B" +
+                "\u6E03\u6E2E\u6E5E\u6E68\u6E5C\u6E61\u6E31\u6E28" +
+                "\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65" +
+                "\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66" +
+                "\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E" +
+                "\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A" +
+                "\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B" +
+                "\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332" +
+                "\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430" +
+                "\u742B\u7416\u741A\u7421\u742D\u7431\u7424\u7423" +
+                "\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C" +
+                "\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7" +
+                "\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745" +
+                "\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864" +
+                "\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869" +
+                "\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02" +
+                "\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A" +
+                "\u7B47\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45" +
+                "\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53" +
+                "\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52" +
+                "\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65" +
+                "\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050" +
+                "\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D" +
+                "\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204" +
+                "\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423" +
+                "\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410" +
+                "\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5" +
+                "\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9" +
+                "\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3\u83D5" +
+                "\u83FA\u83C7\u83D1\u83EA\u8413\u839A\u83C3\u83EC" +
+                "\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE" +
+                "\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD" +
+                "\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848" +
+                "\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE" +
+                "\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995" +
+                "\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39" +
+                "\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48" +
+                "\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA" +
+                "\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8" +
+                "\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9" +
+                "\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA\u8EF9\u8EE6" +
+                "\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1" +
+                "\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C" +
+                "\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100" +
+                "\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160" +
+                "\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C" +
+                "\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202" +
+                "\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D" +
+                "\u958C\u9590\u9687\u967E\u9688\u9689\u9683\u9680" +
+                "\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E" +
+                "\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6" +
+                "\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8" +
+                "\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6" +
+                "\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB" +
+                "\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4" +
+                "\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6" +
+                "\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868" +
+                "\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D" +
+                "\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7" +
+                "\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF" +
+                "\u5AC8\u5ABB\u5AC6\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6" +
+                "\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33" +
+                "\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68" +
+                "\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B" +
+                "\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD" +
+                "\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E" +
+                "\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223" +
+                "\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409" +
+                "\u6420\u6424\u6433\u6443\u641F\u6415\u6418\u6439" +
+                "\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441" +
+                "\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B" +
+                "\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3" +
+                "\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694" +
+                "\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971" +
+                "\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A" +
+                "\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0" +
+                "\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958" +
+                "\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F" +
+                "\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45" +
+                "\u6B43\u6B42\u6B48\u6B41\u6B9B\u6BFB\u6BFC\u6BF9" +
+                "\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F" +
+                "\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD" +
+                "\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF" +
+                "\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E" +
+                "\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97" +
+                "\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141" +
+                "\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158" +
+                "\u7143\u714B\u7170\u715F\u7150\u7153\u7144\u714D" +
+                "\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C" +
+                "\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A" +
+                "\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E" +
+                "\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD" +
+                "\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7" +
+                "\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED" +
+                "\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760" +
+                "\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D" +
+                "\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885" +
+                "\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B" +
+                "\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12" +
+                "\u7A17\u7A15\u7A22\u7A13\u7A1B\u7A10\u7AA3\u7AA2" +
+                "\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72" +
+                "\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63" +
+                "\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F" +
+                "\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94" +
+                "\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C" +
+                "\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160" +
+                "\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E" +
+                "\u8176\u8167\u816F\u8144\u8161\u821D\u8249\u8244" +
+                "\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479" +
+                "\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430" +
+                "\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507" +
+                "\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432" +
+                "\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F" +
+                "\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E" +
+                "\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B" +
+                "\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C" +
+                "\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701" +
+                "\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE" +
+                "\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5" +
+                "\u89E4\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86" +
+                "\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83" +
+                "\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64" +
+                "\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91" +
+                "\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92" +
+                "\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3" +
+                "\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01" +
+                "\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F" +
+                "\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116" +
+                "\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230" +
+                "\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A" +
+                "\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236" +
+                "\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E" +
+                "\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B" +
+                "\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8" +
+                "\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E" +
+                "\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD" +
+                "\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6" +
+                "\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4" +
+                "\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0\u51D8\u5280" +
+                "\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C" +
+                "\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA" +
+                "\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898" +
+                "\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891" +
+                "\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE" +
+                "\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED" +
+                "\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD" +
+                "\u5AD9\u5AE8\u5ADF\u5B77\u5BE0\u5BE3\u5C63\u5D82" +
+                "\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89" +
+                "\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59" +
+                "\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9" +
+                "\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128" +
+                "\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C" +
+                "\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A" +
+                "\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B" +
+                "\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466" +
+                "\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460" +
+                "\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477" +
+                "\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722" +
+                "\u69B1\u69B6\u69C9\u69A0\u69CE\u6996\u69B0\u69AC" +
+                "\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE" +
+                "\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA" +
+                "\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9" +
+                "\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D" +
+                "\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE" +
+                "\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E" +
+                "\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12" +
+                "\u6EED\u6F0A\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40" +
+                "\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05" +
+                "\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D" +
+                "\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185" +
+                "\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253" +
+                "\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462" +
+                "\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502" +
+                "\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611" +
+                "\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E" +
+                "\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD" +
+                "\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2" +
+                "\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993" +
+                "\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F" +
+                "\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C" +
+                "\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E" +
+                "\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF" +
+                "\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1" +
+                "\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC" +
+                "\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9" +
+                "\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE\u8024" +
+                "\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C" +
+                "\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE" +
+                "\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD" +
+                "\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2" +
+                "\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6" +
+                "\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB" +
+                "\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740" +
+                "\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741" +
+                "\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712" +
+                "\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724" +
+                "\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA" +
+                "\u88FE\u88EE\u88FC\u88F6\u88FB\u88F0\u88EC\u88EB" +
+                "\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB" +
+                "\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69" +
+                "\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D" +
+                "\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00" +
+                "\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120" +
+                "\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A" +
+                "\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A" +
+                "\u92A0\u9294\u92AA\u928D\u92A6\u929A\u92AB\u9279" +
+                "\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2" +
+                "\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7" +
+                "\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1" +
+                "\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782" +
+                "\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD" +
+                "\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9" +
+                "\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7" +
+                "\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5" +
+                "\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6" +
+                "\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1" +
+                "\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649" +
+                "\u5646\u5658\u565A\u5640\u5633\u563D\u562C\u563E" +
+                "\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0" +
+                "\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4" +
+                "\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01" +
+                "\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92" +
+                "\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E" +
+                "\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1" +
+                "\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2" +
+                "\u6189\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA" +
+                "\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496" +
+                "\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C" +
+                "\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579" +
+                "\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7" +
+                "\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15" +
+                "\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D" +
+                "\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40" +
+                "\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04" +
+                "\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16" +
+                "\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF" +
+                "\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92\u6F8D" +
+                "\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76" +
+                "\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94" +
+                "\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90" +
+                "\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A" +
+                "\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9" +
+                "\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C" +
+                "\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F" +
+                "\u7360\u735D\u735B\u7361\u735A\u7359\u7362\u7487" +
+                "\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C" +
+                "\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D" +
+                "\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E" +
+                "\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF" +
+                "\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9" +
+                "\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39" +
+                "\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE" +
+                "\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB" +
+                "\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA" +
+                "\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC" +
+                "\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8" +
+                "\u8064\u8067\u81A3\u819F\u819E\u8195\u81A2\u8199" +
+                "\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251" +
+                "\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D" +
+                "\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508" +
+                "\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3" +
+                "\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D" +
+                "\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7" +
+                "\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B" +
+                "\u8519\u852F\u8662\u8756\u8763\u8764\u8777\u87E1" +
+                "\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751" +
+                "\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F" +
+                "\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775" +
+                "\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B" +
+                "\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909" +
+                "\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6" +
+                "\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE" +
+                "\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E" +
+                "\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD" +
+                "\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25" +
+                "\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26" +
+                "\u8E27\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A" +
+                "\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17" +
+                "\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129" +
+                "\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181" +
+                "\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9" +
+                "\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD" +
+                "\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6" +
+                "\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3" +
+                "\u92B5\u92E1\u9325\u92C6\u92B4\u957C\u95AC\u95AB" +
+                "\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702" +
+                "\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D" +
+                "\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908" +
+                "\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD" +
+                "\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB" +
+                "\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1" +
+                "\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75" +
+                "\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF" +
+                "\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04" +
+                "\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A" +
+                "\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E\u5673" +
+                "\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B" +
+                "\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6" +
+                "\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16" +
+                "\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9" +
+                "\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD" +
+                "\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7" +
+                "\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u5FBB\u619D\u61A8" +
+                "\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA\u61BF" +
+                "\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD" +
+                "\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C" +
+                "\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD" +
+                "\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67" +
+                "\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51" +
+                "\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50" +
+                "\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56" +
+                "\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7" +
+                "\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD" +
+                "\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4" +
+                "\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA" +
+                "\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8\u6FA2\u6FC9\u6FAB" +
+                "\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8" +
+                "\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF" +
+                "\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E" +
+                "\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F" +
+                "\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580" +
+                "\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632" +
+                "\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B" +
+                "\u77A2\u77A3\u7795\u7799\u7797\u78DD\u78E9\u78E5" +
+                "\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF" +
+                "\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5" +
+                "\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5" +
+                "\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB" +
+                "\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12" +
+                "\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C" +
+                "\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14" +
+                "\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF" +
+                "\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5" +
+                "\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2" +
+                "\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553" +
+                "\u8561\u8558\u8540\u8546\u8564\u8541\u8562\u8544" +
+                "\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E" +
+                "\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554" +
+                "\u8565\u856C\u8663\u8665\u8664\u87A4\u879B\u878F" +
+                "\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779" +
+                "\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794" +
+                "\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E" +
+                "\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F" +
+                "\u89F1\u8AE0\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14" +
+                "\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF" +
+                "\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1" +
+                "\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E" +
+                "\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30" +
+                "\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37" +
+                "\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135" +
+                "\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E" +
+                "\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B" +
+                "\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB" +
+                "\u931D\u92FA\u9313\u92F9\u92F7\u9334\u9302\u9324" +
+                "\u92FF\u9329\u9339\u9335\u932A\u9314\u930C\u930B" +
+                "\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE" +
+                "\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4" +
+                "\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8" +
+                "\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E" +
+                "\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9" +
+                "\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9" +
+                "\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B" +
+                "\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95\u9B7D\u9B88" +
+                "\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18" +
+                "\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE" +
+                "\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125" +
+                "\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D" +
+                "\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6" +
+                "\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C" +
+                "\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7" +
+                "\u5E6C\u5E6A\u5FBE\u61C3\u61B5\u61BC\u61E7\u61E0" +
+                "\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB" +
+                "\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D" +
+                "\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E" +
+                "\u6A87\u6A93\u6A8E\u6A95\u6A83\u6AA8\u6AA4\u6A91" +
+                "\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD" +
+                "\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED" +
+                "\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1" +
+                "\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E" +
+                "\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1" +
+                "\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643" +
+                "\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2" +
+                "\u77B7\u77B6\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD" +
+                "\u7902\u78FB\u78FC\u78FF\u78F2\u7905\u78F9\u78FE" +
+                "\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54" +
+                "\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00" +
+                "\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09" +
+                "\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10" +
+                "\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38" +
+                "\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B" +
+                "\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4" +
+                "\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7" +
+                "\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F" +
+                "\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A" +
+                "\u859E\u8577\u857C\u8589\u85A1\u857A\u8578\u8557" +
+                "\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2" +
+                "\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F" +
+                "\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9" +
+                "\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7" +
+                "\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD" +
+                "\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952" +
+                "\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E" +
+                "\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12" +
+                "\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A" +
+                "\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9" +
+                "\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43" +
+                "\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199" +
+                "\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364" +
+                "\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350" +
+                "\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357" +
+                "\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E" +
+                "\u9363\u9367\u934E\u9359\u95C7\u95C0\u95C9\u95C3" +
+                "\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718" +
+                "\u971D\u9719\u979A\u97A1\u979C\u979E\u979D\u97D5" +
+                "\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843" +
+                "\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D" +
+                "\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4" +
+                "\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC" +
+                "\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A" +
+                "\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86" +
+                "\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E" +
+                "\u9D2F\u9D31\u9D38\u9D30\u9D45\u9D42\u9D43\u9D3E" +
+                "\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D" +
+                "\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22" +
+                "\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697" +
+                "\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0" +
+                "\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA" +
+                "\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8" +
+                "\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8" +
+                "\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7" +
+                "\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C" +
+                "\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB" +
+                "\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203" +
+                "\u71FD\u7376\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6" +
+                "\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650" +
+                "\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA" +
+                "\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD" +
+                "\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D" +
+                "\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50" +
+                "\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57" +
+                "\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2" +
+                "\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2" +
+                "\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE" +
+                "\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7" +
+                "\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA" +
+                "\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED" +
+                "\u87D8\u87E3\u87D7\u87D9\u8801\u87F4\u87E8\u87DD" +
+                "\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949" +
+                "\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F" +
+                "\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E" +
+                "\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98" +
+                "\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60" +
+                "\u8E57\u8E56\u8E5E\u8E65\u8E67\u8E5B\u8E5A\u8E61" +
+                "\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128" +
+                "\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA" +
+                "\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7" +
+                "\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F" +
+                "\u9380\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4" +
+                "\u93A3\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2" +
+                "\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE" +
+                "\u97A8\u97AB\u97A4\u97AA\u97A2\u97A5\u97D7\u97D9" +
+                "\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941" +
+                "\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11" +
+                "\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04" +
+                "\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6" +
+                "\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4" +
+                "\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B" +
+                "\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58" +
+                "\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25" +
+                "\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135" +
+                "\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA" +
+                "\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F" +
+                "\u5DC3\u5E70\u5FBF\u61FB\u6507\u6510\u650D\u6509" +
+                "\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0" +
+                "\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB" +
+                "\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027" +
+                "\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017" +
+                "\u7024\u701C\u720C\u720A\u7207\u7202\u7205\u72A5" +
+                "\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3" +
+                "\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B" +
+                "\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33" +
+                "\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75" +
+                "\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68" +
+                "\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078" +
+                "\u81D7\u81D5\u820B\u8264\u8261\u8263\u85EB\u85F1" +
+                "\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2" +
+                "\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6" +
+                "\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7" +
+                "\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A" +
+                "\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958" +
+                "\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48" +
+                "\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55\u8B51" +
+                "\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06" +
+                "\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78" +
+                "\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F" +
+                "\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE" +
+                "\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC" +
+                "\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5" +
+                "\u93C4\u93CE\u93C0\u93D2\u93A5\u93E7\u957D\u95DA" +
+                "\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726\u97B3" +
+                "\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D" +
+                "\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943" +
+                "\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B" +
+                "\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2" +
+                "\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0" +
+                "\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC" +
+                "\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81" +
+                "\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B" +
+                "\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85" +
+                "\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68" +
+                "\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D" +
+                "\u9F56\u9F57\u9F58\u5337\u56B2\u56B5\u56B3\u58E3" +
+                "\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9" +
+                "\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4" +
+                "\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF" +
+                "\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038" +
+                "\u703F\u703A\u7039\u702A\u7040\u703B\u7033\u7041" +
+                "\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA" +
+                "\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925" +
+                "\u7923\u7927\u7928\u7924\u7929\u79B2\u7A6E\u7A6C" +
+                "\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE" +
+                "\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB" +
+                "\u81D9\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B" +
+                "\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819" +
+                "\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9" +
+                "\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67" +
+                "\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57" +
+                "\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5" +
+                "\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414" +
+                "\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400" +
+                "\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8" +
+                "\u943C\u940A\u93FF\u93FC\u940C\u93F6\u9411\u9406" +
+                "\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD" +
+                "\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950" +
+                "\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31" +
+                "\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7" +
+                "\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7" +
+                "\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17" +
+                "\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98" +
+                "\u9D90\u9D9B\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1" +
+                "\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96" +
+                "\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7" +
+                "\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59" +
+                "\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE" +
+                "\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02" +
+                "\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048" +
+                "\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517" +
+                "\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2" +
+                "\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB" +
+                "\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C" +
+                "\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625" +
+                "\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A" +
+                "\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45" +
+                "\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E" +
+                "\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B" +
+                "\u9436\u9429\u943D\u9430\u9439\u942A\u9437\u942C" +
+                "\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF" +
+                "\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39" +
+                "\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A\u9A3F\u9ACD" +
+                "\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D" +
+                "\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7" +
+                "\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5" +
+                "\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8" +
+                "\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C" +
+                "\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E" +
+                "\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971" +
+                "\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526" +
+                "\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057" +
+                "\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9" +
+                "\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57" +
+                "\u7C5C\u7C59\u7C5B\u7C5A\u7CF4\u7CF1\u7E91\u7F4F" +
+                "\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632" +
+                "\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF" +
+                "\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F" +
+                "\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97" +
+                "\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F" +
+                "\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A" +
+                "\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C" +
+                "\u9A4F\u9A48\u9A4A\u9A49\u9A52\u9A50\u9AD0\u9B19" +
+                "\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44" +
+                "\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D" +
+                "\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC" +
+                "\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5" +
+                "\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B" +
+                "\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D" +
+                "\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525" +
+                "\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A" +
+                "\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66" +
+                "\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B" +
+                "\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973" +
+                "\u89FE\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98" +
+                "\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E" +
+                "\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20" +
+                "\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59" +
+                "\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8" +
+                "\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2" +
+                "\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2" +
+                "\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F" +
+                "\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D" +
+                "\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060" +
+                "\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A" +
+                "\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B" +
+                "\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD" +
+                "\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747" +
+                "\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66" +
+                "\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06" +
+                "\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0" +
+                "\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8" +
+                "\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8" +
+                "\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A\u7E98\u7E9B" +
+                "\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A" +
+                "\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3" +
+                "\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F" +
+                "\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12" +
+                "\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A" +
+                "\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3" +
+                "\u9474\u9478\u9476\u9475\u9A60\u9B2E\u9C74\u9C73" +
+                "\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A\u9FA4\u7068" +
+                "\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C" +
+                "\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB" +
+                "\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207" +
+                "\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69" +
+                "\u9A68\u9E19\u864B\u8B9F\u9483\u9C79\u9EB7\u7675" +
+                "\u9A6B\u9C7A\u9E1D\u7069\u706A\u7229\u9EA4\u9F7E" +
+                "\u9F49\u9F98\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD"
+                ;
+            mappingTableG2ac =
+                "\uE000\uE001\uE002\uE003\uE004\uE005\uE006\uE007" +
+                "\uE008\uE009\uE00A\uE00B\uE00C\uE00D\uE00E\uE00F" +
+                "\uE010\uE011\uE012\uE013\uE014\uE015\uE016\uE017" +
+                "\uE018\uE019\uE01A\uE01B\uE01C\uE01D\uE01E\uE01F" +
+                "\uE020\uE021\uE022\uE023\uE024\uE025\uE026\uE027" +
+                "\uE028\uE029\uE02A\uE02B\uE02C\uE02D\uE02E\uE02F" +
+                "\uE030\uE031\uE032\uE033\uE034\uE035\uE036\uE037" +
+                "\uE038\uE039\uE03A\uE03B\uE03C\uE03D\uE03E\uE03F" +
+                "\uE040\uE041\uE042\uE043\uE044\uE045\uE046\uE047" +
+                "\uE048\uE049\uE04A\uE04B\uE04C\uE04D\uE04E\uE04F" +
+                "\uE050\uE051\uE052\uE053\uE054\uE055\uE056\uE057" +
+                "\uE058\uE059\uE05A\uE05B\uE05C\uE05D\uE05E\uE05F" +
+                "\uE060\uE061\uE062\uE063\uE064\uE065\uE066\uE067" +
+                "\uE068\uE069\uE06A\uE06B\uE06C\uE06D\uE06E\uE06F" +
+                "\uE070\uE071\uE072\uE073\uE074\uE075\uE076\uE077" +
+                "\uE078\uE079\uE07A\uE07B\uE07C\uE07D\uE07E\uE07F" +
+                "\uE080\uE081\uE082\uE083\uE084\uE085\uE086\uE087" +
+                "\uE088\uE089\uE08A\uE08B\uE08C\uE08D\uE08E\uE08F" +
+                "\uE090\uE091\uE092\uE093\uE094\uE095\uE096\uE097" +
+                "\uE098\uE099\uE09A\uE09B\uE09C\uE09D\uE09E\uE09F" +
+                "\uE0A0\uE0A1\uE0A2\uE0A3\uE0A4\uE0A5\uE0A6\uE0A7" +
+                "\uE0A8\uE0A9\uE0AA\uE0AB\uE0AC\uE0AD\uE0AE\uE0AF" +
+                "\uE0B0\uE0B1\uE0B2\uE0B3\uE0B4\uE0B5\uE0B6\uE0B7" +
+                "\uE0B8\uE0B9\uE0BA\uE0BB\uE0BC\uE0BD\uE0BE\uE0BF" +
+                "\uE0C0\uE0C1\uE0C2\uE0C3\uE0C4\uE0C5\uE0C6\uE0C7" +
+                "\uE0C8\uE0C9\uE0CA\uE0CB\uE0CC\uE0CD\uE0CE\uE0CF" +
+                "\uE0D0\uE0D1\uE0D2\uE0D3\uE0D4\uE0D5\uE0D6\uE0D7" +
+                "\uE0D8\uE0D9\uE0DA\uE0DB\uE0DC\uE0DD\uE0DE\uE0DF" +
+                "\uE0E0\uE0E1\uE0E2\uE0E3\uE0E4\uE0E5\uE0E6\uE0E7" +
+                "\uE0E8\uE0E9\uE0EA\uE0EB\uE0EC\uE0ED\uE0EE\uE0EF" +
+                "\uE0F0\uE0F1\uE0F2\uE0F3\uE0F4\uE0F5\uE0F6\uE0F7" +
+                "\uE0F8\uE0F9\uE0FA\uE0FB\uE0FC\uE0FD\uE0FE\uE0FF" +
+                "\uE100\uE101\uE102\uE103\uE104\uE105\uE106\uE107" +
+                "\uE108\uE109\uE10A\uE10B\uE10C\uE10D\uE10E\uE10F" +
+                "\uE110\uE111\uE112\uE113\uE114\uE115\uE116\uE117" +
+                "\uE118\uE119\uE11A\uE11B\uE11C\uE11D\uE11E\uE11F" +
+                "\uE120\uE121\uE122\uE123\uE124\uE125\uE126\uE127" +
+                "\uE128\uE129\uE12A\uE12B\uE12C\uE12D\uE12E\uE12F" +
+                "\uE130\uE131\uE132\uE133\uE134\uE135\uE136\uE137" +
+                "\uE138\uE139\uE13A\uE13B\uE13C\uE13D\uE13E\uE13F" +
+                "\uE140\uE141\uE142\uE143\uE144\uE145\uE146\uE147" +
+                "\uE148\uE149\uE14A\uE14B\uE14C\uE14D\uE14E\uE14F" +
+                "\uE150\uE151\uE152\uE153\uE154\uE155\uE156\uE157" +
+                "\uE158\uE159\uE15A\uE15B\uE15C\uE15D\uE15E\uE15F" +
+                "\uE160\uE161\uE162\uE163\uE164\uE165\uE166\uE167" +
+                "\uE168\uE169\uE16A\uE16B\uE16C\uE16D\uE16E\uE16F" +
+                "\uE170\uE171\uE172\uE173\uE174\uE175\uE176\uE177" +
+                "\uE178\uE179\uE17A\uE17B\uE17C\uE17D\uE17E\uE17F" +
+                "\uE180\uE181\uE182\uE183\uE184\uE185\uE186\uE187" +
+                "\uE188\uE189\uE18A\uE18B\uE18C\uE18D\uE18E\uE18F" +
+                "\uE190\uE191\uE192\uE193\uE194\uE195\uE196\uE197" +
+                "\uE198\uE199\uE19A\uE19B\uE19C\uE19D\uE19E\uE19F" +
+                "\uE1A0\uE1A1\uE1A2\uE1A3\uE1A4\uE1A5\uE1A6\uE1A7" +
+                "\uE1A8\uE1A9\uE1AA\uE1AB\uE1AC\uE1AD\uE1AE\uE1AF" +
+                "\uE1B0\uE1B1\uE1B2\uE1B3\uE1B4\uE1B5\uE1B6\uE1B7" +
+                "\uE1B8\uE1B9\uE1BA\uE1BB\uE1BC\uE1BD\uE1BE\uE1BF" +
+                "\uE1C0\uE1C1\uE1C2\uE1C3\uE1C4\uE1C5\uE1C6\uE1C7" +
+                "\uE1C8\uE1C9\uE1CA\uE1CB\uE1CC\uE1CD\uE1CE\uE1CF" +
+                "\uE1D0\uE1D1\uE1D2\uE1D3\uE1D4\uE1D5\uE1D6\uE1D7" +
+                "\uE1D8\uE1D9\uE1DA\uE1DB\uE1DC\uE1DD\uE1DE\uE1DF" +
+                "\uE1E0\uE1E1\uE1E2\uE1E3\uE1E4\uE1E5\uE1E6\uE1E7" +
+                "\uE1E8\uE1E9\uE1EA\uE1EB\uE1EC\uE1ED\uE1EE\uE1EF" +
+                "\uE1F0\uE1F1\uE1F2\uE1F3\uE1F4\uE1F5\uE1F6\uE1F7" +
+                "\uE1F8\uE1F9\uE1FA\uE1FB\uE1FC\uE1FD\uE1FE\uE1FF" +
+                "\uE200\uE201\uE202\uE203\uE204\uE205\uE206\uE207" +
+                "\uE208\uE209\uE20A\uE20B\uE20C\uE20D\uE20E\uE20F" +
+                "\uE210\uE211\uE212\uE213\uE214\uE215\uE216\uE217" +
+                "\uE218\uE219\uE21A\uE21B\uE21C\uE21D\uE21E\uE21F" +
+                "\uE220\uE221\uE222\uE223\uE224\uE225\uE226\uE227" +
+                "\uE228\uE229\uE22A\uE22B\uE22C\uE22D\uE22E\uE22F" +
+                "\uE230\uE231\uE232\uE233\uE234\uE235\uE236\uE237" +
+                "\uE238\uE239\uE23A\uE23B\uE23C\uE23D\uE23E\uE23F" +
+                "\uE240\uE241\uE242\uE243\uE244\uE245\uE246\uE247" +
+                "\uE248\uE249\uE24A\uE24B\uE24C\uE24D\uE24E\uE24F" +
+                "\uE250\uE251\uE252\uE253\uE254\uE255\uE256\uE257" +
+                "\uE258\uE259\uE25A\uE25B\uE25C\uE25D\uE25E\uE25F" +
+                "\uE260\uE261\uE262\uE263\uE264\uE265\uE266\uE267" +
+                "\uE268\uE269\uE26A\uE26B\uE26C\uE26D\uE26E\uE26F" +
+                "\uE270\uE271\uE272\uE273\uE274\uE275\uE276\uE277" +
+                "\uE278\uE279\uE27A\uE27B\uE27C\uE27D\uE27E\uE27F" +
+                "\uE280\uE281\uE282\uE283\uE284\uE285\uE286\uE287" +
+                "\uE288\uE289\uE28A\uE28B\uE28C\uE28D\uE28E\uE28F" +
+                "\uE290\uE291\uE292\uE293\uE294\uE295\uE296\uE297" +
+                "\uE298\uE299\uE29A\uE29B\uE29C\uE29D\uE29E\uE29F" +
+                "\uE2A0\uE2A1\uE2A2\uE2A3\uE2A4\uE2A5\uE2A6\uE2A7" +
+                "\uE2A8\uE2A9\uE2AA\uE2AB\uE2AC\uE2AD\uE2AE\uE2AF" +
+                "\uE2B0\uE2B1\uE2B2\uE2B3\uE2B4\uE2B5\uE2B6\uE2B7" +
+                "\uE2B8\uE2B9\uE2BA\uE2BB\uE2BC\uE2BD\uE2BE\uE2BF" +
+                "\uE2C0\uE2C1\uE2C2\uE2C3\uE2C4\uE2C5\uE2C6\uE2C7" +
+                "\uE2C8\uE2C9\uE2CA\uE2CB\uE2CC\uE2CD\uE2CE\uE2CF" +
+                "\uE2D0\uE2D1\uE2D2\uE2D3\uE2D4\uE2D5\uE2D6\uE2D7" +
+                "\uE2D8\uE2D9\uE2DA\uE2DB\uE2DC\uE2DD\uE2DE\uE2DF" +
+                "\uE2E0\uE2E1\uE2E2\uE2E3\uE2E4\uE2E5\uE2E6\uE2E7" +
+                "\uE2E8\uE2E9\uE2EA\uE2EB\uE2EC\uE2ED\uE2EE\uE2EF" +
+                "\uE2F0\uE2F1\uE2F2\uE2F3\uE2F4\uE2F5\uE2F6\uE2F7" +
+                "\uE2F8\uE2F9\uE2FA\uE2FB\uE2FC\uE2FD\uE2FE\uE2FF" +
+                "\uE300\uE301\uE302\uE303\uE304\uE305\uE306\uE307" +
+                "\uE308\uE309\uE30A\uE30B\uE30C\uE30D\uE30E\uE30F" +
+                "\uE310\uE311\uE312\uE313\uE314\uE315\uE316\uE317" +
+                "\uE318\uE319\uE31A\uE31B\uE31C\uE31D\uE31E\uE31F" +
+                "\uE320\uE321\uE322\uE323\uE324\uE325\uE326\uE327" +
+                "\uE328\uE329\uE32A\uE32B\uE32C\uE32D\uE32E\uE32F" +
+                "\uE330\uE331\uE332\uE333\uE334\uE335\uE336\uE337" +
+                "\uE338\uE339\uE33A\uE33B\uE33C\uE33D\uE33E\uE33F" +
+                "\uE340\uE341\uE342\uE343\uE344\uE345\uE346\uE347" +
+                "\uE348\uE349\uE34A\uE34B\uE34C\uE34D\uE34E\uE34F" +
+                "\uE350\uE351\uE352\uE353\uE354\uE355\uE356\uE357" +
+                "\uE358\uE359\uE35A\uE35B\uE35C\uE35D\uE35E\uE35F" +
+                "\uE360\uE361\uE362\uE363\uE364\uE365\uE366\uE367" +
+                "\uE368\uE369\uE36A\uE36B\uE36C\uE36D\uE36E\uE36F" +
+                "\uE370\uE371\uE372\uE373\uE374\uE375\uE376\uE377" +
+                "\uE378\uE379\uE37A\uE37B\uE37C\uE37D\uE37E\uE37F" +
+                "\uE380\uE381\uE382\uE383\uE384\uE385\uE386\uE387" +
+                "\uE388\uE389\uE38A\uE38B\uE38C\uE38D\uE38E\uE38F" +
+                "\uE390\uE391\uE392\uE393\uE394\uE395\uE396\uE397" +
+                "\uE398\uE399\uE39A\uE39B\uE39C\uE39D\uE39E\uE39F" +
+                "\uE3A0\uE3A1\uE3A2\uE3A3\uE3A4\uE3A5\uE3A6\uE3A7" +
+                "\uE3A8\uE3A9\uE3AA\uE3AB\uE3AC\uE3AD\uE3AE\uE3AF" +
+                "\uE3B0\uE3B1\uE3B2\uE3B3\uE3B4\uE3B5\uE3B6\uE3B7" +
+                "\uE3B8\uE3B9\uE3BA\uE3BB\uE3BC\uE3BD\uE3BE\uE3BF" +
+                "\uE3C0\uE3C1\uE3C2\uE3C3\uE3C4\uE3C5\uE3C6\uE3C7" +
+                "\uE3C8\uE3C9\uE3CA\uE3CB\uE3CC\uE3CD\uE3CE\uE3CF" +
+                "\uE3D0\uE3D1\uE3D2\uE3D3\uE3D4\uE3D5\uE3D6\uE3D7" +
+                "\uE3D8\uE3D9\uE3DA\uE3DB\uE3DC\uE3DD\uE3DE\uE3DF" +
+                "\uE3E0\uE3E1\uE3E2\uE3E3\uE3E4\uE3E5\uE3E6\uE3E7" +
+                "\uE3E8\uE3E9\uE3EA\uE3EB\uE3EC\uE3ED\uE3EE\uE3EF" +
+                "\uE3F0\uE3F1\uE3F2\uE3F3\uE3F4\uE3F5\uE3F6\uE3F7" +
+                "\uE3F8\uE3F9\uE3FA\uE3FB\uE3FC\uE3FD\uE3FE\uE3FF" +
+                "\uE400\uE401\uE402\uE403\uE404\uE405\uE406\uE407" +
+                "\uE408\uE409\uE40A\uE40B\uE40C\uE40D\uE40E\uE40F" +
+                "\uE410\uE411\uE412\uE413\uE414\uE415\uE416\uE417" +
+                "\uE418\uE419\uE41A\uE41B\uE41C\uE41D\uE41E\uE41F" +
+                "\uE420\uE421\uE422\uE423\uE424\uE425\uE426\uE427" +
+                "\uE428\uE429\uE42A\uE42B\uE42C\uE42D\uE42E\uE42F" +
+                "\uE430\uE431\uE432\uE433\uE434\uE435\uE436\uE437" +
+                "\uE438\uE439\uE43A\uE43B\uE43C\uE43D\uE43E\uE43F" +
+                "\uE440\uE441\uE442\uE443\uE444\uE445\uE446\uE447" +
+                "\uE448\uE449\uE44A\uE44B\uE44C\uE44D\uE44E\uE44F" +
+                "\uE450\uE451\uE452\uE453\uE454\uE455\uE456\uE457" +
+                "\uE458\uE459\uE45A\uE45B\uE45C\uE45D\uE45E\uE45F" +
+                "\uE460\uE461\uE462\uE463\uE464\uE465\uE466\uE467" +
+                "\uE468\uE469\uE46A\uE46B\uE46C\uE46D\uE46E\uE46F" +
+                "\uE470\uE471\uE472\uE473\uE474\uE475\uE476\uE477" +
+                "\uE478\uE479\uE47A\uE47B\uE47C\uE47D\uE47E\uE47F" +
+                "\uE480\uE481\uE482\uE483\uE484\uE485\uE486\uE487" +
+                "\uE488\uE489\uE48A\uE48B\uE48C\uE48D\uE48E\uE48F" +
+                "\uE490\uE491\uE492\uE493\uE494\uE495\uE496\uE497" +
+                "\uE498\uE499\uE49A\uE49B\uE49C\uE49D\uE49E\uE49F" +
+                "\uE4A0\uE4A1\uE4A2\uE4A3\uE4A4\uE4A5\uE4A6\uE4A7" +
+                "\uE4A8\uE4A9\uE4AA\uE4AB\uE4AC\uE4AD\uE4AE\uE4AF" +
+                "\uE4B0\uE4B1\uE4B2\uE4B3\uE4B4\uE4B5\uE4B6\uE4B7" +
+                "\uE4B8\uE4B9\uE4BA\uE4BB\uE4BC\uE4BD\uE4BE\uE4BF" +
+                "\uE4C0\uE4C1\uE4C2\uE4C3\uE4C4\uE4C5\uE4C6\uE4C7" +
+                "\uE4C8\uE4C9\uE4CA\uE4CB\uE4CC\uE4CD\uE4CE\uE4CF" +
+                "\uE4D0\uE4D1\uE4D2\uE4D3\uE4D4\uE4D5\uE4D6\uE4D7" +
+                "\uE4D8\uE4D9\uE4DA\uE4DB\uE4DC\uE4DD\uE4DE\uE4DF" +
+                "\uE4E0\uE4E1\uE4E2\uE4E3\uE4E4\uE4E5\uE4E6\uE4E7" +
+                "\uE4E8\uE4E9\uE4EA\uE4EB\uE4EC\uE4ED\uE4EE\uE4EF" +
+                "\uE4F0\uE4F1\uE4F2\uE4F3\uE4F4\uE4F5\uE4F6\uE4F7" +
+                "\uE4F8\uE4F9\uE4FA\uE4FB\uE4FC\uE4FD\uE4FE\uE4FF" +
+                "\uE500\uE501\uE502\uE503\uE504\uE505\uE506\uE507" +
+                "\uE508\uE509\uE50A\uE50B\uE50C\uE50D\uE50E\uE50F" +
+                "\uE510\uE511\uE512\uE513\uE514\uE515\uE516\uE517" +
+                "\uE518\uE519\uE51A\uE51B\uE51C\uE51D\uE51E\uE51F" +
+                "\uE520\uE521\uE522\uE523\uE524\uE525\uE526\uE527" +
+                "\uE528\uE529\uE52A\uE52B\uE52C\uE52D\uE52E\uE52F" +
+                "\uE530\uE531\uE532\uE533\uE534\uE535\uE536\uE537" +
+                "\uE538\uE539\uE53A\uE53B\uE53C\uE53D\uE53E\uE53F" +
+                "\uE540\uE541\uE542\uE543\uE544\uE545\uE546\uE547" +
+                "\uE548\uE549\uE54A\uE54B\uE54C\uE54D\uE54E\uE54F" +
+                "\uE550\uE551\uE552\uE553\uE554\uE555\uE556\uE557" +
+                "\uE558\uE559\uE55A\uE55B\uE55C\uE55D\uE55E\uE55F" +
+                "\uE560\uE561\uE562\uE563\uE564\uE565\uE566\uE567" +
+                "\uE568\uE569\uE56A\uE56B\uE56C\uE56D\uE56E\uE56F" +
+                "\uE570\uE571\uE572\uE573\uE574\uE575\uE576\uE577" +
+                "\uE578\uE579\uE57A\uE57B\uE57C\uE57D\uE57E\uE57F" +
+                "\uE580\uE581\uE582\uE583\uE584\uE585\uE586\uE587" +
+                "\uE588\uE589\uE58A\uE58B\uE58C\uE58D\uE58E\uE58F" +
+                "\uE590\uE591\uE592\uE593\uE594\uE595\uE596\uE597" +
+                "\uE598\uE599\uE59A\uE59B\uE59C\uE59D\uE59E\uE59F" +
+                "\uE5A0\uE5A1\uE5A2\uE5A3\uE5A4\uE5A5\uE5A6\uE5A7" +
+                "\uE5A8\uE5A9\uE5AA\uE5AB\uE5AC\uE5AD\uE5AE\uE5AF" +
+                "\uE5B0\uE5B1\uE5B2\uE5B3\uE5B4\uE5B5\uE5B6\uE5B7" +
+                "\uE5B8\uE5B9\uE5BA\uE5BB\uE5BC\uE5BD\uE5BE\uE5BF" +
+                "\uE5C0\uE5C1\uE5C2\uE5C3\uE5C4\uE5C5\uE5C6\uE5C7" +
+                "\uE5C8\uE5C9\uE5CA\uE5CB\uE5CC\uE5CD\uE5CE\uE5CF" +
+                "\uE5D0\uE5D1\uE5D2\uE5D3\uE5D4\uE5D5\uE5D6\uE5D7" +
+                "\uE5D8\uE5D9\uE5DA\uE5DB\uE5DC\uE5DD\uE5DE\uE5DF" +
+                "\uE5E0\uE5E1\uE5E2\uE5E3\uE5E4\uE5E5\uE5E6\uE5E7" +
+                "\uE5E8\uE5E9\uE5EA\uE5EB\uE5EC\uE5ED\uE5EE\uE5EF" +
+                "\uE5F0\uE5F1\uE5F2\uE5F3\uE5F4\uE5F5\uE5F6\uE5F7" +
+                "\uE5F8\uE5F9\uE5FA\uE5FB\uE5FC\uE5FD\uE5FE\uE5FF" +
+                "\uE600\uE601\uE602\uE603\uE604\uE605\uE606\uE607" +
+                "\uE608\uE609\uE60A\uE60B\uE60C\uE60D\uE60E\uE60F" +
+                "\uE610\uE611\uE612\uE613\uE614\uE615\uE616\uE617" +
+                "\uE618\uE619\uE61A\uE61B\uE61C\uE61D\uE61E\uE61F" +
+                "\uE620\uE621\uE622\uE623\uE624\uE625\uE626\uE627" +
+                "\uE628\uE629\uE62A\uE62B\uE62C\uE62D\uE62E\uE62F" +
+                "\uE630\uE631\uE632\uE633\uE634\uE635\uE636\uE637" +
+                "\uE638\uE639\uE63A\uE63B\uE63C\uE63D\uE63E\uE63F" +
+                "\uE640\uE641\uE642\uE643\uE644\uE645\uE646\uE647" +
+                "\uE648\uE649\uE64A\uE64B\uE64C\uE64D\uE64E\uE64F" +
+                "\uE650\uE651\uE652\uE653\uE654\uE655\uE656\uE657" +
+                "\uE658\uE659\uE65A\uE65B\uE65C\uE65D\uE65E\uE65F" +
+                "\uE660\uE661\uE662\uE663\uE664\uE665\uE666\uE667" +
+                "\uE668\uE669\uE66A\uE66B\uE66C\uE66D\uE66E\uE66F" +
+                "\uE670\uE671\uE672\uE673\uE674\uE675\uE676\uE677" +
+                "\uE678\uE679\uE67A\uE67B\uE67C\uE67D\uE67E\uE67F" +
+                "\uE680\uE681\uE682\uE683\uE684\uE685\uE686\uE687" +
+                "\uE688\uE689\uE68A\uE68B\uE68C\uE68D\uE68E\uE68F" +
+                "\uE690\uE691\uE692\uE693\uE694\uE695\uE696\uE697" +
+                "\uE698\uE699\uE69A\uE69B\uE69C\uE69D\uE69E\uE69F" +
+                "\uE6A0\uE6A1\uE6A2\uE6A3\uE6A4\uE6A5\uE6A6\uE6A7" +
+                "\uE6A8\uE6A9\uE6AA\uE6AB\uE6AC\uE6AD\uE6AE\uE6AF" +
+                "\uE6B0\uE6B1\uE6B2\uE6B3\uE6B4\uE6B5\uE6B6\uE6B7" +
+                "\uE6B8\uE6B9\uE6BA\uE6BB\uE6BC\uE6BD\uE6BE\uE6BF" +
+                "\uE6C0\uE6C1\uE6C2\uE6C3\uE6C4\uE6C5\uE6C6\uE6C7" +
+                "\uE6C8\uE6C9\uE6CA\uE6CB\uE6CC\uE6CD\uE6CE\uE6CF" +
+                "\uE6D0\uE6D1\uE6D2\uE6D3\uE6D4\uE6D5\uE6D6\uE6D7" +
+                "\uE6D8\uE6D9\uE6DA\uE6DB\uE6DC\uE6DD\uE6DE\uE6DF" +
+                "\uE6E0\uE6E1\uE6E2\uE6E3\uE6E4\uE6E5\uE6E6\uE6E7" +
+                "\uE6E8\uE6E9\uE6EA\uE6EB\uE6EC\uE6ED\uE6EE\uE6EF" +
+                "\uE6F0\uE6F1\uE6F2\uE6F3\uE6F4\uE6F5\uE6F6\uE6F7" +
+                "\uE6F8\uE6F9\uE6FA\uE6FB\uE6FC\uE6FD\uE6FE\uE6FF" +
+                "\uE700\uE701\uE702\uE703\uE704\uE705\uE706\uE707" +
+                "\uE708\uE709\uE70A\uE70B\uE70C\uE70D\uE70E\uE70F" +
+                "\uE710\uE711\uE712\uE713\uE714\uE715\uE716\uE717" +
+                "\uE718\uE719\uE71A\uE71B\uE71C\uE71D\uE71E\uE71F" +
+                "\uE720\uE721\uE722\uE723\uE724\uE725\uE726\uE727" +
+                "\uE728\uE729\uE72A\uE72B\uE72C\uE72D\uE72E\uE72F" +
+                "\uE730\uE731\uE732\uE733\uE734\uE735\uE736\uE737" +
+                "\uE738\uE739\uE73A\uE73B\uE73C\uE73D\uE73E\uE73F" +
+                "\uE740\uE741\uE742\uE743\uE744\uE745\uE746\uE747" +
+                "\uE748\uE749\uE74A\uE74B\uE74C\uE74D\uE74E\uE74F" +
+                "\uE750\uE751\uE752\uE753\uE754\uE755\uE756\uE757" +
+                "\uE758\uE759\uE75A\uE75B\uE75C\uE75D\uE75E\uE75F" +
+                "\uE760\uE761\uE762\uE763\uE764\uE765\uE766\uE767" +
+                "\uE768\uE769\uE76A\uE76B\uE76C\uE76D\uE76E\uE76F" +
+                "\uE770\uE771\uE772\uE773\uE774\uE775\uE776\uE777" +
+                "\uE778\uE779\uE77A\uE77B\uE77C\uE77D\uE77E\uE77F" +
+                "\uE780\uE781\uE782\uE783\uE784\uE785\uE786\uE787" +
+                "\uE788\uE789\uE78A\uE78B\uE78C\uE78D\uE78E\uE78F" +
+                "\uE790\uE791\uE792\uE793\uE794\uE795\uE796\uE797" +
+                "\uE798\uE799\uE79A\uE79B\uE79C\uE79D\uE79E\uE79F" +
+                "\uE7A0\uE7A1\uE7A2\uE7A3\uE7A4\uE7A5\uE7A6\uE7A7" +
+                "\uE7A8\uE7A9\uE7AA\uE7AB\uE7AC\uE7AD\uE7AE\uE7AF" +
+                "\uE7B0\uE7B1\uE7B2\uE7B3\uE7B4\uE7B5\uE7B6\uE7B7" +
+                "\uE7B8\uE7B9\uE7BA\uE7BB\uE7BC\uE7BD\uE7BE\uE7BF" +
+                "\uE7C0\uE7C1\uE7C2\uE7C3\uE7C4\uE7C5\uE7C6\uE7C7" +
+                "\uE7C8\uE7C9\uE7CA\uE7CB\uE7CC\uE7CD\uE7CE\uE7CF" +
+                "\uE7D0\uE7D1\uE7D2\uE7D3\uE7D4\uE7D5\uE7D6\uE7D7" +
+                "\uE7D8\uE7D9\uE7DA\uE7DB\uE7DC\uE7DD\uE7DE\uE7DF" +
+                "\uE7E0\uE7E1\uE7E2\uE7E3\uE7E4\uE7E5\uE7E6\uE7E7" +
+                "\uE7E8\uE7E9\uE7EA\uE7EB\uE7EC\uE7ED\uE7EE\uE7EF" +
+                "\uE7F0\uE7F1\uE7F2\uE7F3\uE7F4\uE7F5\uE7F6\uE7F7" +
+                "\uE7F8\uE7F9\uE7FA\uE7FB\uE7FC\uE7FD\uE7FE\uE7FF" +
+                "\uE800\uE801\uE802\uE803\uE804\uE805\uE806\uE807" +
+                "\uE808\uE809\uE80A\uE80B\uE80C\uE80D\uE80E\uE80F" +
+                "\uE810\uE811\uE812\uE813\uE814\uE815\uE816\uE817" +
+                "\uE818\uE819\uE81A\uE81B\uE81C\uE81D\uE81E\uE81F" +
+                "\uE820\uE821\uE822\uE823\uE824\uE825\uE826\uE827" +
+                "\uE828\uE829\uE82A\uE82B\uE82C\uE82D\uE82E\uE82F" +
+                "\uE830\uE831\uE832\uE833\uE834\uE835\uE836\uE837" +
+                "\uE838\uE839\uE83A\uE83B\uE83C\uE83D\uE83E\uE83F" +
+                "\uE840\uE841\uE842\uE843\uE844\uE845\uE846\uE847" +
+                "\uE848\uE849\uE84A\uE84B\uE84C\uE84D\uE84E\uE84F" +
+                "\uE850\uE851\uE852\uE853\uE854\uE855\uE856\uE857" +
+                "\uE858\uE859\uE85A\uE85B\uE85C\uE85D\uE85E\uE85F" +
+                "\uE860\uE861\uE862\uE863\uE864\uE865\uE866\uE867" +
+                "\uE868\uE869\uE86A\uE86B\uE86C\uE86D\uE86E\uE86F" +
+                "\uE870\uE871\uE872\uE873\uE874\uE875\uE876\uE877" +
+                "\uE878\uE879\uE87A\uE87B\uE87C\uE87D\uE87E\uE87F" +
+                "\uE880\uE881\uE882\uE883\uE884\uE885\uE886\uE887" +
+                "\uE888\uE889\uE88A\uE88B\uE88C\uE88D\uE88E\uE88F" +
+                "\uE890\uE891\uE892\uE893\uE894\uE895\uE896\uE897" +
+                "\uE898\uE899\uE89A\uE89B\uE89C\uE89D\uE89E\uE89F" +
+                "\uE8A0\uE8A1\uE8A2\uE8A3\uE8A4\uE8A5\uE8A6\uE8A7" +
+                "\uE8A8\uE8A9\uE8AA\uE8AB\uE8AC\uE8AD\uE8AE\uE8AF" +
+                "\uE8B0\uE8B1\uE8B2\uE8B3\uE8B4\uE8B5\uE8B6\uE8B7" +
+                "\uE8B8\uE8B9\uE8BA\uE8BB\uE8BC\uE8BD\uE8BE\uE8BF" +
+                "\uE8C0\uE8C1\uE8C2\uE8C3\uE8C4\uE8C5\uE8C6\uE8C7" +
+                "\uE8C8\uE8C9\uE8CA\uE8CB\uE8CC\uE8CD\uE8CE\uE8CF" +
+                "\uE8D0\uE8D1\uE8D2\uE8D3\uE8D4\uE8D5\uE8D6\uE8D7" +
+                "\uE8D8\uE8D9\uE8DA\uE8DB\uE8DC\uE8DD\uE8DE\uE8DF" +
+                "\uE8E0\uE8E1\uE8E2\uE8E3\uE8E4\uE8E5\uE8E6\uE8E7" +
+                "\uE8E8\uE8E9\uE8EA\uE8EB\uE8EC\uE8ED\uE8EE\uE8EF" +
+                "\uE8F0\uE8F1\uE8F2\uE8F3\uE8F4\uE8F5\uE8F6\uE8F7" +
+                "\uE8F8\uE8F9\uE8FA\uE8FB\uE8FC\uE8FD\uE8FE\uE8FF" +
+                "\uE900\uE901\uE902\uE903\uE904\uE905\uE906\uE907" +
+                "\uE908\uE909\uE90A\uE90B\uE90C\uE90D\uE90E\uE90F" +
+                "\uE910\uE911\uE912\uE913\uE914\uE915\uE916\uE917" +
+                "\uE918\uE919\uE91A\uE91B\uE91C\uE91D\uE91E\uE91F" +
+                "\uE920\uE921\uE922\uE923\uE924\uE925\uE926\uE927" +
+                "\uE928\uE929\uE92A\uE92B\uE92C\uE92D\uE92E\uE92F" +
+                "\uE930\uE931\uE932\uE933\uE934\uE935\uE936\uE937" +
+                "\uE938\uE939\uE93A\uE93B\uE93C\uE93D\uE93E\uE93F" +
+                "\uE940\uE941\uE942\uE943\uE944\uE945\uE946\uE947" +
+                "\uE948\uE949\uE94A\uE94B\uE94C\uE94D\uE94E\uE94F" +
+                "\uE950\uE951\uE952\uE953\uE954\uE955\uE956\uE957" +
+                "\uE958\uE959\uE95A\uE95B\uE95C\uE95D\uE95E\uE95F" +
+                "\uE960\uE961\uE962\uE963\uE964\uE965\uE966\uE967" +
+                "\uE968\uE969\uE96A\uE96B\uE96C\uE96D\uE96E\uE96F" +
+                "\uE970\uE971\uE972\uE973\uE974\uE975\uE976\uE977" +
+                "\uE978\uE979\uE97A\uE97B\uE97C\uE97D\uE97E\uE97F" +
+                "\uE980\uE981\uE982\uE983\uE984\uE985\uE986\uE987" +
+                "\uE988\uE989\uE98A\uE98B\uE98C\uE98D\uE98E\uE98F" +
+                "\uE990\uE991\uE992\uE993\uE994\uE995\uE996\uE997" +
+                "\uE998\uE999\uE99A\uE99B\uE99C\uE99D\uE99E\uE99F" +
+                "\uE9A0\uE9A1\uE9A2\uE9A3\uE9A4\uE9A5\uE9A6\uE9A7" +
+                "\uE9A8\uE9A9\uE9AA\uE9AB\uE9AC\uE9AD\uE9AE\uE9AF" +
+                "\uE9B0\uE9B1\uE9B2\uE9B3\uE9B4\uE9B5\uE9B6\uE9B7" +
+                "\uE9B8\uE9B9\uE9BA\uE9BB\uE9BC\uE9BD\uE9BE\uE9BF" +
+                "\uE9C0\uE9C1\uE9C2\uE9C3\uE9C4\uE9C5\uE9C6\uE9C7" +
+                "\uE9C8\uE9C9\uE9CA\uE9CB\uE9CC\uE9CD\uE9CE\uE9CF" +
+                "\uE9D0\uE9D1\uE9D2\uE9D3\uE9D4\uE9D5\uE9D6\uE9D7" +
+                "\uE9D8\uE9D9\uE9DA\uE9DB\uE9DC\uE9DD\uE9DE\uE9DF" +
+                "\uE9E0\uE9E1\uE9E2\uE9E3\uE9E4\uE9E5\uE9E6\uE9E7" +
+                "\uE9E8\uE9E9\uE9EA\uE9EB\uE9EC\uE9ED\uE9EE\uE9EF" +
+                "\uE9F0\uE9F1\uE9F2\uE9F3\uE9F4\uE9F5\uE9F6\uE9F7" +
+                "\uE9F8\uE9F9\uE9FA\uE9FB\uE9FC\uE9FD\uE9FE\uE9FF" +
+                "\uEA00\uEA01\uEA02\uEA03\uEA04\uEA05\uEA06\uEA07" +
+                "\uEA08\uEA09\uEA0A\uEA0B\uEA0C\uEA0D\uEA0E\uEA0F" +
+                "\uEA10\uEA11\uEA12\uEA13\uEA14\uEA15\uEA16\uEA17" +
+                "\uEA18\uEA19\uEA1A\uEA1B\uEA1C\uEA1D\uEA1E\uEA1F" +
+                "\uEA20\uEA21\uEA22\uEA23\uEA24\uEA25\uEA26\uEA27" +
+                "\uEA28\uEA29\uEA2A\uEA2B\uEA2C\uEA2D\uEA2E\uEA2F" +
+                "\uEA30\uEA31\uEA32\uEA33\uEA34\uEA35\uEA36\uEA37" +
+                "\uEA38\uEA39\uEA3A\uEA3B\uEA3C\uEA3D\uEA3E\uEA3F" +
+                "\uEA40\uEA41\uEA42\uEA43\uEA44\uEA45\uEA46\uEA47" +
+                "\uEA48\uEA49\uEA4A\uEA4B\uEA4C\uEA4D\uEA4E\uEA4F" +
+                "\uEA50\uEA51\uEA52\uEA53\uEA54\uEA55\uEA56\uEA57" +
+                "\uEA58\uEA59\uEA5A\uEA5B\uEA5C\uEA5D\uEA5E\uEA5F" +
+                "\uEA60\uEA61\uEA62\uEA63\uEA64\uEA65\uEA66\uEA67" +
+                "\uEA68\uEA69\uEA6A\uEA6B\uEA6C\uEA6D\uEA6E\uEA6F" +
+                "\uEA70\uEA71\uEA72\uEA73\uEA74\uEA75\uEA76\uEA77" +
+                "\uEA78\uEA79\uEA7A\uEA7B\uEA7C\uEA7D\uEA7E\uEA7F" +
+                "\uEA80\uEA81\uEA82\uEA83\uEA84\uEA85\uEA86\uEA87" +
+                "\uEA88\uEA89\uEA8A\uEA8B\uEA8C\uEA8D\uEA8E\uEA8F" +
+                "\uEA90\uEA91\uEA92\uEA93\uEA94\uEA95\uEA96\uEA97" +
+                "\uEA98\uEA99\uEA9A\uEA9B\uEA9C\uEA9D\uEA9E\uEA9F" +
+                "\uEAA0\uEAA1\uEAA2\uEAA3\uEAA4\uEAA5\uEAA6\uEAA7" +
+                "\uEAA8\uEAA9\uEAAA\uEAAB\uEAAC\uEAAD\uEAAE\uEAAF" +
+                "\uEAB0\uEAB1\uEAB2\uEAB3\uEAB4\uEAB5\uEAB6\uEAB7" +
+                "\uEAB8\uEAB9\uEABA\uEABB\uEABC\uEABD\uEABE\uEABF" +
+                "\uEAC0\uEAC1\uEAC2\uEAC3\uEAC4\uEAC5\uEAC6\uEAC7" +
+                "\uEAC8\uEAC9\uEACA\uEACB\uEACC\uEACD\uEACE\uEACF" +
+                "\uEAD0\uEAD1\uEAD2\uEAD3\uEAD4\uEAD5\uEAD6\uEAD7" +
+                "\uEAD8\uEAD9\uEADA\uEADB\uEADC\uEADD\uEADE\uEADF" +
+                "\uEAE0\uEAE1\uEAE2\uEAE3\uEAE4\uEAE5\uEAE6\uEAE7" +
+                "\uEAE8\uEAE9\uEAEA\uEAEB\uEAEC\uEAED\uEAEE\uEAEF" +
+                "\uEAF0\uEAF1\uEAF2\uEAF3\uEAF4\uEAF5\uEAF6\uEAF7" +
+                "\uEAF8\uEAF9\uEAFA\uEAFB\uEAFC\uEAFD\uEAFE\uEAFF" +
+                "\uEB00\uEB01\uEB02\uEB03\uEB04\uEB05\uEB06\uEB07" +
+                "\uEB08\uEB09\uEB0A\uEB0B\uEB0C\uEB0D\uEB0E\uEB0F" +
+                "\uEB10\uEB11\uEB12\uEB13\uEB14\uEB15\uEB16\uEB17" +
+                "\uEB18\uEB19\uEB1A\uEB1B\uEB1C\uEB1D\uEB1E\uEB1F" +
+                "\uEB20\uEB21\uEB22\uEB23\uEB24\uEB25\uEB26\uEB27" +
+                "\uEB28\uEB29\uEB2A\uEB2B\uEB2C\uEB2D\uEB2E\uEB2F" +
+                "\uEB30\uEB31\uEB32\uEB33\uEB34\uEB35\uEB36\uEB37" +
+                "\uEB38\uEB39\uEB3A\uEB3B\uEB3C\uEB3D\uEB3E\uEB3F" +
+                "\uEB40\uEB41\uEB42\uEB43\uEB44\uEB45\uEB46\uEB47" +
+                "\uEB48\uEB49\uEB4A\uEB4B\uEB4C\uEB4D\uEB4E\uEB4F" +
+                "\uEB50\uEB51\uEB52\uEB53\uEB54\uEB55\uEB56\uEB57" +
+                "\uEB58\uEB59\uEB5A\uEB5B\uEB5C\uEB5D\uEB5E\uEB5F" +
+                "\uEB60\uEB61\uEB62\uEB63\uEB64\uEB65\uEB66\uEB67" +
+                "\uEB68\uEB69\uEB6A\uEB6B\uEB6C\uEB6D\uEB6E\uEB6F" +
+                "\uEB70\uEB71\uEB72\uEB73\uEB74\uEB75\uEB76\uEB77" +
+                "\uEB78\uEB79\uEB7A\uEB7B\uEB7C\uEB7D\uEB7E\uEB7F" +
+                "\uEB80\uEB81\uEB82\uEB83\uEB84\uEB85\uEB86\uEB87" +
+                "\uEB88\uEB89\uEB8A\uEB8B\uEB8C\uEB8D\uEB8E\uEB8F" +
+                "\uEB90\uEB91\uEB92\uEB93\uEB94\uEB95\uEB96\uEB97" +
+                "\uEB98\uEB99\uEB9A\uEB9B\uEB9C\uEB9D\uEB9E\uEB9F" +
+                "\uEBA0\uEBA1\uEBA2\uEBA3\uEBA4\uEBA5\uEBA6\uEBA7" +
+                "\uEBA8\uEBA9\uEBAA\uEBAB\uEBAC\uEBAD\uEBAE\uEBAF" +
+                "\uEBB0\uEBB1\uEBB2\uEBB3\uEBB4\uEBB5\uEBB6\uEBB7" +
+                "\uEBB8\uEBB9\uEBBA\uEBBB\uEBBC\uEBBD\uEBBE\uEBBF" +
+                "\uEBC0\uEBC1\uEBC2\uEBC3\uEBC4\uEBC5\uEBC6\uEBC7" +
+                "\uEBC8\uEBC9\uEBCA\uEBCB\uEBCC\uEBCD\uEBCE\uEBCF" +
+                "\uEBD0\uEBD1\uEBD2\uEBD3\uEBD4\uEBD5\uEBD6\uEBD7" +
+                "\uEBD8\uEBD9\uEBDA\uEBDB\uEBDC\uEBDD\uEBDE\uEBDF" +
+                "\uEBE0\uEBE1\uEBE2\uEBE3\uEBE4\uEBE5\uEBE6\uEBE7" +
+                "\uEBE8\uEBE9\uEBEA\uEBEB\uEBEC\uEBED\uEBEE\uEBEF" +
+                "\uEBF0\uEBF1\uEBF2\uEBF3\uEBF4\uEBF5\uEBF6\uEBF7" +
+                "\uEBF8\uEBF9\uEBFA\uEBFB\uEBFC\uEBFD\uEBFE\uEBFF" +
+                "\uEC00\uEC01\uEC02\uEC03\uEC04\uEC05\uEC06\uEC07" +
+                "\uEC08\uEC09\uEC0A\uEC0B\uEC0C\uEC0D\uEC0E\uEC0F" +
+                "\uEC10\uEC11\uEC12\uEC13\uEC14\uEC15\uEC16\uEC17" +
+                "\uEC18\uEC19\uEC1A\uEC1B\uEC1C\uEC1D\uEC1E\uEC1F" +
+                "\uEC20\uEC21\uEC22\uEC23\uEC24\uEC25\uEC26\uEC27" +
+                "\uEC28\uEC29\uEC2A\uEC2B\uEC2C\uEC2D\uEC2E\uEC2F" +
+                "\uEC30\uEC31\uEC32\uEC33\uEC34\uEC35\uEC36\uEC37" +
+                "\uEC38\uEC39\uEC3A\uEC3B\uEC3C\uEC3D\uEC3E\uEC3F" +
+                "\uEC40\uEC41\uEC42\uEC43\uEC44\uEC45\uEC46\uEC47" +
+                "\uEC48\uEC49\uEC4A\uEC4B\uEC4C\uEC4D\uEC4E\uEC4F" +
+                "\uEC50\uEC51\uEC52\uEC53\uEC54\uEC55\uEC56\uEC57" +
+                "\uEC58\uEC59\uEC5A\uEC5B\uEC5C\uEC5D\uEC5E\uEC5F" +
+                "\uEC60\uEC61\uEC62\uEC63\uEC64\uEC65\uEC66\uEC67" +
+                "\uEC68\uEC69\uEC6A\uEC6B\uEC6C\uEC6D\uEC6E\uEC6F" +
+                "\uEC70\uEC71\uEC72\uEC73\uEC74\uEC75\uEC76\uEC77" +
+                "\uEC78\uEC79\uEC7A\uEC7B\uEC7C\uEC7D\uEC7E\uEC7F" +
+                "\uEC80\uEC81\uEC82\uEC83\uEC84\uEC85\uEC86\uEC87" +
+                "\uEC88\uEC89\uEC8A\uEC8B\uEC8C\uEC8D\uEC8E\uEC8F" +
+                "\uEC90\uEC91\uEC92\uEC93\uEC94\uEC95\uEC96\uEC97" +
+                "\uEC98\uEC99\uEC9A\uEC9B\uEC9C\uEC9D\uEC9E\uEC9F" +
+                "\uECA0\uECA1\uECA2\uECA3\uECA4\uECA5\uECA6\uECA7" +
+                "\uECA8\uECA9\uECAA\uECAB\uECAC\uECAD\uECAE\uECAF" +
+                "\uECB0\uECB1\uECB2\uECB3\uECB4\uECB5\uECB6\uECB7" +
+                "\uECB8\uECB9\uECBA\uECBB\uECBC\uECBD\uECBE\uECBF" +
+                "\uECC0\uECC1\uECC2\uECC3\uECC4\uECC5\uECC6\uECC7" +
+                "\uECC8\uECC9\uECCA\uECCB\uECCC\uECCD\uECCE\uECCF" +
+                "\uECD0\uECD1\uECD2\uECD3\uECD4\uECD5\uECD6\uECD7" +
+                "\uECD8\uECD9\uECDA\uECDB\uECDC\uECDD\uECDE\uECDF" +
+                "\uECE0\uECE1\uECE2\uECE3\uECE4\uECE5\uECE6\uECE7" +
+                "\uECE8\uECE9\uECEA\uECEB\uECEC\uECED\uECEE\uECEF" +
+                "\uECF0\uECF1\uECF2\uECF3\uECF4\uECF5\uECF6\uECF7" +
+                "\uECF8\uECF9\uECFA\uECFB\uECFC\uECFD\uECFE\uECFF" +
+                "\uED00\uED01\uED02\uED03\uED04\uED05\uED06\uED07" +
+                "\uED08\uED09\uED0A\uED0B\uED0C\uED0D\uED0E\uED0F" +
+                "\uED10\uED11\uED12\uED13\uED14\uED15\uED16\uED17" +
+                "\uED18\uED19\uED1A\uED1B\uED1C\uED1D\uED1E\uED1F" +
+                "\uED20\uED21\uED22\uED23\uED24\uED25\uED26\uED27" +
+                "\uED28\uED29\uED2A\uED2B\uED2C\uED2D\uED2E\uED2F" +
+                "\uED30\uED31\uED32\uED33\uED34\uED35\uED36\uED37" +
+                "\uED38\uED39\uED3A\uED3B\uED3C\uED3D\uED3E\uED3F" +
+                "\uED40\uED41\uED42\uED43\uED44\uED45\uED46\uED47" +
+                "\uED48\uED49\uED4A\uED4B\uED4C\uED4D\uED4E\uED4F" +
+                "\uED50\uED51\uED52\uED53\uED54\uED55\uED56\uED57" +
+                "\uED58\uED59\uED5A\uED5B\uED5C\uED5D\uED5E\uED5F" +
+                "\uED60\uED61\uED62\uED63\uED64\uED65\uED66\uED67" +
+                "\uED68\uED69\uED6A\uED6B\uED6C\uED6D\uED6E\uED6F" +
+                "\uED70\uED71\uED72\uED73\uED74\uED75\uED76\uED77" +
+                "\uED78\uED79\uED7A\uED7B\uED7C\uED7D\uED7E\uED7F" +
+                "\uED80\uED81\uED82\uED83\uED84\uED85\uED86\uED87" +
+                "\uED88\uED89\uED8A\uED8B\uED8C\uED8D\uED8E\uED8F" +
+                "\uED90\uED91\uED92\uED93\uED94\uED95\uED96\uED97" +
+                "\uED98\uED99\uED9A\uED9B\uED9C\uED9D\uED9E\uED9F" +
+                "\uEDA0\uEDA1\uEDA2\uEDA3\uEDA4\uEDA5\uEDA6\uEDA7" +
+                "\uEDA8\uEDA9\uEDAA\uEDAB\uEDAC\uEDAD\uEDAE\uEDAF" +
+                "\uEDB0\uEDB1\uEDB2\uEDB3\uEDB4\uEDB5\uEDB6\uEDB7" +
+                "\uEDB8\uEDB9\uEDBA\uEDBB\uEDBC\uEDBD\uEDBE\uEDBF" +
+                "\uEDC0\uEDC1\uEDC2\uEDC3\uEDC4\uEDC5\uEDC6\uEDC7" +
+                "\uEDC8\uEDC9\uEDCA\uEDCB\uEDCC\uEDCD\uEDCE\uEDCF" +
+                "\uEDD0\uEDD1\uEDD2\uEDD3\uEDD4\uEDD5\uEDD6\uEDD7" +
+                "\uEDD8\uEDD9\uEDDA\uEDDB\uEDDC\uEDDD\uEDDE\uEDDF" +
+                "\uEDE0\uEDE1\uEDE2\uEDE3\uEDE4\uEDE5\uEDE6\uEDE7" +
+                "\uEDE8\uEDE9\uEDEA\uEDEB\uEDEC\uEDED\uEDEE\uEDEF" +
+                "\uEDF0\uEDF1\uEDF2\uEDF3\uEDF4\uEDF5\uEDF6\uEDF7" +
+                "\uEDF8\uEDF9\uEDFA\uEDFB\uEDFC\uEDFD\uEDFE\uEDFF" +
+                "\uEE00\uEE01\uEE02\uEE03\uEE04\uEE05\uEE06\uEE07" +
+                "\uEE08\uEE09\uEE0A\uEE0B\uEE0C\uEE0D\uEE0E\uEE0F" +
+                "\uEE10\uEE11\uEE12\uEE13\uEE14\uEE15\uEE16\uEE17" +
+                "\uEE18\uEE19\uEE1A\uEE1B\uEE1C\uEE1D\uEE1E\uEE1F" +
+                "\uEE20\uEE21\uEE22\uEE23\uEE24\uEE25\uEE26\uEE27" +
+                "\uEE28\uEE29\uEE2A\uEE2B\uEE2C\uEE2D\uEE2E\uEE2F" +
+                "\uEE30\uEE31\uEE32\uEE33\uEE34\uEE35\uEE36\uEE37" +
+                "\uEE38\uEE39\uEE3A\uEE3B\uEE3C\uEE3D\uEE3E\uEE3F" +
+                "\uEE40\uEE41\uEE42\uEE43\uEE44\uEE45\uEE46\uEE47" +
+                "\uEE48\uEE49\uEE4A\uEE4B\uEE4C\uEE4D\uEE4E\uEE4F" +
+                "\uEE50\uEE51\uEE52\uEE53\uEE54\uEE55\uEE56\uEE57" +
+                "\uEE58\uEE59\uEE5A\uEE5B\uEE5C\uEE5D\uEE5E\uEE5F" +
+                "\uEE60\uEE61\uEE62\uEE63\uEE64\uEE65\uEE66\uEE67" +
+                "\uEE68\uEE69\uEE6A\uEE6B\uEE6C\uEE6D\uEE6E\uEE6F" +
+                "\uEE70\uEE71\uEE72\uEE73\uEE74\uEE75\uEE76\uEE77" +
+                "\uEE78\uEE79\uEE7A\uEE7B\uEE7C\uEE7D\uEE7E\uEE7F" +
+                "\uEE80\uEE81\uEE82\uEE83\uEE84\uEE85\uEE86\uEE87" +
+                "\uEE88\uEE89\uEE8A\uEE8B\uEE8C\uEE8D\uEE8E\uEE8F" +
+                "\uEE90\uEE91\uEE92\uEE93\uEE94\uEE95\uEE96\uEE97" +
+                "\uEE98\uEE99\uEE9A\uEE9B\uEE9C\uEE9D\uEE9E\uEE9F" +
+                "\uEEA0\uEEA1\uEEA2\uEEA3\uEEA4\uEEA5\uEEA6\uEEA7" +
+                "\uEEA8\uEEA9\uEEAA\uEEAB\uEEAC\uEEAD\uEEAE\uEEAF" +
+                "\uEEB0\uEEB1\uEEB2\uEEB3\uEEB4\uEEB5\uEEB6\uEEB7" +
+                "\uEEB8\uEEB9\uEEBA\uEEBB\uEEBC\uEEBD\uEEBE\uEEBF" +
+                "\uEEC0\uEEC1\uEEC2\uEEC3\uEEC4\uEEC5\uEEC6\uEEC7" +
+                "\uEEC8\uEEC9\uEECA\uEECB\uEECC\uEECD\uEECE\uEECF" +
+                "\uEED0\uEED1\uEED2\uEED3\uEED4\uEED5\uEED6\uEED7" +
+                "\uEED8\uEED9\uEEDA\uEEDB\uEEDC\uEEDD\uEEDE\uEEDF" +
+                "\uEEE0\uEEE1\uEEE2\uEEE3\uEEE4\uEEE5\uEEE6\uEEE7" +
+                "\uEEE8\uEEE9\uEEEA\uEEEB\uEEEC\uEEED\uEEEE\uEEEF" +
+                "\uEEF0\uEEF1\uEEF2\uEEF3\uEEF4\uEEF5\uEEF6\uEEF7" +
+                "\uEEF8\uEEF9\uEEFA\uEEFB\uEEFC\uEEFD\uEEFE\uEEFF" +
+                "\uEF00\uEF01\uEF02\uEF03\uEF04\uEF05\uEF06\uEF07" +
+                "\uEF08\uEF09\uEF0A\uEF0B\uEF0C\uEF0D\uEF0E\uEF0F" +
+                "\uEF10\uEF11\uEF12\uEF13\uEF14\uEF15\uEF16\uEF17" +
+                "\uEF18\uEF19\uEF1A\uEF1B\uEF1C\uEF1D\uEF1E\uEF1F" +
+                "\uEF20\uEF21\uEF22\uEF23\uEF24\uEF25\uEF26\uEF27" +
+                "\uEF28\uEF29\uEF2A\uEF2B\uEF2C\uEF2D\uEF2E\uEF2F" +
+                "\uEF30\uEF31\uEF32\uEF33\uEF34\uEF35\uEF36\uEF37" +
+                "\uEF38\uEF39\uEF3A\uEF3B\uEF3C\uEF3D\uEF3E\uEF3F" +
+                "\uEF40\uEF41\uEF42\uEF43\uEF44\uEF45\uEF46\uEF47" +
+                "\uEF48\uEF49\uEF4A\uEF4B\uEF4C\uEF4D\uEF4E\uEF4F" +
+                "\uEF50\uEF51\uEF52\uEF53\uEF54\uEF55\uEF56\uEF57" +
+                "\uEF58\uEF59\uEF5A\uEF5B\uEF5C\uEF5D\uEF5E\uEF5F" +
+                "\uEF60\uEF61\uEF62\uEF63\uEF64\uEF65\uEF66\uEF67" +
+                "\uEF68\uEF69\uEF6A\uEF6B\uEF6C\uEF6D\uEF6E\uEF6F" +
+                "\uEF70\uEF71\uEF72\uEF73\uEF74\uEF75\uEF76\uEF77" +
+                "\uEF78\uEF79\uEF7A\uEF7B\uEF7C\uEF7D\uEF7E\uEF7F" +
+                "\uEF80\uEF81\uEF82\uEF83\uEF84\uEF85\uEF86\uEF87" +
+                "\uEF88\uEF89\uEF8A\uEF8B\uEF8C\uEF8D\uEF8E\uEF8F" +
+                "\uEF90\uEF91\uEF92\uEF93\uEF94\uEF95\uEF96\uEF97" +
+                "\uEF98\uEF99\uEF9A\uEF9B\uEF9C\uEF9D\uEF9E\uEF9F" +
+                "\uEFA0\uEFA1\uEFA2\uEFA3\uEFA4\uEFA5\uEFA6\uEFA7" +
+                "\uEFA8\uEFA9\uEFAA\uEFAB\uEFAC\uEFAD\uEFAE\uEFAF" +
+                "\uEFB0\uEFB1\uEFB2\uEFB3\uEFB4\uEFB5\uEFB6\uEFB7" +
+                "\uEFB8\uEFB9\uEFBA\uEFBB\uEFBC\uEFBD\uEFBE\uEFBF" +
+                "\uEFC0\uEFC1\uEFC2\uEFC3\uEFC4\uEFC5\uEFC6\uEFC7" +
+                "\uEFC8\uEFC9\uEFCA\uEFCB\uEFCC\uEFCD\uEFCE\uEFCF" +
+                "\uEFD0\uEFD1\uEFD2\uEFD3\uEFD4\uEFD5\uEFD6\uEFD7" +
+                "\uEFD8\uEFD9\uEFDA\uEFDB\uEFDC\uEFDD\uEFDE\uEFDF" +
+                "\uEFE0\uEFE1\uEFE2\uEFE3\uEFE4\uEFE5\uEFE6\uEFE7" +
+                "\uEFE8\uEFE9\uEFEA\uEFEB\uEFEC\uEFED\uEFEE\uEFEF" +
+                "\uEFF0\uEFF1\uEFF2\uEFF3\uEFF4\uEFF5\uEFF6\uEFF7" +
+                "\uEFF8\uEFF9\uEFFA\uEFFB\uEFFC\uEFFD\uEFFE\uEFFF" +
+                "\uF000\uF001\uF002\uF003\uF004\uF005\uF006\uF007" +
+                "\uF008\uF009\uF00A\uF00B\uF00C\uF00D\uF00E\uF00F" +
+                "\uF010\uF011\uF012\uF013\uF014\uF015\uF016\uF017" +
+                "\uF018\uF019\uF01A\uF01B\uF01C\uF01D\uF01E\uF01F" +
+                "\uF020\uF021\uF022\uF023\uF024\uF025\uF026\uF027" +
+                "\uF028\uF029\uF02A\uF02B\uF02C\uF02D\uF02E\uF02F" +
+                "\uF030\uF031\uF032\uF033\uF034\uF035\uF036\uF037" +
+                "\uF038\uF039\uF03A\uF03B\uF03C\uF03D\uF03E\uF03F" +
+                "\uF040\uF041\uF042\uF043\uF044\uF045\uF046\uF047" +
+                "\uF048\uF049\uF04A\uF04B\uF04C\uF04D\uF04E\uF04F" +
+                "\uF050\uF051\uF052\uF053\uF054\uF055\uF056\uF057" +
+                "\uF058\uF059\uF05A\uF05B\uF05C\uF05D\uF05E\uF05F" +
+                "\uF060\uF061\uF062\uF063\uF064\uF065\uF066\uF067" +
+                "\uF068\uF069\uF06A\uF06B\uF06C\uF06D\uF06E\uF06F" +
+                "\uF070\uF071\uF072\uF073\uF074\uF075\uF076\uF077" +
+                "\uF078\uF079\uF07A\uF07B\uF07C\uF07D\uF07E\uF07F" +
+                "\uF080\uF081\uF082\uF083\uF084\uF085\uF086\uF087" +
+                "\uF088\uF089\uF08A\uF08B\uF08C\uF08D\uF08E\uF08F" +
+                "\uF090\uF091\uF092\uF093\uF094\uF095\uF096\uF097" +
+                "\uF098\uF099\uF09A\uF09B\uF09C\uF09D\uF09E\uF09F" +
+                "\uF0A0\uF0A1\uF0A2\uF0A3\uF0A4\uF0A5\uF0A6\uF0A7" +
+                "\uF0A8\uF0A9\uF0AA\uF0AB\uF0AC\uF0AD\uF0AE\uF0AF" +
+                "\uF0B0\uF0B1\uF0B2\uF0B3\uF0B4\uF0B5\uF0B6\uF0B7" +
+                "\uF0B8\uF0B9\uF0BA\uF0BB\uF0BC\uF0BD\uF0BE\uF0BF" +
+                "\uF0C0\uF0C1\uF0C2\uF0C3\uF0C4\uF0C5\uF0C6\uF0C7" +
+                "\uF0C8\uF0C9\uF0CA\uF0CB\uF0CC\uF0CD\uF0CE\uF0CF" +
+                "\uF0D0\uF0D1\uF0D2\uF0D3\uF0D4\uF0D5\uF0D6\uF0D7" +
+                "\uF0D8\uF0D9\uF0DA\uF0DB\uF0DC\uF0DD\uF0DE\uF0DF" +
+                "\uF0E0\uF0E1\uF0E2\uF0E3\uF0E4\uF0E5\uF0E6\uF0E7" +
+                "\uF0E8\uF0E9\uF0EA\uF0EB\uF0EC\uF0ED\uF0EE\uF0EF" +
+                "\uF0F0\uF0F1\uF0F2\uF0F3\uF0F4\uF0F5\uF0F6\uF0F7" +
+                "\uF0F8\uF0F9\uF0FA\uF0FB\uF0FC\uF0FD\uF0FE\uF0FF" +
+                "\uF100\uF101\uF102\uF103\uF104\uF105\uF106\uF107" +
+                "\uF108\uF109\uF10A\uF10B\uF10C\uF10D\uF10E\uF10F" +
+                "\uF110\uF111\uF112\uF113\uF114\uF115\uF116\uF117" +
+                "\uF118\uF119\uF11A\uF11B\uF11C\uF11D\uF11E\uF11F" +
+                "\uF120\uF121\uF122\uF123\uF124\uF125\uF126\uF127" +
+                "\uF128\uF129\uF12A\uF12B\uF12C\uF12D\uF12E\uF12F" +
+                "\uF130\uF131\uF132\uF133\uF134\uF135\uF136\uF137" +
+                "\uF138\uF139\uF13A\uF13B\uF13C\uF13D\uF13E\uF13F" +
+                "\uF140\uF141\uF142\uF143\uF144\uF145\uF146\uF147" +
+                "\uF148\uF149\uF14A\uF14B\uF14C\uF14D\uF14E\uF14F" +
+                "\uF150\uF151\uF152\uF153\uF154\uF155\uF156\uF157" +
+                "\uF158\uF159\uF15A\uF15B\uF15C\uF15D\uF15E\uF15F" +
+                "\uF160\uF161\uF162\uF163\uF164\uF165\uF166\uF167" +
+                "\uF168\uF169\uF16A\uF16B\uF16C\uF16D\uF16E\uF16F" +
+                "\uF170\uF171\uF172\uF173\uF174\uF175\uF176\uF177" +
+                "\uF178\uF179\uF17A\uF17B\uF17C\uF17D\uF17E\uF17F" +
+                "\uF180\uF181\uF182\uF183\uF184\uF185\uF186\uF187" +
+                "\uF188\uF189\uF18A\uF18B\uF18C\uF18D\uF18E\uF18F" +
+                "\uF190\uF191\uF192\uF193\uF194\uF195\uF196\uF197" +
+                "\uF198\uF199\uF19A\uF19B\uF19C\uF19D\uF19E\uF19F" +
+                "\uF1A0\uF1A1\uF1A2\uF1A3\uF1A4\uF1A5\uF1A6\uF1A7" +
+                "\uF1A8\uF1A9\uF1AA\uF1AB\uF1AC\uF1AD\uF1AE\uF1AF" +
+                "\uF1B0\uF1B1\uF1B2\uF1B3\uF1B4\uF1B5\uF1B6\uF1B7" +
+                "\uF1B8\uF1B9\uF1BA\uF1BB\uF1BC\uF1BD\uF1BE\uF1BF" +
+                "\uF1C0\uF1C1\uF1C2\uF1C3\uF1C4\uF1C5\uF1C6\uF1C7" +
+                "\uF1C8\uF1C9\uF1CA\uF1CB\uF1CC\uF1CD\uF1CE\uF1CF" +
+                "\uF1D0\uF1D1\uF1D2\uF1D3\uF1D4\uF1D5\uF1D6\uF1D7" +
+                "\uF1D8\uF1D9\uF1DA\uF1DB\uF1DC\uF1DD\uF1DE\uF1DF" +
+                "\uF1E0\uF1E1\uF1E2\uF1E3\uF1E4\uF1E5\uF1E6\uF1E7" +
+                "\uF1E8\uF1E9\uF1EA\uF1EB\uF1EC\uF1ED\uF1EE\uF1EF" +
+                "\uF1F0\uF1F1\uF1F2\uF1F3\uF1F4\uF1F5\uF1F6\uF1F7" +
+                "\uF1F8\uF1F9\uF1FA\uF1FB\uF1FC\uF1FD\uF1FE\uF1FF" +
+                "\uF200\uF201\uF202\uF203\uF204\uF205\uF206\uF207" +
+                "\uF208\uF209\uF20A\uF20B\uF20C\uF20D\uF20E\uF20F" +
+                "\uF210\uF211\uF212\uF213\uF214\uF215\uF216\uF217" +
+                "\uF218\uF219\uF21A\uF21B\uF21C\uF21D\uF21E\uF21F" +
+                "\uF220\uF221\uF222\uF223\uF224\uF225\uF226\uF227" +
+                "\uF228\uF229\uF22A\uF22B\uF22C\uF22D\uF22E\uF22F" +
+                "\uF230\uF231\uF232\uF233\uF234\uF235\uF236\uF237" +
+                "\uF238\uF239\uF23A\uF23B\uF23C\uF23D\uF23E\uF23F" +
+                "\uF240\uF241\uF242\uF243\uF244\uF245\uF246\uF247" +
+                "\uF248\uF249\uF24A\uF24B\uF24C\uF24D\uF24E\uF24F" +
+                "\uF250\uF251\uF252\uF253\uF254\uF255\uF256\uF257" +
+                "\uF258\uF259\uF25A\uF25B\uF25C\uF25D\uF25E\uF25F" +
+                "\uF260\uF261\uF262\uF263\uF264\uF265\uF266\uF267" +
+                "\uF268\uF269\uF26A\uF26B\uF26C\uF26D\uF26E\uF26F" +
+                "\uF270\uF271\uF272\uF273\uF274\uF275\uF276\uF277" +
+                "\uF278\uF279\uF27A\uF27B\uF27C\uF27D\uF27E\uF27F" +
+                "\uF280\uF281\uF282\uF283\uF284\uF285\uF286\uF287" +
+                "\uF288\uF289\uF28A\uF28B\uF28C\uF28D\uF28E\uF28F" +
+                "\uF290\uF291\uF292\uF293\uF294\uF295\uF296\uF297" +
+                "\uF298\uF299\uF29A\uF29B\uF29C\uF29D\uF29E\uF29F" +
+                "\uF2A0\uF2A1\uF2A2\uF2A3\uF2A4\uF2A5\uF2A6\uF2A7" +
+                "\uF2A8\uF2A9\uF2AA\uF2AB\uF2AC\uF2AD\uF2AE\uF2AF" +
+                "\uF2B0\uF2B1\uF2B2\uF2B3\uF2B4\uF2B5\uF2B6\uF2B7" +
+                "\uF2B8\uF2B9\uF2BA\uF2BB\uF2BC\uF2BD\uF2BE\uF2BF" +
+                "\uF2C0\uF2C1\uF2C2\uF2C3\uF2C4\uF2C5\uF2C6\uF2C7" +
+                "\uF2C8\uF2C9\uF2CA\uF2CB\uF2CC\uF2CD\uF2CE\uF2CF" +
+                "\uF2D0\uF2D1\uF2D2\uF2D3\uF2D4\uF2D5\uF2D6\uF2D7" +
+                "\uF2D8\uF2D9\uF2DA\uF2DB\uF2DC\uF2DD\uF2DE\uF2DF" +
+                "\uF2E0\uF2E1\uF2E2\uF2E3\uF2E4\uF2E5\uF2E6\uF2E7" +
+                "\uF2E8\uF2E9\uF2EA\uF2EB\uF2EC\uF2ED\uF2EE\uF2EF" +
+                "\uF2F0\uF2F1\uF2F2\uF2F3\uF2F4\uF2F5\uF2F6\uF2F7" +
+                "\uF2F8\uF2F9\uF2FA\uF2FB\uF2FC\uF2FD\uF2FE\uF2FF" +
+                "\uF300\uF301\uF302\uF303\uF304\uF305\uF306\uF307" +
+                "\uF308\uF309\uF30A\uF30B\uF30C\uF30D\uF30E\uF30F" +
+                "\uF310\uF311\uF312\uF313\uF314\uF315\uF316\uF317" +
+                "\uF318\uF319\uF31A\uF31B\uF31C\uF31D\uF31E\uF31F" +
+                "\uF320\uF321\uF322\uF323\uF324\uF325\uF326\uF327" +
+                "\uF328\uF329\uF32A\uF32B\uF32C\uF32D\uF32E\uF32F" +
+                "\uF330\uF331\uF332\uF333\uF334\uF335\uF336\uF337" +
+                "\uF338\uF339\uF33A\uF33B\uF33C\uF33D\uF33E\uF33F" +
+                "\uF340\uF341\uF342\uF343\uF344\uF345\uF346\uF347" +
+                "\uF348\uF349\uF34A\uF34B\uF34C\uF34D\uF34E\uF34F" +
+                "\uF350\uF351\uF352\uF353\uF354\uF355\uF356\uF357" +
+                "\uF358\uF359\uF35A\uF35B\uF35C\uF35D\uF35E\uF35F" +
+                "\uF360\uF361\uF362\uF363\uF364\uF365\uF366\uF367" +
+                "\uF368\uF369\uF36A\uF36B\uF36C\uF36D\uF36E\uF36F" +
+                "\uF370\uF371\uF372\uF373\uF374\uF375\uF376\uF377" +
+                "\uF378\uF379\uF37A\uF37B\uF37C\uF37D\uF37E\uF37F" +
+                "\uF380\uF381\uF382\uF383\uF384\uF385\uF386\uF387" +
+                "\uF388\uF389\uF38A\uF38B\uF38C\uF38D\uF38E\uF38F" +
+                "\uF390\uF391\uF392\uF393\uF394\uF395\uF396\uF397" +
+                "\uF398\uF399\uF39A\uF39B\uF39C\uF39D\uF39E\uF39F" +
+                "\uF3A0\uF3A1\uF3A2\uF3A3\uF3A4\uF3A5\uF3A6\uF3A7" +
+                "\uF3A8\uF3A9\uF3AA\uF3AB\uF3AC\uF3AD\uF3AE\uF3AF" +
+                "\uF3B0\uF3B1\uF3B2\uF3B3\uF3B4\uF3B5\uF3B6\uF3B7" +
+                "\uF3B8\uF3B9\uF3BA\uF3BB\uF3BC\uF3BD\uF3BE\uF3BF" +
+                "\uF3C0\uF3C1\uF3C2\uF3C3\uF3C4\uF3C5\uF3C6\uF3C7" +
+                "\uF3C8\uF3C9\uF3CA\uF3CB\uF3CC\uF3CD\uF3CE\uF3CF" +
+                "\uF3D0\uF3D1\uF3D2\uF3D3\uF3D4\uF3D5\uF3D6\uF3D7" +
+                "\uF3D8\uF3D9\uF3DA\uF3DB\uF3DC\uF3DD\uF3DE\uF3DF" +
+                "\uF3E0\uF3E1\uF3E2\uF3E3\uF3E4\uF3E5\uF3E6\uF3E7" +
+                "\uF3E8\uF3E9\uF3EA\uF3EB\uF3EC\uF3ED\uF3EE\uF3EF" +
+                "\uF3F0\uF3F1\uF3F2\uF3F3\uF3F4\uF3F5\uF3F6\uF3F7" +
+                "\uF3F8\uF3F9\uF3FA\uF3FB\uF3FC\uF3FD\uF3FE\uF3FF" +
+                "\uF400\uF401\uF402\uF403\uF404\uF405\uF406\uF407" +
+                "\uF408\uF409\uF40A\uF40B\uF40C\uF40D\uF40E\uF40F" +
+                "\uF410\uF411\uF412\uF413\uF414\uF415\uF416\uF417" +
+                "\uF418\uF419\uF41A\uF41B\uF41C\uF41D\uF41E\uF41F" +
+                "\uF420\uF421\uF422\uF423\uF424\uF425\uF426\uF427" +
+                "\uF428\uF429\uF42A\uF42B\uF42C\uF42D\uF42E\uF42F" +
+                "\uF430\uF431\uF432\uF433\uF434\uF435\uF436\uF437" +
+                "\uF438\uF439\uF43A\uF43B\uF43C\uF43D\uF43E\uF43F" +
+                "\uF440\uF441\uF442\uF443\uF444\uF445\uF446\uF447" +
+                "\uF448\uF449\uF44A\uF44B\uF44C\uF44D\uF44E\uF44F" +
+                "\uF450\uF451\uF452\uF453\uF454\uF455\uF456\uF457" +
+                "\uF458\uF459\uF45A\uF45B\uF45C\uF45D\uF45E\uF45F" +
+                "\uF460\uF461\uF462\uF463\uF464\uF465\uF466\uF467" +
+                "\uF468\uF469\uF46A\uF46B\uF46C\uF46D\uF46E\uF46F" +
+                "\uF470\uF471\uF472\uF473\uF474\uF475\uF476\uF477" +
+                "\uF478\uF479\uF47A\uF47B\uF47C\uF47D\uF47E\uF47F" +
+                "\uF480\uF481\uF482\uF483\uF484\uF485\uF486\uF487" +
+                "\uF488\uF489\uF48A\uF48B\uF48C\uF48D\uF48E\uF48F" +
+                "\uF490\uF491\uF492\uF493\uF494\uF495\uF496\uF497" +
+                "\uF498\uF499\uF49A\uF49B\uF49C\uF49D\uF49E\uF49F" +
+                "\uF4A0\uF4A1\uF4A2\uF4A3\uF4A4\uF4A5\uF4A6\uF4A7" +
+                "\uF4A8\uF4A9\uF4AA\uF4AB\uF4AC\uF4AD\uF4AE\uF4AF" +
+                "\uF4B0\uF4B1\uF4B2\uF4B3\uF4B4\uF4B5\uF4B6\uF4B7" +
+                "\uF4B8\uF4B9\uF4BA\uF4BB\uF4BC\uF4BD\uF4BE\uF4BF" +
+                "\uF4C0\uF4C1\uF4C2\uF4C3\uF4C4\uF4C5\uF4C6\uF4C7" +
+                "\uF4C8\uF4C9\uF4CA\uF4CB\uF4CC\uF4CD\uF4CE\uF4CF" +
+                "\uF4D0\uF4D1\uF4D2\uF4D3\uF4D4\uF4D5\uF4D6\uF4D7" +
+                "\uF4D8\uF4D9\uF4DA\uF4DB\uF4DC\uF4DD\uF4DE\uF4DF" +
+                "\uF4E0\uF4E1\uF4E2\uF4E3\uF4E4\uF4E5\uF4E6\uF4E7" +
+                "\uF4E8\uF4E9\uF4EA\uF4EB\uF4EC\uF4ED\uF4EE\uF4EF" +
+                "\uF4F0\uF4F1\uF4F2\uF4F3\uF4F4\uF4F5\uF4F6\uF4F7" +
+                "\uF4F8\uF4F9\uF4FA\uF4FB\uF4FC\uF4FD\uF4FE\uF4FF" +
+                "\uF500\uF501\uF502\uF503\uF504\uF505\uF506\uF507" +
+                "\uF508\uF509\uF50A\uF50B\uF50C\uF50D\uF50E\uF50F" +
+                "\uF510\uF511\uF512\uF513\uF514\uF515\uF516\uF517" +
+                "\uF518\uF519\uF51A\uF51B\uF51C\uF51D\uF51E\uF51F" +
+                "\uF520\uF521\uF522\uF523\uF524\uF525\uF526\uF527" +
+                "\uF528\uF529\uF52A\uF52B\uF52C\uF52D\uF52E\uF52F" +
+                "\uF530\uF531\uF532\uF533\uF534\uF535\uF536\uF537" +
+                "\uF538\uF539\uF53A\uF53B\uF53C\uF53D\uF53E\uF53F" +
+                "\uF540\uF541\uF542\uF543\uF544\uF545\uF546\uF547" +
+                "\uF548\uF549\uF54A\uF54B\uF54C\uF54D\uF54E\uF54F" +
+                "\uF550\uF551\uF552\uF553\uF554\uF555\uF556\uF557" +
+                "\uF558\uF559\uF55A\uF55B\uF55C\uF55D\uF55E\uF55F" +
+                "\uF560\uF561\uF562\uF563\uF564\uF565\uF566\uF567" +
+                "\uF568\uF569\uF56A\uF56B\uF56C\uF56D\uF56E\uF56F" +
+                "\uF570\uF571\uF572\uF573\uF574\uF575\uF576\uF577" +
+                "\uF578\uF579\uF57A\uF57B\uF57C\uF57D\uF57E\uF57F" +
+                "\uF580\uF581\uF582\uF583\uF584\uF585\uF586\uF587" +
+                "\uF588\uF589\uF58A\uF58B\uF58C\uF58D\uF58E\uF58F" +
+                "\uF590\uF591\uF592\uF593\uF594\uF595\uF596\uF597" +
+                "\uF598\uF599\uF59A\uF59B\uF59C\uF59D\uF59E\uF59F" +
+                "\uF5A0\uF5A1\uF5A2\uF5A3\uF5A4\uF5A5\uF5A6\uF5A7" +
+                "\uF5A8\uF5A9\uF5AA\uF5AB\uF5AC\uF5AD\uF5AE\uF5AF" +
+                "\uF5B0\uF5B1\uF5B2\uF5B3\uF5B4\uF5B5\uF5B6\uF5B7" +
+                "\uF5B8\uF5B9\uF5BA\uF5BB\uF5BC\uF5BD\uF5BE\uF5BF" +
+                "\uF5C0\uF5C1\uF5C2\uF5C3\uF5C4\uF5C5\uF5C6\uF5C7" +
+                "\uF5C8\uF5C9\uF5CA\uF5CB\uF5CC\uF5CD\uF5CE\uF5CF" +
+                "\uF5D0\uF5D1\uF5D2\uF5D3\uF5D4\uF5D5\uF5D6\uF5D7" +
+                "\uF5D8\uF5D9\uF5DA\uF5DB\uF5DC\uF5DD\uF5DE\uF5DF" +
+                "\uF5E0\uF5E1\uF5E2\uF5E3\uF5E4\uF5E5\uF5E6\uF5E7" +
+                "\uF5E8\uF5E9\uF5EA\uF5EB\uF5EC\uF5ED\uF5EE\uF5EF" +
+                "\uF5F0\uF5F1\uF5F2\uF5F3\uF5F4\uF5F5\uF5F6\uF5F7" +
+                "\uF5F8\uF5F9\uF5FA\uF5FB\uF5FC\uF5FD\uF5FE\uF5FF" +
+                "\uF600\uF601\uF602\uF603\uF604\uF605\uF606\uF607" +
+                "\uF608\uF609\uF60A\uF60B\uF60C\uF60D\uF60E\uF60F" +
+                "\uF610\uF611\uF612\uF613\uF614\uF615\uF616\uF617" +
+                "\uF618\uF619\uF61A\uF61B\uF61C\uF61D\uF61E\uF61F" +
+                "\uF620\uF621\uF622\uF623\uF624\uF625\uF626\uF627" +
+                "\uF628\uF629\uF62A\uF62B\uF62C\uF62D\uF62E\uF62F" +
+                "\uF630\uF631\uF632\uF633\uF634\uF635\uF636\uF637" +
+                "\uF638\uF639\uF63A\uF63B\uF63C\uF63D\uF63E\uF63F" +
+                "\uF640\uF641\uF642\uF643\uF644\uF645\uF646\uF647" +
+                "\uF648\uF649\uF64A\uF64B\uF64C\uF64D\uF64E\uF64F" +
+                "\uF650\uF651\uF652\uF653\uF654\uF655\uF656\uF657" +
+                "\uF658\uF659\uF65A\uF65B\uF65C\uF65D\uF65E\uF65F" +
+                "\uF660\uF661\uF662\uF663\uF664\uF665\uF666\uF667" +
+                "\uF668\uF669\uF66A\uF66B\uF66C\uF66D\uF66E\uF66F" +
+                "\uF670\uF671\uF672\uF673\uF674\uF675\uF676\uF677" +
+                "\uF678\uF679\uF67A\uF67B\uF67C\uF67D\uF67E\uF67F" +
+                "\uF680\uF681\uF682\uF683\uF684\uF685\uF686\uF687" +
+                "\uF688\uF689\uF68A\uF68B\uF68C\uF68D\uF68E\uF68F" +
+                "\uF690\uF691\uF692\uF693\uF694\uF695\uF696\uF697" +
+                "\uF698\uF699\uF69A\uF69B\uF69C\uF69D\uF69E\uF69F" +
+                "\uF6A0\uF6A1\uF6A2\uF6A3\uF6A4\uF6A5\uF6A6\uF6A7" +
+                "\uF6A8\uF6A9\uF6AA\uF6AB\uF6AC\uF6AD\uF6AE\uF6AF" +
+                "\uF6B0\uF6B1\uF6B2\uF6B3\uF6B4\uF6B5\uF6B6\uF6B7" +
+                "\uF6B8\uF6B9\uF6BA\uF6BB\uF6BC\uF6BD\uF6BE\uF6BF" +
+                "\uF6C0\uF6C1\uF6C2\uF6C3\uF6C4\uF6C5\uF6C6\uF6C7" +
+                "\uF6C8\uF6C9\uF6CA\uF6CB\uF6CC\uF6CD\uF6CE\uF6CF" +
+                "\uF6D0\uF6D1\uF6D2\uF6D3\uF6D4\uF6D5\uF6D6\uF6D7" +
+                "\uF6D8\uF6D9\uF6DA\uF6DB\uF6DC\uF6DD\uF6DE\uF6DF" +
+                "\uF6E0\uF6E1\uF6E2\uF6E3\uF6E4\uF6E5\uF6E6\uF6E7" +
+                "\uF6E8\uF6E9\uF6EA\uF6EB\uF6EC\uF6ED\uF6EE\uF6EF" +
+                "\uF6F0\uF6F1\uF6F2\uF6F3\uF6F4\uF6F5\uF6F6\uF6F7" +
+                "\uF6F8\uF6F9\uF6FA\uF6FB\uF6FC\uF6FD\uF6FE\uF6FF" +
+                "\uF700\uF701\uF702\uF703\uF704\uF705\uF706\uF707" +
+                "\uF708\uF709\uF70A\uF70B\uF70C\uF70D\uF70E\uF70F" +
+                "\uF710\uF711\uF712\uF713\uF714\uF715\uF716\uF717" +
+                "\uF718\uF719\uF71A\uF71B\uF71C\uF71D\uF71E\uF71F" +
+                "\uF720\uF721\uF722\uF723\uF724\uF725\uF726\uF727" +
+                "\uF728\uF729\uF72A\uF72B\uF72C\uF72D\uF72E\uF72F" +
+                "\uF730\uF731\uF732\uF733\uF734\uF735\uF736\uF737" +
+                "\uF738\uF739\uF73A\uF73B\uF73C\uF73D\uF73E\uF73F" +
+                "\uF740\uF741\uF742\uF743\uF744\uF745\uF746\uF747" +
+                "\uF748\uF749\uF74A\uF74B\uF74C\uF74D\uF74E\uF74F" +
+                "\uF750\uF751\uF752\uF753\uF754\uF755\uF756\uF757" +
+                "\uF758\uF759\uF75A\uF75B\uF75C\uF75D\uF75E\uF75F" +
+                "\uF760\uF761\uF762\uF763\uF764\uF765\uF766\uF767" +
+                "\uF768\uF769\uF76A\uF76B\uF76C\uF76D\uF76E\uF76F" +
+                "\uF770\uF771\uF772\uF773\uF774\uF775\uF776\uF777" +
+                "\uF778\uF779\uF77A\uF77B\uF77C\uF77D\uF77E\uF77F" +
+                "\uF780\uF781\uF782\uF783\uF784\uF785\uF786\uF787" +
+                "\uF788\uF789\uF78A\uF78B\uF78C\uF78D\uF78E\uF78F" +
+                "\uF790\uF791\uF792\uF793\uF794\uF795\uF796\uF797" +
+                "\uF798\uF799\uF79A\uF79B\uF79C\uF79D\uF79E\uF79F" +
+                "\uF7A0\uF7A1\uF7A2\uF7A3\uF7A4\uF7A5\uF7A6\uF7A7" +
+                "\uF7A8\uF7A9\uF7AA\uF7AB\uF7AC\uF7AD\uF7AE\uF7AF" +
+                "\uF7B0\uF7B1\uF7B2\uF7B3\uF7B4\uF7B5\uF7B6\uF7B7" +
+                "\uF7B8\uF7B9\uF7BA\uF7BB\uF7BC\uF7BD\uF7BE\uF7BF" +
+                "\uF7C0\uF7C1\uF7C2\uF7C3\uF7C4\uF7C5\uF7C6\uF7C7" +
+                "\uF7C8\uF7C9\uF7CA\uF7CB\uF7CC\uF7CD\uF7CE\uF7CF" +
+                "\uF7D0\uF7D1\uF7D2\uF7D3\uF7D4\uF7D5\uF7D6\uF7D7" +
+                "\uF7D8\uF7D9\uF7DA\uF7DB\uF7DC\uF7DD\uF7DE\uF7DF" +
+                "\uF7E0\uF7E1\uF7E2\uF7E3\uF7E4\uF7E5\uF7E6\uF7E7" +
+                "\uF7E8\uF7E9\uF7EA\uF7EB\uF7EC\uF7ED\uF7EE\uF7EF" +
+                "\uF7F0\uF7F1\uF7F2\uF7F3\uF7F4\uF7F5\uF7F6\uF7F7" +
+                "\uF7F8\uF7F9\uF7FA\uF7FB\uF7FC\uF7FD\uF7FE\uF7FF" +
+                "\uF800\uF801\uF802\uF803\uF804\uF805\uF806\uF807" +
+                "\uF808\uF809\uF80A\uF80B\uF80C\uF80D\uF80E\uF80F" +
+                "\uF810\uF811\uF812\uF813\uF814\uF815\uF816\uF817" +
+                "\uF818\uF819\uF81A\uF81B\uF81C\uF81D\uF81E\uF81F" +
+                "\uF820\uF821\uF822\uF823\uF824\uF825\uF826\uF827" +
+                "\uF828\uF829\uF82A\uF82B\uF82C\uF82D\uF82E\uF82F" +
+                "\uF830\uF831\uF832\uF833\uF834\uF835\uF836\uF837" +
+                "\uF838\uF839\uF83A\uF83B\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD"
+                ;
+            mappingTableG2ad =
+                "\u309B\u309C\u00A8\uFF3E\u30FD\u30FE\u309D\u309E" +
+                "\u02BA\uF83E\u3005\u3006\u3007\u30FC\u2010\uFF3B" +
+                "\uFF3D\u00B4\u2033\u273D\u3013\u2208\u220B\u2286" +
+                "\u2287\u2282\u2283\u2227\u2228\u21D2\u21D4\u2200" +
+                "\u2203\u2312\u2202\u2207\u226A\u226B\u223D\u221D" +
+                "\u222C\u212B\u2030\u266F\u266D\u266A\u2020\u2021" +
+                "\u00B6\u25EF\u3041\u3042\u3043\u3044\u3045\u3046" +
+                "\u3047\u3048\u3049\u304A\u304B\u304C\u304D\u304E" +
+                "\u304F\u3050\u3051\u3052\u3053\u3054\u3055\u3056" +
+                "\u3057\u3058\u3059\u305A\u305B\u305C\u305D\u305E" +
+                "\u305F\u3060\u3061\u3062\u3063\u3064\u3065\u3066" +
+                "\u3067\u3068\u3069\u306A\u306B\u306C\u306D\u306E" +
+                "\u306F\u3070\u3071\u3072\u3073\u3074\u3075\u3076" +
+                "\u3077\u3078\u3079\u307A\u307B\u307C\u307D\u307E" +
+                "\u307F\u3080\u3081\u3082\u3083\u3084\u3085\u3086" +
+                "\u3087\u3088\u3089\u308A\u308B\u308C\u308D\u308E" +
+                "\u308F\u3090\u3091\u3092\u3093\u30A1\u30A2\u30A3" +
+                "\u30A4\u30A5\u30A6\u30A7\u30A8\u30A9\u30AA\u30AB" +
+                "\u30AC\u30AD\u30AE\u30AF\u30B0\u30B1\u30B2\u30B3" +
+                "\u30B4\u30B5\u30B6\u30B7\u30B8\u30B9\u30BA\u30BB" +
+                "\u30BC\u30BD\u30BE\u30BF\u30C0\u30C1\u30C2\u30C3" +
+                "\u30C4\u30C5\u30C6\u30C7\u30C8\u30C9\u30CA\u30CB" +
+                "\u30CC\u30CD\u30CE\u30CF\u30D0\u30D1\u30D2\u30D3" +
+                "\u30D4\u30D5\u30D6\u30D7\u30D8\u30D9\u30DA\u30DB" +
+                "\u30DC\u30DD\u30DE\u30DF\u30E0\u30E1\u30E2\u30E3" +
+                "\u30E4\u30E5\u30E6\u30E7\u30E8\u30E9\u30EA\u30EB" +
+                "\u30EC\u30ED\u30EE\u30EF\u30F0\u30F1\u30F2\u30F3" +
+                "\u30F4\u30F5\u30F6\u0410\u0411\u0412\u0413\u0414" +
+                "\u0415\u0401\u0416\u0417\u0418\u0419\u041A\u041B" +
+                "\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423" +
+                "\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B" +
+                "\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433" +
+                "\u0434\u0435\u0451\u0436\u0437\u0438\u0439\u043A" +
+                "\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442" +
+                "\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A" +
+                "\u044B\u044C\u044D\u044E\u044F\u2501\u2503\u250F" +
+                "\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B" +
+                "\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525" +
+                "\u2538\u2542\uF83F\uF840\uF841\uF842\u21E7\u21B8" +
+                "\u21B9\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121" +
+                "\u6491\uFA0C\u691E\uFA0D\u6EB8\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" +
+                "\uFFFD\uFFFD\uFFFD\uFFFD"
+                ;
+        }
+    }
+
+    protected static class Encoder extends SimpleEUCEncoder {
+
+        public Encoder(Charset cs) {
+            super(cs);
+            super.mask1 = 0xFFC0;
+            super.mask2 = 0x003F;
+            super.shift = 6;
+            super.index1 = index1;
+            super.index2 = index2;
+            super.index2a = index2a;
+            super.index2b = index2b;
+            super.index2c = index2c;
+        }
+
+        private static final short index1[] =
+        {
+                19535, 13095, 12408, 11748,   223,   223,   223,   223, // 0000 - 01FF
+                  223,   223,  9457, 14043,   223,   223, 10349, 11067, // 0200 - 03FF
+                24969, 10729,   223,   223,   223,   223,   223,   223, // 0400 - 05FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 0600 - 07FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 0800 - 09FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 0A00 - 0BFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 0C00 - 0DFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 0E00 - 0FFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 1000 - 11FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 1200 - 13FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 1400 - 15FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 1600 - 17FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 1800 - 19FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 1A00 - 1BFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 1C00 - 1DFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 1E00 - 1FFF
+                24401,   223,   223,   223, 24353, 12626,  9241,  8204, // 2000 - 21FF
+                10119,  9193, 16486,   223,  8250,   223,   223,   223, // 2200 - 23FF
+                 9582,  9616,   223,   223,  9083, 13986, 24230, 15436, // 2400 - 25FF
+                21619,  8517,   223,   223,   226,   223,   223,   223, // 2600 - 27FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 2800 - 29FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 2A00 - 2BFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 2C00 - 2DFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 2E00 - 2FFF
+                 7839, 22767,  7071,  6753, 10302,   223,   223,   223, // 3000 - 31FF
+                 8269,   223,  7166,   223,   223,   223,  8124,  9301, // 3200 - 33FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 3400 - 35FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 3600 - 37FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 3800 - 39FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 3A00 - 3BFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 3C00 - 3DFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 3E00 - 3FFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 4000 - 41FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 4200 - 43FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 4400 - 45FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 4600 - 47FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 4800 - 49FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 4A00 - 4BFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // 4C00 - 4DFF
+                 6625,  8699, 27828, 28393, 28329,  6879, 28265, 28014, // 4E00 - 4FFF
+                27766, 27640, 27576, 21185, 27512, 27325, 27198, 27888, // 5000 - 51FF
+                27073, 20233, 26946, 26882, 17057, 26818, 27387, 11327, // 5200 - 53FF
+                19346, 26754, 26690, 26626, 26179, 26562, 26498, 26434, // 5400 - 55FF
+                26370, 26306, 26053, 25989, 18008, 25863, 25799, 19472, // 5600 - 57FF
+                25735,  8573, 25671, 17817,  9518, 25607, 25480, 25416, // 5800 - 59FF
+                25289, 25225,  7520, 25161,  7647, 25097, 25033, 24846, // 5A00 - 5BFF
+                  289, 24656, 21560, 12466, 24592, 24528, 24167, 24103, // 5C00 - 5DFF
+                13031, 24039, 23912,   156, 12969, 23848, 23784, 23720, // 5E00 - 5FFF
+                23597, 23533, 23469, 23405, 23341, 23214, 23150, 11202, // 6000 - 61FF
+                23086, 23022, 22958, 11451, 22831, 22704, 22577, 22454, // 6200 - 63FF
+                11806, 22390, 14386,  9741, 22326,  8010, 22262,  6816, // 6400 - 65FF
+                22138, 28077, 21948, 21884, 21820, 23656, 28140, 21756, // 6600 - 67FF
+                 7885, 21692, 21502, 24906, 22198, 21377, 12060, 27261, // 6800 - 69FF
+                21313, 21249, 21122, 11389, 21058, 27009, 20994, 20930, // 6A00 - 6BFF
+                20866, 20739, 20675, 20489, 20425, 20361, 20297, 20170, // 6C00 - 6DFF
+                20106, 19983,  8325, 19919, 19855, 19791, 19727, 19663, // 6E00 - 6FFF
+                19599, 19283, 10665, 22513, 19159, 26116, 19095, 19031, // 7000 - 71FF
+                26242, 25543, 18967, 18903, 18839, 18775, 18711, 18647, // 7200 - 73FF
+                18583, 18519, 18455, 18391, 18327, 18263, 18199, 18135, // 7400 - 75FF
+                17945, 10475, 25352, 11139, 24719, 19219, 17881, 10181, // 7600 - 77FF
+                10243, 27134, 17691, 24782, 24464, 17627, 23975, 17502, // 7800 - 79FF
+                17438, 17374, 17310, 17246, 17121, 16998,  9678, 16934, // 7A00 - 7BFF
+                16870, 16806, 16742, 20548, 16678, 16614, 16550, 16424, // 7C00 - 7DFF
+                27448, 16297, 16204,   223, 15502, 28201, 21438, 16140, // 7E00 - 7FFF
+                16076, 17563, 24292,  7947, 15949, 17182, 15885, 15821, // 8000 - 81FF
+                15757, 15693, 15566, 15315, 15251, 15187, 23277, 15123, // 8200 - 83FF
+                22894, 14960, 27950, 14896, 14769, 14642, 14578, 14514, // 8400 - 85FF
+                14450, 14324, 20042, 14197, 14133, 13924, 22640, 13860, // 8600 - 87FF
+                13796, 13732, 13542, 13415, 22011, 22074, 20802, 13351, // 8800 - 89FF
+                13287, 13223, 20611, 13159, 12813, 12749, 12594,   223, // 8A00 - 8BFF
+                21628, 19409, 12530, 12344, 12252, 12906, 12188, 18071, // 8C00 - 8DFF
+                12124, 11998, 17754, 11934, 11870, 11707,  7203, 27702, // 8E00 - 8FFF
+                11643, 16360, 11579, 16012, 11515, 11266, 11003, 10939, // 9000 - 91FF
+                10875, 10811, 10603, 10539, 10413, 10055,  9997,  9933, // 9200 - 93FF
+                 9869,  9805,  9451,   223,   223, 11077,  9387,  9147, // 9400 - 95FF
+                15059,  9019,  8955,  8891,  8827, 25925,  8763, 15629, // 9600 - 97FF
+                 8637, 15378, 14069,  8453,  8389, 15023,    93, 14832, // 9800 - 99FF
+                14705,  8074, 12280,  7775, 14260, 13605,  7711,  7584, // 9A00 - 9BFF
+                12685,  7459,   223, 16233,  7395,  7331,  7267, 13668, // 9C00 - 9DFF
+                 7135, 10747,  7007,  6943,  6689,  6561,    51,   223, // 9E00 - 9FFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // A000 - A1FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // A200 - A3FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // A400 - A5FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // A600 - A7FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // A800 - A9FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // AA00 - ABFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // AC00 - ADFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // AE00 - AFFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // B000 - B1FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // B200 - B3FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // B400 - B5FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // B600 - B7FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // B800 - B9FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // BA00 - BBFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // BC00 - BDFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // BE00 - BFFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // C000 - C1FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // C200 - C3FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // C400 - C5FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // C600 - C7FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // C800 - C9FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // CA00 - CBFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // CC00 - CDFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // CE00 - CFFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // D000 - D1FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // D200 - D3FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // D400 - D5FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // D600 - D7FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // D800 - D9FF
+                  223,   223,   223,   223,   223,   223,   223,   223, // DA00 - DBFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // DC00 - DDFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // DE00 - DFFF
+                 6497,  6433,  6369,  6305,  6241,  6177,  6113,  6049, // E000 - E1FF
+                 5985,  5921,  5857,  5793,  5729,  5665,  5601,  5537, // E200 - E3FF
+                 5473,  5409,  5345,  5281,  5217,  5153,  5089,  5025, // E400 - E5FF
+                 4961,  4897,  4833,  4769,  4705,  4641,  4577,  4513, // E600 - E7FF
+                 4449,  4385,  4321,  4257,  4193,  4129,  4065,  4001, // E800 - E9FF
+                 3937,  3873,  3809,  3745,  3681,  3617,  3553,  3489, // EA00 - EBFF
+                 3425,  3361,  3297,  3233,  3169,  3105,  3041,  2977, // EC00 - EDFF
+                 2913,  2849,  2785,  2721,  2657,  2593,  2529,  2465, // EE00 - EFFF
+                 2401,  2337,  2273,  2209,  2145,  2081,  2017,  1953, // F000 - F1FF
+                 1889,  1825,  1761,  1697,  1633,  1569,  1505,  1441, // F200 - F3FF
+                 1377,  1313,  1249,  1185,  1121,  1057,   993,   929, // F400 - F5FF
+                  865,   801,   737,   673,   609,   545,   481,   417, // F600 - F7FF
+                  353,   220,   223,   223,   223,   223,   223,   223, // F800 - F9FF
+                15488,   223,   223,   223,   223,   223,   223,   223, // FA00 - FBFF
+                  223,   223,   223,   223,   223,   223,   223,   223, // FC00 - FDFF
+                 9323,     0,   223,   223, 13478, 12876,   223,  8158,
+        };
+
+        private final static String index2;
+        private final static String index2a;
+        private final static String index2b;
+        private final static String index2c;
+        static {
+            index2 =
+                "\u0000\uA1D5\u0000\uA1D8\u0000\uA1D9\u0000\uA1DC\u0000\uA1DD" + //     0 -     4
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2A7" + //     5 -     9
+                "\u0000\uA2A8\u0000\uA2AB\u0000\uA2AC\u0000\uA2A9\u0000\uA2AA" + //    10 -    14
+                "\u0000\uA1BD\u0000\uA1AE\u0000\uA1AF\u0000\uA1B0\u0000\u0000" + //    15 -    19
+                "\u0000\uA1B2\u0000\uA1B3\u0000\uA1B4\u0000\uA1B5\u0000\uA1B9" + //    20 -    24
+                "\u0000\uA1DE\u0000\uA1DF\u0000\uA1E0\u0000\uA1E1\u0000\uA1E2" + //    25 -    29
+                "\u0000\uA1E3\u0000\uA2AD\u0000\uA2AE\u0000\uA2AF\u0000\uA2BF" + //    30 -    34
+                "\u0000\uA2C0\u0000\uA2C1\u0000\uA2C2\u0000\uA2C3\u0000\u0000" + //    35 -    39
+                "\u0000\uA2E2\u0000\uA2EC\u0000\uA2ED\u0000\uA2EE\u0000\u0000" + //    40 -    44
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //    45 -    49
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //    50 -    54
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //    55 -    59
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF3BE" + //    60 -    64
+                "\u0000\u0000\u0000\u0000\u0000\uF8B2\u8EA2\uEBCD\u8EA2\uEDC3" + //    65 -    69
+                "\u0000\u0000\u0000\uFCB3\u8EA2\uEEFB\u0000\u0000\u0000\u0000" + //    70 -    74
+                "\u8EA2\uF2C4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF3BF" + //    75 -    79
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE1C2\u0000\u0000" + //    80 -    84
+                "\u8EA2\uEEFC\u0000\u0000\u8EA2\uF1EF\u0000\u0000\u0000\u0000" + //    85 -    89
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //    90 -    94
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //    95 -    99
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   100 -   104
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   105 -   109
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   110 -   114
+                "\u0000\uD3FB\u8EA2\uBAB4\u8EA2\uE0E1\u0000\uD3FC\u0000\u0000" + //   115 -   119
+                "\u0000\u0000\u8EA2\uCFBA\u8EA2\uCFB9\u8EA2\uDBEC\u0000\u0000" + //   120 -   124
+                "\u0000\u0000\u8EA2\uE0E3\u0000\u0000\u8EA2\uE0E2\u0000\u0000" + //   125 -   129
+                "\u0000\uF7F6\u8EA2\uE7FD\u8EA2\uE7FE\u0000\uFAD4\u0000\u0000" + //   130 -   134
+                "\u0000\u0000\u8EA2\uF2A2\u0000\uD8EB\u0000\uE3A6\u0000\uE3A5" + //   135 -   139
+                "\u8EA2\uC8EA\u8EA2\uC8EC\u0000\uE7EA\u8EA2\uC8EB\u0000\uE7E9" + //   140 -   144
+                "\u0000\uE7EB\u8EA2\uC8ED\u0000\u0000\u0000\u0000\u0000\u0000" + //   145 -   149
+                "\u8EA2\uCFBC\u8EA2\uCFBE\u8EA2\uCFBD\u0000\u0000\u8EA2\uCFC0" + //   150 -   154
+                "\u0000\u0000\u0000\u0000\u0000\uDFA1\u0000\uDFA2\u0000\u0000" + //   155 -   159
+                "\u0000\uDFA3\u8EA2\uC2E3\u8EA2\uC2E5\u8EA2\uC2E7\u0000\uE3EE" + //   160 -   164
+                "\u0000\uE3ED\u0000\uDEFE\u8EA2\uC2E6\u8EA2\uC2E4\u0000\u0000" + //   165 -   169
+                "\u8EA2\uC9FD\u0000\u0000\u0000\u0000\u8EA2\uC9FB\u8EA2\uCAA3" + //   170 -   174
+                "\u0000\uE8E0\u8EA2\uCAA4\u8EA2\uCAA1\u0000\uE8E1\u8EA2\uC9FC" + //   175 -   179
+                "\u8EA2\uC9FA\u8EA2\uCAA2\u0000\uECDA\u8EA2\uD0BC\u8EA2\uC9FE" + //   180 -   184
+                "\u0000\uECDC\u8EA2\uD0BD\u0000\uECDB\u0000\uECDE\u8EA2\uD0BE" + //   185 -   189
+                "\u0000\uECD9\u0000\uECDD\u0000\u0000\u8EA2\uD6FD\u8EA2\uD6FB" + //   190 -   194
+                "\u8EA2\uD6FA\u8EA2\uD6FC\u8EA2\uD6F9\u0000\u0000\u0000\u0000" + //   195 -   199
+                "\u0000\uF8B3\u0000\u0000\u8EA2\uE8F2\u8EA2\uE8F3\u0000\u0000" + //   200 -   204
+                "\u8EA2\uEBD9\u8EA2\uEDCD\u0000\uFDA2\u0000\uA7D5\u0000\u0000" + //   205 -   209
+                "\u0000\uCDB7\u0000\uCAAC\u0000\u0000\u0000\u0000\u0000\uD0FA" + //   210 -   214
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC4DC\u0000\uC5BD" + //   215 -   219
+                "\u8EAD\uA4BA\u8EAD\uA4BB\u8EAD\uA4BC\u0000\u0000\u0000\u0000" + //   220 -   224
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   225 -   229
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   230 -   234
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   235 -   239
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   240 -   244
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   245 -   249
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   250 -   254
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   255 -   259
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   260 -   264
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   265 -   269
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   270 -   274
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   275 -   279
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   280 -   284
+                "\u0000\u0000\u0000\u0000\u8EAD\uA1B4\u0000\u0000\u0000\u0000" + //   285 -   289
+                "\u0000\uD0EC\u0000\u0000\u8EA2\uAEEB\u0000\uD5AB\u0000\u0000" + //   290 -   294
+                "\u0000\u0000\u0000\uD9F2\u0000\uD9F1\u0000\uD9F0\u0000\uDEF1" + //   295 -   299
+                "\u0000\uDEF2\u8EA2\uBBBB\u0000\uE8D7\u0000\uF0D2\u0000\uC4D1" + //   300 -   304
+                "\u8EA2\uA1BC\u0000\uC5B7\u8EA2\uA1D5\u0000\u0000\u0000\u0000" + //   305 -   309
+                "\u8EA2\uA2B4\u0000\uC7FA\u0000\u0000\u0000\u0000\u0000\u0000" + //   310 -   314
+                "\u0000\uCCFE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //   315 -   319
+                "\u8EA2\uC2D1\u0000\u0000\u0000\u0000\u0000\uC4D2\u0000\u0000" + //   320 -   324
+                "\u0000\uC5B8\u8EA2\uA2B5\u0000\u0000\u0000\u0000\u8EA2\uA3DE" + //   325 -   329
+                "\u0000\u0000\u8EA2\uA3DF\u0000\u0000\u0000\uC9FC\u0000\u0000" + //   330 -   334
+                "\u0000\u0000\u0000\u0000\u8EA2\uBBBC\u0000\uDEF3\u0000\u0000" + //   335 -   339
+                "\u8EA2\uC2D2\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF3D3" + //   340 -   344
+                "\u0000\uC4D3\u0000\uC4E7\u0000\uC5B9\u8EA2\uA1D6\u0000\uC6C7" + //   345 -   349
+                "\u0000\u0000\u0000\uCAA2\u0000\uCAA1\u8EAC\uE2C3\u8EAC\uE2C4" + //   350 -   354
+                "\u8EAC\uE2C5\u8EAC\uE2C6\u8EAC\uE2C7\u8EAC\uE2C8\u8EAC\uE2C9" + //   355 -   359
+                "\u8EAC\uE2CA\u8EAC\uE2CB\u8EAC\uE2CC\u8EAC\uE2CD\u8EAC\uE2CE" + //   360 -   364
+                "\u8EAC\uE2CF\u8EAC\uE2D0\u8EAC\uE2D1\u8EAC\uE2D2\u8EAC\uE2D3" + //   365 -   369
+                "\u8EAC\uE2D4\u8EAC\uE2D5\u8EAC\uE2D6\u8EAC\uE2D7\u8EAC\uE2D8" + //   370 -   374
+                "\u8EAC\uE2D9\u8EAC\uE2DA\u8EAC\uE2DB\u8EAC\uE2DC\u8EAC\uE2DD" + //   375 -   379
+                "\u8EAC\uE2DE\u8EAC\uE2DF\u8EAC\uE2E0\u8EAC\uE2E1\u8EAC\uE2E2" + //   380 -   384
+                "\u8EAC\uE2E3\u8EAC\uE2E4\u8EAC\uE2E5\u8EAC\uE2E6\u8EAC\uE2E7" + //   385 -   389
+                "\u8EAC\uE2E8\u8EAC\uE2E9\u8EAC\uE2EA\u8EAC\uE2EB\u8EAC\uE2EC" + //   390 -   394
+                "\u8EAC\uE2ED\u8EAC\uE2EE\u8EAC\uE2EF\u8EAC\uE2F0\u8EAC\uE2F1" + //   395 -   399
+                "\u8EAC\uE2F2\u8EAC\uE2F3\u8EAC\uE2F4\u8EAC\uE2F5\u8EAC\uE2F6" + //   400 -   404
+                "\u8EAC\uE2F7\u8EAC\uE2F8\u8EAC\uE2F9\u8EAC\uE2FA\u8EAC\uE2FB" + //   405 -   409
+                "\u8EAC\uE2FC\u8EAC\uE2FD\u8EAC\uE2FE\u0000\u0000\u0000\u0000" + //   410 -   414
+                "\u8EAD\uA1AA\u8EAD\uA4B9\u8EAC\uE1E1\u8EAC\uE1E2\u8EAC\uE1E3" + //   415 -   419
+                "\u8EAC\uE1E4\u8EAC\uE1E5\u8EAC\uE1E6\u8EAC\uE1E7\u8EAC\uE1E8" + //   420 -   424
+                "\u8EAC\uE1E9\u8EAC\uE1EA\u8EAC\uE1EB\u8EAC\uE1EC\u8EAC\uE1ED" + //   425 -   429
+                "\u8EAC\uE1EE\u8EAC\uE1EF\u8EAC\uE1F0\u8EAC\uE1F1\u8EAC\uE1F2" + //   430 -   434
+                "\u8EAC\uE1F3\u8EAC\uE1F4\u8EAC\uE1F5\u8EAC\uE1F6\u8EAC\uE1F7" + //   435 -   439
+                "\u8EAC\uE1F8\u8EAC\uE1F9\u8EAC\uE1FA\u8EAC\uE1FB\u8EAC\uE1FC" + //   440 -   444
+                "\u8EAC\uE1FD\u8EAC\uE1FE\u8EAC\uE2A1\u8EAC\uE2A2\u8EAC\uE2A3" + //   445 -   449
+                "\u8EAC\uE2A4\u8EAC\uE2A5\u8EAC\uE2A6\u8EAC\uE2A7\u8EAC\uE2A8" + //   450 -   454
+                "\u8EAC\uE2A9\u8EAC\uE2AA\u8EAC\uE2AB\u8EAC\uE2AC\u8EAC\uE2AD" + //   455 -   459
+                "\u8EAC\uE2AE\u8EAC\uE2AF\u8EAC\uE2B0\u8EAC\uE2B1\u8EAC\uE2B2" + //   460 -   464
+                "\u8EAC\uE2B3\u8EAC\uE2B4\u8EAC\uE2B5\u8EAC\uE2B6\u8EAC\uE2B7" + //   465 -   469
+                "\u8EAC\uE2B8\u8EAC\uE2B9\u8EAC\uE2BA\u8EAC\uE2BB\u8EAC\uE2BC" + //   470 -   474
+                "\u8EAC\uE2BD\u8EAC\uE2BE\u8EAC\uE2BF\u8EAC\uE2C0\u8EAC\uE2C1" + //   475 -   479
+                "\u8EAC\uE2C2\u8EAC\uE1A1\u8EAC\uE1A2\u8EAC\uE1A3\u8EAC\uE1A4" + //   480 -   484
+                "\u8EAC\uE1A5\u8EAC\uE1A6\u8EAC\uE1A7\u8EAC\uE1A8\u8EAC\uE1A9" + //   485 -   489
+                "\u8EAC\uE1AA\u8EAC\uE1AB\u8EAC\uE1AC\u8EAC\uE1AD\u8EAC\uE1AE" + //   490 -   494
+                "\u8EAC\uE1AF\u8EAC\uE1B0\u8EAC\uE1B1\u8EAC\uE1B2\u8EAC\uE1B3" + //   495 -   499
+                "\u8EAC\uE1B4\u8EAC\uE1B5\u8EAC\uE1B6\u8EAC\uE1B7\u8EAC\uE1B8" + //   500 -   504
+                "\u8EAC\uE1B9\u8EAC\uE1BA\u8EAC\uE1BB\u8EAC\uE1BC\u8EAC\uE1BD" + //   505 -   509
+                "\u8EAC\uE1BE\u8EAC\uE1BF\u8EAC\uE1C0\u8EAC\uE1C1\u8EAC\uE1C2" + //   510 -   514
+                "\u8EAC\uE1C3\u8EAC\uE1C4\u8EAC\uE1C5\u8EAC\uE1C6\u8EAC\uE1C7" + //   515 -   519
+                "\u8EAC\uE1C8\u8EAC\uE1C9\u8EAC\uE1CA\u8EAC\uE1CB\u8EAC\uE1CC" + //   520 -   524
+                "\u8EAC\uE1CD\u8EAC\uE1CE\u8EAC\uE1CF\u8EAC\uE1D0\u8EAC\uE1D1" + //   525 -   529
+                "\u8EAC\uE1D2\u8EAC\uE1D3\u8EAC\uE1D4\u8EAC\uE1D5\u8EAC\uE1D6" + //   530 -   534
+                "\u8EAC\uE1D7\u8EAC\uE1D8\u8EAC\uE1D9\u8EAC\uE1DA\u8EAC\uE1DB" + //   535 -   539
+                "\u8EAC\uE1DC\u8EAC\uE1DD\u8EAC\uE1DE\u8EAC\uE1DF\u8EAC\uE1E0" + //   540 -   544
+                "\u8EAC\uE0BF\u8EAC\uE0C0\u8EAC\uE0C1\u8EAC\uE0C2\u8EAC\uE0C3" + //   545 -   549
+                "\u8EAC\uE0C4\u8EAC\uE0C5\u8EAC\uE0C6\u8EAC\uE0C7\u8EAC\uE0C8" + //   550 -   554
+                "\u8EAC\uE0C9\u8EAC\uE0CA\u8EAC\uE0CB\u8EAC\uE0CC\u8EAC\uE0CD" + //   555 -   559
+                "\u8EAC\uE0CE\u8EAC\uE0CF\u8EAC\uE0D0\u8EAC\uE0D1\u8EAC\uE0D2" + //   560 -   564
+                "\u8EAC\uE0D3\u8EAC\uE0D4\u8EAC\uE0D5\u8EAC\uE0D6\u8EAC\uE0D7" + //   565 -   569
+                "\u8EAC\uE0D8\u8EAC\uE0D9\u8EAC\uE0DA\u8EAC\uE0DB\u8EAC\uE0DC" + //   570 -   574
+                "\u8EAC\uE0DD\u8EAC\uE0DE\u8EAC\uE0DF\u8EAC\uE0E0\u8EAC\uE0E1" + //   575 -   579
+                "\u8EAC\uE0E2\u8EAC\uE0E3\u8EAC\uE0E4\u8EAC\uE0E5\u8EAC\uE0E6" + //   580 -   584
+                "\u8EAC\uE0E7\u8EAC\uE0E8\u8EAC\uE0E9\u8EAC\uE0EA\u8EAC\uE0EB" + //   585 -   589
+                "\u8EAC\uE0EC\u8EAC\uE0ED\u8EAC\uE0EE\u8EAC\uE0EF\u8EAC\uE0F0" + //   590 -   594
+                "\u8EAC\uE0F1\u8EAC\uE0F2\u8EAC\uE0F3\u8EAC\uE0F4\u8EAC\uE0F5" + //   595 -   599
+                "\u8EAC\uE0F6\u8EAC\uE0F7\u8EAC\uE0F8\u8EAC\uE0F9\u8EAC\uE0FA" + //   600 -   604
+                "\u8EAC\uE0FB\u8EAC\uE0FC\u8EAC\uE0FD\u8EAC\uE0FE\u8EAC\uDFDD" + //   605 -   609
+                "\u8EAC\uDFDE\u8EAC\uDFDF\u8EAC\uDFE0\u8EAC\uDFE1\u8EAC\uDFE2" + //   610 -   614
+                "\u8EAC\uDFE3\u8EAC\uDFE4\u8EAC\uDFE5\u8EAC\uDFE6\u8EAC\uDFE7" + //   615 -   619
+                "\u8EAC\uDFE8\u8EAC\uDFE9\u8EAC\uDFEA\u8EAC\uDFEB\u8EAC\uDFEC" + //   620 -   624
+                "\u8EAC\uDFED\u8EAC\uDFEE\u8EAC\uDFEF\u8EAC\uDFF0\u8EAC\uDFF1" + //   625 -   629
+                "\u8EAC\uDFF2\u8EAC\uDFF3\u8EAC\uDFF4\u8EAC\uDFF5\u8EAC\uDFF6" + //   630 -   634
+                "\u8EAC\uDFF7\u8EAC\uDFF8\u8EAC\uDFF9\u8EAC\uDFFA\u8EAC\uDFFB" + //   635 -   639
+                "\u8EAC\uDFFC\u8EAC\uDFFD\u8EAC\uDFFE\u8EAC\uE0A1\u8EAC\uE0A2" + //   640 -   644
+                "\u8EAC\uE0A3\u8EAC\uE0A4\u8EAC\uE0A5\u8EAC\uE0A6\u8EAC\uE0A7" + //   645 -   649
+                "\u8EAC\uE0A8\u8EAC\uE0A9\u8EAC\uE0AA\u8EAC\uE0AB\u8EAC\uE0AC" + //   650 -   654
+                "\u8EAC\uE0AD\u8EAC\uE0AE\u8EAC\uE0AF\u8EAC\uE0B0\u8EAC\uE0B1" + //   655 -   659
+                "\u8EAC\uE0B2\u8EAC\uE0B3\u8EAC\uE0B4\u8EAC\uE0B5\u8EAC\uE0B6" + //   660 -   664
+                "\u8EAC\uE0B7\u8EAC\uE0B8\u8EAC\uE0B9\u8EAC\uE0BA\u8EAC\uE0BB" + //   665 -   669
+                "\u8EAC\uE0BC\u8EAC\uE0BD\u8EAC\uE0BE\u8EAC\uDEFB\u8EAC\uDEFC" + //   670 -   674
+                "\u8EAC\uDEFD\u8EAC\uDEFE\u8EAC\uDFA1\u8EAC\uDFA2\u8EAC\uDFA3" + //   675 -   679
+                "\u8EAC\uDFA4\u8EAC\uDFA5\u8EAC\uDFA6\u8EAC\uDFA7\u8EAC\uDFA8" + //   680 -   684
+                "\u8EAC\uDFA9\u8EAC\uDFAA\u8EAC\uDFAB\u8EAC\uDFAC\u8EAC\uDFAD" + //   685 -   689
+                "\u8EAC\uDFAE\u8EAC\uDFAF\u8EAC\uDFB0\u8EAC\uDFB1\u8EAC\uDFB2" + //   690 -   694
+                "\u8EAC\uDFB3\u8EAC\uDFB4\u8EAC\uDFB5\u8EAC\uDFB6\u8EAC\uDFB7" + //   695 -   699
+                "\u8EAC\uDFB8\u8EAC\uDFB9\u8EAC\uDFBA\u8EAC\uDFBB\u8EAC\uDFBC" + //   700 -   704
+                "\u8EAC\uDFBD\u8EAC\uDFBE\u8EAC\uDFBF\u8EAC\uDFC0\u8EAC\uDFC1" + //   705 -   709
+                "\u8EAC\uDFC2\u8EAC\uDFC3\u8EAC\uDFC4\u8EAC\uDFC5\u8EAC\uDFC6" + //   710 -   714
+                "\u8EAC\uDFC7\u8EAC\uDFC8\u8EAC\uDFC9\u8EAC\uDFCA\u8EAC\uDFCB" + //   715 -   719
+                "\u8EAC\uDFCC\u8EAC\uDFCD\u8EAC\uDFCE\u8EAC\uDFCF\u8EAC\uDFD0" + //   720 -   724
+                "\u8EAC\uDFD1\u8EAC\uDFD2\u8EAC\uDFD3\u8EAC\uDFD4\u8EAC\uDFD5" + //   725 -   729
+                "\u8EAC\uDFD6\u8EAC\uDFD7\u8EAC\uDFD8\u8EAC\uDFD9\u8EAC\uDFDA" + //   730 -   734
+                "\u8EAC\uDFDB\u8EAC\uDFDC\u8EAC\uDEBB\u8EAC\uDEBC\u8EAC\uDEBD" + //   735 -   739
+                "\u8EAC\uDEBE\u8EAC\uDEBF\u8EAC\uDEC0\u8EAC\uDEC1\u8EAC\uDEC2" + //   740 -   744
+                "\u8EAC\uDEC3\u8EAC\uDEC4\u8EAC\uDEC5\u8EAC\uDEC6\u8EAC\uDEC7" + //   745 -   749
+                "\u8EAC\uDEC8\u8EAC\uDEC9\u8EAC\uDECA\u8EAC\uDECB\u8EAC\uDECC" + //   750 -   754
+                "\u8EAC\uDECD\u8EAC\uDECE\u8EAC\uDECF\u8EAC\uDED0\u8EAC\uDED1" + //   755 -   759
+                "\u8EAC\uDED2\u8EAC\uDED3\u8EAC\uDED4\u8EAC\uDED5\u8EAC\uDED6" + //   760 -   764
+                "\u8EAC\uDED7\u8EAC\uDED8\u8EAC\uDED9\u8EAC\uDEDA\u8EAC\uDEDB" + //   765 -   769
+                "\u8EAC\uDEDC\u8EAC\uDEDD\u8EAC\uDEDE\u8EAC\uDEDF\u8EAC\uDEE0" + //   770 -   774
+                "\u8EAC\uDEE1\u8EAC\uDEE2\u8EAC\uDEE3\u8EAC\uDEE4\u8EAC\uDEE5" + //   775 -   779
+                "\u8EAC\uDEE6\u8EAC\uDEE7\u8EAC\uDEE8\u8EAC\uDEE9\u8EAC\uDEEA" + //   780 -   784
+                "\u8EAC\uDEEB\u8EAC\uDEEC\u8EAC\uDEED\u8EAC\uDEEE\u8EAC\uDEEF" + //   785 -   789
+                "\u8EAC\uDEF0\u8EAC\uDEF1\u8EAC\uDEF2\u8EAC\uDEF3\u8EAC\uDEF4" + //   790 -   794
+                "\u8EAC\uDEF5\u8EAC\uDEF6\u8EAC\uDEF7\u8EAC\uDEF8\u8EAC\uDEF9" + //   795 -   799
+                "\u8EAC\uDEFA\u8EAC\uDDD9\u8EAC\uDDDA\u8EAC\uDDDB\u8EAC\uDDDC" + //   800 -   804
+                "\u8EAC\uDDDD\u8EAC\uDDDE\u8EAC\uDDDF\u8EAC\uDDE0\u8EAC\uDDE1" + //   805 -   809
+                "\u8EAC\uDDE2\u8EAC\uDDE3\u8EAC\uDDE4\u8EAC\uDDE5\u8EAC\uDDE6" + //   810 -   814
+                "\u8EAC\uDDE7\u8EAC\uDDE8\u8EAC\uDDE9\u8EAC\uDDEA\u8EAC\uDDEB" + //   815 -   819
+                "\u8EAC\uDDEC\u8EAC\uDDED\u8EAC\uDDEE\u8EAC\uDDEF\u8EAC\uDDF0" + //   820 -   824
+                "\u8EAC\uDDF1\u8EAC\uDDF2\u8EAC\uDDF3\u8EAC\uDDF4\u8EAC\uDDF5" + //   825 -   829
+                "\u8EAC\uDDF6\u8EAC\uDDF7\u8EAC\uDDF8\u8EAC\uDDF9\u8EAC\uDDFA" + //   830 -   834
+                "\u8EAC\uDDFB\u8EAC\uDDFC\u8EAC\uDDFD\u8EAC\uDDFE\u8EAC\uDEA1" + //   835 -   839
+                "\u8EAC\uDEA2\u8EAC\uDEA3\u8EAC\uDEA4\u8EAC\uDEA5\u8EAC\uDEA6" + //   840 -   844
+                "\u8EAC\uDEA7\u8EAC\uDEA8\u8EAC\uDEA9\u8EAC\uDEAA\u8EAC\uDEAB" + //   845 -   849
+                "\u8EAC\uDEAC\u8EAC\uDEAD\u8EAC\uDEAE\u8EAC\uDEAF\u8EAC\uDEB0" + //   850 -   854
+                "\u8EAC\uDEB1\u8EAC\uDEB2\u8EAC\uDEB3\u8EAC\uDEB4\u8EAC\uDEB5" + //   855 -   859
+                "\u8EAC\uDEB6\u8EAC\uDEB7\u8EAC\uDEB8\u8EAC\uDEB9\u8EAC\uDEBA" + //   860 -   864
+                "\u8EAC\uDCF7\u8EAC\uDCF8\u8EAC\uDCF9\u8EAC\uDCFA\u8EAC\uDCFB" + //   865 -   869
+                "\u8EAC\uDCFC\u8EAC\uDCFD\u8EAC\uDCFE\u8EAC\uDDA1\u8EAC\uDDA2" + //   870 -   874
+                "\u8EAC\uDDA3\u8EAC\uDDA4\u8EAC\uDDA5\u8EAC\uDDA6\u8EAC\uDDA7" + //   875 -   879
+                "\u8EAC\uDDA8\u8EAC\uDDA9\u8EAC\uDDAA\u8EAC\uDDAB\u8EAC\uDDAC" + //   880 -   884
+                "\u8EAC\uDDAD\u8EAC\uDDAE\u8EAC\uDDAF\u8EAC\uDDB0\u8EAC\uDDB1" + //   885 -   889
+                "\u8EAC\uDDB2\u8EAC\uDDB3\u8EAC\uDDB4\u8EAC\uDDB5\u8EAC\uDDB6" + //   890 -   894
+                "\u8EAC\uDDB7\u8EAC\uDDB8\u8EAC\uDDB9\u8EAC\uDDBA\u8EAC\uDDBB" + //   895 -   899
+                "\u8EAC\uDDBC\u8EAC\uDDBD\u8EAC\uDDBE\u8EAC\uDDBF\u8EAC\uDDC0" + //   900 -   904
+                "\u8EAC\uDDC1\u8EAC\uDDC2\u8EAC\uDDC3\u8EAC\uDDC4\u8EAC\uDDC5" + //   905 -   909
+                "\u8EAC\uDDC6\u8EAC\uDDC7\u8EAC\uDDC8\u8EAC\uDDC9\u8EAC\uDDCA" + //   910 -   914
+                "\u8EAC\uDDCB\u8EAC\uDDCC\u8EAC\uDDCD\u8EAC\uDDCE\u8EAC\uDDCF" + //   915 -   919
+                "\u8EAC\uDDD0\u8EAC\uDDD1\u8EAC\uDDD2\u8EAC\uDDD3\u8EAC\uDDD4" + //   920 -   924
+                "\u8EAC\uDDD5\u8EAC\uDDD6\u8EAC\uDDD7\u8EAC\uDDD8\u8EAC\uDCB7" + //   925 -   929
+                "\u8EAC\uDCB8\u8EAC\uDCB9\u8EAC\uDCBA\u8EAC\uDCBB\u8EAC\uDCBC" + //   930 -   934
+                "\u8EAC\uDCBD\u8EAC\uDCBE\u8EAC\uDCBF\u8EAC\uDCC0\u8EAC\uDCC1" + //   935 -   939
+                "\u8EAC\uDCC2\u8EAC\uDCC3\u8EAC\uDCC4\u8EAC\uDCC5\u8EAC\uDCC6" + //   940 -   944
+                "\u8EAC\uDCC7\u8EAC\uDCC8\u8EAC\uDCC9\u8EAC\uDCCA\u8EAC\uDCCB" + //   945 -   949
+                "\u8EAC\uDCCC\u8EAC\uDCCD\u8EAC\uDCCE\u8EAC\uDCCF\u8EAC\uDCD0" + //   950 -   954
+                "\u8EAC\uDCD1\u8EAC\uDCD2\u8EAC\uDCD3\u8EAC\uDCD4\u8EAC\uDCD5" + //   955 -   959
+                "\u8EAC\uDCD6\u8EAC\uDCD7\u8EAC\uDCD8\u8EAC\uDCD9\u8EAC\uDCDA" + //   960 -   964
+                "\u8EAC\uDCDB\u8EAC\uDCDC\u8EAC\uDCDD\u8EAC\uDCDE\u8EAC\uDCDF" + //   965 -   969
+                "\u8EAC\uDCE0\u8EAC\uDCE1\u8EAC\uDCE2\u8EAC\uDCE3\u8EAC\uDCE4" + //   970 -   974
+                "\u8EAC\uDCE5\u8EAC\uDCE6\u8EAC\uDCE7\u8EAC\uDCE8\u8EAC\uDCE9" + //   975 -   979
+                "\u8EAC\uDCEA\u8EAC\uDCEB\u8EAC\uDCEC\u8EAC\uDCED\u8EAC\uDCEE" + //   980 -   984
+                "\u8EAC\uDCEF\u8EAC\uDCF0\u8EAC\uDCF1\u8EAC\uDCF2\u8EAC\uDCF3" + //   985 -   989
+                "\u8EAC\uDCF4\u8EAC\uDCF5\u8EAC\uDCF6\u8EAC\uDBD5\u8EAC\uDBD6" + //   990 -   994
+                "\u8EAC\uDBD7\u8EAC\uDBD8\u8EAC\uDBD9\u8EAC\uDBDA\u8EAC\uDBDB" + //   995 -   999
+                "\u8EAC\uDBDC\u8EAC\uDBDD\u8EAC\uDBDE\u8EAC\uDBDF\u8EAC\uDBE0" + //  1000 -  1004
+                "\u8EAC\uDBE1\u8EAC\uDBE2\u8EAC\uDBE3\u8EAC\uDBE4\u8EAC\uDBE5" + //  1005 -  1009
+                "\u8EAC\uDBE6\u8EAC\uDBE7\u8EAC\uDBE8\u8EAC\uDBE9\u8EAC\uDBEA" + //  1010 -  1014
+                "\u8EAC\uDBEB\u8EAC\uDBEC\u8EAC\uDBED\u8EAC\uDBEE\u8EAC\uDBEF" + //  1015 -  1019
+                "\u8EAC\uDBF0\u8EAC\uDBF1\u8EAC\uDBF2\u8EAC\uDBF3\u8EAC\uDBF4" + //  1020 -  1024
+                "\u8EAC\uDBF5\u8EAC\uDBF6\u8EAC\uDBF7\u8EAC\uDBF8\u8EAC\uDBF9" + //  1025 -  1029
+                "\u8EAC\uDBFA\u8EAC\uDBFB\u8EAC\uDBFC\u8EAC\uDBFD\u8EAC\uDBFE" + //  1030 -  1034
+                "\u8EAC\uDCA1\u8EAC\uDCA2\u8EAC\uDCA3\u8EAC\uDCA4\u8EAC\uDCA5" + //  1035 -  1039
+                "\u8EAC\uDCA6\u8EAC\uDCA7\u8EAC\uDCA8\u8EAC\uDCA9\u8EAC\uDCAA" + //  1040 -  1044
+                "\u8EAC\uDCAB\u8EAC\uDCAC\u8EAC\uDCAD\u8EAC\uDCAE\u8EAC\uDCAF" + //  1045 -  1049
+                "\u8EAC\uDCB0\u8EAC\uDCB1\u8EAC\uDCB2\u8EAC\uDCB3\u8EAC\uDCB4" + //  1050 -  1054
+                "\u8EAC\uDCB5\u8EAC\uDCB6\u8EAC\uDAF3\u8EAC\uDAF4\u8EAC\uDAF5" + //  1055 -  1059
+                "\u8EAC\uDAF6\u8EAC\uDAF7\u8EAC\uDAF8\u8EAC\uDAF9\u8EAC\uDAFA" + //  1060 -  1064
+                "\u8EAC\uDAFB\u8EAC\uDAFC\u8EAC\uDAFD\u8EAC\uDAFE\u8EAC\uDBA1" + //  1065 -  1069
+                "\u8EAC\uDBA2\u8EAC\uDBA3\u8EAC\uDBA4\u8EAC\uDBA5\u8EAC\uDBA6" + //  1070 -  1074
+                "\u8EAC\uDBA7\u8EAC\uDBA8\u8EAC\uDBA9\u8EAC\uDBAA\u8EAC\uDBAB" + //  1075 -  1079
+                "\u8EAC\uDBAC\u8EAC\uDBAD\u8EAC\uDBAE\u8EAC\uDBAF\u8EAC\uDBB0" + //  1080 -  1084
+                "\u8EAC\uDBB1\u8EAC\uDBB2\u8EAC\uDBB3\u8EAC\uDBB4\u8EAC\uDBB5" + //  1085 -  1089
+                "\u8EAC\uDBB6\u8EAC\uDBB7\u8EAC\uDBB8\u8EAC\uDBB9\u8EAC\uDBBA" + //  1090 -  1094
+                "\u8EAC\uDBBB\u8EAC\uDBBC\u8EAC\uDBBD\u8EAC\uDBBE\u8EAC\uDBBF" + //  1095 -  1099
+                "\u8EAC\uDBC0\u8EAC\uDBC1\u8EAC\uDBC2\u8EAC\uDBC3\u8EAC\uDBC4" + //  1100 -  1104
+                "\u8EAC\uDBC5\u8EAC\uDBC6\u8EAC\uDBC7\u8EAC\uDBC8\u8EAC\uDBC9" + //  1105 -  1109
+                "\u8EAC\uDBCA\u8EAC\uDBCB\u8EAC\uDBCC\u8EAC\uDBCD\u8EAC\uDBCE" + //  1110 -  1114
+                "\u8EAC\uDBCF\u8EAC\uDBD0\u8EAC\uDBD1\u8EAC\uDBD2\u8EAC\uDBD3" + //  1115 -  1119
+                "\u8EAC\uDBD4\u8EAC\uDAB3\u8EAC\uDAB4\u8EAC\uDAB5\u8EAC\uDAB6" + //  1120 -  1124
+                "\u8EAC\uDAB7\u8EAC\uDAB8\u8EAC\uDAB9\u8EAC\uDABA\u8EAC\uDABB" + //  1125 -  1129
+                "\u8EAC\uDABC\u8EAC\uDABD\u8EAC\uDABE\u8EAC\uDABF\u8EAC\uDAC0" + //  1130 -  1134
+                "\u8EAC\uDAC1\u8EAC\uDAC2\u8EAC\uDAC3\u8EAC\uDAC4\u8EAC\uDAC5" + //  1135 -  1139
+                "\u8EAC\uDAC6\u8EAC\uDAC7\u8EAC\uDAC8\u8EAC\uDAC9\u8EAC\uDACA" + //  1140 -  1144
+                "\u8EAC\uDACB\u8EAC\uDACC\u8EAC\uDACD\u8EAC\uDACE\u8EAC\uDACF" + //  1145 -  1149
+                "\u8EAC\uDAD0\u8EAC\uDAD1\u8EAC\uDAD2\u8EAC\uDAD3\u8EAC\uDAD4" + //  1150 -  1154
+                "\u8EAC\uDAD5\u8EAC\uDAD6\u8EAC\uDAD7\u8EAC\uDAD8\u8EAC\uDAD9" + //  1155 -  1159
+                "\u8EAC\uDADA\u8EAC\uDADB\u8EAC\uDADC\u8EAC\uDADD\u8EAC\uDADE" + //  1160 -  1164
+                "\u8EAC\uDADF\u8EAC\uDAE0\u8EAC\uDAE1\u8EAC\uDAE2\u8EAC\uDAE3" + //  1165 -  1169
+                "\u8EAC\uDAE4\u8EAC\uDAE5\u8EAC\uDAE6\u8EAC\uDAE7\u8EAC\uDAE8" + //  1170 -  1174
+                "\u8EAC\uDAE9\u8EAC\uDAEA\u8EAC\uDAEB\u8EAC\uDAEC\u8EAC\uDAED" + //  1175 -  1179
+                "\u8EAC\uDAEE\u8EAC\uDAEF\u8EAC\uDAF0\u8EAC\uDAF1\u8EAC\uDAF2" + //  1180 -  1184
+                "\u8EAC\uD9D1\u8EAC\uD9D2\u8EAC\uD9D3\u8EAC\uD9D4\u8EAC\uD9D5" + //  1185 -  1189
+                "\u8EAC\uD9D6\u8EAC\uD9D7\u8EAC\uD9D8\u8EAC\uD9D9\u8EAC\uD9DA" + //  1190 -  1194
+                "\u8EAC\uD9DB\u8EAC\uD9DC\u8EAC\uD9DD\u8EAC\uD9DE\u8EAC\uD9DF" + //  1195 -  1199
+                "\u8EAC\uD9E0\u8EAC\uD9E1\u8EAC\uD9E2\u8EAC\uD9E3\u8EAC\uD9E4" + //  1200 -  1204
+                "\u8EAC\uD9E5\u8EAC\uD9E6\u8EAC\uD9E7\u8EAC\uD9E8\u8EAC\uD9E9" + //  1205 -  1209
+                "\u8EAC\uD9EA\u8EAC\uD9EB\u8EAC\uD9EC\u8EAC\uD9ED\u8EAC\uD9EE" + //  1210 -  1214
+                "\u8EAC\uD9EF\u8EAC\uD9F0\u8EAC\uD9F1\u8EAC\uD9F2\u8EAC\uD9F3" + //  1215 -  1219
+                "\u8EAC\uD9F4\u8EAC\uD9F5\u8EAC\uD9F6\u8EAC\uD9F7\u8EAC\uD9F8" + //  1220 -  1224
+                "\u8EAC\uD9F9\u8EAC\uD9FA\u8EAC\uD9FB\u8EAC\uD9FC\u8EAC\uD9FD" + //  1225 -  1229
+                "\u8EAC\uD9FE\u8EAC\uDAA1\u8EAC\uDAA2\u8EAC\uDAA3\u8EAC\uDAA4" + //  1230 -  1234
+                "\u8EAC\uDAA5\u8EAC\uDAA6\u8EAC\uDAA7\u8EAC\uDAA8\u8EAC\uDAA9" + //  1235 -  1239
+                "\u8EAC\uDAAA\u8EAC\uDAAB\u8EAC\uDAAC\u8EAC\uDAAD\u8EAC\uDAAE" + //  1240 -  1244
+                "\u8EAC\uDAAF\u8EAC\uDAB0\u8EAC\uDAB1\u8EAC\uDAB2\u8EAC\uD8EF" + //  1245 -  1249
+                "\u8EAC\uD8F0\u8EAC\uD8F1\u8EAC\uD8F2\u8EAC\uD8F3\u8EAC\uD8F4" + //  1250 -  1254
+                "\u8EAC\uD8F5\u8EAC\uD8F6\u8EAC\uD8F7\u8EAC\uD8F8\u8EAC\uD8F9" + //  1255 -  1259
+                "\u8EAC\uD8FA\u8EAC\uD8FB\u8EAC\uD8FC\u8EAC\uD8FD\u8EAC\uD8FE" + //  1260 -  1264
+                "\u8EAC\uD9A1\u8EAC\uD9A2\u8EAC\uD9A3\u8EAC\uD9A4\u8EAC\uD9A5" + //  1265 -  1269
+                "\u8EAC\uD9A6\u8EAC\uD9A7\u8EAC\uD9A8\u8EAC\uD9A9\u8EAC\uD9AA" + //  1270 -  1274
+                "\u8EAC\uD9AB\u8EAC\uD9AC\u8EAC\uD9AD\u8EAC\uD9AE\u8EAC\uD9AF" + //  1275 -  1279
+                "\u8EAC\uD9B0\u8EAC\uD9B1\u8EAC\uD9B2\u8EAC\uD9B3\u8EAC\uD9B4" + //  1280 -  1284
+                "\u8EAC\uD9B5\u8EAC\uD9B6\u8EAC\uD9B7\u8EAC\uD9B8\u8EAC\uD9B9" + //  1285 -  1289
+                "\u8EAC\uD9BA\u8EAC\uD9BB\u8EAC\uD9BC\u8EAC\uD9BD\u8EAC\uD9BE" + //  1290 -  1294
+                "\u8EAC\uD9BF\u8EAC\uD9C0\u8EAC\uD9C1\u8EAC\uD9C2\u8EAC\uD9C3" + //  1295 -  1299
+                "\u8EAC\uD9C4\u8EAC\uD9C5\u8EAC\uD9C6\u8EAC\uD9C7\u8EAC\uD9C8" + //  1300 -  1304
+                "\u8EAC\uD9C9\u8EAC\uD9CA\u8EAC\uD9CB\u8EAC\uD9CC\u8EAC\uD9CD" + //  1305 -  1309
+                "\u8EAC\uD9CE\u8EAC\uD9CF\u8EAC\uD9D0\u8EAC\uD8AF\u8EAC\uD8B0" + //  1310 -  1314
+                "\u8EAC\uD8B1\u8EAC\uD8B2\u8EAC\uD8B3\u8EAC\uD8B4\u8EAC\uD8B5" + //  1315 -  1319
+                "\u8EAC\uD8B6\u8EAC\uD8B7\u8EAC\uD8B8\u8EAC\uD8B9\u8EAC\uD8BA" + //  1320 -  1324
+                "\u8EAC\uD8BB\u8EAC\uD8BC\u8EAC\uD8BD\u8EAC\uD8BE\u8EAC\uD8BF" + //  1325 -  1329
+                "\u8EAC\uD8C0\u8EAC\uD8C1\u8EAC\uD8C2\u8EAC\uD8C3\u8EAC\uD8C4" + //  1330 -  1334
+                "\u8EAC\uD8C5\u8EAC\uD8C6\u8EAC\uD8C7\u8EAC\uD8C8\u8EAC\uD8C9" + //  1335 -  1339
+                "\u8EAC\uD8CA\u8EAC\uD8CB\u8EAC\uD8CC\u8EAC\uD8CD\u8EAC\uD8CE" + //  1340 -  1344
+                "\u8EAC\uD8CF\u8EAC\uD8D0\u8EAC\uD8D1\u8EAC\uD8D2\u8EAC\uD8D3" + //  1345 -  1349
+                "\u8EAC\uD8D4\u8EAC\uD8D5\u8EAC\uD8D6\u8EAC\uD8D7\u8EAC\uD8D8" + //  1350 -  1354
+                "\u8EAC\uD8D9\u8EAC\uD8DA\u8EAC\uD8DB\u8EAC\uD8DC\u8EAC\uD8DD" + //  1355 -  1359
+                "\u8EAC\uD8DE\u8EAC\uD8DF\u8EAC\uD8E0\u8EAC\uD8E1\u8EAC\uD8E2" + //  1360 -  1364
+                "\u8EAC\uD8E3\u8EAC\uD8E4\u8EAC\uD8E5\u8EAC\uD8E6\u8EAC\uD8E7" + //  1365 -  1369
+                "\u8EAC\uD8E8\u8EAC\uD8E9\u8EAC\uD8EA\u8EAC\uD8EB\u8EAC\uD8EC" + //  1370 -  1374
+                "\u8EAC\uD8ED\u8EAC\uD8EE\u8EAC\uD7CD\u8EAC\uD7CE\u8EAC\uD7CF" + //  1375 -  1379
+                "\u8EAC\uD7D0\u8EAC\uD7D1\u8EAC\uD7D2\u8EAC\uD7D3\u8EAC\uD7D4" + //  1380 -  1384
+                "\u8EAC\uD7D5\u8EAC\uD7D6\u8EAC\uD7D7\u8EAC\uD7D8\u8EAC\uD7D9" + //  1385 -  1389
+                "\u8EAC\uD7DA\u8EAC\uD7DB\u8EAC\uD7DC\u8EAC\uD7DD\u8EAC\uD7DE" + //  1390 -  1394
+                "\u8EAC\uD7DF\u8EAC\uD7E0\u8EAC\uD7E1\u8EAC\uD7E2\u8EAC\uD7E3" + //  1395 -  1399
+                "\u8EAC\uD7E4\u8EAC\uD7E5\u8EAC\uD7E6\u8EAC\uD7E7\u8EAC\uD7E8" + //  1400 -  1404
+                "\u8EAC\uD7E9\u8EAC\uD7EA\u8EAC\uD7EB\u8EAC\uD7EC\u8EAC\uD7ED" + //  1405 -  1409
+                "\u8EAC\uD7EE\u8EAC\uD7EF\u8EAC\uD7F0\u8EAC\uD7F1\u8EAC\uD7F2" + //  1410 -  1414
+                "\u8EAC\uD7F3\u8EAC\uD7F4\u8EAC\uD7F5\u8EAC\uD7F6\u8EAC\uD7F7" + //  1415 -  1419
+                "\u8EAC\uD7F8\u8EAC\uD7F9\u8EAC\uD7FA\u8EAC\uD7FB\u8EAC\uD7FC" + //  1420 -  1424
+                "\u8EAC\uD7FD\u8EAC\uD7FE\u8EAC\uD8A1\u8EAC\uD8A2\u8EAC\uD8A3" + //  1425 -  1429
+                "\u8EAC\uD8A4\u8EAC\uD8A5\u8EAC\uD8A6\u8EAC\uD8A7\u8EAC\uD8A8" + //  1430 -  1434
+                "\u8EAC\uD8A9\u8EAC\uD8AA\u8EAC\uD8AB\u8EAC\uD8AC\u8EAC\uD8AD" + //  1435 -  1439
+                "\u8EAC\uD8AE\u8EAC\uD6EB\u8EAC\uD6EC\u8EAC\uD6ED\u8EAC\uD6EE" + //  1440 -  1444
+                "\u8EAC\uD6EF\u8EAC\uD6F0\u8EAC\uD6F1\u8EAC\uD6F2\u8EAC\uD6F3" + //  1445 -  1449
+                "\u8EAC\uD6F4\u8EAC\uD6F5\u8EAC\uD6F6\u8EAC\uD6F7\u8EAC\uD6F8" + //  1450 -  1454
+                "\u8EAC\uD6F9\u8EAC\uD6FA\u8EAC\uD6FB\u8EAC\uD6FC\u8EAC\uD6FD" + //  1455 -  1459
+                "\u8EAC\uD6FE\u8EAC\uD7A1\u8EAC\uD7A2\u8EAC\uD7A3\u8EAC\uD7A4" + //  1460 -  1464
+                "\u8EAC\uD7A5\u8EAC\uD7A6\u8EAC\uD7A7\u8EAC\uD7A8\u8EAC\uD7A9" + //  1465 -  1469
+                "\u8EAC\uD7AA\u8EAC\uD7AB\u8EAC\uD7AC\u8EAC\uD7AD\u8EAC\uD7AE" + //  1470 -  1474
+                "\u8EAC\uD7AF\u8EAC\uD7B0\u8EAC\uD7B1\u8EAC\uD7B2\u8EAC\uD7B3" + //  1475 -  1479
+                "\u8EAC\uD7B4\u8EAC\uD7B5\u8EAC\uD7B6\u8EAC\uD7B7\u8EAC\uD7B8" + //  1480 -  1484
+                "\u8EAC\uD7B9\u8EAC\uD7BA\u8EAC\uD7BB\u8EAC\uD7BC\u8EAC\uD7BD" + //  1485 -  1489
+                "\u8EAC\uD7BE\u8EAC\uD7BF\u8EAC\uD7C0\u8EAC\uD7C1\u8EAC\uD7C2" + //  1490 -  1494
+                "\u8EAC\uD7C3\u8EAC\uD7C4\u8EAC\uD7C5\u8EAC\uD7C6\u8EAC\uD7C7" + //  1495 -  1499
+                "\u8EAC\uD7C8\u8EAC\uD7C9\u8EAC\uD7CA\u8EAC\uD7CB\u8EAC\uD7CC" + //  1500 -  1504
+                "\u8EAC\uD6AB\u8EAC\uD6AC\u8EAC\uD6AD\u8EAC\uD6AE\u8EAC\uD6AF" + //  1505 -  1509
+                "\u8EAC\uD6B0\u8EAC\uD6B1\u8EAC\uD6B2\u8EAC\uD6B3\u8EAC\uD6B4" + //  1510 -  1514
+                "\u8EAC\uD6B5\u8EAC\uD6B6\u8EAC\uD6B7\u8EAC\uD6B8\u8EAC\uD6B9" + //  1515 -  1519
+                "\u8EAC\uD6BA\u8EAC\uD6BB\u8EAC\uD6BC\u8EAC\uD6BD\u8EAC\uD6BE" + //  1520 -  1524
+                "\u8EAC\uD6BF\u8EAC\uD6C0\u8EAC\uD6C1\u8EAC\uD6C2\u8EAC\uD6C3" + //  1525 -  1529
+                "\u8EAC\uD6C4\u8EAC\uD6C5\u8EAC\uD6C6\u8EAC\uD6C7\u8EAC\uD6C8" + //  1530 -  1534
+                "\u8EAC\uD6C9\u8EAC\uD6CA\u8EAC\uD6CB\u8EAC\uD6CC\u8EAC\uD6CD" + //  1535 -  1539
+                "\u8EAC\uD6CE\u8EAC\uD6CF\u8EAC\uD6D0\u8EAC\uD6D1\u8EAC\uD6D2" + //  1540 -  1544
+                "\u8EAC\uD6D3\u8EAC\uD6D4\u8EAC\uD6D5\u8EAC\uD6D6\u8EAC\uD6D7" + //  1545 -  1549
+                "\u8EAC\uD6D8\u8EAC\uD6D9\u8EAC\uD6DA\u8EAC\uD6DB\u8EAC\uD6DC" + //  1550 -  1554
+                "\u8EAC\uD6DD\u8EAC\uD6DE\u8EAC\uD6DF\u8EAC\uD6E0\u8EAC\uD6E1" + //  1555 -  1559
+                "\u8EAC\uD6E2\u8EAC\uD6E3\u8EAC\uD6E4\u8EAC\uD6E5\u8EAC\uD6E6" + //  1560 -  1564
+                "\u8EAC\uD6E7\u8EAC\uD6E8\u8EAC\uD6E9\u8EAC\uD6EA\u8EAC\uD5C9" + //  1565 -  1569
+                "\u8EAC\uD5CA\u8EAC\uD5CB\u8EAC\uD5CC\u8EAC\uD5CD\u8EAC\uD5CE" + //  1570 -  1574
+                "\u8EAC\uD5CF\u8EAC\uD5D0\u8EAC\uD5D1\u8EAC\uD5D2\u8EAC\uD5D3" + //  1575 -  1579
+                "\u8EAC\uD5D4\u8EAC\uD5D5\u8EAC\uD5D6\u8EAC\uD5D7\u8EAC\uD5D8" + //  1580 -  1584
+                "\u8EAC\uD5D9\u8EAC\uD5DA\u8EAC\uD5DB\u8EAC\uD5DC\u8EAC\uD5DD" + //  1585 -  1589
+                "\u8EAC\uD5DE\u8EAC\uD5DF\u8EAC\uD5E0\u8EAC\uD5E1\u8EAC\uD5E2" + //  1590 -  1594
+                "\u8EAC\uD5E3\u8EAC\uD5E4\u8EAC\uD5E5\u8EAC\uD5E6\u8EAC\uD5E7" + //  1595 -  1599
+                "\u8EAC\uD5E8\u8EAC\uD5E9\u8EAC\uD5EA\u8EAC\uD5EB\u8EAC\uD5EC" + //  1600 -  1604
+                "\u8EAC\uD5ED\u8EAC\uD5EE\u8EAC\uD5EF\u8EAC\uD5F0\u8EAC\uD5F1" + //  1605 -  1609
+                "\u8EAC\uD5F2\u8EAC\uD5F3\u8EAC\uD5F4\u8EAC\uD5F5\u8EAC\uD5F6" + //  1610 -  1614
+                "\u8EAC\uD5F7\u8EAC\uD5F8\u8EAC\uD5F9\u8EAC\uD5FA\u8EAC\uD5FB" + //  1615 -  1619
+                "\u8EAC\uD5FC\u8EAC\uD5FD\u8EAC\uD5FE\u8EAC\uD6A1\u8EAC\uD6A2" + //  1620 -  1624
+                "\u8EAC\uD6A3\u8EAC\uD6A4\u8EAC\uD6A5\u8EAC\uD6A6\u8EAC\uD6A7" + //  1625 -  1629
+                "\u8EAC\uD6A8\u8EAC\uD6A9\u8EAC\uD6AA\u8EAC\uD4E7\u8EAC\uD4E8" + //  1630 -  1634
+                "\u8EAC\uD4E9\u8EAC\uD4EA\u8EAC\uD4EB\u8EAC\uD4EC\u8EAC\uD4ED" + //  1635 -  1639
+                "\u8EAC\uD4EE\u8EAC\uD4EF\u8EAC\uD4F0\u8EAC\uD4F1\u8EAC\uD4F2" + //  1640 -  1644
+                "\u8EAC\uD4F3\u8EAC\uD4F4\u8EAC\uD4F5\u8EAC\uD4F6\u8EAC\uD4F7" + //  1645 -  1649
+                "\u8EAC\uD4F8\u8EAC\uD4F9\u8EAC\uD4FA\u8EAC\uD4FB\u8EAC\uD4FC" + //  1650 -  1654
+                "\u8EAC\uD4FD\u8EAC\uD4FE\u8EAC\uD5A1\u8EAC\uD5A2\u8EAC\uD5A3" + //  1655 -  1659
+                "\u8EAC\uD5A4\u8EAC\uD5A5\u8EAC\uD5A6\u8EAC\uD5A7\u8EAC\uD5A8" + //  1660 -  1664
+                "\u8EAC\uD5A9\u8EAC\uD5AA\u8EAC\uD5AB\u8EAC\uD5AC\u8EAC\uD5AD" + //  1665 -  1669
+                "\u8EAC\uD5AE\u8EAC\uD5AF\u8EAC\uD5B0\u8EAC\uD5B1\u8EAC\uD5B2" + //  1670 -  1674
+                "\u8EAC\uD5B3\u8EAC\uD5B4\u8EAC\uD5B5\u8EAC\uD5B6\u8EAC\uD5B7" + //  1675 -  1679
+                "\u8EAC\uD5B8\u8EAC\uD5B9\u8EAC\uD5BA\u8EAC\uD5BB\u8EAC\uD5BC" + //  1680 -  1684
+                "\u8EAC\uD5BD\u8EAC\uD5BE\u8EAC\uD5BF\u8EAC\uD5C0\u8EAC\uD5C1" + //  1685 -  1689
+                "\u8EAC\uD5C2\u8EAC\uD5C3\u8EAC\uD5C4\u8EAC\uD5C5\u8EAC\uD5C6" + //  1690 -  1694
+                "\u8EAC\uD5C7\u8EAC\uD5C8\u8EAC\uD4A7\u8EAC\uD4A8\u8EAC\uD4A9" + //  1695 -  1699
+                "\u8EAC\uD4AA\u8EAC\uD4AB\u8EAC\uD4AC\u8EAC\uD4AD\u8EAC\uD4AE" + //  1700 -  1704
+                "\u8EAC\uD4AF\u8EAC\uD4B0\u8EAC\uD4B1\u8EAC\uD4B2\u8EAC\uD4B3" + //  1705 -  1709
+                "\u8EAC\uD4B4\u8EAC\uD4B5\u8EAC\uD4B6\u8EAC\uD4B7\u8EAC\uD4B8" + //  1710 -  1714
+                "\u8EAC\uD4B9\u8EAC\uD4BA\u8EAC\uD4BB\u8EAC\uD4BC\u8EAC\uD4BD" + //  1715 -  1719
+                "\u8EAC\uD4BE\u8EAC\uD4BF\u8EAC\uD4C0\u8EAC\uD4C1\u8EAC\uD4C2" + //  1720 -  1724
+                "\u8EAC\uD4C3\u8EAC\uD4C4\u8EAC\uD4C5\u8EAC\uD4C6\u8EAC\uD4C7" + //  1725 -  1729
+                "\u8EAC\uD4C8\u8EAC\uD4C9\u8EAC\uD4CA\u8EAC\uD4CB\u8EAC\uD4CC" + //  1730 -  1734
+                "\u8EAC\uD4CD\u8EAC\uD4CE\u8EAC\uD4CF\u8EAC\uD4D0\u8EAC\uD4D1" + //  1735 -  1739
+                "\u8EAC\uD4D2\u8EAC\uD4D3\u8EAC\uD4D4\u8EAC\uD4D5\u8EAC\uD4D6" + //  1740 -  1744
+                "\u8EAC\uD4D7\u8EAC\uD4D8\u8EAC\uD4D9\u8EAC\uD4DA\u8EAC\uD4DB" + //  1745 -  1749
+                "\u8EAC\uD4DC\u8EAC\uD4DD\u8EAC\uD4DE\u8EAC\uD4DF\u8EAC\uD4E0" + //  1750 -  1754
+                "\u8EAC\uD4E1\u8EAC\uD4E2\u8EAC\uD4E3\u8EAC\uD4E4\u8EAC\uD4E5" + //  1755 -  1759
+                "\u8EAC\uD4E6\u8EAC\uD3C5\u8EAC\uD3C6\u8EAC\uD3C7\u8EAC\uD3C8" + //  1760 -  1764
+                "\u8EAC\uD3C9\u8EAC\uD3CA\u8EAC\uD3CB\u8EAC\uD3CC\u8EAC\uD3CD" + //  1765 -  1769
+                "\u8EAC\uD3CE\u8EAC\uD3CF\u8EAC\uD3D0\u8EAC\uD3D1\u8EAC\uD3D2" + //  1770 -  1774
+                "\u8EAC\uD3D3\u8EAC\uD3D4\u8EAC\uD3D5\u8EAC\uD3D6\u8EAC\uD3D7" + //  1775 -  1779
+                "\u8EAC\uD3D8\u8EAC\uD3D9\u8EAC\uD3DA\u8EAC\uD3DB\u8EAC\uD3DC" + //  1780 -  1784
+                "\u8EAC\uD3DD\u8EAC\uD3DE\u8EAC\uD3DF\u8EAC\uD3E0\u8EAC\uD3E1" + //  1785 -  1789
+                "\u8EAC\uD3E2\u8EAC\uD3E3\u8EAC\uD3E4\u8EAC\uD3E5\u8EAC\uD3E6" + //  1790 -  1794
+                "\u8EAC\uD3E7\u8EAC\uD3E8\u8EAC\uD3E9\u8EAC\uD3EA\u8EAC\uD3EB" + //  1795 -  1799
+                "\u8EAC\uD3EC\u8EAC\uD3ED\u8EAC\uD3EE\u8EAC\uD3EF\u8EAC\uD3F0" + //  1800 -  1804
+                "\u8EAC\uD3F1\u8EAC\uD3F2\u8EAC\uD3F3\u8EAC\uD3F4\u8EAC\uD3F5" + //  1805 -  1809
+                "\u8EAC\uD3F6\u8EAC\uD3F7\u8EAC\uD3F8\u8EAC\uD3F9\u8EAC\uD3FA" + //  1810 -  1814
+                "\u8EAC\uD3FB\u8EAC\uD3FC\u8EAC\uD3FD\u8EAC\uD3FE\u8EAC\uD4A1" + //  1815 -  1819
+                "\u8EAC\uD4A2\u8EAC\uD4A3\u8EAC\uD4A4\u8EAC\uD4A5\u8EAC\uD4A6" + //  1820 -  1824
+                "\u8EAC\uD2E3\u8EAC\uD2E4\u8EAC\uD2E5\u8EAC\uD2E6\u8EAC\uD2E7" + //  1825 -  1829
+                "\u8EAC\uD2E8\u8EAC\uD2E9\u8EAC\uD2EA\u8EAC\uD2EB\u8EAC\uD2EC" + //  1830 -  1834
+                "\u8EAC\uD2ED\u8EAC\uD2EE\u8EAC\uD2EF\u8EAC\uD2F0\u8EAC\uD2F1" + //  1835 -  1839
+                "\u8EAC\uD2F2\u8EAC\uD2F3\u8EAC\uD2F4\u8EAC\uD2F5\u8EAC\uD2F6" + //  1840 -  1844
+                "\u8EAC\uD2F7\u8EAC\uD2F8\u8EAC\uD2F9\u8EAC\uD2FA\u8EAC\uD2FB" + //  1845 -  1849
+                "\u8EAC\uD2FC\u8EAC\uD2FD\u8EAC\uD2FE\u8EAC\uD3A1\u8EAC\uD3A2" + //  1850 -  1854
+                "\u8EAC\uD3A3\u8EAC\uD3A4\u8EAC\uD3A5\u8EAC\uD3A6\u8EAC\uD3A7" + //  1855 -  1859
+                "\u8EAC\uD3A8\u8EAC\uD3A9\u8EAC\uD3AA\u8EAC\uD3AB\u8EAC\uD3AC" + //  1860 -  1864
+                "\u8EAC\uD3AD\u8EAC\uD3AE\u8EAC\uD3AF\u8EAC\uD3B0\u8EAC\uD3B1" + //  1865 -  1869
+                "\u8EAC\uD3B2\u8EAC\uD3B3\u8EAC\uD3B4\u8EAC\uD3B5\u8EAC\uD3B6" + //  1870 -  1874
+                "\u8EAC\uD3B7\u8EAC\uD3B8\u8EAC\uD3B9\u8EAC\uD3BA\u8EAC\uD3BB" + //  1875 -  1879
+                "\u8EAC\uD3BC\u8EAC\uD3BD\u8EAC\uD3BE\u8EAC\uD3BF\u8EAC\uD3C0" + //  1880 -  1884
+                "\u8EAC\uD3C1\u8EAC\uD3C2\u8EAC\uD3C3\u8EAC\uD3C4\u8EAC\uD2A3" + //  1885 -  1889
+                "\u8EAC\uD2A4\u8EAC\uD2A5\u8EAC\uD2A6\u8EAC\uD2A7\u8EAC\uD2A8" + //  1890 -  1894
+                "\u8EAC\uD2A9\u8EAC\uD2AA\u8EAC\uD2AB\u8EAC\uD2AC\u8EAC\uD2AD" + //  1895 -  1899
+                "\u8EAC\uD2AE\u8EAC\uD2AF\u8EAC\uD2B0\u8EAC\uD2B1\u8EAC\uD2B2" + //  1900 -  1904
+                "\u8EAC\uD2B3\u8EAC\uD2B4\u8EAC\uD2B5\u8EAC\uD2B6\u8EAC\uD2B7" + //  1905 -  1909
+                "\u8EAC\uD2B8\u8EAC\uD2B9\u8EAC\uD2BA\u8EAC\uD2BB\u8EAC\uD2BC" + //  1910 -  1914
+                "\u8EAC\uD2BD\u8EAC\uD2BE\u8EAC\uD2BF\u8EAC\uD2C0\u8EAC\uD2C1" + //  1915 -  1919
+                "\u8EAC\uD2C2\u8EAC\uD2C3\u8EAC\uD2C4\u8EAC\uD2C5\u8EAC\uD2C6" + //  1920 -  1924
+                "\u8EAC\uD2C7\u8EAC\uD2C8\u8EAC\uD2C9\u8EAC\uD2CA\u8EAC\uD2CB" + //  1925 -  1929
+                "\u8EAC\uD2CC\u8EAC\uD2CD\u8EAC\uD2CE\u8EAC\uD2CF\u8EAC\uD2D0" + //  1930 -  1934
+                "\u8EAC\uD2D1\u8EAC\uD2D2\u8EAC\uD2D3\u8EAC\uD2D4\u8EAC\uD2D5" + //  1935 -  1939
+                "\u8EAC\uD2D6\u8EAC\uD2D7\u8EAC\uD2D8\u8EAC\uD2D9\u8EAC\uD2DA" + //  1940 -  1944
+                "\u8EAC\uD2DB\u8EAC\uD2DC\u8EAC\uD2DD\u8EAC\uD2DE\u8EAC\uD2DF" + //  1945 -  1949
+                "\u8EAC\uD2E0\u8EAC\uD2E1\u8EAC\uD2E2\u8EAC\uD1C1\u8EAC\uD1C2" + //  1950 -  1954
+                "\u8EAC\uD1C3\u8EAC\uD1C4\u8EAC\uD1C5\u8EAC\uD1C6\u8EAC\uD1C7" + //  1955 -  1959
+                "\u8EAC\uD1C8\u8EAC\uD1C9\u8EAC\uD1CA\u8EAC\uD1CB\u8EAC\uD1CC" + //  1960 -  1964
+                "\u8EAC\uD1CD\u8EAC\uD1CE\u8EAC\uD1CF\u8EAC\uD1D0\u8EAC\uD1D1" + //  1965 -  1969
+                "\u8EAC\uD1D2\u8EAC\uD1D3\u8EAC\uD1D4\u8EAC\uD1D5\u8EAC\uD1D6" + //  1970 -  1974
+                "\u8EAC\uD1D7\u8EAC\uD1D8\u8EAC\uD1D9\u8EAC\uD1DA\u8EAC\uD1DB" + //  1975 -  1979
+                "\u8EAC\uD1DC\u8EAC\uD1DD\u8EAC\uD1DE\u8EAC\uD1DF\u8EAC\uD1E0" + //  1980 -  1984
+                "\u8EAC\uD1E1\u8EAC\uD1E2\u8EAC\uD1E3\u8EAC\uD1E4\u8EAC\uD1E5" + //  1985 -  1989
+                "\u8EAC\uD1E6\u8EAC\uD1E7\u8EAC\uD1E8\u8EAC\uD1E9\u8EAC\uD1EA" + //  1990 -  1994
+                "\u8EAC\uD1EB\u8EAC\uD1EC\u8EAC\uD1ED\u8EAC\uD1EE\u8EAC\uD1EF" + //  1995 -  1999
+                "\u8EAC\uD1F0\u8EAC\uD1F1\u8EAC\uD1F2\u8EAC\uD1F3\u8EAC\uD1F4" + //  2000 -  2004
+                "\u8EAC\uD1F5\u8EAC\uD1F6\u8EAC\uD1F7\u8EAC\uD1F8\u8EAC\uD1F9" + //  2005 -  2009
+                "\u8EAC\uD1FA\u8EAC\uD1FB\u8EAC\uD1FC\u8EAC\uD1FD\u8EAC\uD1FE" + //  2010 -  2014
+                "\u8EAC\uD2A1\u8EAC\uD2A2\u8EAC\uD0DF\u8EAC\uD0E0\u8EAC\uD0E1" + //  2015 -  2019
+                "\u8EAC\uD0E2\u8EAC\uD0E3\u8EAC\uD0E4\u8EAC\uD0E5\u8EAC\uD0E6" + //  2020 -  2024
+                "\u8EAC\uD0E7\u8EAC\uD0E8\u8EAC\uD0E9\u8EAC\uD0EA\u8EAC\uD0EB" + //  2025 -  2029
+                "\u8EAC\uD0EC\u8EAC\uD0ED\u8EAC\uD0EE\u8EAC\uD0EF\u8EAC\uD0F0" + //  2030 -  2034
+                "\u8EAC\uD0F1\u8EAC\uD0F2\u8EAC\uD0F3\u8EAC\uD0F4\u8EAC\uD0F5" + //  2035 -  2039
+                "\u8EAC\uD0F6\u8EAC\uD0F7\u8EAC\uD0F8\u8EAC\uD0F9\u8EAC\uD0FA" + //  2040 -  2044
+                "\u8EAC\uD0FB\u8EAC\uD0FC\u8EAC\uD0FD\u8EAC\uD0FE\u8EAC\uD1A1" + //  2045 -  2049
+                "\u8EAC\uD1A2\u8EAC\uD1A3\u8EAC\uD1A4\u8EAC\uD1A5\u8EAC\uD1A6" + //  2050 -  2054
+                "\u8EAC\uD1A7\u8EAC\uD1A8\u8EAC\uD1A9\u8EAC\uD1AA\u8EAC\uD1AB" + //  2055 -  2059
+                "\u8EAC\uD1AC\u8EAC\uD1AD\u8EAC\uD1AE\u8EAC\uD1AF\u8EAC\uD1B0" + //  2060 -  2064
+                "\u8EAC\uD1B1\u8EAC\uD1B2\u8EAC\uD1B3\u8EAC\uD1B4\u8EAC\uD1B5" + //  2065 -  2069
+                "\u8EAC\uD1B6\u8EAC\uD1B7\u8EAC\uD1B8\u8EAC\uD1B9\u8EAC\uD1BA" + //  2070 -  2074
+                "\u8EAC\uD1BB\u8EAC\uD1BC\u8EAC\uD1BD\u8EAC\uD1BE\u8EAC\uD1BF" + //  2075 -  2079
+                "\u8EAC\uD1C0\u8EAC\uCFFD\u8EAC\uCFFE\u8EAC\uD0A1\u8EAC\uD0A2" + //  2080 -  2084
+                "\u8EAC\uD0A3\u8EAC\uD0A4\u8EAC\uD0A5\u8EAC\uD0A6\u8EAC\uD0A7" + //  2085 -  2089
+                "\u8EAC\uD0A8\u8EAC\uD0A9\u8EAC\uD0AA\u8EAC\uD0AB\u8EAC\uD0AC" + //  2090 -  2094
+                "\u8EAC\uD0AD\u8EAC\uD0AE\u8EAC\uD0AF\u8EAC\uD0B0\u8EAC\uD0B1" + //  2095 -  2099
+                "\u8EAC\uD0B2\u8EAC\uD0B3\u8EAC\uD0B4\u8EAC\uD0B5\u8EAC\uD0B6" + //  2100 -  2104
+                "\u8EAC\uD0B7\u8EAC\uD0B8\u8EAC\uD0B9\u8EAC\uD0BA\u8EAC\uD0BB" + //  2105 -  2109
+                "\u8EAC\uD0BC\u8EAC\uD0BD\u8EAC\uD0BE\u8EAC\uD0BF\u8EAC\uD0C0" + //  2110 -  2114
+                "\u8EAC\uD0C1\u8EAC\uD0C2\u8EAC\uD0C3\u8EAC\uD0C4\u8EAC\uD0C5" + //  2115 -  2119
+                "\u8EAC\uD0C6\u8EAC\uD0C7\u8EAC\uD0C8\u8EAC\uD0C9\u8EAC\uD0CA" + //  2120 -  2124
+                "\u8EAC\uD0CB\u8EAC\uD0CC\u8EAC\uD0CD\u8EAC\uD0CE\u8EAC\uD0CF" + //  2125 -  2129
+                "\u8EAC\uD0D0\u8EAC\uD0D1\u8EAC\uD0D2\u8EAC\uD0D3\u8EAC\uD0D4" + //  2130 -  2134
+                "\u8EAC\uD0D5\u8EAC\uD0D6\u8EAC\uD0D7\u8EAC\uD0D8\u8EAC\uD0D9" + //  2135 -  2139
+                "\u8EAC\uD0DA\u8EAC\uD0DB\u8EAC\uD0DC\u8EAC\uD0DD\u8EAC\uD0DE" + //  2140 -  2144
+                "\u8EAC\uCFBD\u8EAC\uCFBE\u8EAC\uCFBF\u8EAC\uCFC0\u8EAC\uCFC1" + //  2145 -  2149
+                "\u8EAC\uCFC2\u8EAC\uCFC3\u8EAC\uCFC4\u8EAC\uCFC5\u8EAC\uCFC6" + //  2150 -  2154
+                "\u8EAC\uCFC7\u8EAC\uCFC8\u8EAC\uCFC9\u8EAC\uCFCA\u8EAC\uCFCB" + //  2155 -  2159
+                "\u8EAC\uCFCC\u8EAC\uCFCD\u8EAC\uCFCE\u8EAC\uCFCF\u8EAC\uCFD0" + //  2160 -  2164
+                "\u8EAC\uCFD1\u8EAC\uCFD2\u8EAC\uCFD3\u8EAC\uCFD4\u8EAC\uCFD5" + //  2165 -  2169
+                "\u8EAC\uCFD6\u8EAC\uCFD7\u8EAC\uCFD8\u8EAC\uCFD9\u8EAC\uCFDA" + //  2170 -  2174
+                "\u8EAC\uCFDB\u8EAC\uCFDC\u8EAC\uCFDD\u8EAC\uCFDE\u8EAC\uCFDF" + //  2175 -  2179
+                "\u8EAC\uCFE0\u8EAC\uCFE1\u8EAC\uCFE2\u8EAC\uCFE3\u8EAC\uCFE4" + //  2180 -  2184
+                "\u8EAC\uCFE5\u8EAC\uCFE6\u8EAC\uCFE7\u8EAC\uCFE8\u8EAC\uCFE9" + //  2185 -  2189
+                "\u8EAC\uCFEA\u8EAC\uCFEB\u8EAC\uCFEC\u8EAC\uCFED\u8EAC\uCFEE" + //  2190 -  2194
+                "\u8EAC\uCFEF\u8EAC\uCFF0\u8EAC\uCFF1\u8EAC\uCFF2\u8EAC\uCFF3" + //  2195 -  2199
+                "\u8EAC\uCFF4\u8EAC\uCFF5\u8EAC\uCFF6\u8EAC\uCFF7\u8EAC\uCFF8" + //  2200 -  2204
+                "\u8EAC\uCFF9\u8EAC\uCFFA\u8EAC\uCFFB\u8EAC\uCFFC\u8EAC\uCEDB" + //  2205 -  2209
+                "\u8EAC\uCEDC\u8EAC\uCEDD\u8EAC\uCEDE\u8EAC\uCEDF\u8EAC\uCEE0" + //  2210 -  2214
+                "\u8EAC\uCEE1\u8EAC\uCEE2\u8EAC\uCEE3\u8EAC\uCEE4\u8EAC\uCEE5" + //  2215 -  2219
+                "\u8EAC\uCEE6\u8EAC\uCEE7\u8EAC\uCEE8\u8EAC\uCEE9\u8EAC\uCEEA" + //  2220 -  2224
+                "\u8EAC\uCEEB\u8EAC\uCEEC\u8EAC\uCEED\u8EAC\uCEEE\u8EAC\uCEEF" + //  2225 -  2229
+                "\u8EAC\uCEF0\u8EAC\uCEF1\u8EAC\uCEF2\u8EAC\uCEF3\u8EAC\uCEF4" + //  2230 -  2234
+                "\u8EAC\uCEF5\u8EAC\uCEF6\u8EAC\uCEF7\u8EAC\uCEF8\u8EAC\uCEF9" + //  2235 -  2239
+                "\u8EAC\uCEFA\u8EAC\uCEFB\u8EAC\uCEFC\u8EAC\uCEFD\u8EAC\uCEFE" + //  2240 -  2244
+                "\u8EAC\uCFA1\u8EAC\uCFA2\u8EAC\uCFA3\u8EAC\uCFA4\u8EAC\uCFA5" + //  2245 -  2249
+                "\u8EAC\uCFA6\u8EAC\uCFA7\u8EAC\uCFA8\u8EAC\uCFA9\u8EAC\uCFAA" + //  2250 -  2254
+                "\u8EAC\uCFAB\u8EAC\uCFAC\u8EAC\uCFAD\u8EAC\uCFAE\u8EAC\uCFAF" + //  2255 -  2259
+                "\u8EAC\uCFB0\u8EAC\uCFB1\u8EAC\uCFB2\u8EAC\uCFB3\u8EAC\uCFB4" + //  2260 -  2264
+                "\u8EAC\uCFB5\u8EAC\uCFB6\u8EAC\uCFB7\u8EAC\uCFB8\u8EAC\uCFB9" + //  2265 -  2269
+                "\u8EAC\uCFBA\u8EAC\uCFBB\u8EAC\uCFBC\u8EAC\uCDF9\u8EAC\uCDFA" + //  2270 -  2274
+                "\u8EAC\uCDFB\u8EAC\uCDFC\u8EAC\uCDFD\u8EAC\uCDFE\u8EAC\uCEA1" + //  2275 -  2279
+                "\u8EAC\uCEA2\u8EAC\uCEA3\u8EAC\uCEA4\u8EAC\uCEA5\u8EAC\uCEA6" + //  2280 -  2284
+                "\u8EAC\uCEA7\u8EAC\uCEA8\u8EAC\uCEA9\u8EAC\uCEAA\u8EAC\uCEAB" + //  2285 -  2289
+                "\u8EAC\uCEAC\u8EAC\uCEAD\u8EAC\uCEAE\u8EAC\uCEAF\u8EAC\uCEB0" + //  2290 -  2294
+                "\u8EAC\uCEB1\u8EAC\uCEB2\u8EAC\uCEB3\u8EAC\uCEB4\u8EAC\uCEB5" + //  2295 -  2299
+                "\u8EAC\uCEB6\u8EAC\uCEB7\u8EAC\uCEB8\u8EAC\uCEB9\u8EAC\uCEBA" + //  2300 -  2304
+                "\u8EAC\uCEBB\u8EAC\uCEBC\u8EAC\uCEBD\u8EAC\uCEBE\u8EAC\uCEBF" + //  2305 -  2309
+                "\u8EAC\uCEC0\u8EAC\uCEC1\u8EAC\uCEC2\u8EAC\uCEC3\u8EAC\uCEC4" + //  2310 -  2314
+                "\u8EAC\uCEC5\u8EAC\uCEC6\u8EAC\uCEC7\u8EAC\uCEC8\u8EAC\uCEC9" + //  2315 -  2319
+                "\u8EAC\uCECA\u8EAC\uCECB\u8EAC\uCECC\u8EAC\uCECD\u8EAC\uCECE" + //  2320 -  2324
+                "\u8EAC\uCECF\u8EAC\uCED0\u8EAC\uCED1\u8EAC\uCED2\u8EAC\uCED3" + //  2325 -  2329
+                "\u8EAC\uCED4\u8EAC\uCED5\u8EAC\uCED6\u8EAC\uCED7\u8EAC\uCED8" + //  2330 -  2334
+                "\u8EAC\uCED9\u8EAC\uCEDA\u8EAC\uCDB9\u8EAC\uCDBA\u8EAC\uCDBB" + //  2335 -  2339
+                "\u8EAC\uCDBC\u8EAC\uCDBD\u8EAC\uCDBE\u8EAC\uCDBF\u8EAC\uCDC0" + //  2340 -  2344
+                "\u8EAC\uCDC1\u8EAC\uCDC2\u8EAC\uCDC3\u8EAC\uCDC4\u8EAC\uCDC5" + //  2345 -  2349
+                "\u8EAC\uCDC6\u8EAC\uCDC7\u8EAC\uCDC8\u8EAC\uCDC9\u8EAC\uCDCA" + //  2350 -  2354
+                "\u8EAC\uCDCB\u8EAC\uCDCC\u8EAC\uCDCD\u8EAC\uCDCE\u8EAC\uCDCF" + //  2355 -  2359
+                "\u8EAC\uCDD0\u8EAC\uCDD1\u8EAC\uCDD2\u8EAC\uCDD3\u8EAC\uCDD4" + //  2360 -  2364
+                "\u8EAC\uCDD5\u8EAC\uCDD6\u8EAC\uCDD7\u8EAC\uCDD8\u8EAC\uCDD9" + //  2365 -  2369
+                "\u8EAC\uCDDA\u8EAC\uCDDB\u8EAC\uCDDC\u8EAC\uCDDD\u8EAC\uCDDE" + //  2370 -  2374
+                "\u8EAC\uCDDF\u8EAC\uCDE0\u8EAC\uCDE1\u8EAC\uCDE2\u8EAC\uCDE3" + //  2375 -  2379
+                "\u8EAC\uCDE4\u8EAC\uCDE5\u8EAC\uCDE6\u8EAC\uCDE7\u8EAC\uCDE8" + //  2380 -  2384
+                "\u8EAC\uCDE9\u8EAC\uCDEA\u8EAC\uCDEB\u8EAC\uCDEC\u8EAC\uCDED" + //  2385 -  2389
+                "\u8EAC\uCDEE\u8EAC\uCDEF\u8EAC\uCDF0\u8EAC\uCDF1\u8EAC\uCDF2" + //  2390 -  2394
+                "\u8EAC\uCDF3\u8EAC\uCDF4\u8EAC\uCDF5\u8EAC\uCDF6\u8EAC\uCDF7" + //  2395 -  2399
+                "\u8EAC\uCDF8\u8EAC\uCCD7\u8EAC\uCCD8\u8EAC\uCCD9\u8EAC\uCCDA" + //  2400 -  2404
+                "\u8EAC\uCCDB\u8EAC\uCCDC\u8EAC\uCCDD\u8EAC\uCCDE\u8EAC\uCCDF" + //  2405 -  2409
+                "\u8EAC\uCCE0\u8EAC\uCCE1\u8EAC\uCCE2\u8EAC\uCCE3\u8EAC\uCCE4" + //  2410 -  2414
+                "\u8EAC\uCCE5\u8EAC\uCCE6\u8EAC\uCCE7\u8EAC\uCCE8\u8EAC\uCCE9" + //  2415 -  2419
+                "\u8EAC\uCCEA\u8EAC\uCCEB\u8EAC\uCCEC\u8EAC\uCCED\u8EAC\uCCEE" + //  2420 -  2424
+                "\u8EAC\uCCEF\u8EAC\uCCF0\u8EAC\uCCF1\u8EAC\uCCF2\u8EAC\uCCF3" + //  2425 -  2429
+                "\u8EAC\uCCF4\u8EAC\uCCF5\u8EAC\uCCF6\u8EAC\uCCF7\u8EAC\uCCF8" + //  2430 -  2434
+                "\u8EAC\uCCF9\u8EAC\uCCFA\u8EAC\uCCFB\u8EAC\uCCFC\u8EAC\uCCFD" + //  2435 -  2439
+                "\u8EAC\uCCFE\u8EAC\uCDA1\u8EAC\uCDA2\u8EAC\uCDA3\u8EAC\uCDA4" + //  2440 -  2444
+                "\u8EAC\uCDA5\u8EAC\uCDA6\u8EAC\uCDA7\u8EAC\uCDA8\u8EAC\uCDA9" + //  2445 -  2449
+                "\u8EAC\uCDAA\u8EAC\uCDAB\u8EAC\uCDAC\u8EAC\uCDAD\u8EAC\uCDAE" + //  2450 -  2454
+                "\u8EAC\uCDAF\u8EAC\uCDB0\u8EAC\uCDB1\u8EAC\uCDB2\u8EAC\uCDB3" + //  2455 -  2459
+                "\u8EAC\uCDB4\u8EAC\uCDB5\u8EAC\uCDB6\u8EAC\uCDB7\u8EAC\uCDB8" + //  2460 -  2464
+                "\u8EAC\uCBF5\u8EAC\uCBF6\u8EAC\uCBF7\u8EAC\uCBF8\u8EAC\uCBF9" + //  2465 -  2469
+                "\u8EAC\uCBFA\u8EAC\uCBFB\u8EAC\uCBFC\u8EAC\uCBFD\u8EAC\uCBFE" + //  2470 -  2474
+                "\u8EAC\uCCA1\u8EAC\uCCA2\u8EAC\uCCA3\u8EAC\uCCA4\u8EAC\uCCA5" + //  2475 -  2479
+                "\u8EAC\uCCA6\u8EAC\uCCA7\u8EAC\uCCA8\u8EAC\uCCA9\u8EAC\uCCAA" + //  2480 -  2484
+                "\u8EAC\uCCAB\u8EAC\uCCAC\u8EAC\uCCAD\u8EAC\uCCAE\u8EAC\uCCAF" + //  2485 -  2489
+                "\u8EAC\uCCB0\u8EAC\uCCB1\u8EAC\uCCB2\u8EAC\uCCB3\u8EAC\uCCB4" + //  2490 -  2494
+                "\u8EAC\uCCB5\u8EAC\uCCB6\u8EAC\uCCB7\u8EAC\uCCB8\u8EAC\uCCB9" + //  2495 -  2499
+                "\u8EAC\uCCBA\u8EAC\uCCBB\u8EAC\uCCBC\u8EAC\uCCBD\u8EAC\uCCBE" + //  2500 -  2504
+                "\u8EAC\uCCBF\u8EAC\uCCC0\u8EAC\uCCC1\u8EAC\uCCC2\u8EAC\uCCC3" + //  2505 -  2509
+                "\u8EAC\uCCC4\u8EAC\uCCC5\u8EAC\uCCC6\u8EAC\uCCC7\u8EAC\uCCC8" + //  2510 -  2514
+                "\u8EAC\uCCC9\u8EAC\uCCCA\u8EAC\uCCCB\u8EAC\uCCCC\u8EAC\uCCCD" + //  2515 -  2519
+                "\u8EAC\uCCCE\u8EAC\uCCCF\u8EAC\uCCD0\u8EAC\uCCD1\u8EAC\uCCD2" + //  2520 -  2524
+                "\u8EAC\uCCD3\u8EAC\uCCD4\u8EAC\uCCD5\u8EAC\uCCD6\u8EAC\uCBB5" + //  2525 -  2529
+                "\u8EAC\uCBB6\u8EAC\uCBB7\u8EAC\uCBB8\u8EAC\uCBB9\u8EAC\uCBBA" + //  2530 -  2534
+                "\u8EAC\uCBBB\u8EAC\uCBBC\u8EAC\uCBBD\u8EAC\uCBBE\u8EAC\uCBBF" + //  2535 -  2539
+                "\u8EAC\uCBC0\u8EAC\uCBC1\u8EAC\uCBC2\u8EAC\uCBC3\u8EAC\uCBC4" + //  2540 -  2544
+                "\u8EAC\uCBC5\u8EAC\uCBC6\u8EAC\uCBC7\u8EAC\uCBC8\u8EAC\uCBC9" + //  2545 -  2549
+                "\u8EAC\uCBCA\u8EAC\uCBCB\u8EAC\uCBCC\u8EAC\uCBCD\u8EAC\uCBCE" + //  2550 -  2554
+                "\u8EAC\uCBCF\u8EAC\uCBD0\u8EAC\uCBD1\u8EAC\uCBD2\u8EAC\uCBD3" + //  2555 -  2559
+                "\u8EAC\uCBD4\u8EAC\uCBD5\u8EAC\uCBD6\u8EAC\uCBD7\u8EAC\uCBD8" + //  2560 -  2564
+                "\u8EAC\uCBD9\u8EAC\uCBDA\u8EAC\uCBDB\u8EAC\uCBDC\u8EAC\uCBDD" + //  2565 -  2569
+                "\u8EAC\uCBDE\u8EAC\uCBDF\u8EAC\uCBE0\u8EAC\uCBE1\u8EAC\uCBE2" + //  2570 -  2574
+                "\u8EAC\uCBE3\u8EAC\uCBE4\u8EAC\uCBE5\u8EAC\uCBE6\u8EAC\uCBE7" + //  2575 -  2579
+                "\u8EAC\uCBE8\u8EAC\uCBE9\u8EAC\uCBEA\u8EAC\uCBEB\u8EAC\uCBEC" + //  2580 -  2584
+                "\u8EAC\uCBED\u8EAC\uCBEE\u8EAC\uCBEF\u8EAC\uCBF0\u8EAC\uCBF1" + //  2585 -  2589
+                "\u8EAC\uCBF2\u8EAC\uCBF3\u8EAC\uCBF4\u8EAC\uCAD3\u8EAC\uCAD4" + //  2590 -  2594
+                "\u8EAC\uCAD5\u8EAC\uCAD6\u8EAC\uCAD7\u8EAC\uCAD8\u8EAC\uCAD9" + //  2595 -  2599
+                "\u8EAC\uCADA\u8EAC\uCADB\u8EAC\uCADC\u8EAC\uCADD\u8EAC\uCADE" + //  2600 -  2604
+                "\u8EAC\uCADF\u8EAC\uCAE0\u8EAC\uCAE1\u8EAC\uCAE2\u8EAC\uCAE3" + //  2605 -  2609
+                "\u8EAC\uCAE4\u8EAC\uCAE5\u8EAC\uCAE6\u8EAC\uCAE7\u8EAC\uCAE8" + //  2610 -  2614
+                "\u8EAC\uCAE9\u8EAC\uCAEA\u8EAC\uCAEB\u8EAC\uCAEC\u8EAC\uCAED" + //  2615 -  2619
+                "\u8EAC\uCAEE\u8EAC\uCAEF\u8EAC\uCAF0\u8EAC\uCAF1\u8EAC\uCAF2" + //  2620 -  2624
+                "\u8EAC\uCAF3\u8EAC\uCAF4\u8EAC\uCAF5\u8EAC\uCAF6\u8EAC\uCAF7" + //  2625 -  2629
+                "\u8EAC\uCAF8\u8EAC\uCAF9\u8EAC\uCAFA\u8EAC\uCAFB\u8EAC\uCAFC" + //  2630 -  2634
+                "\u8EAC\uCAFD\u8EAC\uCAFE\u8EAC\uCBA1\u8EAC\uCBA2\u8EAC\uCBA3" + //  2635 -  2639
+                "\u8EAC\uCBA4\u8EAC\uCBA5\u8EAC\uCBA6\u8EAC\uCBA7\u8EAC\uCBA8" + //  2640 -  2644
+                "\u8EAC\uCBA9\u8EAC\uCBAA\u8EAC\uCBAB\u8EAC\uCBAC\u8EAC\uCBAD" + //  2645 -  2649
+                "\u8EAC\uCBAE\u8EAC\uCBAF\u8EAC\uCBB0\u8EAC\uCBB1\u8EAC\uCBB2" + //  2650 -  2654
+                "\u8EAC\uCBB3\u8EAC\uCBB4\u8EAC\uC9F1\u8EAC\uC9F2\u8EAC\uC9F3" + //  2655 -  2659
+                "\u8EAC\uC9F4\u8EAC\uC9F5\u8EAC\uC9F6\u8EAC\uC9F7\u8EAC\uC9F8" + //  2660 -  2664
+                "\u8EAC\uC9F9\u8EAC\uC9FA\u8EAC\uC9FB\u8EAC\uC9FC\u8EAC\uC9FD" + //  2665 -  2669
+                "\u8EAC\uC9FE\u8EAC\uCAA1\u8EAC\uCAA2\u8EAC\uCAA3\u8EAC\uCAA4" + //  2670 -  2674
+                "\u8EAC\uCAA5\u8EAC\uCAA6\u8EAC\uCAA7\u8EAC\uCAA8\u8EAC\uCAA9" + //  2675 -  2679
+                "\u8EAC\uCAAA\u8EAC\uCAAB\u8EAC\uCAAC\u8EAC\uCAAD\u8EAC\uCAAE" + //  2680 -  2684
+                "\u8EAC\uCAAF\u8EAC\uCAB0\u8EAC\uCAB1\u8EAC\uCAB2\u8EAC\uCAB3" + //  2685 -  2689
+                "\u8EAC\uCAB4\u8EAC\uCAB5\u8EAC\uCAB6\u8EAC\uCAB7\u8EAC\uCAB8" + //  2690 -  2694
+                "\u8EAC\uCAB9\u8EAC\uCABA\u8EAC\uCABB\u8EAC\uCABC\u8EAC\uCABD" + //  2695 -  2699
+                "\u8EAC\uCABE\u8EAC\uCABF\u8EAC\uCAC0\u8EAC\uCAC1\u8EAC\uCAC2" + //  2700 -  2704
+                "\u8EAC\uCAC3\u8EAC\uCAC4\u8EAC\uCAC5\u8EAC\uCAC6\u8EAC\uCAC7" + //  2705 -  2709
+                "\u8EAC\uCAC8\u8EAC\uCAC9\u8EAC\uCACA\u8EAC\uCACB\u8EAC\uCACC" + //  2710 -  2714
+                "\u8EAC\uCACD\u8EAC\uCACE\u8EAC\uCACF\u8EAC\uCAD0\u8EAC\uCAD1" + //  2715 -  2719
+                "\u8EAC\uCAD2\u8EAC\uC9B1\u8EAC\uC9B2\u8EAC\uC9B3\u8EAC\uC9B4" + //  2720 -  2724
+                "\u8EAC\uC9B5\u8EAC\uC9B6\u8EAC\uC9B7\u8EAC\uC9B8\u8EAC\uC9B9" + //  2725 -  2729
+                "\u8EAC\uC9BA\u8EAC\uC9BB\u8EAC\uC9BC\u8EAC\uC9BD\u8EAC\uC9BE" + //  2730 -  2734
+                "\u8EAC\uC9BF\u8EAC\uC9C0\u8EAC\uC9C1\u8EAC\uC9C2\u8EAC\uC9C3" + //  2735 -  2739
+                "\u8EAC\uC9C4\u8EAC\uC9C5\u8EAC\uC9C6\u8EAC\uC9C7\u8EAC\uC9C8" + //  2740 -  2744
+                "\u8EAC\uC9C9\u8EAC\uC9CA\u8EAC\uC9CB\u8EAC\uC9CC\u8EAC\uC9CD" + //  2745 -  2749
+                "\u8EAC\uC9CE\u8EAC\uC9CF\u8EAC\uC9D0\u8EAC\uC9D1\u8EAC\uC9D2" + //  2750 -  2754
+                "\u8EAC\uC9D3\u8EAC\uC9D4\u8EAC\uC9D5\u8EAC\uC9D6\u8EAC\uC9D7" + //  2755 -  2759
+                "\u8EAC\uC9D8\u8EAC\uC9D9\u8EAC\uC9DA\u8EAC\uC9DB\u8EAC\uC9DC" + //  2760 -  2764
+                "\u8EAC\uC9DD\u8EAC\uC9DE\u8EAC\uC9DF\u8EAC\uC9E0\u8EAC\uC9E1" + //  2765 -  2769
+                "\u8EAC\uC9E2\u8EAC\uC9E3\u8EAC\uC9E4\u8EAC\uC9E5\u8EAC\uC9E6" + //  2770 -  2774
+                "\u8EAC\uC9E7\u8EAC\uC9E8\u8EAC\uC9E9\u8EAC\uC9EA\u8EAC\uC9EB" + //  2775 -  2779
+                "\u8EAC\uC9EC\u8EAC\uC9ED\u8EAC\uC9EE\u8EAC\uC9EF\u8EAC\uC9F0" + //  2780 -  2784
+                "\u8EAC\uC8CF\u8EAC\uC8D0\u8EAC\uC8D1\u8EAC\uC8D2\u8EAC\uC8D3" + //  2785 -  2789
+                "\u8EAC\uC8D4\u8EAC\uC8D5\u8EAC\uC8D6\u8EAC\uC8D7\u8EAC\uC8D8" + //  2790 -  2794
+                "\u8EAC\uC8D9\u8EAC\uC8DA\u8EAC\uC8DB\u8EAC\uC8DC\u8EAC\uC8DD" + //  2795 -  2799
+                "\u8EAC\uC8DE\u8EAC\uC8DF\u8EAC\uC8E0\u8EAC\uC8E1\u8EAC\uC8E2" + //  2800 -  2804
+                "\u8EAC\uC8E3\u8EAC\uC8E4\u8EAC\uC8E5\u8EAC\uC8E6\u8EAC\uC8E7" + //  2805 -  2809
+                "\u8EAC\uC8E8\u8EAC\uC8E9\u8EAC\uC8EA\u8EAC\uC8EB\u8EAC\uC8EC" + //  2810 -  2814
+                "\u8EAC\uC8ED\u8EAC\uC8EE\u8EAC\uC8EF\u8EAC\uC8F0\u8EAC\uC8F1" + //  2815 -  2819
+                "\u8EAC\uC8F2\u8EAC\uC8F3\u8EAC\uC8F4\u8EAC\uC8F5\u8EAC\uC8F6" + //  2820 -  2824
+                "\u8EAC\uC8F7\u8EAC\uC8F8\u8EAC\uC8F9\u8EAC\uC8FA\u8EAC\uC8FB" + //  2825 -  2829
+                "\u8EAC\uC8FC\u8EAC\uC8FD\u8EAC\uC8FE\u8EAC\uC9A1\u8EAC\uC9A2" + //  2830 -  2834
+                "\u8EAC\uC9A3\u8EAC\uC9A4\u8EAC\uC9A5\u8EAC\uC9A6\u8EAC\uC9A7" + //  2835 -  2839
+                "\u8EAC\uC9A8\u8EAC\uC9A9\u8EAC\uC9AA\u8EAC\uC9AB\u8EAC\uC9AC" + //  2840 -  2844
+                "\u8EAC\uC9AD\u8EAC\uC9AE\u8EAC\uC9AF\u8EAC\uC9B0\u8EAC\uC7ED" + //  2845 -  2849
+                "\u8EAC\uC7EE\u8EAC\uC7EF\u8EAC\uC7F0\u8EAC\uC7F1\u8EAC\uC7F2" + //  2850 -  2854
+                "\u8EAC\uC7F3\u8EAC\uC7F4\u8EAC\uC7F5\u8EAC\uC7F6\u8EAC\uC7F7" + //  2855 -  2859
+                "\u8EAC\uC7F8\u8EAC\uC7F9\u8EAC\uC7FA\u8EAC\uC7FB\u8EAC\uC7FC" + //  2860 -  2864
+                "\u8EAC\uC7FD\u8EAC\uC7FE\u8EAC\uC8A1\u8EAC\uC8A2\u8EAC\uC8A3" + //  2865 -  2869
+                "\u8EAC\uC8A4\u8EAC\uC8A5\u8EAC\uC8A6\u8EAC\uC8A7\u8EAC\uC8A8" + //  2870 -  2874
+                "\u8EAC\uC8A9\u8EAC\uC8AA\u8EAC\uC8AB\u8EAC\uC8AC\u8EAC\uC8AD" + //  2875 -  2879
+                "\u8EAC\uC8AE\u8EAC\uC8AF\u8EAC\uC8B0\u8EAC\uC8B1\u8EAC\uC8B2" + //  2880 -  2884
+                "\u8EAC\uC8B3\u8EAC\uC8B4\u8EAC\uC8B5\u8EAC\uC8B6\u8EAC\uC8B7" + //  2885 -  2889
+                "\u8EAC\uC8B8\u8EAC\uC8B9\u8EAC\uC8BA\u8EAC\uC8BB\u8EAC\uC8BC" + //  2890 -  2894
+                "\u8EAC\uC8BD\u8EAC\uC8BE\u8EAC\uC8BF\u8EAC\uC8C0\u8EAC\uC8C1" + //  2895 -  2899
+                "\u8EAC\uC8C2\u8EAC\uC8C3\u8EAC\uC8C4\u8EAC\uC8C5\u8EAC\uC8C6" + //  2900 -  2904
+                "\u8EAC\uC8C7\u8EAC\uC8C8\u8EAC\uC8C9\u8EAC\uC8CA\u8EAC\uC8CB" + //  2905 -  2909
+                "\u8EAC\uC8CC\u8EAC\uC8CD\u8EAC\uC8CE\u8EAC\uC7AD\u8EAC\uC7AE" + //  2910 -  2914
+                "\u8EAC\uC7AF\u8EAC\uC7B0\u8EAC\uC7B1\u8EAC\uC7B2\u8EAC\uC7B3" + //  2915 -  2919
+                "\u8EAC\uC7B4\u8EAC\uC7B5\u8EAC\uC7B6\u8EAC\uC7B7\u8EAC\uC7B8" + //  2920 -  2924
+                "\u8EAC\uC7B9\u8EAC\uC7BA\u8EAC\uC7BB\u8EAC\uC7BC\u8EAC\uC7BD" + //  2925 -  2929
+                "\u8EAC\uC7BE\u8EAC\uC7BF\u8EAC\uC7C0\u8EAC\uC7C1\u8EAC\uC7C2" + //  2930 -  2934
+                "\u8EAC\uC7C3\u8EAC\uC7C4\u8EAC\uC7C5\u8EAC\uC7C6\u8EAC\uC7C7" + //  2935 -  2939
+                "\u8EAC\uC7C8\u8EAC\uC7C9\u8EAC\uC7CA\u8EAC\uC7CB\u8EAC\uC7CC" + //  2940 -  2944
+                "\u8EAC\uC7CD\u8EAC\uC7CE\u8EAC\uC7CF\u8EAC\uC7D0\u8EAC\uC7D1" + //  2945 -  2949
+                "\u8EAC\uC7D2\u8EAC\uC7D3\u8EAC\uC7D4\u8EAC\uC7D5\u8EAC\uC7D6" + //  2950 -  2954
+                "\u8EAC\uC7D7\u8EAC\uC7D8\u8EAC\uC7D9\u8EAC\uC7DA\u8EAC\uC7DB" + //  2955 -  2959
+                "\u8EAC\uC7DC\u8EAC\uC7DD\u8EAC\uC7DE\u8EAC\uC7DF\u8EAC\uC7E0" + //  2960 -  2964
+                "\u8EAC\uC7E1\u8EAC\uC7E2\u8EAC\uC7E3\u8EAC\uC7E4\u8EAC\uC7E5" + //  2965 -  2969
+                "\u8EAC\uC7E6\u8EAC\uC7E7\u8EAC\uC7E8\u8EAC\uC7E9\u8EAC\uC7EA" + //  2970 -  2974
+                "\u8EAC\uC7EB\u8EAC\uC7EC\u8EAC\uC6CB\u8EAC\uC6CC\u8EAC\uC6CD" + //  2975 -  2979
+                "\u8EAC\uC6CE\u8EAC\uC6CF\u8EAC\uC6D0\u8EAC\uC6D1\u8EAC\uC6D2" + //  2980 -  2984
+                "\u8EAC\uC6D3\u8EAC\uC6D4\u8EAC\uC6D5\u8EAC\uC6D6\u8EAC\uC6D7" + //  2985 -  2989
+                "\u8EAC\uC6D8\u8EAC\uC6D9\u8EAC\uC6DA\u8EAC\uC6DB\u8EAC\uC6DC" + //  2990 -  2994
+                "\u8EAC\uC6DD\u8EAC\uC6DE\u8EAC\uC6DF\u8EAC\uC6E0\u8EAC\uC6E1" + //  2995 -  2999
+                "\u8EAC\uC6E2\u8EAC\uC6E3\u8EAC\uC6E4\u8EAC\uC6E5\u8EAC\uC6E6" + //  3000 -  3004
+                "\u8EAC\uC6E7\u8EAC\uC6E8\u8EAC\uC6E9\u8EAC\uC6EA\u8EAC\uC6EB" + //  3005 -  3009
+                "\u8EAC\uC6EC\u8EAC\uC6ED\u8EAC\uC6EE\u8EAC\uC6EF\u8EAC\uC6F0" + //  3010 -  3014
+                "\u8EAC\uC6F1\u8EAC\uC6F2\u8EAC\uC6F3\u8EAC\uC6F4\u8EAC\uC6F5" + //  3015 -  3019
+                "\u8EAC\uC6F6\u8EAC\uC6F7\u8EAC\uC6F8\u8EAC\uC6F9\u8EAC\uC6FA" + //  3020 -  3024
+                "\u8EAC\uC6FB\u8EAC\uC6FC\u8EAC\uC6FD\u8EAC\uC6FE\u8EAC\uC7A1" + //  3025 -  3029
+                "\u8EAC\uC7A2\u8EAC\uC7A3\u8EAC\uC7A4\u8EAC\uC7A5\u8EAC\uC7A6" + //  3030 -  3034
+                "\u8EAC\uC7A7\u8EAC\uC7A8\u8EAC\uC7A9\u8EAC\uC7AA\u8EAC\uC7AB" + //  3035 -  3039
+                "\u8EAC\uC7AC\u8EAC\uC5E9\u8EAC\uC5EA\u8EAC\uC5EB\u8EAC\uC5EC" + //  3040 -  3044
+                "\u8EAC\uC5ED\u8EAC\uC5EE\u8EAC\uC5EF\u8EAC\uC5F0\u8EAC\uC5F1" + //  3045 -  3049
+                "\u8EAC\uC5F2\u8EAC\uC5F3\u8EAC\uC5F4\u8EAC\uC5F5\u8EAC\uC5F6" + //  3050 -  3054
+                "\u8EAC\uC5F7\u8EAC\uC5F8\u8EAC\uC5F9\u8EAC\uC5FA\u8EAC\uC5FB" + //  3055 -  3059
+                "\u8EAC\uC5FC\u8EAC\uC5FD\u8EAC\uC5FE\u8EAC\uC6A1\u8EAC\uC6A2" + //  3060 -  3064
+                "\u8EAC\uC6A3\u8EAC\uC6A4\u8EAC\uC6A5\u8EAC\uC6A6\u8EAC\uC6A7" + //  3065 -  3069
+                "\u8EAC\uC6A8\u8EAC\uC6A9\u8EAC\uC6AA\u8EAC\uC6AB\u8EAC\uC6AC" + //  3070 -  3074
+                "\u8EAC\uC6AD\u8EAC\uC6AE\u8EAC\uC6AF\u8EAC\uC6B0\u8EAC\uC6B1" + //  3075 -  3079
+                "\u8EAC\uC6B2\u8EAC\uC6B3\u8EAC\uC6B4\u8EAC\uC6B5\u8EAC\uC6B6" + //  3080 -  3084
+                "\u8EAC\uC6B7\u8EAC\uC6B8\u8EAC\uC6B9\u8EAC\uC6BA\u8EAC\uC6BB" + //  3085 -  3089
+                "\u8EAC\uC6BC\u8EAC\uC6BD\u8EAC\uC6BE\u8EAC\uC6BF\u8EAC\uC6C0" + //  3090 -  3094
+                "\u8EAC\uC6C1\u8EAC\uC6C2\u8EAC\uC6C3\u8EAC\uC6C4\u8EAC\uC6C5" + //  3095 -  3099
+                "\u8EAC\uC6C6\u8EAC\uC6C7\u8EAC\uC6C8\u8EAC\uC6C9\u8EAC\uC6CA" + //  3100 -  3104
+                "\u8EAC\uC5A9\u8EAC\uC5AA\u8EAC\uC5AB\u8EAC\uC5AC\u8EAC\uC5AD" + //  3105 -  3109
+                "\u8EAC\uC5AE\u8EAC\uC5AF\u8EAC\uC5B0\u8EAC\uC5B1\u8EAC\uC5B2" + //  3110 -  3114
+                "\u8EAC\uC5B3\u8EAC\uC5B4\u8EAC\uC5B5\u8EAC\uC5B6\u8EAC\uC5B7" + //  3115 -  3119
+                "\u8EAC\uC5B8\u8EAC\uC5B9\u8EAC\uC5BA\u8EAC\uC5BB\u8EAC\uC5BC" + //  3120 -  3124
+                "\u8EAC\uC5BD\u8EAC\uC5BE\u8EAC\uC5BF\u8EAC\uC5C0\u8EAC\uC5C1" + //  3125 -  3129
+                "\u8EAC\uC5C2\u8EAC\uC5C3\u8EAC\uC5C4\u8EAC\uC5C5\u8EAC\uC5C6" + //  3130 -  3134
+                "\u8EAC\uC5C7\u8EAC\uC5C8\u8EAC\uC5C9\u8EAC\uC5CA\u8EAC\uC5CB" + //  3135 -  3139
+                "\u8EAC\uC5CC\u8EAC\uC5CD\u8EAC\uC5CE\u8EAC\uC5CF\u8EAC\uC5D0" + //  3140 -  3144
+                "\u8EAC\uC5D1\u8EAC\uC5D2\u8EAC\uC5D3\u8EAC\uC5D4\u8EAC\uC5D5" + //  3145 -  3149
+                "\u8EAC\uC5D6\u8EAC\uC5D7\u8EAC\uC5D8\u8EAC\uC5D9\u8EAC\uC5DA" + //  3150 -  3154
+                "\u8EAC\uC5DB\u8EAC\uC5DC\u8EAC\uC5DD\u8EAC\uC5DE\u8EAC\uC5DF" + //  3155 -  3159
+                "\u8EAC\uC5E0\u8EAC\uC5E1\u8EAC\uC5E2\u8EAC\uC5E3\u8EAC\uC5E4" + //  3160 -  3164
+                "\u8EAC\uC5E5\u8EAC\uC5E6\u8EAC\uC5E7\u8EAC\uC5E8\u8EAC\uC4C7" + //  3165 -  3169
+                "\u8EAC\uC4C8\u8EAC\uC4C9\u8EAC\uC4CA\u8EAC\uC4CB\u8EAC\uC4CC" + //  3170 -  3174
+                "\u8EAC\uC4CD\u8EAC\uC4CE\u8EAC\uC4CF\u8EAC\uC4D0\u8EAC\uC4D1" + //  3175 -  3179
+                "\u8EAC\uC4D2\u8EAC\uC4D3\u8EAC\uC4D4\u8EAC\uC4D5\u8EAC\uC4D6" + //  3180 -  3184
+                "\u8EAC\uC4D7\u8EAC\uC4D8\u8EAC\uC4D9\u8EAC\uC4DA\u8EAC\uC4DB" + //  3185 -  3189
+                "\u8EAC\uC4DC\u8EAC\uC4DD\u8EAC\uC4DE\u8EAC\uC4DF\u8EAC\uC4E0" + //  3190 -  3194
+                "\u8EAC\uC4E1\u8EAC\uC4E2\u8EAC\uC4E3\u8EAC\uC4E4\u8EAC\uC4E5" + //  3195 -  3199
+                "\u8EAC\uC4E6\u8EAC\uC4E7\u8EAC\uC4E8\u8EAC\uC4E9\u8EAC\uC4EA" + //  3200 -  3204
+                "\u8EAC\uC4EB\u8EAC\uC4EC\u8EAC\uC4ED\u8EAC\uC4EE\u8EAC\uC4EF" + //  3205 -  3209
+                "\u8EAC\uC4F0\u8EAC\uC4F1\u8EAC\uC4F2\u8EAC\uC4F3\u8EAC\uC4F4" + //  3210 -  3214
+                "\u8EAC\uC4F5\u8EAC\uC4F6\u8EAC\uC4F7\u8EAC\uC4F8\u8EAC\uC4F9" + //  3215 -  3219
+                "\u8EAC\uC4FA\u8EAC\uC4FB\u8EAC\uC4FC\u8EAC\uC4FD\u8EAC\uC4FE" + //  3220 -  3224
+                "\u8EAC\uC5A1\u8EAC\uC5A2\u8EAC\uC5A3\u8EAC\uC5A4\u8EAC\uC5A5" + //  3225 -  3229
+                "\u8EAC\uC5A6\u8EAC\uC5A7\u8EAC\uC5A8\u8EAC\uC3E5\u8EAC\uC3E6" + //  3230 -  3234
+                "\u8EAC\uC3E7\u8EAC\uC3E8\u8EAC\uC3E9\u8EAC\uC3EA\u8EAC\uC3EB" + //  3235 -  3239
+                "\u8EAC\uC3EC\u8EAC\uC3ED\u8EAC\uC3EE\u8EAC\uC3EF\u8EAC\uC3F0" + //  3240 -  3244
+                "\u8EAC\uC3F1\u8EAC\uC3F2\u8EAC\uC3F3\u8EAC\uC3F4\u8EAC\uC3F5" + //  3245 -  3249
+                "\u8EAC\uC3F6\u8EAC\uC3F7\u8EAC\uC3F8\u8EAC\uC3F9\u8EAC\uC3FA" + //  3250 -  3254
+                "\u8EAC\uC3FB\u8EAC\uC3FC\u8EAC\uC3FD\u8EAC\uC3FE\u8EAC\uC4A1" + //  3255 -  3259
+                "\u8EAC\uC4A2\u8EAC\uC4A3\u8EAC\uC4A4\u8EAC\uC4A5\u8EAC\uC4A6" + //  3260 -  3264
+                "\u8EAC\uC4A7\u8EAC\uC4A8\u8EAC\uC4A9\u8EAC\uC4AA\u8EAC\uC4AB" + //  3265 -  3269
+                "\u8EAC\uC4AC\u8EAC\uC4AD\u8EAC\uC4AE\u8EAC\uC4AF\u8EAC\uC4B0" + //  3270 -  3274
+                "\u8EAC\uC4B1\u8EAC\uC4B2\u8EAC\uC4B3\u8EAC\uC4B4\u8EAC\uC4B5" + //  3275 -  3279
+                "\u8EAC\uC4B6\u8EAC\uC4B7\u8EAC\uC4B8\u8EAC\uC4B9\u8EAC\uC4BA" + //  3280 -  3284
+                "\u8EAC\uC4BB\u8EAC\uC4BC\u8EAC\uC4BD\u8EAC\uC4BE\u8EAC\uC4BF" + //  3285 -  3289
+                "\u8EAC\uC4C0\u8EAC\uC4C1\u8EAC\uC4C2\u8EAC\uC4C3\u8EAC\uC4C4" + //  3290 -  3294
+                "\u8EAC\uC4C5\u8EAC\uC4C6\u8EAC\uC3A5\u8EAC\uC3A6\u8EAC\uC3A7" + //  3295 -  3299
+                "\u8EAC\uC3A8\u8EAC\uC3A9\u8EAC\uC3AA\u8EAC\uC3AB\u8EAC\uC3AC" + //  3300 -  3304
+                "\u8EAC\uC3AD\u8EAC\uC3AE\u8EAC\uC3AF\u8EAC\uC3B0\u8EAC\uC3B1" + //  3305 -  3309
+                "\u8EAC\uC3B2\u8EAC\uC3B3\u8EAC\uC3B4\u8EAC\uC3B5\u8EAC\uC3B6" + //  3310 -  3314
+                "\u8EAC\uC3B7\u8EAC\uC3B8\u8EAC\uC3B9\u8EAC\uC3BA\u8EAC\uC3BB" + //  3315 -  3319
+                "\u8EAC\uC3BC\u8EAC\uC3BD\u8EAC\uC3BE\u8EAC\uC3BF\u8EAC\uC3C0" + //  3320 -  3324
+                "\u8EAC\uC3C1\u8EAC\uC3C2\u8EAC\uC3C3\u8EAC\uC3C4\u8EAC\uC3C5" + //  3325 -  3329
+                "\u8EAC\uC3C6\u8EAC\uC3C7\u8EAC\uC3C8\u8EAC\uC3C9\u8EAC\uC3CA" + //  3330 -  3334
+                "\u8EAC\uC3CB\u8EAC\uC3CC\u8EAC\uC3CD\u8EAC\uC3CE\u8EAC\uC3CF" + //  3335 -  3339
+                "\u8EAC\uC3D0\u8EAC\uC3D1\u8EAC\uC3D2\u8EAC\uC3D3\u8EAC\uC3D4" + //  3340 -  3344
+                "\u8EAC\uC3D5\u8EAC\uC3D6\u8EAC\uC3D7\u8EAC\uC3D8\u8EAC\uC3D9" + //  3345 -  3349
+                "\u8EAC\uC3DA\u8EAC\uC3DB\u8EAC\uC3DC\u8EAC\uC3DD\u8EAC\uC3DE" + //  3350 -  3354
+                "\u8EAC\uC3DF\u8EAC\uC3E0\u8EAC\uC3E1\u8EAC\uC3E2\u8EAC\uC3E3" + //  3355 -  3359
+                "\u8EAC\uC3E4\u8EAC\uC2C3\u8EAC\uC2C4\u8EAC\uC2C5\u8EAC\uC2C6" + //  3360 -  3364
+                "\u8EAC\uC2C7\u8EAC\uC2C8\u8EAC\uC2C9\u8EAC\uC2CA\u8EAC\uC2CB" + //  3365 -  3369
+                "\u8EAC\uC2CC\u8EAC\uC2CD\u8EAC\uC2CE\u8EAC\uC2CF\u8EAC\uC2D0" + //  3370 -  3374
+                "\u8EAC\uC2D1\u8EAC\uC2D2\u8EAC\uC2D3\u8EAC\uC2D4\u8EAC\uC2D5" + //  3375 -  3379
+                "\u8EAC\uC2D6\u8EAC\uC2D7\u8EAC\uC2D8\u8EAC\uC2D9\u8EAC\uC2DA" + //  3380 -  3384
+                "\u8EAC\uC2DB\u8EAC\uC2DC\u8EAC\uC2DD\u8EAC\uC2DE\u8EAC\uC2DF" + //  3385 -  3389
+                "\u8EAC\uC2E0\u8EAC\uC2E1\u8EAC\uC2E2\u8EAC\uC2E3\u8EAC\uC2E4" + //  3390 -  3394
+                "\u8EAC\uC2E5\u8EAC\uC2E6\u8EAC\uC2E7\u8EAC\uC2E8\u8EAC\uC2E9" + //  3395 -  3399
+                "\u8EAC\uC2EA\u8EAC\uC2EB\u8EAC\uC2EC\u8EAC\uC2ED\u8EAC\uC2EE" + //  3400 -  3404
+                "\u8EAC\uC2EF\u8EAC\uC2F0\u8EAC\uC2F1\u8EAC\uC2F2\u8EAC\uC2F3" + //  3405 -  3409
+                "\u8EAC\uC2F4\u8EAC\uC2F5\u8EAC\uC2F6\u8EAC\uC2F7\u8EAC\uC2F8" + //  3410 -  3414
+                "\u8EAC\uC2F9\u8EAC\uC2FA\u8EAC\uC2FB\u8EAC\uC2FC\u8EAC\uC2FD" + //  3415 -  3419
+                "\u8EAC\uC2FE\u8EAC\uC3A1\u8EAC\uC3A2\u8EAC\uC3A3\u8EAC\uC3A4" + //  3420 -  3424
+                "\u8EAC\uC1E1\u8EAC\uC1E2\u8EAC\uC1E3\u8EAC\uC1E4\u8EAC\uC1E5" + //  3425 -  3429
+                "\u8EAC\uC1E6\u8EAC\uC1E7\u8EAC\uC1E8\u8EAC\uC1E9\u8EAC\uC1EA" + //  3430 -  3434
+                "\u8EAC\uC1EB\u8EAC\uC1EC\u8EAC\uC1ED\u8EAC\uC1EE\u8EAC\uC1EF" + //  3435 -  3439
+                "\u8EAC\uC1F0\u8EAC\uC1F1\u8EAC\uC1F2\u8EAC\uC1F3\u8EAC\uC1F4" + //  3440 -  3444
+                "\u8EAC\uC1F5\u8EAC\uC1F6\u8EAC\uC1F7\u8EAC\uC1F8\u8EAC\uC1F9" + //  3445 -  3449
+                "\u8EAC\uC1FA\u8EAC\uC1FB\u8EAC\uC1FC\u8EAC\uC1FD\u8EAC\uC1FE" + //  3450 -  3454
+                "\u8EAC\uC2A1\u8EAC\uC2A2\u8EAC\uC2A3\u8EAC\uC2A4\u8EAC\uC2A5" + //  3455 -  3459
+                "\u8EAC\uC2A6\u8EAC\uC2A7\u8EAC\uC2A8\u8EAC\uC2A9\u8EAC\uC2AA" + //  3460 -  3464
+                "\u8EAC\uC2AB\u8EAC\uC2AC\u8EAC\uC2AD\u8EAC\uC2AE\u8EAC\uC2AF" + //  3465 -  3469
+                "\u8EAC\uC2B0\u8EAC\uC2B1\u8EAC\uC2B2\u8EAC\uC2B3\u8EAC\uC2B4" + //  3470 -  3474
+                "\u8EAC\uC2B5\u8EAC\uC2B6\u8EAC\uC2B7\u8EAC\uC2B8\u8EAC\uC2B9" + //  3475 -  3479
+                "\u8EAC\uC2BA\u8EAC\uC2BB\u8EAC\uC2BC\u8EAC\uC2BD\u8EAC\uC2BE" + //  3480 -  3484
+                "\u8EAC\uC2BF\u8EAC\uC2C0\u8EAC\uC2C1\u8EAC\uC2C2\u8EAC\uC1A1" + //  3485 -  3489
+                "\u8EAC\uC1A2\u8EAC\uC1A3\u8EAC\uC1A4\u8EAC\uC1A5\u8EAC\uC1A6" + //  3490 -  3494
+                "\u8EAC\uC1A7\u8EAC\uC1A8\u8EAC\uC1A9\u8EAC\uC1AA\u8EAC\uC1AB" + //  3495 -  3499
+                "\u8EAC\uC1AC\u8EAC\uC1AD\u8EAC\uC1AE\u8EAC\uC1AF\u8EAC\uC1B0" + //  3500 -  3504
+                "\u8EAC\uC1B1\u8EAC\uC1B2\u8EAC\uC1B3\u8EAC\uC1B4\u8EAC\uC1B5" + //  3505 -  3509
+                "\u8EAC\uC1B6\u8EAC\uC1B7\u8EAC\uC1B8\u8EAC\uC1B9\u8EAC\uC1BA" + //  3510 -  3514
+                "\u8EAC\uC1BB\u8EAC\uC1BC\u8EAC\uC1BD\u8EAC\uC1BE\u8EAC\uC1BF" + //  3515 -  3519
+                "\u8EAC\uC1C0\u8EAC\uC1C1\u8EAC\uC1C2\u8EAC\uC1C3\u8EAC\uC1C4" + //  3520 -  3524
+                "\u8EAC\uC1C5\u8EAC\uC1C6\u8EAC\uC1C7\u8EAC\uC1C8\u8EAC\uC1C9" + //  3525 -  3529
+                "\u8EAC\uC1CA\u8EAC\uC1CB\u8EAC\uC1CC\u8EAC\uC1CD\u8EAC\uC1CE" + //  3530 -  3534
+                "\u8EAC\uC1CF\u8EAC\uC1D0\u8EAC\uC1D1\u8EAC\uC1D2\u8EAC\uC1D3" + //  3535 -  3539
+                "\u8EAC\uC1D4\u8EAC\uC1D5\u8EAC\uC1D6\u8EAC\uC1D7\u8EAC\uC1D8" + //  3540 -  3544
+                "\u8EAC\uC1D9\u8EAC\uC1DA\u8EAC\uC1DB\u8EAC\uC1DC\u8EAC\uC1DD" + //  3545 -  3549
+                "\u8EAC\uC1DE\u8EAC\uC1DF\u8EAC\uC1E0\u8EAC\uC0BF\u8EAC\uC0C0" + //  3550 -  3554
+                "\u8EAC\uC0C1\u8EAC\uC0C2\u8EAC\uC0C3\u8EAC\uC0C4\u8EAC\uC0C5" + //  3555 -  3559
+                "\u8EAC\uC0C6\u8EAC\uC0C7\u8EAC\uC0C8\u8EAC\uC0C9\u8EAC\uC0CA" + //  3560 -  3564
+                "\u8EAC\uC0CB\u8EAC\uC0CC\u8EAC\uC0CD\u8EAC\uC0CE\u8EAC\uC0CF" + //  3565 -  3569
+                "\u8EAC\uC0D0\u8EAC\uC0D1\u8EAC\uC0D2\u8EAC\uC0D3\u8EAC\uC0D4" + //  3570 -  3574
+                "\u8EAC\uC0D5\u8EAC\uC0D6\u8EAC\uC0D7\u8EAC\uC0D8\u8EAC\uC0D9" + //  3575 -  3579
+                "\u8EAC\uC0DA\u8EAC\uC0DB\u8EAC\uC0DC\u8EAC\uC0DD\u8EAC\uC0DE" + //  3580 -  3584
+                "\u8EAC\uC0DF\u8EAC\uC0E0\u8EAC\uC0E1\u8EAC\uC0E2\u8EAC\uC0E3" + //  3585 -  3589
+                "\u8EAC\uC0E4\u8EAC\uC0E5\u8EAC\uC0E6\u8EAC\uC0E7\u8EAC\uC0E8" + //  3590 -  3594
+                "\u8EAC\uC0E9\u8EAC\uC0EA\u8EAC\uC0EB\u8EAC\uC0EC\u8EAC\uC0ED" + //  3595 -  3599
+                "\u8EAC\uC0EE\u8EAC\uC0EF\u8EAC\uC0F0\u8EAC\uC0F1\u8EAC\uC0F2" + //  3600 -  3604
+                "\u8EAC\uC0F3\u8EAC\uC0F4\u8EAC\uC0F5\u8EAC\uC0F6\u8EAC\uC0F7" + //  3605 -  3609
+                "\u8EAC\uC0F8\u8EAC\uC0F9\u8EAC\uC0FA\u8EAC\uC0FB\u8EAC\uC0FC" + //  3610 -  3614
+                "\u8EAC\uC0FD\u8EAC\uC0FE\u8EAC\uBFDD\u8EAC\uBFDE\u8EAC\uBFDF" + //  3615 -  3619
+                "\u8EAC\uBFE0\u8EAC\uBFE1\u8EAC\uBFE2\u8EAC\uBFE3\u8EAC\uBFE4" + //  3620 -  3624
+                "\u8EAC\uBFE5\u8EAC\uBFE6\u8EAC\uBFE7\u8EAC\uBFE8\u8EAC\uBFE9" + //  3625 -  3629
+                "\u8EAC\uBFEA\u8EAC\uBFEB\u8EAC\uBFEC\u8EAC\uBFED\u8EAC\uBFEE" + //  3630 -  3634
+                "\u8EAC\uBFEF\u8EAC\uBFF0\u8EAC\uBFF1\u8EAC\uBFF2\u8EAC\uBFF3" + //  3635 -  3639
+                "\u8EAC\uBFF4\u8EAC\uBFF5\u8EAC\uBFF6\u8EAC\uBFF7\u8EAC\uBFF8" + //  3640 -  3644
+                "\u8EAC\uBFF9\u8EAC\uBFFA\u8EAC\uBFFB\u8EAC\uBFFC\u8EAC\uBFFD" + //  3645 -  3649
+                "\u8EAC\uBFFE\u8EAC\uC0A1\u8EAC\uC0A2\u8EAC\uC0A3\u8EAC\uC0A4" + //  3650 -  3654
+                "\u8EAC\uC0A5\u8EAC\uC0A6\u8EAC\uC0A7\u8EAC\uC0A8\u8EAC\uC0A9" + //  3655 -  3659
+                "\u8EAC\uC0AA\u8EAC\uC0AB\u8EAC\uC0AC\u8EAC\uC0AD\u8EAC\uC0AE" + //  3660 -  3664
+                "\u8EAC\uC0AF\u8EAC\uC0B0\u8EAC\uC0B1\u8EAC\uC0B2\u8EAC\uC0B3" + //  3665 -  3669
+                "\u8EAC\uC0B4\u8EAC\uC0B5\u8EAC\uC0B6\u8EAC\uC0B7\u8EAC\uC0B8" + //  3670 -  3674
+                "\u8EAC\uC0B9\u8EAC\uC0BA\u8EAC\uC0BB\u8EAC\uC0BC\u8EAC\uC0BD" + //  3675 -  3679
+                "\u8EAC\uC0BE\u8EAC\uBEFB\u8EAC\uBEFC\u8EAC\uBEFD\u8EAC\uBEFE" + //  3680 -  3684
+                "\u8EAC\uBFA1\u8EAC\uBFA2\u8EAC\uBFA3\u8EAC\uBFA4\u8EAC\uBFA5" + //  3685 -  3689
+                "\u8EAC\uBFA6\u8EAC\uBFA7\u8EAC\uBFA8\u8EAC\uBFA9\u8EAC\uBFAA" + //  3690 -  3694
+                "\u8EAC\uBFAB\u8EAC\uBFAC\u8EAC\uBFAD\u8EAC\uBFAE\u8EAC\uBFAF" + //  3695 -  3699
+                "\u8EAC\uBFB0\u8EAC\uBFB1\u8EAC\uBFB2\u8EAC\uBFB3\u8EAC\uBFB4" + //  3700 -  3704
+                "\u8EAC\uBFB5\u8EAC\uBFB6\u8EAC\uBFB7\u8EAC\uBFB8\u8EAC\uBFB9" + //  3705 -  3709
+                "\u8EAC\uBFBA\u8EAC\uBFBB\u8EAC\uBFBC\u8EAC\uBFBD\u8EAC\uBFBE" + //  3710 -  3714
+                "\u8EAC\uBFBF\u8EAC\uBFC0\u8EAC\uBFC1\u8EAC\uBFC2\u8EAC\uBFC3" + //  3715 -  3719
+                "\u8EAC\uBFC4\u8EAC\uBFC5\u8EAC\uBFC6\u8EAC\uBFC7\u8EAC\uBFC8" + //  3720 -  3724
+                "\u8EAC\uBFC9\u8EAC\uBFCA\u8EAC\uBFCB\u8EAC\uBFCC\u8EAC\uBFCD" + //  3725 -  3729
+                "\u8EAC\uBFCE\u8EAC\uBFCF\u8EAC\uBFD0\u8EAC\uBFD1\u8EAC\uBFD2" + //  3730 -  3734
+                "\u8EAC\uBFD3\u8EAC\uBFD4\u8EAC\uBFD5\u8EAC\uBFD6\u8EAC\uBFD7" + //  3735 -  3739
+                "\u8EAC\uBFD8\u8EAC\uBFD9\u8EAC\uBFDA\u8EAC\uBFDB\u8EAC\uBFDC" + //  3740 -  3744
+                "\u8EAC\uBEBB\u8EAC\uBEBC\u8EAC\uBEBD\u8EAC\uBEBE\u8EAC\uBEBF" + //  3745 -  3749
+                "\u8EAC\uBEC0\u8EAC\uBEC1\u8EAC\uBEC2\u8EAC\uBEC3\u8EAC\uBEC4" + //  3750 -  3754
+                "\u8EAC\uBEC5\u8EAC\uBEC6\u8EAC\uBEC7\u8EAC\uBEC8\u8EAC\uBEC9" + //  3755 -  3759
+                "\u8EAC\uBECA\u8EAC\uBECB\u8EAC\uBECC\u8EAC\uBECD\u8EAC\uBECE" + //  3760 -  3764
+                "\u8EAC\uBECF\u8EAC\uBED0\u8EAC\uBED1\u8EAC\uBED2\u8EAC\uBED3" + //  3765 -  3769
+                "\u8EAC\uBED4\u8EAC\uBED5\u8EAC\uBED6\u8EAC\uBED7\u8EAC\uBED8" + //  3770 -  3774
+                "\u8EAC\uBED9\u8EAC\uBEDA\u8EAC\uBEDB\u8EAC\uBEDC\u8EAC\uBEDD" + //  3775 -  3779
+                "\u8EAC\uBEDE\u8EAC\uBEDF\u8EAC\uBEE0\u8EAC\uBEE1\u8EAC\uBEE2" + //  3780 -  3784
+                "\u8EAC\uBEE3\u8EAC\uBEE4\u8EAC\uBEE5\u8EAC\uBEE6\u8EAC\uBEE7" + //  3785 -  3789
+                "\u8EAC\uBEE8\u8EAC\uBEE9\u8EAC\uBEEA\u8EAC\uBEEB\u8EAC\uBEEC" + //  3790 -  3794
+                "\u8EAC\uBEED\u8EAC\uBEEE\u8EAC\uBEEF\u8EAC\uBEF0\u8EAC\uBEF1" + //  3795 -  3799
+                "\u8EAC\uBEF2\u8EAC\uBEF3\u8EAC\uBEF4\u8EAC\uBEF5\u8EAC\uBEF6" + //  3800 -  3804
+                "\u8EAC\uBEF7\u8EAC\uBEF8\u8EAC\uBEF9\u8EAC\uBEFA\u8EAC\uBDD9" + //  3805 -  3809
+                "\u8EAC\uBDDA\u8EAC\uBDDB\u8EAC\uBDDC\u8EAC\uBDDD\u8EAC\uBDDE" + //  3810 -  3814
+                "\u8EAC\uBDDF\u8EAC\uBDE0\u8EAC\uBDE1\u8EAC\uBDE2\u8EAC\uBDE3" + //  3815 -  3819
+                "\u8EAC\uBDE4\u8EAC\uBDE5\u8EAC\uBDE6\u8EAC\uBDE7\u8EAC\uBDE8" + //  3820 -  3824
+                "\u8EAC\uBDE9\u8EAC\uBDEA\u8EAC\uBDEB\u8EAC\uBDEC\u8EAC\uBDED" + //  3825 -  3829
+                "\u8EAC\uBDEE\u8EAC\uBDEF\u8EAC\uBDF0\u8EAC\uBDF1\u8EAC\uBDF2" + //  3830 -  3834
+                "\u8EAC\uBDF3\u8EAC\uBDF4\u8EAC\uBDF5\u8EAC\uBDF6\u8EAC\uBDF7" + //  3835 -  3839
+                "\u8EAC\uBDF8\u8EAC\uBDF9\u8EAC\uBDFA\u8EAC\uBDFB\u8EAC\uBDFC" + //  3840 -  3844
+                "\u8EAC\uBDFD\u8EAC\uBDFE\u8EAC\uBEA1\u8EAC\uBEA2\u8EAC\uBEA3" + //  3845 -  3849
+                "\u8EAC\uBEA4\u8EAC\uBEA5\u8EAC\uBEA6\u8EAC\uBEA7\u8EAC\uBEA8" + //  3850 -  3854
+                "\u8EAC\uBEA9\u8EAC\uBEAA\u8EAC\uBEAB\u8EAC\uBEAC\u8EAC\uBEAD" + //  3855 -  3859
+                "\u8EAC\uBEAE\u8EAC\uBEAF\u8EAC\uBEB0\u8EAC\uBEB1\u8EAC\uBEB2" + //  3860 -  3864
+                "\u8EAC\uBEB3\u8EAC\uBEB4\u8EAC\uBEB5\u8EAC\uBEB6\u8EAC\uBEB7" + //  3865 -  3869
+                "\u8EAC\uBEB8\u8EAC\uBEB9\u8EAC\uBEBA\u8EAC\uBCF7\u8EAC\uBCF8" + //  3870 -  3874
+                "\u8EAC\uBCF9\u8EAC\uBCFA\u8EAC\uBCFB\u8EAC\uBCFC\u8EAC\uBCFD" + //  3875 -  3879
+                "\u8EAC\uBCFE\u8EAC\uBDA1\u8EAC\uBDA2\u8EAC\uBDA3\u8EAC\uBDA4" + //  3880 -  3884
+                "\u8EAC\uBDA5\u8EAC\uBDA6\u8EAC\uBDA7\u8EAC\uBDA8\u8EAC\uBDA9" + //  3885 -  3889
+                "\u8EAC\uBDAA\u8EAC\uBDAB\u8EAC\uBDAC\u8EAC\uBDAD\u8EAC\uBDAE" + //  3890 -  3894
+                "\u8EAC\uBDAF\u8EAC\uBDB0\u8EAC\uBDB1\u8EAC\uBDB2\u8EAC\uBDB3" + //  3895 -  3899
+                "\u8EAC\uBDB4\u8EAC\uBDB5\u8EAC\uBDB6\u8EAC\uBDB7\u8EAC\uBDB8" + //  3900 -  3904
+                "\u8EAC\uBDB9\u8EAC\uBDBA\u8EAC\uBDBB\u8EAC\uBDBC\u8EAC\uBDBD" + //  3905 -  3909
+                "\u8EAC\uBDBE\u8EAC\uBDBF\u8EAC\uBDC0\u8EAC\uBDC1\u8EAC\uBDC2" + //  3910 -  3914
+                "\u8EAC\uBDC3\u8EAC\uBDC4\u8EAC\uBDC5\u8EAC\uBDC6\u8EAC\uBDC7" + //  3915 -  3919
+                "\u8EAC\uBDC8\u8EAC\uBDC9\u8EAC\uBDCA\u8EAC\uBDCB\u8EAC\uBDCC" + //  3920 -  3924
+                "\u8EAC\uBDCD\u8EAC\uBDCE\u8EAC\uBDCF\u8EAC\uBDD0\u8EAC\uBDD1" + //  3925 -  3929
+                "\u8EAC\uBDD2\u8EAC\uBDD3\u8EAC\uBDD4\u8EAC\uBDD5\u8EAC\uBDD6" + //  3930 -  3934
+                "\u8EAC\uBDD7\u8EAC\uBDD8\u8EAC\uBCB7\u8EAC\uBCB8\u8EAC\uBCB9" + //  3935 -  3939
+                "\u8EAC\uBCBA\u8EAC\uBCBB\u8EAC\uBCBC\u8EAC\uBCBD\u8EAC\uBCBE" + //  3940 -  3944
+                "\u8EAC\uBCBF\u8EAC\uBCC0\u8EAC\uBCC1\u8EAC\uBCC2\u8EAC\uBCC3" + //  3945 -  3949
+                "\u8EAC\uBCC4\u8EAC\uBCC5\u8EAC\uBCC6\u8EAC\uBCC7\u8EAC\uBCC8" + //  3950 -  3954
+                "\u8EAC\uBCC9\u8EAC\uBCCA\u8EAC\uBCCB\u8EAC\uBCCC\u8EAC\uBCCD" + //  3955 -  3959
+                "\u8EAC\uBCCE\u8EAC\uBCCF\u8EAC\uBCD0\u8EAC\uBCD1\u8EAC\uBCD2" + //  3960 -  3964
+                "\u8EAC\uBCD3\u8EAC\uBCD4\u8EAC\uBCD5\u8EAC\uBCD6\u8EAC\uBCD7" + //  3965 -  3969
+                "\u8EAC\uBCD8\u8EAC\uBCD9\u8EAC\uBCDA\u8EAC\uBCDB\u8EAC\uBCDC" + //  3970 -  3974
+                "\u8EAC\uBCDD\u8EAC\uBCDE\u8EAC\uBCDF\u8EAC\uBCE0\u8EAC\uBCE1" + //  3975 -  3979
+                "\u8EAC\uBCE2\u8EAC\uBCE3\u8EAC\uBCE4\u8EAC\uBCE5\u8EAC\uBCE6" + //  3980 -  3984
+                "\u8EAC\uBCE7\u8EAC\uBCE8\u8EAC\uBCE9\u8EAC\uBCEA\u8EAC\uBCEB" + //  3985 -  3989
+                "\u8EAC\uBCEC\u8EAC\uBCED\u8EAC\uBCEE\u8EAC\uBCEF\u8EAC\uBCF0" + //  3990 -  3994
+                "\u8EAC\uBCF1\u8EAC\uBCF2\u8EAC\uBCF3\u8EAC\uBCF4\u8EAC\uBCF5" + //  3995 -  3999
+                "\u8EAC\uBCF6\u8EAC\uBBD5\u8EAC\uBBD6\u8EAC\uBBD7\u8EAC\uBBD8" + //  4000 -  4004
+                "\u8EAC\uBBD9\u8EAC\uBBDA\u8EAC\uBBDB\u8EAC\uBBDC\u8EAC\uBBDD" + //  4005 -  4009
+                "\u8EAC\uBBDE\u8EAC\uBBDF\u8EAC\uBBE0\u8EAC\uBBE1\u8EAC\uBBE2" + //  4010 -  4014
+                "\u8EAC\uBBE3\u8EAC\uBBE4\u8EAC\uBBE5\u8EAC\uBBE6\u8EAC\uBBE7" + //  4015 -  4019
+                "\u8EAC\uBBE8\u8EAC\uBBE9\u8EAC\uBBEA\u8EAC\uBBEB\u8EAC\uBBEC" + //  4020 -  4024
+                "\u8EAC\uBBED\u8EAC\uBBEE\u8EAC\uBBEF\u8EAC\uBBF0\u8EAC\uBBF1" + //  4025 -  4029
+                "\u8EAC\uBBF2\u8EAC\uBBF3\u8EAC\uBBF4\u8EAC\uBBF5\u8EAC\uBBF6" + //  4030 -  4034
+                "\u8EAC\uBBF7\u8EAC\uBBF8\u8EAC\uBBF9\u8EAC\uBBFA\u8EAC\uBBFB" + //  4035 -  4039
+                "\u8EAC\uBBFC\u8EAC\uBBFD\u8EAC\uBBFE\u8EAC\uBCA1\u8EAC\uBCA2" + //  4040 -  4044
+                "\u8EAC\uBCA3\u8EAC\uBCA4\u8EAC\uBCA5\u8EAC\uBCA6\u8EAC\uBCA7" + //  4045 -  4049
+                "\u8EAC\uBCA8\u8EAC\uBCA9\u8EAC\uBCAA\u8EAC\uBCAB\u8EAC\uBCAC" + //  4050 -  4054
+                "\u8EAC\uBCAD\u8EAC\uBCAE\u8EAC\uBCAF\u8EAC\uBCB0\u8EAC\uBCB1" + //  4055 -  4059
+                "\u8EAC\uBCB2\u8EAC\uBCB3\u8EAC\uBCB4\u8EAC\uBCB5\u8EAC\uBCB6" + //  4060 -  4064
+                "\u8EAC\uBAF3\u8EAC\uBAF4\u8EAC\uBAF5\u8EAC\uBAF6\u8EAC\uBAF7" + //  4065 -  4069
+                "\u8EAC\uBAF8\u8EAC\uBAF9\u8EAC\uBAFA\u8EAC\uBAFB\u8EAC\uBAFC" + //  4070 -  4074
+                "\u8EAC\uBAFD\u8EAC\uBAFE\u8EAC\uBBA1\u8EAC\uBBA2\u8EAC\uBBA3" + //  4075 -  4079
+                "\u8EAC\uBBA4\u8EAC\uBBA5\u8EAC\uBBA6\u8EAC\uBBA7\u8EAC\uBBA8" + //  4080 -  4084
+                "\u8EAC\uBBA9\u8EAC\uBBAA\u8EAC\uBBAB\u8EAC\uBBAC\u8EAC\uBBAD" + //  4085 -  4089
+                "\u8EAC\uBBAE\u8EAC\uBBAF\u8EAC\uBBB0\u8EAC\uBBB1\u8EAC\uBBB2" + //  4090 -  4094
+                "\u8EAC\uBBB3\u8EAC\uBBB4\u8EAC\uBBB5\u8EAC\uBBB6\u8EAC\uBBB7" + //  4095 -  4099
+                "\u8EAC\uBBB8\u8EAC\uBBB9\u8EAC\uBBBA\u8EAC\uBBBB\u8EAC\uBBBC" + //  4100 -  4104
+                "\u8EAC\uBBBD\u8EAC\uBBBE\u8EAC\uBBBF\u8EAC\uBBC0\u8EAC\uBBC1" + //  4105 -  4109
+                "\u8EAC\uBBC2\u8EAC\uBBC3\u8EAC\uBBC4\u8EAC\uBBC5\u8EAC\uBBC6" + //  4110 -  4114
+                "\u8EAC\uBBC7\u8EAC\uBBC8\u8EAC\uBBC9\u8EAC\uBBCA\u8EAC\uBBCB" + //  4115 -  4119
+                "\u8EAC\uBBCC\u8EAC\uBBCD\u8EAC\uBBCE\u8EAC\uBBCF\u8EAC\uBBD0" + //  4120 -  4124
+                "\u8EAC\uBBD1\u8EAC\uBBD2\u8EAC\uBBD3\u8EAC\uBBD4\u8EAC\uBAB3" + //  4125 -  4129
+                "\u8EAC\uBAB4\u8EAC\uBAB5\u8EAC\uBAB6\u8EAC\uBAB7\u8EAC\uBAB8" + //  4130 -  4134
+                "\u8EAC\uBAB9\u8EAC\uBABA\u8EAC\uBABB\u8EAC\uBABC\u8EAC\uBABD" + //  4135 -  4139
+                "\u8EAC\uBABE\u8EAC\uBABF\u8EAC\uBAC0\u8EAC\uBAC1\u8EAC\uBAC2" + //  4140 -  4144
+                "\u8EAC\uBAC3\u8EAC\uBAC4\u8EAC\uBAC5\u8EAC\uBAC6\u8EAC\uBAC7" + //  4145 -  4149
+                "\u8EAC\uBAC8\u8EAC\uBAC9\u8EAC\uBACA\u8EAC\uBACB\u8EAC\uBACC" + //  4150 -  4154
+                "\u8EAC\uBACD\u8EAC\uBACE\u8EAC\uBACF\u8EAC\uBAD0\u8EAC\uBAD1" + //  4155 -  4159
+                "\u8EAC\uBAD2\u8EAC\uBAD3\u8EAC\uBAD4\u8EAC\uBAD5\u8EAC\uBAD6" + //  4160 -  4164
+                "\u8EAC\uBAD7\u8EAC\uBAD8\u8EAC\uBAD9\u8EAC\uBADA\u8EAC\uBADB" + //  4165 -  4169
+                "\u8EAC\uBADC\u8EAC\uBADD\u8EAC\uBADE\u8EAC\uBADF\u8EAC\uBAE0" + //  4170 -  4174
+                "\u8EAC\uBAE1\u8EAC\uBAE2\u8EAC\uBAE3\u8EAC\uBAE4\u8EAC\uBAE5" + //  4175 -  4179
+                "\u8EAC\uBAE6\u8EAC\uBAE7\u8EAC\uBAE8\u8EAC\uBAE9\u8EAC\uBAEA" + //  4180 -  4184
+                "\u8EAC\uBAEB\u8EAC\uBAEC\u8EAC\uBAED\u8EAC\uBAEE\u8EAC\uBAEF" + //  4185 -  4189
+                "\u8EAC\uBAF0\u8EAC\uBAF1\u8EAC\uBAF2\u8EAC\uB9D1\u8EAC\uB9D2" + //  4190 -  4194
+                "\u8EAC\uB9D3\u8EAC\uB9D4\u8EAC\uB9D5\u8EAC\uB9D6\u8EAC\uB9D7" + //  4195 -  4199
+                "\u8EAC\uB9D8\u8EAC\uB9D9\u8EAC\uB9DA\u8EAC\uB9DB\u8EAC\uB9DC" + //  4200 -  4204
+                "\u8EAC\uB9DD\u8EAC\uB9DE\u8EAC\uB9DF\u8EAC\uB9E0\u8EAC\uB9E1" + //  4205 -  4209
+                "\u8EAC\uB9E2\u8EAC\uB9E3\u8EAC\uB9E4\u8EAC\uB9E5\u8EAC\uB9E6" + //  4210 -  4214
+                "\u8EAC\uB9E7\u8EAC\uB9E8\u8EAC\uB9E9\u8EAC\uB9EA\u8EAC\uB9EB" + //  4215 -  4219
+                "\u8EAC\uB9EC\u8EAC\uB9ED\u8EAC\uB9EE\u8EAC\uB9EF\u8EAC\uB9F0" + //  4220 -  4224
+                "\u8EAC\uB9F1\u8EAC\uB9F2\u8EAC\uB9F3\u8EAC\uB9F4\u8EAC\uB9F5" + //  4225 -  4229
+                "\u8EAC\uB9F6\u8EAC\uB9F7\u8EAC\uB9F8\u8EAC\uB9F9\u8EAC\uB9FA" + //  4230 -  4234
+                "\u8EAC\uB9FB\u8EAC\uB9FC\u8EAC\uB9FD\u8EAC\uB9FE\u8EAC\uBAA1" + //  4235 -  4239
+                "\u8EAC\uBAA2\u8EAC\uBAA3\u8EAC\uBAA4\u8EAC\uBAA5\u8EAC\uBAA6" + //  4240 -  4244
+                "\u8EAC\uBAA7\u8EAC\uBAA8\u8EAC\uBAA9\u8EAC\uBAAA\u8EAC\uBAAB" + //  4245 -  4249
+                "\u8EAC\uBAAC\u8EAC\uBAAD\u8EAC\uBAAE\u8EAC\uBAAF\u8EAC\uBAB0" + //  4250 -  4254
+                "\u8EAC\uBAB1\u8EAC\uBAB2\u8EAC\uB8EF\u8EAC\uB8F0\u8EAC\uB8F1" + //  4255 -  4259
+                "\u8EAC\uB8F2\u8EAC\uB8F3\u8EAC\uB8F4\u8EAC\uB8F5\u8EAC\uB8F6" + //  4260 -  4264
+                "\u8EAC\uB8F7\u8EAC\uB8F8\u8EAC\uB8F9\u8EAC\uB8FA\u8EAC\uB8FB" + //  4265 -  4269
+                "\u8EAC\uB8FC\u8EAC\uB8FD\u8EAC\uB8FE\u8EAC\uB9A1\u8EAC\uB9A2" + //  4270 -  4274
+                "\u8EAC\uB9A3\u8EAC\uB9A4\u8EAC\uB9A5\u8EAC\uB9A6\u8EAC\uB9A7" + //  4275 -  4279
+                "\u8EAC\uB9A8\u8EAC\uB9A9\u8EAC\uB9AA\u8EAC\uB9AB\u8EAC\uB9AC" + //  4280 -  4284
+                "\u8EAC\uB9AD\u8EAC\uB9AE\u8EAC\uB9AF\u8EAC\uB9B0\u8EAC\uB9B1" + //  4285 -  4289
+                "\u8EAC\uB9B2\u8EAC\uB9B3\u8EAC\uB9B4\u8EAC\uB9B5\u8EAC\uB9B6" + //  4290 -  4294
+                "\u8EAC\uB9B7\u8EAC\uB9B8\u8EAC\uB9B9\u8EAC\uB9BA\u8EAC\uB9BB" + //  4295 -  4299
+                "\u8EAC\uB9BC\u8EAC\uB9BD\u8EAC\uB9BE\u8EAC\uB9BF\u8EAC\uB9C0" + //  4300 -  4304
+                "\u8EAC\uB9C1\u8EAC\uB9C2\u8EAC\uB9C3\u8EAC\uB9C4\u8EAC\uB9C5" + //  4305 -  4309
+                "\u8EAC\uB9C6\u8EAC\uB9C7\u8EAC\uB9C8\u8EAC\uB9C9\u8EAC\uB9CA" + //  4310 -  4314
+                "\u8EAC\uB9CB\u8EAC\uB9CC\u8EAC\uB9CD\u8EAC\uB9CE\u8EAC\uB9CF" + //  4315 -  4319
+                "\u8EAC\uB9D0\u8EAC\uB8AF\u8EAC\uB8B0\u8EAC\uB8B1\u8EAC\uB8B2" + //  4320 -  4324
+                "\u8EAC\uB8B3\u8EAC\uB8B4\u8EAC\uB8B5\u8EAC\uB8B6\u8EAC\uB8B7" + //  4325 -  4329
+                "\u8EAC\uB8B8\u8EAC\uB8B9\u8EAC\uB8BA\u8EAC\uB8BB\u8EAC\uB8BC" + //  4330 -  4334
+                "\u8EAC\uB8BD\u8EAC\uB8BE\u8EAC\uB8BF\u8EAC\uB8C0\u8EAC\uB8C1" + //  4335 -  4339
+                "\u8EAC\uB8C2\u8EAC\uB8C3\u8EAC\uB8C4\u8EAC\uB8C5\u8EAC\uB8C6" + //  4340 -  4344
+                "\u8EAC\uB8C7\u8EAC\uB8C8\u8EAC\uB8C9\u8EAC\uB8CA\u8EAC\uB8CB" + //  4345 -  4349
+                "\u8EAC\uB8CC\u8EAC\uB8CD\u8EAC\uB8CE\u8EAC\uB8CF\u8EAC\uB8D0" + //  4350 -  4354
+                "\u8EAC\uB8D1\u8EAC\uB8D2\u8EAC\uB8D3\u8EAC\uB8D4\u8EAC\uB8D5" + //  4355 -  4359
+                "\u8EAC\uB8D6\u8EAC\uB8D7\u8EAC\uB8D8\u8EAC\uB8D9\u8EAC\uB8DA" + //  4360 -  4364
+                "\u8EAC\uB8DB\u8EAC\uB8DC\u8EAC\uB8DD\u8EAC\uB8DE\u8EAC\uB8DF" + //  4365 -  4369
+                "\u8EAC\uB8E0\u8EAC\uB8E1\u8EAC\uB8E2\u8EAC\uB8E3\u8EAC\uB8E4" + //  4370 -  4374
+                "\u8EAC\uB8E5\u8EAC\uB8E6\u8EAC\uB8E7\u8EAC\uB8E8\u8EAC\uB8E9" + //  4375 -  4379
+                "\u8EAC\uB8EA\u8EAC\uB8EB\u8EAC\uB8EC\u8EAC\uB8ED\u8EAC\uB8EE" + //  4380 -  4384
+                "\u8EAC\uB7CD\u8EAC\uB7CE\u8EAC\uB7CF\u8EAC\uB7D0\u8EAC\uB7D1" + //  4385 -  4389
+                "\u8EAC\uB7D2\u8EAC\uB7D3\u8EAC\uB7D4\u8EAC\uB7D5\u8EAC\uB7D6" + //  4390 -  4394
+                "\u8EAC\uB7D7\u8EAC\uB7D8\u8EAC\uB7D9\u8EAC\uB7DA\u8EAC\uB7DB" + //  4395 -  4399
+                "\u8EAC\uB7DC\u8EAC\uB7DD\u8EAC\uB7DE\u8EAC\uB7DF\u8EAC\uB7E0" + //  4400 -  4404
+                "\u8EAC\uB7E1\u8EAC\uB7E2\u8EAC\uB7E3\u8EAC\uB7E4\u8EAC\uB7E5" + //  4405 -  4409
+                "\u8EAC\uB7E6\u8EAC\uB7E7\u8EAC\uB7E8\u8EAC\uB7E9\u8EAC\uB7EA" + //  4410 -  4414
+                "\u8EAC\uB7EB\u8EAC\uB7EC\u8EAC\uB7ED\u8EAC\uB7EE\u8EAC\uB7EF" + //  4415 -  4419
+                "\u8EAC\uB7F0\u8EAC\uB7F1\u8EAC\uB7F2\u8EAC\uB7F3\u8EAC\uB7F4" + //  4420 -  4424
+                "\u8EAC\uB7F5\u8EAC\uB7F6\u8EAC\uB7F7\u8EAC\uB7F8\u8EAC\uB7F9" + //  4425 -  4429
+                "\u8EAC\uB7FA\u8EAC\uB7FB\u8EAC\uB7FC\u8EAC\uB7FD\u8EAC\uB7FE" + //  4430 -  4434
+                "\u8EAC\uB8A1\u8EAC\uB8A2\u8EAC\uB8A3\u8EAC\uB8A4\u8EAC\uB8A5" + //  4435 -  4439
+                "\u8EAC\uB8A6\u8EAC\uB8A7\u8EAC\uB8A8\u8EAC\uB8A9\u8EAC\uB8AA" + //  4440 -  4444
+                "\u8EAC\uB8AB\u8EAC\uB8AC\u8EAC\uB8AD\u8EAC\uB8AE\u8EAC\uB6EB" + //  4445 -  4449
+                "\u8EAC\uB6EC\u8EAC\uB6ED\u8EAC\uB6EE\u8EAC\uB6EF\u8EAC\uB6F0" + //  4450 -  4454
+                "\u8EAC\uB6F1\u8EAC\uB6F2\u8EAC\uB6F3\u8EAC\uB6F4\u8EAC\uB6F5" + //  4455 -  4459
+                "\u8EAC\uB6F6\u8EAC\uB6F7\u8EAC\uB6F8\u8EAC\uB6F9\u8EAC\uB6FA" + //  4460 -  4464
+                "\u8EAC\uB6FB\u8EAC\uB6FC\u8EAC\uB6FD\u8EAC\uB6FE\u8EAC\uB7A1" + //  4465 -  4469
+                "\u8EAC\uB7A2\u8EAC\uB7A3\u8EAC\uB7A4\u8EAC\uB7A5\u8EAC\uB7A6" + //  4470 -  4474
+                "\u8EAC\uB7A7\u8EAC\uB7A8\u8EAC\uB7A9\u8EAC\uB7AA\u8EAC\uB7AB" + //  4475 -  4479
+                "\u8EAC\uB7AC\u8EAC\uB7AD\u8EAC\uB7AE\u8EAC\uB7AF\u8EAC\uB7B0" + //  4480 -  4484
+                "\u8EAC\uB7B1\u8EAC\uB7B2\u8EAC\uB7B3\u8EAC\uB7B4\u8EAC\uB7B5" + //  4485 -  4489
+                "\u8EAC\uB7B6\u8EAC\uB7B7\u8EAC\uB7B8\u8EAC\uB7B9\u8EAC\uB7BA" + //  4490 -  4494
+                "\u8EAC\uB7BB\u8EAC\uB7BC\u8EAC\uB7BD\u8EAC\uB7BE\u8EAC\uB7BF" + //  4495 -  4499
+                "\u8EAC\uB7C0\u8EAC\uB7C1\u8EAC\uB7C2\u8EAC\uB7C3\u8EAC\uB7C4" + //  4500 -  4504
+                "\u8EAC\uB7C5\u8EAC\uB7C6\u8EAC\uB7C7\u8EAC\uB7C8\u8EAC\uB7C9" + //  4505 -  4509
+                "\u8EAC\uB7CA\u8EAC\uB7CB\u8EAC\uB7CC\u8EAC\uB6AB\u8EAC\uB6AC" + //  4510 -  4514
+                "\u8EAC\uB6AD\u8EAC\uB6AE\u8EAC\uB6AF\u8EAC\uB6B0\u8EAC\uB6B1" + //  4515 -  4519
+                "\u8EAC\uB6B2\u8EAC\uB6B3\u8EAC\uB6B4\u8EAC\uB6B5\u8EAC\uB6B6" + //  4520 -  4524
+                "\u8EAC\uB6B7\u8EAC\uB6B8\u8EAC\uB6B9\u8EAC\uB6BA\u8EAC\uB6BB" + //  4525 -  4529
+                "\u8EAC\uB6BC\u8EAC\uB6BD\u8EAC\uB6BE\u8EAC\uB6BF\u8EAC\uB6C0" + //  4530 -  4534
+                "\u8EAC\uB6C1\u8EAC\uB6C2\u8EAC\uB6C3\u8EAC\uB6C4\u8EAC\uB6C5" + //  4535 -  4539
+                "\u8EAC\uB6C6\u8EAC\uB6C7\u8EAC\uB6C8\u8EAC\uB6C9\u8EAC\uB6CA" + //  4540 -  4544
+                "\u8EAC\uB6CB\u8EAC\uB6CC\u8EAC\uB6CD\u8EAC\uB6CE\u8EAC\uB6CF" + //  4545 -  4549
+                "\u8EAC\uB6D0\u8EAC\uB6D1\u8EAC\uB6D2\u8EAC\uB6D3\u8EAC\uB6D4" + //  4550 -  4554
+                "\u8EAC\uB6D5\u8EAC\uB6D6\u8EAC\uB6D7\u8EAC\uB6D8\u8EAC\uB6D9" + //  4555 -  4559
+                "\u8EAC\uB6DA\u8EAC\uB6DB\u8EAC\uB6DC\u8EAC\uB6DD\u8EAC\uB6DE" + //  4560 -  4564
+                "\u8EAC\uB6DF\u8EAC\uB6E0\u8EAC\uB6E1\u8EAC\uB6E2\u8EAC\uB6E3" + //  4565 -  4569
+                "\u8EAC\uB6E4\u8EAC\uB6E5\u8EAC\uB6E6\u8EAC\uB6E7\u8EAC\uB6E8" + //  4570 -  4574
+                "\u8EAC\uB6E9\u8EAC\uB6EA\u8EAC\uB5C9\u8EAC\uB5CA\u8EAC\uB5CB" + //  4575 -  4579
+                "\u8EAC\uB5CC\u8EAC\uB5CD\u8EAC\uB5CE\u8EAC\uB5CF\u8EAC\uB5D0" + //  4580 -  4584
+                "\u8EAC\uB5D1\u8EAC\uB5D2\u8EAC\uB5D3\u8EAC\uB5D4\u8EAC\uB5D5" + //  4585 -  4589
+                "\u8EAC\uB5D6\u8EAC\uB5D7\u8EAC\uB5D8\u8EAC\uB5D9\u8EAC\uB5DA" + //  4590 -  4594
+                "\u8EAC\uB5DB\u8EAC\uB5DC\u8EAC\uB5DD\u8EAC\uB5DE\u8EAC\uB5DF" + //  4595 -  4599
+                "\u8EAC\uB5E0\u8EAC\uB5E1\u8EAC\uB5E2\u8EAC\uB5E3\u8EAC\uB5E4" + //  4600 -  4604
+                "\u8EAC\uB5E5\u8EAC\uB5E6\u8EAC\uB5E7\u8EAC\uB5E8\u8EAC\uB5E9" + //  4605 -  4609
+                "\u8EAC\uB5EA\u8EAC\uB5EB\u8EAC\uB5EC\u8EAC\uB5ED\u8EAC\uB5EE" + //  4610 -  4614
+                "\u8EAC\uB5EF\u8EAC\uB5F0\u8EAC\uB5F1\u8EAC\uB5F2\u8EAC\uB5F3" + //  4615 -  4619
+                "\u8EAC\uB5F4\u8EAC\uB5F5\u8EAC\uB5F6\u8EAC\uB5F7\u8EAC\uB5F8" + //  4620 -  4624
+                "\u8EAC\uB5F9\u8EAC\uB5FA\u8EAC\uB5FB\u8EAC\uB5FC\u8EAC\uB5FD" + //  4625 -  4629
+                "\u8EAC\uB5FE\u8EAC\uB6A1\u8EAC\uB6A2\u8EAC\uB6A3\u8EAC\uB6A4" + //  4630 -  4634
+                "\u8EAC\uB6A5\u8EAC\uB6A6\u8EAC\uB6A7\u8EAC\uB6A8\u8EAC\uB6A9" + //  4635 -  4639
+                "\u8EAC\uB6AA\u8EAC\uB4E7\u8EAC\uB4E8\u8EAC\uB4E9\u8EAC\uB4EA" + //  4640 -  4644
+                "\u8EAC\uB4EB\u8EAC\uB4EC\u8EAC\uB4ED\u8EAC\uB4EE\u8EAC\uB4EF" + //  4645 -  4649
+                "\u8EAC\uB4F0\u8EAC\uB4F1\u8EAC\uB4F2\u8EAC\uB4F3\u8EAC\uB4F4" + //  4650 -  4654
+                "\u8EAC\uB4F5\u8EAC\uB4F6\u8EAC\uB4F7\u8EAC\uB4F8\u8EAC\uB4F9" + //  4655 -  4659
+                "\u8EAC\uB4FA\u8EAC\uB4FB\u8EAC\uB4FC\u8EAC\uB4FD\u8EAC\uB4FE" + //  4660 -  4664
+                "\u8EAC\uB5A1\u8EAC\uB5A2\u8EAC\uB5A3\u8EAC\uB5A4\u8EAC\uB5A5" + //  4665 -  4669
+                "\u8EAC\uB5A6\u8EAC\uB5A7\u8EAC\uB5A8\u8EAC\uB5A9\u8EAC\uB5AA" + //  4670 -  4674
+                "\u8EAC\uB5AB\u8EAC\uB5AC\u8EAC\uB5AD\u8EAC\uB5AE\u8EAC\uB5AF" + //  4675 -  4679
+                "\u8EAC\uB5B0\u8EAC\uB5B1\u8EAC\uB5B2\u8EAC\uB5B3\u8EAC\uB5B4" + //  4680 -  4684
+                "\u8EAC\uB5B5\u8EAC\uB5B6\u8EAC\uB5B7\u8EAC\uB5B8\u8EAC\uB5B9" + //  4685 -  4689
+                "\u8EAC\uB5BA\u8EAC\uB5BB\u8EAC\uB5BC\u8EAC\uB5BD\u8EAC\uB5BE" + //  4690 -  4694
+                "\u8EAC\uB5BF\u8EAC\uB5C0\u8EAC\uB5C1\u8EAC\uB5C2\u8EAC\uB5C3" + //  4695 -  4699
+                "\u8EAC\uB5C4\u8EAC\uB5C5\u8EAC\uB5C6\u8EAC\uB5C7\u8EAC\uB5C8" + //  4700 -  4704
+                "\u8EAC\uB4A7\u8EAC\uB4A8\u8EAC\uB4A9\u8EAC\uB4AA\u8EAC\uB4AB" + //  4705 -  4709
+                "\u8EAC\uB4AC\u8EAC\uB4AD\u8EAC\uB4AE\u8EAC\uB4AF\u8EAC\uB4B0" + //  4710 -  4714
+                "\u8EAC\uB4B1\u8EAC\uB4B2\u8EAC\uB4B3\u8EAC\uB4B4\u8EAC\uB4B5" + //  4715 -  4719
+                "\u8EAC\uB4B6\u8EAC\uB4B7\u8EAC\uB4B8\u8EAC\uB4B9\u8EAC\uB4BA" + //  4720 -  4724
+                "\u8EAC\uB4BB\u8EAC\uB4BC\u8EAC\uB4BD\u8EAC\uB4BE\u8EAC\uB4BF" + //  4725 -  4729
+                "\u8EAC\uB4C0\u8EAC\uB4C1\u8EAC\uB4C2\u8EAC\uB4C3\u8EAC\uB4C4" + //  4730 -  4734
+                "\u8EAC\uB4C5\u8EAC\uB4C6\u8EAC\uB4C7\u8EAC\uB4C8\u8EAC\uB4C9" + //  4735 -  4739
+                "\u8EAC\uB4CA\u8EAC\uB4CB\u8EAC\uB4CC\u8EAC\uB4CD\u8EAC\uB4CE" + //  4740 -  4744
+                "\u8EAC\uB4CF\u8EAC\uB4D0\u8EAC\uB4D1\u8EAC\uB4D2\u8EAC\uB4D3" + //  4745 -  4749
+                "\u8EAC\uB4D4\u8EAC\uB4D5\u8EAC\uB4D6\u8EAC\uB4D7\u8EAC\uB4D8" + //  4750 -  4754
+                "\u8EAC\uB4D9\u8EAC\uB4DA\u8EAC\uB4DB\u8EAC\uB4DC\u8EAC\uB4DD" + //  4755 -  4759
+                "\u8EAC\uB4DE\u8EAC\uB4DF\u8EAC\uB4E0\u8EAC\uB4E1\u8EAC\uB4E2" + //  4760 -  4764
+                "\u8EAC\uB4E3\u8EAC\uB4E4\u8EAC\uB4E5\u8EAC\uB4E6\u8EAC\uB3C5" + //  4765 -  4769
+                "\u8EAC\uB3C6\u8EAC\uB3C7\u8EAC\uB3C8\u8EAC\uB3C9\u8EAC\uB3CA" + //  4770 -  4774
+                "\u8EAC\uB3CB\u8EAC\uB3CC\u8EAC\uB3CD\u8EAC\uB3CE\u8EAC\uB3CF" + //  4775 -  4779
+                "\u8EAC\uB3D0\u8EAC\uB3D1\u8EAC\uB3D2\u8EAC\uB3D3\u8EAC\uB3D4" + //  4780 -  4784
+                "\u8EAC\uB3D5\u8EAC\uB3D6\u8EAC\uB3D7\u8EAC\uB3D8\u8EAC\uB3D9" + //  4785 -  4789
+                "\u8EAC\uB3DA\u8EAC\uB3DB\u8EAC\uB3DC\u8EAC\uB3DD\u8EAC\uB3DE" + //  4790 -  4794
+                "\u8EAC\uB3DF\u8EAC\uB3E0\u8EAC\uB3E1\u8EAC\uB3E2\u8EAC\uB3E3" + //  4795 -  4799
+                "\u8EAC\uB3E4\u8EAC\uB3E5\u8EAC\uB3E6\u8EAC\uB3E7\u8EAC\uB3E8" + //  4800 -  4804
+                "\u8EAC\uB3E9\u8EAC\uB3EA\u8EAC\uB3EB\u8EAC\uB3EC\u8EAC\uB3ED" + //  4805 -  4809
+                "\u8EAC\uB3EE\u8EAC\uB3EF\u8EAC\uB3F0\u8EAC\uB3F1\u8EAC\uB3F2" + //  4810 -  4814
+                "\u8EAC\uB3F3\u8EAC\uB3F4\u8EAC\uB3F5\u8EAC\uB3F6\u8EAC\uB3F7" + //  4815 -  4819
+                "\u8EAC\uB3F8\u8EAC\uB3F9\u8EAC\uB3FA\u8EAC\uB3FB\u8EAC\uB3FC" + //  4820 -  4824
+                "\u8EAC\uB3FD\u8EAC\uB3FE\u8EAC\uB4A1\u8EAC\uB4A2\u8EAC\uB4A3" + //  4825 -  4829
+                "\u8EAC\uB4A4\u8EAC\uB4A5\u8EAC\uB4A6\u8EAC\uB2E3\u8EAC\uB2E4" + //  4830 -  4834
+                "\u8EAC\uB2E5\u8EAC\uB2E6\u8EAC\uB2E7\u8EAC\uB2E8\u8EAC\uB2E9" + //  4835 -  4839
+                "\u8EAC\uB2EA\u8EAC\uB2EB\u8EAC\uB2EC\u8EAC\uB2ED\u8EAC\uB2EE" + //  4840 -  4844
+                "\u8EAC\uB2EF\u8EAC\uB2F0\u8EAC\uB2F1\u8EAC\uB2F2\u8EAC\uB2F3" + //  4845 -  4849
+                "\u8EAC\uB2F4\u8EAC\uB2F5\u8EAC\uB2F6\u8EAC\uB2F7\u8EAC\uB2F8" + //  4850 -  4854
+                "\u8EAC\uB2F9\u8EAC\uB2FA\u8EAC\uB2FB\u8EAC\uB2FC\u8EAC\uB2FD" + //  4855 -  4859
+                "\u8EAC\uB2FE\u8EAC\uB3A1\u8EAC\uB3A2\u8EAC\uB3A3\u8EAC\uB3A4" + //  4860 -  4864
+                "\u8EAC\uB3A5\u8EAC\uB3A6\u8EAC\uB3A7\u8EAC\uB3A8\u8EAC\uB3A9" + //  4865 -  4869
+                "\u8EAC\uB3AA\u8EAC\uB3AB\u8EAC\uB3AC\u8EAC\uB3AD\u8EAC\uB3AE" + //  4870 -  4874
+                "\u8EAC\uB3AF\u8EAC\uB3B0\u8EAC\uB3B1\u8EAC\uB3B2\u8EAC\uB3B3" + //  4875 -  4879
+                "\u8EAC\uB3B4\u8EAC\uB3B5\u8EAC\uB3B6\u8EAC\uB3B7\u8EAC\uB3B8" + //  4880 -  4884
+                "\u8EAC\uB3B9\u8EAC\uB3BA\u8EAC\uB3BB\u8EAC\uB3BC\u8EAC\uB3BD" + //  4885 -  4889
+                "\u8EAC\uB3BE\u8EAC\uB3BF\u8EAC\uB3C0\u8EAC\uB3C1\u8EAC\uB3C2" + //  4890 -  4894
+                "\u8EAC\uB3C3\u8EAC\uB3C4\u8EAC\uB2A3\u8EAC\uB2A4\u8EAC\uB2A5" + //  4895 -  4899
+                "\u8EAC\uB2A6\u8EAC\uB2A7\u8EAC\uB2A8\u8EAC\uB2A9\u8EAC\uB2AA" + //  4900 -  4904
+                "\u8EAC\uB2AB\u8EAC\uB2AC\u8EAC\uB2AD\u8EAC\uB2AE\u8EAC\uB2AF" + //  4905 -  4909
+                "\u8EAC\uB2B0\u8EAC\uB2B1\u8EAC\uB2B2\u8EAC\uB2B3\u8EAC\uB2B4" + //  4910 -  4914
+                "\u8EAC\uB2B5\u8EAC\uB2B6\u8EAC\uB2B7\u8EAC\uB2B8\u8EAC\uB2B9" + //  4915 -  4919
+                "\u8EAC\uB2BA\u8EAC\uB2BB\u8EAC\uB2BC\u8EAC\uB2BD\u8EAC\uB2BE" + //  4920 -  4924
+                "\u8EAC\uB2BF\u8EAC\uB2C0\u8EAC\uB2C1\u8EAC\uB2C2\u8EAC\uB2C3" + //  4925 -  4929
+                "\u8EAC\uB2C4\u8EAC\uB2C5\u8EAC\uB2C6\u8EAC\uB2C7\u8EAC\uB2C8" + //  4930 -  4934
+                "\u8EAC\uB2C9\u8EAC\uB2CA\u8EAC\uB2CB\u8EAC\uB2CC\u8EAC\uB2CD" + //  4935 -  4939
+                "\u8EAC\uB2CE\u8EAC\uB2CF\u8EAC\uB2D0\u8EAC\uB2D1\u8EAC\uB2D2" + //  4940 -  4944
+                "\u8EAC\uB2D3\u8EAC\uB2D4\u8EAC\uB2D5\u8EAC\uB2D6\u8EAC\uB2D7" + //  4945 -  4949
+                "\u8EAC\uB2D8\u8EAC\uB2D9\u8EAC\uB2DA\u8EAC\uB2DB\u8EAC\uB2DC" + //  4950 -  4954
+                "\u8EAC\uB2DD\u8EAC\uB2DE\u8EAC\uB2DF\u8EAC\uB2E0\u8EAC\uB2E1" + //  4955 -  4959
+                "\u8EAC\uB2E2\u8EAC\uB1C1\u8EAC\uB1C2\u8EAC\uB1C3\u8EAC\uB1C4" + //  4960 -  4964
+                "\u8EAC\uB1C5\u8EAC\uB1C6\u8EAC\uB1C7\u8EAC\uB1C8\u8EAC\uB1C9" + //  4965 -  4969
+                "\u8EAC\uB1CA\u8EAC\uB1CB\u8EAC\uB1CC\u8EAC\uB1CD\u8EAC\uB1CE" + //  4970 -  4974
+                "\u8EAC\uB1CF\u8EAC\uB1D0\u8EAC\uB1D1\u8EAC\uB1D2\u8EAC\uB1D3" + //  4975 -  4979
+                "\u8EAC\uB1D4\u8EAC\uB1D5\u8EAC\uB1D6\u8EAC\uB1D7\u8EAC\uB1D8" + //  4980 -  4984
+                "\u8EAC\uB1D9\u8EAC\uB1DA\u8EAC\uB1DB\u8EAC\uB1DC\u8EAC\uB1DD" + //  4985 -  4989
+                "\u8EAC\uB1DE\u8EAC\uB1DF\u8EAC\uB1E0\u8EAC\uB1E1\u8EAC\uB1E2" + //  4990 -  4994
+                "\u8EAC\uB1E3\u8EAC\uB1E4\u8EAC\uB1E5\u8EAC\uB1E6\u8EAC\uB1E7" + //  4995 -  4999
+                "\u8EAC\uB1E8\u8EAC\uB1E9\u8EAC\uB1EA\u8EAC\uB1EB\u8EAC\uB1EC" + //  5000 -  5004
+                "\u8EAC\uB1ED\u8EAC\uB1EE\u8EAC\uB1EF\u8EAC\uB1F0\u8EAC\uB1F1" + //  5005 -  5009
+                "\u8EAC\uB1F2\u8EAC\uB1F3\u8EAC\uB1F4\u8EAC\uB1F5\u8EAC\uB1F6" + //  5010 -  5014
+                "\u8EAC\uB1F7\u8EAC\uB1F8\u8EAC\uB1F9\u8EAC\uB1FA\u8EAC\uB1FB" + //  5015 -  5019
+                "\u8EAC\uB1FC\u8EAC\uB1FD\u8EAC\uB1FE\u8EAC\uB2A1\u8EAC\uB2A2" + //  5020 -  5024
+                "\u8EAC\uB0DF\u8EAC\uB0E0\u8EAC\uB0E1\u8EAC\uB0E2\u8EAC\uB0E3" + //  5025 -  5029
+                "\u8EAC\uB0E4\u8EAC\uB0E5\u8EAC\uB0E6\u8EAC\uB0E7\u8EAC\uB0E8" + //  5030 -  5034
+                "\u8EAC\uB0E9\u8EAC\uB0EA\u8EAC\uB0EB\u8EAC\uB0EC\u8EAC\uB0ED" + //  5035 -  5039
+                "\u8EAC\uB0EE\u8EAC\uB0EF\u8EAC\uB0F0\u8EAC\uB0F1\u8EAC\uB0F2" + //  5040 -  5044
+                "\u8EAC\uB0F3\u8EAC\uB0F4\u8EAC\uB0F5\u8EAC\uB0F6\u8EAC\uB0F7" + //  5045 -  5049
+                "\u8EAC\uB0F8\u8EAC\uB0F9\u8EAC\uB0FA\u8EAC\uB0FB\u8EAC\uB0FC" + //  5050 -  5054
+                "\u8EAC\uB0FD\u8EAC\uB0FE\u8EAC\uB1A1\u8EAC\uB1A2\u8EAC\uB1A3" + //  5055 -  5059
+                "\u8EAC\uB1A4\u8EAC\uB1A5\u8EAC\uB1A6\u8EAC\uB1A7\u8EAC\uB1A8" + //  5060 -  5064
+                "\u8EAC\uB1A9\u8EAC\uB1AA\u8EAC\uB1AB\u8EAC\uB1AC\u8EAC\uB1AD" + //  5065 -  5069
+                "\u8EAC\uB1AE\u8EAC\uB1AF\u8EAC\uB1B0\u8EAC\uB1B1\u8EAC\uB1B2" + //  5070 -  5074
+                "\u8EAC\uB1B3\u8EAC\uB1B4\u8EAC\uB1B5\u8EAC\uB1B6\u8EAC\uB1B7" + //  5075 -  5079
+                "\u8EAC\uB1B8\u8EAC\uB1B9\u8EAC\uB1BA\u8EAC\uB1BB\u8EAC\uB1BC" + //  5080 -  5084
+                "\u8EAC\uB1BD\u8EAC\uB1BE\u8EAC\uB1BF\u8EAC\uB1C0\u8EAC\uAFFD" + //  5085 -  5089
+                "\u8EAC\uAFFE\u8EAC\uB0A1\u8EAC\uB0A2\u8EAC\uB0A3\u8EAC\uB0A4" + //  5090 -  5094
+                "\u8EAC\uB0A5\u8EAC\uB0A6\u8EAC\uB0A7\u8EAC\uB0A8\u8EAC\uB0A9" + //  5095 -  5099
+                "\u8EAC\uB0AA\u8EAC\uB0AB\u8EAC\uB0AC\u8EAC\uB0AD\u8EAC\uB0AE" + //  5100 -  5104
+                "\u8EAC\uB0AF\u8EAC\uB0B0\u8EAC\uB0B1\u8EAC\uB0B2\u8EAC\uB0B3" + //  5105 -  5109
+                "\u8EAC\uB0B4\u8EAC\uB0B5\u8EAC\uB0B6\u8EAC\uB0B7\u8EAC\uB0B8" + //  5110 -  5114
+                "\u8EAC\uB0B9\u8EAC\uB0BA\u8EAC\uB0BB\u8EAC\uB0BC\u8EAC\uB0BD" + //  5115 -  5119
+                "\u8EAC\uB0BE\u8EAC\uB0BF\u8EAC\uB0C0\u8EAC\uB0C1\u8EAC\uB0C2" + //  5120 -  5124
+                "\u8EAC\uB0C3\u8EAC\uB0C4\u8EAC\uB0C5\u8EAC\uB0C6\u8EAC\uB0C7" + //  5125 -  5129
+                "\u8EAC\uB0C8\u8EAC\uB0C9\u8EAC\uB0CA\u8EAC\uB0CB\u8EAC\uB0CC" + //  5130 -  5134
+                "\u8EAC\uB0CD\u8EAC\uB0CE\u8EAC\uB0CF\u8EAC\uB0D0\u8EAC\uB0D1" + //  5135 -  5139
+                "\u8EAC\uB0D2\u8EAC\uB0D3\u8EAC\uB0D4\u8EAC\uB0D5\u8EAC\uB0D6" + //  5140 -  5144
+                "\u8EAC\uB0D7\u8EAC\uB0D8\u8EAC\uB0D9\u8EAC\uB0DA\u8EAC\uB0DB" + //  5145 -  5149
+                "\u8EAC\uB0DC\u8EAC\uB0DD\u8EAC\uB0DE\u8EAC\uAFBD\u8EAC\uAFBE" + //  5150 -  5154
+                "\u8EAC\uAFBF\u8EAC\uAFC0\u8EAC\uAFC1\u8EAC\uAFC2\u8EAC\uAFC3" + //  5155 -  5159
+                "\u8EAC\uAFC4\u8EAC\uAFC5\u8EAC\uAFC6\u8EAC\uAFC7\u8EAC\uAFC8" + //  5160 -  5164
+                "\u8EAC\uAFC9\u8EAC\uAFCA\u8EAC\uAFCB\u8EAC\uAFCC\u8EAC\uAFCD" + //  5165 -  5169
+                "\u8EAC\uAFCE\u8EAC\uAFCF\u8EAC\uAFD0\u8EAC\uAFD1\u8EAC\uAFD2" + //  5170 -  5174
+                "\u8EAC\uAFD3\u8EAC\uAFD4\u8EAC\uAFD5\u8EAC\uAFD6\u8EAC\uAFD7" + //  5175 -  5179
+                "\u8EAC\uAFD8\u8EAC\uAFD9\u8EAC\uAFDA\u8EAC\uAFDB\u8EAC\uAFDC" + //  5180 -  5184
+                "\u8EAC\uAFDD\u8EAC\uAFDE\u8EAC\uAFDF\u8EAC\uAFE0\u8EAC\uAFE1" + //  5185 -  5189
+                "\u8EAC\uAFE2\u8EAC\uAFE3\u8EAC\uAFE4\u8EAC\uAFE5\u8EAC\uAFE6" + //  5190 -  5194
+                "\u8EAC\uAFE7\u8EAC\uAFE8\u8EAC\uAFE9\u8EAC\uAFEA\u8EAC\uAFEB" + //  5195 -  5199
+                "\u8EAC\uAFEC\u8EAC\uAFED\u8EAC\uAFEE\u8EAC\uAFEF\u8EAC\uAFF0" + //  5200 -  5204
+                "\u8EAC\uAFF1\u8EAC\uAFF2\u8EAC\uAFF3\u8EAC\uAFF4\u8EAC\uAFF5" + //  5205 -  5209
+                "\u8EAC\uAFF6\u8EAC\uAFF7\u8EAC\uAFF8\u8EAC\uAFF9\u8EAC\uAFFA" + //  5210 -  5214
+                "\u8EAC\uAFFB\u8EAC\uAFFC\u8EAC\uAEDB\u8EAC\uAEDC\u8EAC\uAEDD" + //  5215 -  5219
+                "\u8EAC\uAEDE\u8EAC\uAEDF\u8EAC\uAEE0\u8EAC\uAEE1\u8EAC\uAEE2" + //  5220 -  5224
+                "\u8EAC\uAEE3\u8EAC\uAEE4\u8EAC\uAEE5\u8EAC\uAEE6\u8EAC\uAEE7" + //  5225 -  5229
+                "\u8EAC\uAEE8\u8EAC\uAEE9\u8EAC\uAEEA\u8EAC\uAEEB\u8EAC\uAEEC" + //  5230 -  5234
+                "\u8EAC\uAEED\u8EAC\uAEEE\u8EAC\uAEEF\u8EAC\uAEF0\u8EAC\uAEF1" + //  5235 -  5239
+                "\u8EAC\uAEF2\u8EAC\uAEF3\u8EAC\uAEF4\u8EAC\uAEF5\u8EAC\uAEF6" + //  5240 -  5244
+                "\u8EAC\uAEF7\u8EAC\uAEF8\u8EAC\uAEF9\u8EAC\uAEFA\u8EAC\uAEFB" + //  5245 -  5249
+                "\u8EAC\uAEFC\u8EAC\uAEFD\u8EAC\uAEFE\u8EAC\uAFA1\u8EAC\uAFA2" + //  5250 -  5254
+                "\u8EAC\uAFA3\u8EAC\uAFA4\u8EAC\uAFA5\u8EAC\uAFA6\u8EAC\uAFA7" + //  5255 -  5259
+                "\u8EAC\uAFA8\u8EAC\uAFA9\u8EAC\uAFAA\u8EAC\uAFAB\u8EAC\uAFAC" + //  5260 -  5264
+                "\u8EAC\uAFAD\u8EAC\uAFAE\u8EAC\uAFAF\u8EAC\uAFB0\u8EAC\uAFB1" + //  5265 -  5269
+                "\u8EAC\uAFB2\u8EAC\uAFB3\u8EAC\uAFB4\u8EAC\uAFB5\u8EAC\uAFB6" + //  5270 -  5274
+                "\u8EAC\uAFB7\u8EAC\uAFB8\u8EAC\uAFB9\u8EAC\uAFBA\u8EAC\uAFBB" + //  5275 -  5279
+                "\u8EAC\uAFBC\u8EAC\uADF9\u8EAC\uADFA\u8EAC\uADFB\u8EAC\uADFC" + //  5280 -  5284
+                "\u8EAC\uADFD\u8EAC\uADFE\u8EAC\uAEA1\u8EAC\uAEA2\u8EAC\uAEA3" + //  5285 -  5289
+                "\u8EAC\uAEA4\u8EAC\uAEA5\u8EAC\uAEA6\u8EAC\uAEA7\u8EAC\uAEA8" + //  5290 -  5294
+                "\u8EAC\uAEA9\u8EAC\uAEAA\u8EAC\uAEAB\u8EAC\uAEAC\u8EAC\uAEAD" + //  5295 -  5299
+                "\u8EAC\uAEAE\u8EAC\uAEAF\u8EAC\uAEB0\u8EAC\uAEB1\u8EAC\uAEB2" + //  5300 -  5304
+                "\u8EAC\uAEB3\u8EAC\uAEB4\u8EAC\uAEB5\u8EAC\uAEB6\u8EAC\uAEB7" + //  5305 -  5309
+                "\u8EAC\uAEB8\u8EAC\uAEB9\u8EAC\uAEBA\u8EAC\uAEBB\u8EAC\uAEBC" + //  5310 -  5314
+                "\u8EAC\uAEBD\u8EAC\uAEBE\u8EAC\uAEBF\u8EAC\uAEC0\u8EAC\uAEC1" + //  5315 -  5319
+                "\u8EAC\uAEC2\u8EAC\uAEC3\u8EAC\uAEC4\u8EAC\uAEC5\u8EAC\uAEC6" + //  5320 -  5324
+                "\u8EAC\uAEC7\u8EAC\uAEC8\u8EAC\uAEC9\u8EAC\uAECA\u8EAC\uAECB" + //  5325 -  5329
+                "\u8EAC\uAECC\u8EAC\uAECD\u8EAC\uAECE\u8EAC\uAECF\u8EAC\uAED0" + //  5330 -  5334
+                "\u8EAC\uAED1\u8EAC\uAED2\u8EAC\uAED3\u8EAC\uAED4\u8EAC\uAED5" + //  5335 -  5339
+                "\u8EAC\uAED6\u8EAC\uAED7\u8EAC\uAED8\u8EAC\uAED9\u8EAC\uAEDA" + //  5340 -  5344
+                "\u8EAC\uADB9\u8EAC\uADBA\u8EAC\uADBB\u8EAC\uADBC\u8EAC\uADBD" + //  5345 -  5349
+                "\u8EAC\uADBE\u8EAC\uADBF\u8EAC\uADC0\u8EAC\uADC1\u8EAC\uADC2" + //  5350 -  5354
+                "\u8EAC\uADC3\u8EAC\uADC4\u8EAC\uADC5\u8EAC\uADC6\u8EAC\uADC7" + //  5355 -  5359
+                "\u8EAC\uADC8\u8EAC\uADC9\u8EAC\uADCA\u8EAC\uADCB\u8EAC\uADCC" + //  5360 -  5364
+                "\u8EAC\uADCD\u8EAC\uADCE\u8EAC\uADCF\u8EAC\uADD0\u8EAC\uADD1" + //  5365 -  5369
+                "\u8EAC\uADD2\u8EAC\uADD3\u8EAC\uADD4\u8EAC\uADD5\u8EAC\uADD6" + //  5370 -  5374
+                "\u8EAC\uADD7\u8EAC\uADD8\u8EAC\uADD9\u8EAC\uADDA\u8EAC\uADDB" + //  5375 -  5379
+                "\u8EAC\uADDC\u8EAC\uADDD\u8EAC\uADDE\u8EAC\uADDF\u8EAC\uADE0" + //  5380 -  5384
+                "\u8EAC\uADE1\u8EAC\uADE2\u8EAC\uADE3\u8EAC\uADE4\u8EAC\uADE5" + //  5385 -  5389
+                "\u8EAC\uADE6\u8EAC\uADE7\u8EAC\uADE8\u8EAC\uADE9\u8EAC\uADEA" + //  5390 -  5394
+                "\u8EAC\uADEB\u8EAC\uADEC\u8EAC\uADED\u8EAC\uADEE\u8EAC\uADEF" + //  5395 -  5399
+                "\u8EAC\uADF0\u8EAC\uADF1\u8EAC\uADF2\u8EAC\uADF3\u8EAC\uADF4" + //  5400 -  5404
+                "\u8EAC\uADF5\u8EAC\uADF6\u8EAC\uADF7\u8EAC\uADF8\u8EAC\uACD7" + //  5405 -  5409
+                "\u8EAC\uACD8\u8EAC\uACD9\u8EAC\uACDA\u8EAC\uACDB\u8EAC\uACDC" + //  5410 -  5414
+                "\u8EAC\uACDD\u8EAC\uACDE\u8EAC\uACDF\u8EAC\uACE0\u8EAC\uACE1" + //  5415 -  5419
+                "\u8EAC\uACE2\u8EAC\uACE3\u8EAC\uACE4\u8EAC\uACE5\u8EAC\uACE6" + //  5420 -  5424
+                "\u8EAC\uACE7\u8EAC\uACE8\u8EAC\uACE9\u8EAC\uACEA\u8EAC\uACEB" + //  5425 -  5429
+                "\u8EAC\uACEC\u8EAC\uACED\u8EAC\uACEE\u8EAC\uACEF\u8EAC\uACF0" + //  5430 -  5434
+                "\u8EAC\uACF1\u8EAC\uACF2\u8EAC\uACF3\u8EAC\uACF4\u8EAC\uACF5" + //  5435 -  5439
+                "\u8EAC\uACF6\u8EAC\uACF7\u8EAC\uACF8\u8EAC\uACF9\u8EAC\uACFA" + //  5440 -  5444
+                "\u8EAC\uACFB\u8EAC\uACFC\u8EAC\uACFD\u8EAC\uACFE\u8EAC\uADA1" + //  5445 -  5449
+                "\u8EAC\uADA2\u8EAC\uADA3\u8EAC\uADA4\u8EAC\uADA5\u8EAC\uADA6" + //  5450 -  5454
+                "\u8EAC\uADA7\u8EAC\uADA8\u8EAC\uADA9\u8EAC\uADAA\u8EAC\uADAB" + //  5455 -  5459
+                "\u8EAC\uADAC\u8EAC\uADAD\u8EAC\uADAE\u8EAC\uADAF\u8EAC\uADB0" + //  5460 -  5464
+                "\u8EAC\uADB1\u8EAC\uADB2\u8EAC\uADB3\u8EAC\uADB4\u8EAC\uADB5" + //  5465 -  5469
+                "\u8EAC\uADB6\u8EAC\uADB7\u8EAC\uADB8\u8EAC\uABF5\u8EAC\uABF6" + //  5470 -  5474
+                "\u8EAC\uABF7\u8EAC\uABF8\u8EAC\uABF9\u8EAC\uABFA\u8EAC\uABFB" + //  5475 -  5479
+                "\u8EAC\uABFC\u8EAC\uABFD\u8EAC\uABFE\u8EAC\uACA1\u8EAC\uACA2" + //  5480 -  5484
+                "\u8EAC\uACA3\u8EAC\uACA4\u8EAC\uACA5\u8EAC\uACA6\u8EAC\uACA7" + //  5485 -  5489
+                "\u8EAC\uACA8\u8EAC\uACA9\u8EAC\uACAA\u8EAC\uACAB\u8EAC\uACAC" + //  5490 -  5494
+                "\u8EAC\uACAD\u8EAC\uACAE\u8EAC\uACAF\u8EAC\uACB0\u8EAC\uACB1" + //  5495 -  5499
+                "\u8EAC\uACB2\u8EAC\uACB3\u8EAC\uACB4\u8EAC\uACB5\u8EAC\uACB6" + //  5500 -  5504
+                "\u8EAC\uACB7\u8EAC\uACB8\u8EAC\uACB9\u8EAC\uACBA\u8EAC\uACBB" + //  5505 -  5509
+                "\u8EAC\uACBC\u8EAC\uACBD\u8EAC\uACBE\u8EAC\uACBF\u8EAC\uACC0" + //  5510 -  5514
+                "\u8EAC\uACC1\u8EAC\uACC2\u8EAC\uACC3\u8EAC\uACC4\u8EAC\uACC5" + //  5515 -  5519
+                "\u8EAC\uACC6\u8EAC\uACC7\u8EAC\uACC8\u8EAC\uACC9\u8EAC\uACCA" + //  5520 -  5524
+                "\u8EAC\uACCB\u8EAC\uACCC\u8EAC\uACCD\u8EAC\uACCE\u8EAC\uACCF" + //  5525 -  5529
+                "\u8EAC\uACD0\u8EAC\uACD1\u8EAC\uACD2\u8EAC\uACD3\u8EAC\uACD4" + //  5530 -  5534
+                "\u8EAC\uACD5\u8EAC\uACD6\u8EAC\uABB5\u8EAC\uABB6\u8EAC\uABB7" + //  5535 -  5539
+                "\u8EAC\uABB8\u8EAC\uABB9\u8EAC\uABBA\u8EAC\uABBB\u8EAC\uABBC" + //  5540 -  5544
+                "\u8EAC\uABBD\u8EAC\uABBE\u8EAC\uABBF\u8EAC\uABC0\u8EAC\uABC1" + //  5545 -  5549
+                "\u8EAC\uABC2\u8EAC\uABC3\u8EAC\uABC4\u8EAC\uABC5\u8EAC\uABC6" + //  5550 -  5554
+                "\u8EAC\uABC7\u8EAC\uABC8\u8EAC\uABC9\u8EAC\uABCA\u8EAC\uABCB" + //  5555 -  5559
+                "\u8EAC\uABCC\u8EAC\uABCD\u8EAC\uABCE\u8EAC\uABCF\u8EAC\uABD0" + //  5560 -  5564
+                "\u8EAC\uABD1\u8EAC\uABD2\u8EAC\uABD3\u8EAC\uABD4\u8EAC\uABD5" + //  5565 -  5569
+                "\u8EAC\uABD6\u8EAC\uABD7\u8EAC\uABD8\u8EAC\uABD9\u8EAC\uABDA" + //  5570 -  5574
+                "\u8EAC\uABDB\u8EAC\uABDC\u8EAC\uABDD\u8EAC\uABDE\u8EAC\uABDF" + //  5575 -  5579
+                "\u8EAC\uABE0\u8EAC\uABE1\u8EAC\uABE2\u8EAC\uABE3\u8EAC\uABE4" + //  5580 -  5584
+                "\u8EAC\uABE5\u8EAC\uABE6\u8EAC\uABE7\u8EAC\uABE8\u8EAC\uABE9" + //  5585 -  5589
+                "\u8EAC\uABEA\u8EAC\uABEB\u8EAC\uABEC\u8EAC\uABED\u8EAC\uABEE" + //  5590 -  5594
+                "\u8EAC\uABEF\u8EAC\uABF0\u8EAC\uABF1\u8EAC\uABF2\u8EAC\uABF3" + //  5595 -  5599
+                "\u8EAC\uABF4\u8EAC\uAAD3\u8EAC\uAAD4\u8EAC\uAAD5\u8EAC\uAAD6" + //  5600 -  5604
+                "\u8EAC\uAAD7\u8EAC\uAAD8\u8EAC\uAAD9\u8EAC\uAADA\u8EAC\uAADB" + //  5605 -  5609
+                "\u8EAC\uAADC\u8EAC\uAADD\u8EAC\uAADE\u8EAC\uAADF\u8EAC\uAAE0" + //  5610 -  5614
+                "\u8EAC\uAAE1\u8EAC\uAAE2\u8EAC\uAAE3\u8EAC\uAAE4\u8EAC\uAAE5" + //  5615 -  5619
+                "\u8EAC\uAAE6\u8EAC\uAAE7\u8EAC\uAAE8\u8EAC\uAAE9\u8EAC\uAAEA" + //  5620 -  5624
+                "\u8EAC\uAAEB\u8EAC\uAAEC\u8EAC\uAAED\u8EAC\uAAEE\u8EAC\uAAEF" + //  5625 -  5629
+                "\u8EAC\uAAF0\u8EAC\uAAF1\u8EAC\uAAF2\u8EAC\uAAF3\u8EAC\uAAF4" + //  5630 -  5634
+                "\u8EAC\uAAF5\u8EAC\uAAF6\u8EAC\uAAF7\u8EAC\uAAF8\u8EAC\uAAF9" + //  5635 -  5639
+                "\u8EAC\uAAFA\u8EAC\uAAFB\u8EAC\uAAFC\u8EAC\uAAFD\u8EAC\uAAFE" + //  5640 -  5644
+                "\u8EAC\uABA1\u8EAC\uABA2\u8EAC\uABA3\u8EAC\uABA4\u8EAC\uABA5" + //  5645 -  5649
+                "\u8EAC\uABA6\u8EAC\uABA7\u8EAC\uABA8\u8EAC\uABA9\u8EAC\uABAA" + //  5650 -  5654
+                "\u8EAC\uABAB\u8EAC\uABAC\u8EAC\uABAD\u8EAC\uABAE\u8EAC\uABAF" + //  5655 -  5659
+                "\u8EAC\uABB0\u8EAC\uABB1\u8EAC\uABB2\u8EAC\uABB3\u8EAC\uABB4" + //  5660 -  5664
+                "\u8EAC\uA9F1\u8EAC\uA9F2\u8EAC\uA9F3\u8EAC\uA9F4\u8EAC\uA9F5" + //  5665 -  5669
+                "\u8EAC\uA9F6\u8EAC\uA9F7\u8EAC\uA9F8\u8EAC\uA9F9\u8EAC\uA9FA" + //  5670 -  5674
+                "\u8EAC\uA9FB\u8EAC\uA9FC\u8EAC\uA9FD\u8EAC\uA9FE\u8EAC\uAAA1" + //  5675 -  5679
+                "\u8EAC\uAAA2\u8EAC\uAAA3\u8EAC\uAAA4\u8EAC\uAAA5\u8EAC\uAAA6" + //  5680 -  5684
+                "\u8EAC\uAAA7\u8EAC\uAAA8\u8EAC\uAAA9\u8EAC\uAAAA\u8EAC\uAAAB" + //  5685 -  5689
+                "\u8EAC\uAAAC\u8EAC\uAAAD\u8EAC\uAAAE\u8EAC\uAAAF\u8EAC\uAAB0" + //  5690 -  5694
+                "\u8EAC\uAAB1\u8EAC\uAAB2\u8EAC\uAAB3\u8EAC\uAAB4\u8EAC\uAAB5" + //  5695 -  5699
+                "\u8EAC\uAAB6\u8EAC\uAAB7\u8EAC\uAAB8\u8EAC\uAAB9\u8EAC\uAABA" + //  5700 -  5704
+                "\u8EAC\uAABB\u8EAC\uAABC\u8EAC\uAABD\u8EAC\uAABE\u8EAC\uAABF" + //  5705 -  5709
+                "\u8EAC\uAAC0\u8EAC\uAAC1\u8EAC\uAAC2\u8EAC\uAAC3\u8EAC\uAAC4" + //  5710 -  5714
+                "\u8EAC\uAAC5\u8EAC\uAAC6\u8EAC\uAAC7\u8EAC\uAAC8\u8EAC\uAAC9" + //  5715 -  5719
+                "\u8EAC\uAACA\u8EAC\uAACB\u8EAC\uAACC\u8EAC\uAACD\u8EAC\uAACE" + //  5720 -  5724
+                "\u8EAC\uAACF\u8EAC\uAAD0\u8EAC\uAAD1\u8EAC\uAAD2\u8EAC\uA9B1" + //  5725 -  5729
+                "\u8EAC\uA9B2\u8EAC\uA9B3\u8EAC\uA9B4\u8EAC\uA9B5\u8EAC\uA9B6" + //  5730 -  5734
+                "\u8EAC\uA9B7\u8EAC\uA9B8\u8EAC\uA9B9\u8EAC\uA9BA\u8EAC\uA9BB" + //  5735 -  5739
+                "\u8EAC\uA9BC\u8EAC\uA9BD\u8EAC\uA9BE\u8EAC\uA9BF\u8EAC\uA9C0" + //  5740 -  5744
+                "\u8EAC\uA9C1\u8EAC\uA9C2\u8EAC\uA9C3\u8EAC\uA9C4\u8EAC\uA9C5" + //  5745 -  5749
+                "\u8EAC\uA9C6\u8EAC\uA9C7\u8EAC\uA9C8\u8EAC\uA9C9\u8EAC\uA9CA" + //  5750 -  5754
+                "\u8EAC\uA9CB\u8EAC\uA9CC\u8EAC\uA9CD\u8EAC\uA9CE\u8EAC\uA9CF" + //  5755 -  5759
+                "\u8EAC\uA9D0\u8EAC\uA9D1\u8EAC\uA9D2\u8EAC\uA9D3\u8EAC\uA9D4" + //  5760 -  5764
+                "\u8EAC\uA9D5\u8EAC\uA9D6\u8EAC\uA9D7\u8EAC\uA9D8\u8EAC\uA9D9" + //  5765 -  5769
+                "\u8EAC\uA9DA\u8EAC\uA9DB\u8EAC\uA9DC\u8EAC\uA9DD\u8EAC\uA9DE" + //  5770 -  5774
+                "\u8EAC\uA9DF\u8EAC\uA9E0\u8EAC\uA9E1\u8EAC\uA9E2\u8EAC\uA9E3" + //  5775 -  5779
+                "\u8EAC\uA9E4\u8EAC\uA9E5\u8EAC\uA9E6\u8EAC\uA9E7\u8EAC\uA9E8" + //  5780 -  5784
+                "\u8EAC\uA9E9\u8EAC\uA9EA\u8EAC\uA9EB\u8EAC\uA9EC\u8EAC\uA9ED" + //  5785 -  5789
+                "\u8EAC\uA9EE\u8EAC\uA9EF\u8EAC\uA9F0\u8EAC\uA8CF\u8EAC\uA8D0" + //  5790 -  5794
+                "\u8EAC\uA8D1\u8EAC\uA8D2\u8EAC\uA8D3\u8EAC\uA8D4\u8EAC\uA8D5" + //  5795 -  5799
+                "\u8EAC\uA8D6\u8EAC\uA8D7\u8EAC\uA8D8\u8EAC\uA8D9\u8EAC\uA8DA" + //  5800 -  5804
+                "\u8EAC\uA8DB\u8EAC\uA8DC\u8EAC\uA8DD\u8EAC\uA8DE\u8EAC\uA8DF" + //  5805 -  5809
+                "\u8EAC\uA8E0\u8EAC\uA8E1\u8EAC\uA8E2\u8EAC\uA8E3\u8EAC\uA8E4" + //  5810 -  5814
+                "\u8EAC\uA8E5\u8EAC\uA8E6\u8EAC\uA8E7\u8EAC\uA8E8\u8EAC\uA8E9" + //  5815 -  5819
+                "\u8EAC\uA8EA\u8EAC\uA8EB\u8EAC\uA8EC\u8EAC\uA8ED\u8EAC\uA8EE" + //  5820 -  5824
+                "\u8EAC\uA8EF\u8EAC\uA8F0\u8EAC\uA8F1\u8EAC\uA8F2\u8EAC\uA8F3" + //  5825 -  5829
+                "\u8EAC\uA8F4\u8EAC\uA8F5\u8EAC\uA8F6\u8EAC\uA8F7\u8EAC\uA8F8" + //  5830 -  5834
+                "\u8EAC\uA8F9\u8EAC\uA8FA\u8EAC\uA8FB\u8EAC\uA8FC\u8EAC\uA8FD" + //  5835 -  5839
+                "\u8EAC\uA8FE\u8EAC\uA9A1\u8EAC\uA9A2\u8EAC\uA9A3\u8EAC\uA9A4" + //  5840 -  5844
+                "\u8EAC\uA9A5\u8EAC\uA9A6\u8EAC\uA9A7\u8EAC\uA9A8\u8EAC\uA9A9" + //  5845 -  5849
+                "\u8EAC\uA9AA\u8EAC\uA9AB\u8EAC\uA9AC\u8EAC\uA9AD\u8EAC\uA9AE" + //  5850 -  5854
+                "\u8EAC\uA9AF\u8EAC\uA9B0\u8EAC\uA7ED\u8EAC\uA7EE\u8EAC\uA7EF" + //  5855 -  5859
+                "\u8EAC\uA7F0\u8EAC\uA7F1\u8EAC\uA7F2\u8EAC\uA7F3\u8EAC\uA7F4" + //  5860 -  5864
+                "\u8EAC\uA7F5\u8EAC\uA7F6\u8EAC\uA7F7\u8EAC\uA7F8\u8EAC\uA7F9" + //  5865 -  5869
+                "\u8EAC\uA7FA\u8EAC\uA7FB\u8EAC\uA7FC\u8EAC\uA7FD\u8EAC\uA7FE" + //  5870 -  5874
+                "\u8EAC\uA8A1\u8EAC\uA8A2\u8EAC\uA8A3\u8EAC\uA8A4\u8EAC\uA8A5" + //  5875 -  5879
+                "\u8EAC\uA8A6\u8EAC\uA8A7\u8EAC\uA8A8\u8EAC\uA8A9\u8EAC\uA8AA" + //  5880 -  5884
+                "\u8EAC\uA8AB\u8EAC\uA8AC\u8EAC\uA8AD\u8EAC\uA8AE\u8EAC\uA8AF" + //  5885 -  5889
+                "\u8EAC\uA8B0\u8EAC\uA8B1\u8EAC\uA8B2\u8EAC\uA8B3\u8EAC\uA8B4" + //  5890 -  5894
+                "\u8EAC\uA8B5\u8EAC\uA8B6\u8EAC\uA8B7\u8EAC\uA8B8\u8EAC\uA8B9" + //  5895 -  5899
+                "\u8EAC\uA8BA\u8EAC\uA8BB\u8EAC\uA8BC\u8EAC\uA8BD\u8EAC\uA8BE" + //  5900 -  5904
+                "\u8EAC\uA8BF\u8EAC\uA8C0\u8EAC\uA8C1\u8EAC\uA8C2\u8EAC\uA8C3" + //  5905 -  5909
+                "\u8EAC\uA8C4\u8EAC\uA8C5\u8EAC\uA8C6\u8EAC\uA8C7\u8EAC\uA8C8" + //  5910 -  5914
+                "\u8EAC\uA8C9\u8EAC\uA8CA\u8EAC\uA8CB\u8EAC\uA8CC\u8EAC\uA8CD" + //  5915 -  5919
+                "\u8EAC\uA8CE\u8EAC\uA7AD\u8EAC\uA7AE\u8EAC\uA7AF\u8EAC\uA7B0" + //  5920 -  5924
+                "\u8EAC\uA7B1\u8EAC\uA7B2\u8EAC\uA7B3\u8EAC\uA7B4\u8EAC\uA7B5" + //  5925 -  5929
+                "\u8EAC\uA7B6\u8EAC\uA7B7\u8EAC\uA7B8\u8EAC\uA7B9\u8EAC\uA7BA" + //  5930 -  5934
+                "\u8EAC\uA7BB\u8EAC\uA7BC\u8EAC\uA7BD\u8EAC\uA7BE\u8EAC\uA7BF" + //  5935 -  5939
+                "\u8EAC\uA7C0\u8EAC\uA7C1\u8EAC\uA7C2\u8EAC\uA7C3\u8EAC\uA7C4" + //  5940 -  5944
+                "\u8EAC\uA7C5\u8EAC\uA7C6\u8EAC\uA7C7\u8EAC\uA7C8\u8EAC\uA7C9" + //  5945 -  5949
+                "\u8EAC\uA7CA\u8EAC\uA7CB\u8EAC\uA7CC\u8EAC\uA7CD\u8EAC\uA7CE" + //  5950 -  5954
+                "\u8EAC\uA7CF\u8EAC\uA7D0\u8EAC\uA7D1\u8EAC\uA7D2\u8EAC\uA7D3" + //  5955 -  5959
+                "\u8EAC\uA7D4\u8EAC\uA7D5\u8EAC\uA7D6\u8EAC\uA7D7\u8EAC\uA7D8" + //  5960 -  5964
+                "\u8EAC\uA7D9\u8EAC\uA7DA\u8EAC\uA7DB\u8EAC\uA7DC\u8EAC\uA7DD" + //  5965 -  5969
+                "\u8EAC\uA7DE\u8EAC\uA7DF\u8EAC\uA7E0\u8EAC\uA7E1\u8EAC\uA7E2" + //  5970 -  5974
+                "\u8EAC\uA7E3\u8EAC\uA7E4\u8EAC\uA7E5\u8EAC\uA7E6\u8EAC\uA7E7" + //  5975 -  5979
+                "\u8EAC\uA7E8\u8EAC\uA7E9\u8EAC\uA7EA\u8EAC\uA7EB\u8EAC\uA7EC" + //  5980 -  5984
+                "\u8EAC\uA6CB\u8EAC\uA6CC\u8EAC\uA6CD\u8EAC\uA6CE\u8EAC\uA6CF" + //  5985 -  5989
+                "\u8EAC\uA6D0\u8EAC\uA6D1\u8EAC\uA6D2\u8EAC\uA6D3\u8EAC\uA6D4" + //  5990 -  5994
+                "\u8EAC\uA6D5\u8EAC\uA6D6\u8EAC\uA6D7\u8EAC\uA6D8\u8EAC\uA6D9" + //  5995 -  5999
+                "\u8EAC\uA6DA\u8EAC\uA6DB\u8EAC\uA6DC\u8EAC\uA6DD\u8EAC\uA6DE" + //  6000 -  6004
+                "\u8EAC\uA6DF\u8EAC\uA6E0\u8EAC\uA6E1\u8EAC\uA6E2\u8EAC\uA6E3" + //  6005 -  6009
+                "\u8EAC\uA6E4\u8EAC\uA6E5\u8EAC\uA6E6\u8EAC\uA6E7\u8EAC\uA6E8" + //  6010 -  6014
+                "\u8EAC\uA6E9\u8EAC\uA6EA\u8EAC\uA6EB\u8EAC\uA6EC\u8EAC\uA6ED" + //  6015 -  6019
+                "\u8EAC\uA6EE\u8EAC\uA6EF\u8EAC\uA6F0\u8EAC\uA6F1\u8EAC\uA6F2" + //  6020 -  6024
+                "\u8EAC\uA6F3\u8EAC\uA6F4\u8EAC\uA6F5\u8EAC\uA6F6\u8EAC\uA6F7" + //  6025 -  6029
+                "\u8EAC\uA6F8\u8EAC\uA6F9\u8EAC\uA6FA\u8EAC\uA6FB\u8EAC\uA6FC" + //  6030 -  6034
+                "\u8EAC\uA6FD\u8EAC\uA6FE\u8EAC\uA7A1\u8EAC\uA7A2\u8EAC\uA7A3" + //  6035 -  6039
+                "\u8EAC\uA7A4\u8EAC\uA7A5\u8EAC\uA7A6\u8EAC\uA7A7\u8EAC\uA7A8" + //  6040 -  6044
+                "\u8EAC\uA7A9\u8EAC\uA7AA\u8EAC\uA7AB\u8EAC\uA7AC\u8EAC\uA5E9" + //  6045 -  6049
+                "\u8EAC\uA5EA\u8EAC\uA5EB\u8EAC\uA5EC\u8EAC\uA5ED\u8EAC\uA5EE" + //  6050 -  6054
+                "\u8EAC\uA5EF\u8EAC\uA5F0\u8EAC\uA5F1\u8EAC\uA5F2\u8EAC\uA5F3" + //  6055 -  6059
+                "\u8EAC\uA5F4\u8EAC\uA5F5\u8EAC\uA5F6\u8EAC\uA5F7\u8EAC\uA5F8" + //  6060 -  6064
+                "\u8EAC\uA5F9\u8EAC\uA5FA\u8EAC\uA5FB\u8EAC\uA5FC\u8EAC\uA5FD" + //  6065 -  6069
+                "\u8EAC\uA5FE\u8EAC\uA6A1\u8EAC\uA6A2\u8EAC\uA6A3\u8EAC\uA6A4" + //  6070 -  6074
+                "\u8EAC\uA6A5\u8EAC\uA6A6\u8EAC\uA6A7\u8EAC\uA6A8\u8EAC\uA6A9" + //  6075 -  6079
+                "\u8EAC\uA6AA\u8EAC\uA6AB\u8EAC\uA6AC\u8EAC\uA6AD\u8EAC\uA6AE" + //  6080 -  6084
+                "\u8EAC\uA6AF\u8EAC\uA6B0\u8EAC\uA6B1\u8EAC\uA6B2\u8EAC\uA6B3" + //  6085 -  6089
+                "\u8EAC\uA6B4\u8EAC\uA6B5\u8EAC\uA6B6\u8EAC\uA6B7\u8EAC\uA6B8" + //  6090 -  6094
+                "\u8EAC\uA6B9\u8EAC\uA6BA\u8EAC\uA6BB\u8EAC\uA6BC\u8EAC\uA6BD" + //  6095 -  6099
+                "\u8EAC\uA6BE\u8EAC\uA6BF\u8EAC\uA6C0\u8EAC\uA6C1\u8EAC\uA6C2" + //  6100 -  6104
+                "\u8EAC\uA6C3\u8EAC\uA6C4\u8EAC\uA6C5\u8EAC\uA6C6\u8EAC\uA6C7" + //  6105 -  6109
+                "\u8EAC\uA6C8\u8EAC\uA6C9\u8EAC\uA6CA\u8EAC\uA5A9\u8EAC\uA5AA" + //  6110 -  6114
+                "\u8EAC\uA5AB\u8EAC\uA5AC\u8EAC\uA5AD\u8EAC\uA5AE\u8EAC\uA5AF" + //  6115 -  6119
+                "\u8EAC\uA5B0\u8EAC\uA5B1\u8EAC\uA5B2\u8EAC\uA5B3\u8EAC\uA5B4" + //  6120 -  6124
+                "\u8EAC\uA5B5\u8EAC\uA5B6\u8EAC\uA5B7\u8EAC\uA5B8\u8EAC\uA5B9" + //  6125 -  6129
+                "\u8EAC\uA5BA\u8EAC\uA5BB\u8EAC\uA5BC\u8EAC\uA5BD\u8EAC\uA5BE" + //  6130 -  6134
+                "\u8EAC\uA5BF\u8EAC\uA5C0\u8EAC\uA5C1\u8EAC\uA5C2\u8EAC\uA5C3" + //  6135 -  6139
+                "\u8EAC\uA5C4\u8EAC\uA5C5\u8EAC\uA5C6\u8EAC\uA5C7\u8EAC\uA5C8" + //  6140 -  6144
+                "\u8EAC\uA5C9\u8EAC\uA5CA\u8EAC\uA5CB\u8EAC\uA5CC\u8EAC\uA5CD" + //  6145 -  6149
+                "\u8EAC\uA5CE\u8EAC\uA5CF\u8EAC\uA5D0\u8EAC\uA5D1\u8EAC\uA5D2" + //  6150 -  6154
+                "\u8EAC\uA5D3\u8EAC\uA5D4\u8EAC\uA5D5\u8EAC\uA5D6\u8EAC\uA5D7" + //  6155 -  6159
+                "\u8EAC\uA5D8\u8EAC\uA5D9\u8EAC\uA5DA\u8EAC\uA5DB\u8EAC\uA5DC" + //  6160 -  6164
+                "\u8EAC\uA5DD\u8EAC\uA5DE\u8EAC\uA5DF\u8EAC\uA5E0\u8EAC\uA5E1" + //  6165 -  6169
+                "\u8EAC\uA5E2\u8EAC\uA5E3\u8EAC\uA5E4\u8EAC\uA5E5\u8EAC\uA5E6" + //  6170 -  6174
+                "\u8EAC\uA5E7\u8EAC\uA5E8\u8EAC\uA4C7\u8EAC\uA4C8\u8EAC\uA4C9" + //  6175 -  6179
+                "\u8EAC\uA4CA\u8EAC\uA4CB\u8EAC\uA4CC\u8EAC\uA4CD\u8EAC\uA4CE" + //  6180 -  6184
+                "\u8EAC\uA4CF\u8EAC\uA4D0\u8EAC\uA4D1\u8EAC\uA4D2\u8EAC\uA4D3" + //  6185 -  6189
+                "\u8EAC\uA4D4\u8EAC\uA4D5\u8EAC\uA4D6\u8EAC\uA4D7\u8EAC\uA4D8" + //  6190 -  6194
+                "\u8EAC\uA4D9\u8EAC\uA4DA\u8EAC\uA4DB\u8EAC\uA4DC\u8EAC\uA4DD" + //  6195 -  6199
+                "\u8EAC\uA4DE\u8EAC\uA4DF\u8EAC\uA4E0\u8EAC\uA4E1\u8EAC\uA4E2" + //  6200 -  6204
+                "\u8EAC\uA4E3\u8EAC\uA4E4\u8EAC\uA4E5\u8EAC\uA4E6\u8EAC\uA4E7" + //  6205 -  6209
+                "\u8EAC\uA4E8\u8EAC\uA4E9\u8EAC\uA4EA\u8EAC\uA4EB\u8EAC\uA4EC" + //  6210 -  6214
+                "\u8EAC\uA4ED\u8EAC\uA4EE\u8EAC\uA4EF\u8EAC\uA4F0\u8EAC\uA4F1" + //  6215 -  6219
+                "\u8EAC\uA4F2\u8EAC\uA4F3\u8EAC\uA4F4\u8EAC\uA4F5\u8EAC\uA4F6" + //  6220 -  6224
+                "\u8EAC\uA4F7\u8EAC\uA4F8\u8EAC\uA4F9\u8EAC\uA4FA\u8EAC\uA4FB" + //  6225 -  6229
+                "\u8EAC\uA4FC\u8EAC\uA4FD\u8EAC\uA4FE\u8EAC\uA5A1\u8EAC\uA5A2" + //  6230 -  6234
+                "\u8EAC\uA5A3\u8EAC\uA5A4\u8EAC\uA5A5\u8EAC\uA5A6\u8EAC\uA5A7" + //  6235 -  6239
+                "\u8EAC\uA5A8\u8EAC\uA3E5\u8EAC\uA3E6\u8EAC\uA3E7\u8EAC\uA3E8" + //  6240 -  6244
+                "\u8EAC\uA3E9\u8EAC\uA3EA\u8EAC\uA3EB\u8EAC\uA3EC\u8EAC\uA3ED" + //  6245 -  6249
+                "\u8EAC\uA3EE\u8EAC\uA3EF\u8EAC\uA3F0\u8EAC\uA3F1\u8EAC\uA3F2" + //  6250 -  6254
+                "\u8EAC\uA3F3\u8EAC\uA3F4\u8EAC\uA3F5\u8EAC\uA3F6\u8EAC\uA3F7" + //  6255 -  6259
+                "\u8EAC\uA3F8\u8EAC\uA3F9\u8EAC\uA3FA\u8EAC\uA3FB\u8EAC\uA3FC" + //  6260 -  6264
+                "\u8EAC\uA3FD\u8EAC\uA3FE\u8EAC\uA4A1\u8EAC\uA4A2\u8EAC\uA4A3" + //  6265 -  6269
+                "\u8EAC\uA4A4\u8EAC\uA4A5\u8EAC\uA4A6\u8EAC\uA4A7\u8EAC\uA4A8" + //  6270 -  6274
+                "\u8EAC\uA4A9\u8EAC\uA4AA\u8EAC\uA4AB\u8EAC\uA4AC\u8EAC\uA4AD" + //  6275 -  6279
+                "\u8EAC\uA4AE\u8EAC\uA4AF\u8EAC\uA4B0\u8EAC\uA4B1\u8EAC\uA4B2" + //  6280 -  6284
+                "\u8EAC\uA4B3\u8EAC\uA4B4\u8EAC\uA4B5\u8EAC\uA4B6\u8EAC\uA4B7" + //  6285 -  6289
+                "\u8EAC\uA4B8\u8EAC\uA4B9\u8EAC\uA4BA\u8EAC\uA4BB\u8EAC\uA4BC" + //  6290 -  6294
+                "\u8EAC\uA4BD\u8EAC\uA4BE\u8EAC\uA4BF\u8EAC\uA4C0\u8EAC\uA4C1" + //  6295 -  6299
+                "\u8EAC\uA4C2\u8EAC\uA4C3\u8EAC\uA4C4\u8EAC\uA4C5\u8EAC\uA4C6" + //  6300 -  6304
+                "\u8EAC\uA3A5\u8EAC\uA3A6\u8EAC\uA3A7\u8EAC\uA3A8\u8EAC\uA3A9" + //  6305 -  6309
+                "\u8EAC\uA3AA\u8EAC\uA3AB\u8EAC\uA3AC\u8EAC\uA3AD\u8EAC\uA3AE" + //  6310 -  6314
+                "\u8EAC\uA3AF\u8EAC\uA3B0\u8EAC\uA3B1\u8EAC\uA3B2\u8EAC\uA3B3" + //  6315 -  6319
+                "\u8EAC\uA3B4\u8EAC\uA3B5\u8EAC\uA3B6\u8EAC\uA3B7\u8EAC\uA3B8" + //  6320 -  6324
+                "\u8EAC\uA3B9\u8EAC\uA3BA\u8EAC\uA3BB\u8EAC\uA3BC\u8EAC\uA3BD" + //  6325 -  6329
+                "\u8EAC\uA3BE\u8EAC\uA3BF\u8EAC\uA3C0\u8EAC\uA3C1\u8EAC\uA3C2" + //  6330 -  6334
+                "\u8EAC\uA3C3\u8EAC\uA3C4\u8EAC\uA3C5\u8EAC\uA3C6\u8EAC\uA3C7" + //  6335 -  6339
+                "\u8EAC\uA3C8\u8EAC\uA3C9\u8EAC\uA3CA\u8EAC\uA3CB\u8EAC\uA3CC" + //  6340 -  6344
+                "\u8EAC\uA3CD\u8EAC\uA3CE\u8EAC\uA3CF\u8EAC\uA3D0\u8EAC\uA3D1" + //  6345 -  6349
+                "\u8EAC\uA3D2\u8EAC\uA3D3\u8EAC\uA3D4\u8EAC\uA3D5\u8EAC\uA3D6" + //  6350 -  6354
+                "\u8EAC\uA3D7\u8EAC\uA3D8\u8EAC\uA3D9\u8EAC\uA3DA\u8EAC\uA3DB" + //  6355 -  6359
+                "\u8EAC\uA3DC\u8EAC\uA3DD\u8EAC\uA3DE\u8EAC\uA3DF\u8EAC\uA3E0" + //  6360 -  6364
+                "\u8EAC\uA3E1\u8EAC\uA3E2\u8EAC\uA3E3\u8EAC\uA3E4\u8EAC\uA2C3" + //  6365 -  6369
+                "\u8EAC\uA2C4\u8EAC\uA2C5\u8EAC\uA2C6\u8EAC\uA2C7\u8EAC\uA2C8" + //  6370 -  6374
+                "\u8EAC\uA2C9\u8EAC\uA2CA\u8EAC\uA2CB\u8EAC\uA2CC\u8EAC\uA2CD" + //  6375 -  6379
+                "\u8EAC\uA2CE\u8EAC\uA2CF\u8EAC\uA2D0\u8EAC\uA2D1\u8EAC\uA2D2" + //  6380 -  6384
+                "\u8EAC\uA2D3\u8EAC\uA2D4\u8EAC\uA2D5\u8EAC\uA2D6\u8EAC\uA2D7" + //  6385 -  6389
+                "\u8EAC\uA2D8\u8EAC\uA2D9\u8EAC\uA2DA\u8EAC\uA2DB\u8EAC\uA2DC" + //  6390 -  6394
+                "\u8EAC\uA2DD\u8EAC\uA2DE\u8EAC\uA2DF\u8EAC\uA2E0\u8EAC\uA2E1" + //  6395 -  6399
+                "\u8EAC\uA2E2\u8EAC\uA2E3\u8EAC\uA2E4\u8EAC\uA2E5\u8EAC\uA2E6" + //  6400 -  6404
+                "\u8EAC\uA2E7\u8EAC\uA2E8\u8EAC\uA2E9\u8EAC\uA2EA\u8EAC\uA2EB" + //  6405 -  6409
+                "\u8EAC\uA2EC\u8EAC\uA2ED\u8EAC\uA2EE\u8EAC\uA2EF\u8EAC\uA2F0" + //  6410 -  6414
+                "\u8EAC\uA2F1\u8EAC\uA2F2\u8EAC\uA2F3\u8EAC\uA2F4\u8EAC\uA2F5" + //  6415 -  6419
+                "\u8EAC\uA2F6\u8EAC\uA2F7\u8EAC\uA2F8\u8EAC\uA2F9\u8EAC\uA2FA" + //  6420 -  6424
+                "\u8EAC\uA2FB\u8EAC\uA2FC\u8EAC\uA2FD\u8EAC\uA2FE\u8EAC\uA3A1" + //  6425 -  6429
+                "\u8EAC\uA3A2\u8EAC\uA3A3\u8EAC\uA3A4\u8EAC\uA1E1\u8EAC\uA1E2" + //  6430 -  6434
+                "\u8EAC\uA1E3\u8EAC\uA1E4\u8EAC\uA1E5\u8EAC\uA1E6\u8EAC\uA1E7" + //  6435 -  6439
+                "\u8EAC\uA1E8\u8EAC\uA1E9\u8EAC\uA1EA\u8EAC\uA1EB\u8EAC\uA1EC" + //  6440 -  6444
+                "\u8EAC\uA1ED\u8EAC\uA1EE\u8EAC\uA1EF\u8EAC\uA1F0\u8EAC\uA1F1" + //  6445 -  6449
+                "\u8EAC\uA1F2\u8EAC\uA1F3\u8EAC\uA1F4\u8EAC\uA1F5\u8EAC\uA1F6" + //  6450 -  6454
+                "\u8EAC\uA1F7\u8EAC\uA1F8\u8EAC\uA1F9\u8EAC\uA1FA\u8EAC\uA1FB" + //  6455 -  6459
+                "\u8EAC\uA1FC\u8EAC\uA1FD\u8EAC\uA1FE\u8EAC\uA2A1\u8EAC\uA2A2" + //  6460 -  6464
+                "\u8EAC\uA2A3\u8EAC\uA2A4\u8EAC\uA2A5\u8EAC\uA2A6\u8EAC\uA2A7" + //  6465 -  6469
+                "\u8EAC\uA2A8\u8EAC\uA2A9\u8EAC\uA2AA\u8EAC\uA2AB\u8EAC\uA2AC" + //  6470 -  6474
+                "\u8EAC\uA2AD\u8EAC\uA2AE\u8EAC\uA2AF\u8EAC\uA2B0\u8EAC\uA2B1" + //  6475 -  6479
+                "\u8EAC\uA2B2\u8EAC\uA2B3\u8EAC\uA2B4\u8EAC\uA2B5\u8EAC\uA2B6" + //  6480 -  6484
+                "\u8EAC\uA2B7\u8EAC\uA2B8\u8EAC\uA2B9\u8EAC\uA2BA\u8EAC\uA2BB" + //  6485 -  6489
+                "\u8EAC\uA2BC\u8EAC\uA2BD\u8EAC\uA2BE\u8EAC\uA2BF\u8EAC\uA2C0" + //  6490 -  6494
+                "\u8EAC\uA2C1\u8EAC\uA2C2\u8EAC\uA1A1\u8EAC\uA1A2\u8EAC\uA1A3" + //  6495 -  6499
+                "\u8EAC\uA1A4\u8EAC\uA1A5\u8EAC\uA1A6\u8EAC\uA1A7\u8EAC\uA1A8" + //  6500 -  6504
+                "\u8EAC\uA1A9\u8EAC\uA1AA\u8EAC\uA1AB\u8EAC\uA1AC\u8EAC\uA1AD" + //  6505 -  6509
+                "\u8EAC\uA1AE\u8EAC\uA1AF\u8EAC\uA1B0\u8EAC\uA1B1\u8EAC\uA1B2" + //  6510 -  6514
+                "\u8EAC\uA1B3\u8EAC\uA1B4\u8EAC\uA1B5\u8EAC\uA1B6\u8EAC\uA1B7" + //  6515 -  6519
+                "\u8EAC\uA1B8\u8EAC\uA1B9\u8EAC\uA1BA\u8EAC\uA1BB\u8EAC\uA1BC" + //  6520 -  6524
+                "\u8EAC\uA1BD\u8EAC\uA1BE\u8EAC\uA1BF\u8EAC\uA1C0\u8EAC\uA1C1" + //  6525 -  6529
+                "\u8EAC\uA1C2\u8EAC\uA1C3\u8EAC\uA1C4\u8EAC\uA1C5\u8EAC\uA1C6" + //  6530 -  6534
+                "\u8EAC\uA1C7\u8EAC\uA1C8\u8EAC\uA1C9\u8EAC\uA1CA\u8EAC\uA1CB" + //  6535 -  6539
+                "\u8EAC\uA1CC\u8EAC\uA1CD\u8EAC\uA1CE\u8EAC\uA1CF\u8EAC\uA1D0" + //  6540 -  6544
+                "\u8EAC\uA1D1\u8EAC\uA1D2\u8EAC\uA1D3\u8EAC\uA1D4\u8EAC\uA1D5" + //  6545 -  6549
+                "\u8EAC\uA1D6\u8EAC\uA1D7\u8EAC\uA1D8\u8EAC\uA1D9\u8EAC\uA1DA" + //  6550 -  6554
+                "\u8EAC\uA1DB\u8EAC\uA1DC\u8EAC\uA1DD\u8EAC\uA1DE\u8EAC\uA1DF" + //  6555 -  6559
+                "\u8EAC\uA1E0\u8EA2\uE8E4\u8EA2\uE8E5\u8EA2\uEEF9\u8EA2\uF0AD" + //  6560 -  6564
+                "\u0000\u0000\u0000\u0000\u8EA2\uF0F8\u8EA2\uF1D5\u8EA2\uF2A9" + //  6565 -  6569
+                "\u8EA2\uF2C3\u0000\uEBFD\u0000\uF6BA\u8EA2\uE5B5\u8EA2\uE8E6" + //  6570 -  6574
+                "\u8EA2\uEDC0\u8EA2\uF0AE\u0000\u0000\u0000\u0000\u0000\uF0AF" + //  6575 -  6579
+                "\u0000\u0000\u8EA2\uE1C1\u8EA2\uE5B6\u8EA2\uE8E7\u8EA2\uE8E8" + //  6580 -  6584
+                "\u8EA2\uE8E9\u8EA2\uEBCC\u0000\u0000\u8EA2\uEBC8\u0000\uFBD4" + //  6585 -  6589
+                "\u8EA2\uEBCB\u8EA2\uEBCA\u0000\uFADF\u8EA2\uEBC9\u0000\uFAE1" + //  6590 -  6594
+                "\u0000\u0000\u0000\uFAE0\u8EA2\uEDC2\u8EA2\uEDC1\u0000\uFBD5" + //  6595 -  6599
+                "\u0000\uFBD6\u0000\u0000\u0000\u0000\u0000\uFCB2\u8EA2\uEEFA" + //  6600 -  6604
+                "\u0000\uFCB1\u0000\u0000\u8EA2\uF0B1\u8EA2\uF0B2\u8EA2\uF0B0" + //  6605 -  6609
+                "\u8EA2\uF0AF\u0000\uFDA1\u0000\u0000\u8EA2\uF0F9\u8EA2\uF0FA" + //  6610 -  6614
+                "\u8EA2\uF0FB\u0000\uFCFE\u8EA2\uF1D6\u8EA2\uF1D9\u8EA2\uF1D8" + //  6615 -  6619
+                "\u8EA2\uF1D7\u0000\u0000\u0000\u0000\u8EA2\uF2C2\u0000\u0000" + //  6620 -  6624
+                "\u0000\uC4A1\u0000\uC4A3\u0000\u0000\u0000\uC4A4\u0000\u0000" + //  6625 -  6629
+                "\u0000\u0000\u0000\u0000\u8EA2\uA1A6\u0000\uC4B7\u0000\uC4B5" + //  6630 -  6634
+                "\u0000\uC4B8\u0000\uC4B6\u8EA2\uA1A7\u0000\uC4E2\u8EA2\uA1AF" + //  6635 -  6639
+                "\u8EA2\uA1AD\u0000\uC4E1\u0000\uC4E0\u0000\u0000\u0000\u0000" + //  6640 -  6644
+                "\u0000\uC5E2\u0000\uC5E1\u0000\uC5E0\u0000\u0000\u0000\uC5E3" + //  6645 -  6649
+                "\u0000\uC5DF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  6650 -  6654
+                "\u0000\uC7A2\u0000\uC7A3\u0000\u0000\u0000\u0000\u0000\u0000" + //  6655 -  6659
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCBE4\u0000\u0000" + //  6660 -  6664
+                "\u0000\uA7A2\u0000\u0000\u0000\u0000\u0000\uC4B9\u0000\u0000" + //  6665 -  6669
+                "\u0000\uC4E3\u8EA2\uA1B0\u0000\u0000\u0000\uC4E4\u8EA2\uA1C3" + //  6670 -  6674
+                "\u0000\uC8EB\u8EA2\uA5B1\u0000\u0000\u0000\u0000\u0000\uA7A3" + //  6675 -  6679
+                "\u0000\u0000\u0000\uC4BA\u0000\uC4E5\u0000\u0000\u0000\uC5E4" + //  6680 -  6684
+                "\u8EA2\uA1C4\u0000\u0000\u0000\u0000\u0000\uA7A4\u8EA2\uE5AE" + //  6685 -  6689
+                "\u8EA2\uE5AD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  6690 -  6694
+                "\u8EA2\uF0A8\u0000\uFCFD\u0000\u0000\u8EA2\uF1D4\u8EA2\uF1EE" + //  6695 -  6699
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE7EF\u8EA2\uD6BD" + //  6700 -  6704
+                "\u8EA2\uD6BE\u0000\u0000\u8EA2\uDCC3\u0000\uE7F0\u0000\u0000" + //  6705 -  6709
+                "\u0000\uF8A9\u8EA2\uE5AF\u0000\u0000\u8EA2\uEDBD\u0000\uFBD3" + //  6710 -  6714
+                "\u8EA2\uEDBE\u8EA2\uEDBC\u8EA2\uF0A9\u0000\u0000\u8EA2\uF0F7" + //  6715 -  6719
+                "\u0000\u0000\u0000\uE7F1\u0000\u0000\u8EA2\uE1C0\u8EA2\uE1BF" + //  6720 -  6724
+                "\u8EA2\uE1BE\u8EA2\uE5B0\u0000\u0000\u0000\u0000\u8EA2\uE5B4" + //  6725 -  6729
+                "\u8EA2\uE5B3\u8EA2\uE5B2\u8EA2\uE5B1\u0000\uF8AA\u8EA2\uE8E3" + //  6730 -  6734
+                "\u8EA2\uEBC7\u0000\uFADE\u8EA2\uEBC6\u8EA2\uEDBF\u8EA2\uEEF8" + //  6735 -  6739
+                "\u8EA2\uEEF7\u0000\uFCB0\u8EA2\uEEF6\u8EA2\uF0AC\u8EA2\uF0AB" + //  6740 -  6744
+                "\u8EA2\uF0AA\u0000\u0000\u0000\u0000\u0000\uEBFC\u0000\u0000" + //  6745 -  6749
+                "\u8EA2\uDCC4\u0000\uF6B9\u0000\u0000\u8EAD\uA2E7\u8EAD\uA2E8" + //  6750 -  6754
+                "\u8EAD\uA2E9\u8EAD\uA2EA\u8EAD\uA2EB\u8EAD\uA2EC\u8EAD\uA2ED" + //  6755 -  6759
+                "\u8EAD\uA2EE\u8EAD\uA2EF\u8EAD\uA2F0\u8EAD\uA2F1\u8EAD\uA2F2" + //  6760 -  6764
+                "\u8EAD\uA2F3\u8EAD\uA2F4\u8EAD\uA2F5\u8EAD\uA2F6\u8EAD\uA2F7" + //  6765 -  6769
+                "\u8EAD\uA2F8\u8EAD\uA2F9\u8EAD\uA2FA\u8EAD\uA2FB\u8EAD\uA2FC" + //  6770 -  6774
+                "\u8EAD\uA2FD\u8EAD\uA2FE\u8EAD\uA3A1\u8EAD\uA3A2\u8EAD\uA3A3" + //  6775 -  6779
+                "\u8EAD\uA3A4\u8EAD\uA3A5\u8EAD\uA3A6\u8EAD\uA3A7\u8EAD\uA3A8" + //  6780 -  6784
+                "\u8EAD\uA3A9\u8EAD\uA3AA\u8EAD\uA3AB\u8EAD\uA3AC\u8EAD\uA3AD" + //  6785 -  6789
+                "\u8EAD\uA3AE\u8EAD\uA3AF\u8EAD\uA3B0\u8EAD\uA3B1\u8EAD\uA3B2" + //  6790 -  6794
+                "\u8EAD\uA3B3\u8EAD\uA3B4\u8EAD\uA3B5\u8EAD\uA3B6\u8EAD\uA3B7" + //  6795 -  6799
+                "\u8EAD\uA3B8\u8EAD\uA3B9\u8EAD\uA3BA\u8EAD\uA3BB\u8EAD\uA3BC" + //  6800 -  6804
+                "\u8EAD\uA3BD\u8EAD\uA3BE\u8EAD\uA3BF\u0000\u0000\u0000\u0000" + //  6805 -  6809
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1AE\u8EAD\uA1A5" + //  6810 -  6814
+                "\u8EAD\uA1A6\u0000\u0000\u0000\uD5E9\u8EA2\uAFD4\u8EA2\uAFD2" + //  6815 -  6819
+                "\u8EA2\uAFD3\u0000\uD5EA\u8EA2\uAFD1\u0000\u0000\u0000\u0000" + //  6820 -  6824
+                "\u0000\u0000\u0000\u0000\u0000\uDBA1\u0000\uDBA2\u8EA2\uB5EA" + //  6825 -  6829
+                "\u0000\uDBA3\u0000\uDAFE\u8EA2\uBCC2\u0000\u0000\u8EA2\uBCC3" + //  6830 -  6834
+                "\u8EA2\uC3C4\u0000\u0000\u0000\u0000\u0000\uE9A2\u0000\uE9A1" + //  6835 -  6839
+                "\u0000\u0000\u0000\u0000\u8EA2\uDCFC\u8EA2\uE1E5\u0000\u0000" + //  6840 -  6844
+                "\u8EA2\uE5D5\u8EA2\uE5D4\u8EA2\uE8FB\u0000\uA7E6\u8EA2\uA1BE" + //  6845 -  6849
+                "\u0000\uD1CD\u0000\u0000\u0000\u0000\u0000\uC5CA\u0000\uC6D9" + //  6850 -  6854
+                "\u0000\u0000\u0000\uC8AF\u0000\uC8AE\u0000\u0000\u0000\u0000" + //  6855 -  6859
+                "\u0000\uC8B0\u0000\uC8B1\u8EA2\uA2CF\u8EA2\uA2CE\u8EA2\uA4B9" + //  6860 -  6864
+                "\u0000\uCAD4\u8EA2\uA4BC\u8EA2\uA4BB\u8EA2\uA4BA\u8EA2\uA4BD" + //  6865 -  6869
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCDF6" + //  6870 -  6874
+                "\u8EA2\uA7AA\u8EA2\uA7A6\u8EA2\uA7AF\u0000\u0000\u0000\u0000" + //  6875 -  6879
+                "\u8EA2\uA3A6\u0000\u0000\u0000\uC8FB\u0000\u0000\u0000\u0000" + //  6880 -  6884
+                "\u0000\uC8FE\u0000\uC8EF\u0000\uC9A9\u8EA2\uA2FD\u0000\u0000" + //  6885 -  6889
+                "\u0000\u0000\u8EA2\uA5BD\u0000\uC8ED\u0000\uC9A5\u0000\uC8EE" + //  6890 -  6894
+                "\u0000\uC8F6\u0000\uC8F7\u8EA2\uA3A4\u8EA2\uA2FE\u0000\uC8FC" + //  6895 -  6899
+                "\u0000\uC8F4\u8EA2\uA2FA\u0000\uC8F0\u8EA2\uA3A7\u0000\uC9A7" + //  6900 -  6904
+                "\u0000\uC9AA\u0000\uC8F3\u0000\uC9A2\u0000\uC9A8\u0000\uC8F1" + //  6905 -  6909
+                "\u8EA2\uA3A5\u0000\uC9A3\u8EA2\uA3AB\u8EA2\uA2FC\u0000\uC9A1" + //  6910 -  6914
+                "\u8EA2\uA3A1\u0000\u0000\u0000\u0000\u8EA2\uA3A3\u0000\u0000" + //  6915 -  6919
+                "\u0000\uCBF9\u8EA2\uA5BF\u8EA2\uA5CB\u0000\uCBF1\u0000\u0000" + //  6920 -  6924
+                "\u8EA2\uA5CC\u0000\uCBEC\u0000\uCBF6\u0000\u0000\u0000\u0000" + //  6925 -  6929
+                "\u0000\uCBEF\u8EA2\uA5B9\u0000\uCBF7\u8EA2\uA5B8\u8EA2\uA5BC" + //  6930 -  6934
+                "\u8EA2\uA5C3\u8EA2\uA5C1\u0000\uCCA1\u0000\uCBFA\u8EA2\uA5B3" + //  6935 -  6939
+                "\u8EA2\uA5B5\u0000\uCBFC\u0000\uCBF0\u8EA2\uE8E1\u0000\u0000" + //  6940 -  6944
+                "\u8EA2\uF0A4\u0000\uE3A7\u0000\u0000\u0000\u0000\u0000\u0000" + //  6945 -  6949
+                "\u0000\u0000\u8EA2\uE1BA\u0000\u0000\u0000\u0000\u0000\u0000" + //  6950 -  6954
+                "\u0000\uFDB1\u0000\uE3A8\u0000\uF0AD\u0000\uF6B4\u8EA2\uF0A5" + //  6955 -  6959
+                "\u0000\uE3A9\u0000\u0000\u8EA2\uD6BC\u0000\uF3BD\u8EA2\uDCC0" + //  6960 -  6964
+                "\u8EA2\uDCC1\u0000\u0000\u0000\uF3BC\u0000\u0000\u8EA2\uE1BB" + //  6965 -  6969
+                "\u0000\uF6B8\u0000\uF6B6\u0000\uF6B7\u0000\uF6B5\u8EA2\uE5AC" + //  6970 -  6974
+                "\u0000\uF8A8\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEBC3" + //  6975 -  6979
+                "\u8EA2\uEBC2\u8EA2\uEBC5\u8EA2\uEBC4\u0000\uFADD\u0000\u0000" + //  6980 -  6984
+                "\u0000\u0000\u8EA2\uEDB9\u0000\u0000\u8EA2\uEDBB\u8EA2\uEDBA" + //  6985 -  6989
+                "\u0000\uFBD2\u8EA2\uEEF5\u0000\u0000\u8EA2\uF0A6\u8EA2\uF0A7" + //  6990 -  6994
+                "\u0000\uFCDC\u8EA2\uF1D3\u8EA2\uF1ED\u0000\uFDC2\u0000\u0000" + //  6995 -  6999
+                "\u8EA2\uC1D5\u8EA2\uDCC2\u8EA2\uE1BC\u8EA2\uE8E2\u8EA2\uC8F5" + //  7000 -  7004
+                "\u0000\u0000\u8EA2\uE1BD\u8EA2\uC8F4\u0000\u0000\u0000\uE7EE" + //  7005 -  7009
+                "\u8EA2\uD6BB\u0000\u0000\u0000\u0000\u8EA2\uDCBC\u8EA2\uDCBD" + //  7010 -  7014
+                "\u8EA2\uDCBB\u8EA2\uE1B7\u8EA2\uE1B6\u0000\uF6B3\u8EA2\uE5AB" + //  7015 -  7019
+                "\u8EA2\uE1B8\u8EA2\uE5AA\u0000\u0000\u0000\u0000\u8EA2\uE8E0" + //  7020 -  7024
+                "\u0000\uF9DD\u0000\uF9DF\u8EA2\uE8DF\u0000\u0000\u0000\u0000" + //  7025 -  7029
+                "\u0000\uF9DE\u0000\u0000\u8EA2\uEBBF\u8EA2\uEBC1\u8EA2\uEBC0" + //  7030 -  7034
+                "\u8EA2\uEDB8\u0000\uFBD1\u0000\u0000\u0000\uFCDB\u8EA2\uF0F6" + //  7035 -  7039
+                "\u8EA2\uF1D2\u0000\u0000\u0000\u0000\u8EA2\uF2C1\u0000\uDEA7" + //  7040 -  7044
+                "\u0000\u0000\u8EA2\uCFCD\u0000\u0000\u0000\uF0AB\u0000\u0000" + //  7045 -  7049
+                "\u0000\u0000\u0000\u0000\u8EA2\uDCBF\u8EA2\uDCBE\u0000\u0000" + //  7050 -  7054
+                "\u8EA2\uE1B9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF9E0" + //  7055 -  7059
+                "\u0000\uFADC\u8EA2\uEEF4\u8EA2\uF2B9\u0000\u0000\u0000\u0000" + //  7060 -  7064
+                "\u0000\u0000\u0000\uDEA8\u0000\uEBFB\u0000\u0000\u0000\uF0AC" + //  7065 -  7069
+                "\u0000\u0000\u8EAD\uA2B4\u8EAD\uA2B5\u8EAD\uA2B6\u8EAD\uA2B7" + //  7070 -  7074
+                "\u8EAD\uA2B8\u8EAD\uA2B9\u8EAD\uA2BA\u8EAD\uA2BB\u8EAD\uA2BC" + //  7075 -  7079
+                "\u8EAD\uA2BD\u8EAD\uA2BE\u8EAD\uA2BF\u8EAD\uA2C0\u8EAD\uA2C1" + //  7080 -  7084
+                "\u8EAD\uA2C2\u8EAD\uA2C3\u8EAD\uA2C4\u8EAD\uA2C5\u8EAD\uA2C6" + //  7085 -  7089
+                "\u8EAD\uA2C7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7090 -  7094
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1A1\u8EAD\uA1A2" + //  7095 -  7099
+                "\u8EAD\uA1A7\u8EAD\uA1A8\u0000\u0000\u0000\u0000\u8EAD\uA2C8" + //  7100 -  7104
+                "\u8EAD\uA2C9\u8EAD\uA2CA\u8EAD\uA2CB\u8EAD\uA2CC\u8EAD\uA2CD" + //  7105 -  7109
+                "\u8EAD\uA2CE\u8EAD\uA2CF\u8EAD\uA2D0\u8EAD\uA2D1\u8EAD\uA2D2" + //  7110 -  7114
+                "\u8EAD\uA2D3\u8EAD\uA2D4\u8EAD\uA2D5\u8EAD\uA2D6\u8EAD\uA2D7" + //  7115 -  7119
+                "\u8EAD\uA2D8\u8EAD\uA2D9\u8EAD\uA2DA\u8EAD\uA2DB\u8EAD\uA2DC" + //  7120 -  7124
+                "\u8EAD\uA2DD\u8EAD\uA2DE\u8EAD\uA2DF\u8EAD\uA2E0\u8EAD\uA2E1" + //  7125 -  7129
+                "\u8EAD\uA2E2\u8EAD\uA2E3\u8EAD\uA2E4\u8EAD\uA2E5\u8EAD\uA2E6" + //  7130 -  7134
+                "\u8EA2\uF0F0\u8EA2\uF0F1\u8EA2\uF0EA\u8EA2\uF0ED\u8EA2\uF0F5" + //  7135 -  7139
+                "\u8EA2\uF0EF\u8EA2\uF0EE\u8EA2\uF0EC\u0000\u0000\u8EA2\uF0F2" + //  7140 -  7144
+                "\u0000\u0000\u8EA2\uF1CC\u0000\u0000\u8EA2\uF1CD\u0000\u0000" + //  7145 -  7149
+                "\u8EA2\uF1CF\u8EA2\uF1CE\u8EA2\uF1D1\u8EA2\uF1D0\u8EA2\uF1EC" + //  7150 -  7154
+                "\u8EA2\uF1EB\u8EA2\uF2A7\u0000\u0000\u8EA2\uF2A8\u0000\u0000" + //  7155 -  7159
+                "\u8EA2\uF2B4\u0000\uFDC5\u0000\uFDC9\u0000\u0000\u8EA2\uF2BD" + //  7160 -  7164
+                "\u0000\uFDCA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7165 -  7169
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7170 -  7174
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7175 -  7179
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7180 -  7184
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7185 -  7189
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7190 -  7194
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7195 -  7199
+                "\u0000\u0000\u0000\uA2A1\u0000\u0000\u0000\u0000\u0000\u0000" + //  7200 -  7204
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7205 -  7209
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7210 -  7214
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7215 -  7219
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7220 -  7224
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7225 -  7229
+                "\u0000\uCBD0\u0000\uE2CB\u0000\u0000\u0000\u0000\u0000\uE7A8" + //  7230 -  7234
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEBBE\u0000\u0000" + //  7235 -  7239
+                "\u0000\u0000\u0000\uF2D6\u0000\u0000\u0000\uF2D5\u0000\u0000" + //  7240 -  7244
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF9B0\u0000\uFAA9" + //  7245 -  7249
+                "\u0000\uFBB3\u0000\uCBD1\u0000\uD8C9\u0000\uE7A9\u0000\u0000" + //  7250 -  7254
+                "\u8EA2\uE7C7\u0000\uA8E3\u0000\u0000\u0000\u0000\u0000\u0000" + //  7255 -  7259
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7260 -  7264
+                "\u0000\u0000\u8EA2\uA5A6\u8EA2\uE8CB\u8EA2\uE8C6\u8EA2\uE8D9" + //  7265 -  7269
+                "\u0000\u0000\u8EA2\uE8C8\u8EA2\uE8D6\u8EA2\uE8CD\u8EA2\uE8DD" + //  7270 -  7274
+                "\u8EA2\uE8C9\u0000\uF9D8\u8EA2\uE8C7\u8EA2\uE8CE\u8EA2\uE8CF" + //  7275 -  7279
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEBAD\u0000\u0000" + //  7280 -  7284
+                "\u8EA2\uEBAB\u0000\u0000\u8EA2\uEBB0\u0000\u0000\u8EA2\uEBBC" + //  7285 -  7289
+                "\u8EA2\uEBB3\u8EA2\uEBAC\u8EA2\uEBA8\u8EA2\uEBB5\u8EA2\uEBAE" + //  7290 -  7294
+                "\u8EA2\uEBB1\u8EA2\uEBAA\u8EA2\uEBB8\u8EA2\uEBA7\u8EA2\uEBAF" + //  7295 -  7299
+                "\u8EA2\uEBB4\u8EA2\uEBB6\u8EA2\uEBB9\u8EA2\uEBA9\u0000\u0000" + //  7300 -  7304
+                "\u8EA2\uEBBD\u8EA2\uEBBE\u8EA2\uEBB7\u8EA2\uEBBB\u8EA2\uEBB2" + //  7305 -  7309
+                "\u0000\u0000\u8EA2\uEDAF\u8EA2\uEDB2\u0000\u0000\u0000\uFBCD" + //  7310 -  7314
+                "\u0000\u0000\u8EA2\uEDB1\u8EA2\uEDB6\u8EA2\uEDB4\u0000\uFBCE" + //  7315 -  7319
+                "\u8EA2\uEDAB\u8EA2\uEDA1\u8EA2\uECFE\u0000\uFBD0\u8EA2\uEDAD" + //  7320 -  7324
+                "\u8EA2\uEDAE\u8EA2\uEDAA\u8EA2\uEDA2\u0000\u0000\u8EA2\uEDA7" + //  7325 -  7329
+                "\u8EA2\uEBBA\u8EA2\uE1B2\u8EA2\uE1A5\u8EA2\uE1AE\u8EA2\uE1AF" + //  7330 -  7334
+                "\u0000\u0000\u8EA2\uE1AD\u0000\u0000\u0000\u0000\u0000\u0000" + //  7335 -  7339
+                "\u0000\u0000\u8EA2\uE4FC\u8EA2\uE4FE\u8EA2\uE5A3\u0000\u0000" + //  7340 -  7344
+                "\u0000\u0000\u8EA2\uE4FB\u0000\u0000\u0000\uF8A5\u8EA2\uE5A5" + //  7345 -  7349
+                "\u8EA2\uE4FA\u8EA2\uE5A6\u0000\u0000\u8EA2\uE5A2\u8EA2\uE5A4" + //  7350 -  7354
+                "\u8EA2\uE5A8\u8EA2\uE5A1\u8EA2\uE5A9\u8EA2\uE4FD\u8EA2\uE4F9" + //  7355 -  7359
+                "\u0000\uF8A6\u0000\u0000\u8EA2\uE5A7\u0000\uF8A7\u0000\uF9D9" + //  7360 -  7364
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7365 -  7369
+                "\u8EA2\uE1A6\u8EA2\uE8DE\u8EA2\uE8D5\u0000\uF9DB\u8EA2\uE8D1" + //  7370 -  7374
+                "\u0000\uF9DC\u0000\u0000\u0000\u0000\u8EA2\uE8DA\u8EA2\uE8D4" + //  7375 -  7379
+                "\u8EA2\uE8CA\u0000\uF9DA\u8EA2\uE8D7\u8EA2\uE8D2\u8EA2\uE8D3" + //  7380 -  7384
+                "\u0000\u0000\u8EA2\uE8C5\u8EA2\uE8CC\u8EA2\uE8DB\u0000\u0000" + //  7385 -  7389
+                "\u8EA2\uE8D8\u0000\u0000\u8EA2\uE8D0\u0000\u0000\u8EA2\uE8DC" + //  7390 -  7394
+                "\u8EA2\uD6B5\u0000\u0000\u0000\u0000\u0000\uF0AA\u8EA2\uD6BA" + //  7395 -  7399
+                "\u8EA2\uD6B9\u0000\uF0A8\u8EA2\uD6B4\u8EA2\uD6B8\u0000\uF0A9" + //  7400 -  7404
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7405 -  7409
+                "\u0000\u0000\u8EA2\uDCB8\u0000\u0000\u0000\uF3BA\u0000\u0000" + //  7410 -  7414
+                "\u8EA2\uDCB3\u0000\uF3B6\u0000\u0000\u8EA2\uDCB0\u8EA2\uDCB6" + //  7415 -  7419
+                "\u8EA2\uDCB9\u0000\u0000\u0000\uF3BB\u0000\u0000\u8EA2\uDCB5" + //  7420 -  7424
+                "\u8EA2\uDCB2\u8EA2\uDCBA\u8EA2\uDCB1\u0000\u0000\u8EA2\uDCB7" + //  7425 -  7429
+                "\u0000\uF3B7\u0000\u0000\u8EA2\uDCAF\u0000\uF3B8\u0000\u0000" + //  7430 -  7434
+                "\u0000\uF3B9\u8EA2\uDCB4\u0000\u0000\u0000\u0000\u0000\u0000" + //  7435 -  7439
+                "\u8EA2\uE1B5\u8EA2\uE1A8\u8EA2\uE1A9\u8EA2\uE1AC\u8EA2\uE1AA" + //  7440 -  7444
+                "\u0000\u0000\u8EA2\uE1A4\u0000\u0000\u0000\u0000\u8EA2\uE1A7" + //  7445 -  7449
+                "\u8EA2\uE1B1\u8EA2\uE1AB\u0000\u0000\u0000\u0000\u0000\uF6B1" + //  7450 -  7454
+                "\u0000\u0000\u8EA2\uE1B3\u8EA2\uE1B0\u0000\uF6B2\u8EA2\uEAFE" + //  7455 -  7459
+                "\u8EA2\uEEDD\u0000\u0000\u0000\u0000\u8EA2\uEEDA\u0000\u0000" + //  7460 -  7464
+                "\u8EA2\uEED7\u0000\u0000\u8EA2\uEED8\u0000\uFCAA\u8EA2\uEFE8" + //  7465 -  7469
+                "\u8EA2\uEFEA\u8EA2\uEFED\u8EA2\uEFE9\u8EA2\uEFEE\u0000\u0000" + //  7470 -  7474
+                "\u8EA2\uEFE7\u0000\u0000\u8EA2\uEFE5\u0000\u0000\u0000\uFCD7" + //  7475 -  7479
+                "\u8EA2\uEFEB\u0000\uFCD9\u0000\uFCD8\u8EA2\uEFE6\u8EA2\uEFEC" + //  7480 -  7484
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uF0E8" + //  7485 -  7489
+                "\u0000\uFCF8\u8EA2\uF0E9\u0000\u0000\u8EA2\uF0E7\u8EA2\uF0E4" + //  7490 -  7494
+                "\u0000\u0000\u0000\u0000\u8EA2\uF0E6\u8EA2\uF0E5\u8EA2\uF1C9"   //  7495 -  7499
+                ;
+
+            index2a =
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uF1CB" + //  7500 -  7504
+                "\u8EA2\uF1CA\u0000\u0000\u0000\u0000\u8EA2\uF1E9\u0000\u0000" + //  7505 -  7509
+                "\u8EA2\uF1E8\u8EA2\uF1E7\u8EA2\uF1EA\u0000\u0000\u0000\uFDC0" + //  7510 -  7514
+                "\u0000\uFDC1\u8EA2\uF2B8\u8EA2\uF2BC\u0000\u0000\u0000\u0000" + //  7515 -  7519
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBBAA\u8EA2\uBBA7" + //  7520 -  7524
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7525 -  7529
+                "\u8EA2\uBBA8\u8EA2\uBBAB\u8EA2\uBBAF\u0000\u0000\u8EA2\uB4E6" + //  7530 -  7534
+                "\u8EA2\uBBB1\u8EA2\uC2CD\u0000\u0000\u0000\uDEE8\u8EA2\uBBB2" + //  7535 -  7539
+                "\u8EA2\uBAF8\u8EA2\uBBA4\u0000\u0000\u8EA2\uBBA9\u0000\u0000" + //  7540 -  7544
+                "\u0000\u0000\u0000\uDEE6\u0000\uDEE9\u8EA2\uBBB0\u8EA2\uBBB3" + //  7545 -  7549
+                "\u8EA2\uBAFC\u8EA2\uBAF9\u0000\u0000\u0000\u0000\u8EA2\uBAFB" + //  7550 -  7554
+                "\u0000\u0000\u0000\u0000\u8EA2\uBBA2\u8EA2\uBAFE\u0000\uDEEA" + //  7555 -  7559
+                "\u0000\u0000\u8EA2\uBBAC\u0000\u0000\u0000\u0000\u8EA2\uBBA3" + //  7560 -  7564
+                "\u0000\u0000\u8EA2\uBBA5\u8EA2\uBAF7\u8EA2\uC2C1\u8EA2\uC2BF" + //  7565 -  7569
+                "\u0000\uE3E8\u0000\uE3E6\u8EA2\uC2C9\u8EA2\uC2C0\u8EA2\uC2CA" + //  7570 -  7574
+                "\u8EA2\uC2C6\u8EA2\uC2BE\u8EA2\uC2CC\u8EA2\uC2BD\u8EA2\uC2C4" + //  7575 -  7579
+                "\u0000\uE3E5\u0000\uE3E4\u0000\uE3E3\u8EA2\uC2C2\u0000\uF8A4" + //  7580 -  7584
+                "\u8EA2\uE4F1\u0000\u0000\u8EA2\uE4EF\u8EA2\uE4F6\u0000\u0000" + //  7585 -  7589
+                "\u8EA2\uE4EE\u8EA2\uE4ED\u0000\uF8A3\u0000\uF8A1\u0000\uF7FE" + //  7590 -  7594
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7595 -  7599
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE4F4\u8EA2\uE8BC" + //  7600 -  7604
+                "\u8EA2\uE8C2\u0000\uF9D6\u8EA2\uE8BD\u0000\u0000\u8EA2\uE8C0" + //  7605 -  7609
+                "\u8EA2\uE8C4\u0000\uF9D7\u8EA2\uE8BF\u0000\u0000\u8EA2\uE8B7" + //  7610 -  7614
+                "\u0000\u0000\u8EA2\uE8B6\u8EA2\uE8C3\u8EA2\uE8BA\u0000\u0000" + //  7615 -  7619
+                "\u8EA2\uE8B8\u8EA2\uE8C1\u8EA2\uE8B9\u0000\uF9D5\u0000\uF9D4" + //  7620 -  7624
+                "\u0000\u0000\u8EA2\uE8B4\u8EA2\uE8B5\u8EA2\uE8BE\u0000\u0000" + //  7625 -  7629
+                "\u0000\u0000\u0000\u0000\u8EA2\uE8BB\u0000\u0000\u0000\u0000" + //  7630 -  7634
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEAFA" + //  7635 -  7639
+                "\u8EA2\uEAFD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7640 -  7644
+                "\u0000\uF8A2\u0000\u0000\u0000\u0000\u8EA2\uD0A6\u8EA2\uD0A4" + //  7645 -  7649
+                "\u8EA2\uD0A2\u0000\u0000\u8EA2\uD0A8\u0000\u0000\u8EA2\uD0A7" + //  7650 -  7654
+                "\u0000\uECCD\u0000\uECC8\u0000\u0000\u0000\uECCA\u0000\uECCC" + //  7655 -  7659
+                "\u0000\u0000\u0000\u0000\u8EA2\uD0A9\u8EA2\uD6E1\u0000\u0000" + //  7660 -  7664
+                "\u0000\u0000\u8EA2\uD6E0\u8EA2\uD6DF\u0000\u0000\u8EA2\uD6E2" + //  7665 -  7669
+                "\u8EA2\uD6DB\u0000\u0000\u8EA2\uD6DC\u8EA2\uD6E4\u8EA2\uD6DD" + //  7670 -  7674
+                "\u0000\u0000\u0000\uF0CE\u8EA2\uD6E6\u0000\u0000\u8EA2\uD6E5" + //  7675 -  7679
+                "\u8EA2\uD6DE\u0000\u0000\u8EA2\uDCDD\u0000\uF3D1\u8EA2\uDCDB" + //  7680 -  7684
+                "\u8EA2\uDCE0\u8EA2\uDCDF\u8EA2\uD6E3\u0000\u0000\u0000\uF3D0" + //  7685 -  7689
+                "\u0000\u0000\u8EA2\uDCDE\u8EA2\uDCDA\u8EA2\uDCE2\u8EA2\uDCE1" + //  7690 -  7694
+                "\u0000\uF3CF\u0000\u0000\u8EA2\uDCDC\u0000\u0000\u0000\uF0CF" + //  7695 -  7699
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF6C0\u0000\u0000" + //  7700 -  7704
+                "\u0000\u0000\u0000\u0000\u8EA2\uE1CD\u8EA2\uE5C6\u8EA2\uE5C7" + //  7705 -  7709
+                "\u8EA2\uE5C8\u8EA2\uDCA1\u0000\u0000\u8EA2\uDCA7\u0000\u0000" + //  7710 -  7714
+                "\u0000\u0000\u8EA2\uDCA2\u8EA2\uE0FE\u8EA2\uDCA3\u8EA2\uDCAE" + //  7715 -  7719
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7720 -  7724
+                "\u0000\u0000\u0000\u0000\u8EA2\uDCAA\u0000\uF3B5\u8EA2\uDCA9" + //  7725 -  7729
+                "\u8EA2\uDCA8\u0000\u0000\u8EA2\uDCAC\u0000\u0000\u0000\u0000" + //  7730 -  7734
+                "\u0000\u0000\u0000\u0000\u8EA2\uE0F6\u8EA2\uE0F9\u0000\u0000" + //  7735 -  7739
+                "\u0000\u0000\u8EA2\uE0F8\u0000\u0000\u8EA2\uE1A2\u8EA2\uE0FB" + //  7740 -  7744
+                "\u8EA2\uE1A1\u0000\u0000\u8EA2\uE0FD\u8EA2\uE0FC\u8EA2\uE0FA" + //  7745 -  7749
+                "\u0000\u0000\u8EA2\uE0F7\u0000\u0000\u0000\uF6AF\u0000\uF6AE" + //  7750 -  7754
+                "\u0000\u0000\u0000\uF6B0\u0000\uF6AD\u8EA2\uE1A3\u0000\u0000" + //  7755 -  7759
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE4F2" + //  7760 -  7764
+                "\u8EA2\uE4F5\u0000\u0000\u8EA2\uE4F3\u8EA2\uE4F7\u0000\u0000" + //  7765 -  7769
+                "\u0000\u0000\u0000\u0000\u8EA2\uE4F8\u0000\u0000\u8EA2\uE4F0" + //  7770 -  7774
+                "\u8EA2\uE4E3\u0000\uF7F8\u8EA2\uE8AE\u0000\u0000\u0000\u0000" + //  7775 -  7779
+                "\u0000\u0000\u8EA2\uEAF4\u8EA2\uEAF2\u0000\u0000\u0000\u0000" + //  7780 -  7784
+                "\u8EA2\uEAF3\u0000\u0000\u0000\u0000\u8EA2\uECEE\u0000\u0000" + //  7785 -  7789
+                "\u0000\uFBC8\u8EA2\uEED1\u0000\uFCD6\u0000\uFCA8\u0000\uFCD4" + //  7790 -  7794
+                "\u0000\uFCD5\u8EA2\uF0E2\u0000\uFDAF\u0000\u0000\u0000\uD8ED" + //  7795 -  7799
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE4E4\u0000\u0000" + //  7800 -  7804
+                "\u0000\u0000\u8EA2\uB3CC\u0000\u0000\u0000\uE7EC\u0000\u0000" + //  7805 -  7809
+                "\u8EA2\uCFC3\u0000\u0000\u0000\u0000\u0000\uEBF5\u8EA2\uCFC4" + //  7810 -  7814
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD5FD\u8EA2\uD5FC" + //  7815 -  7819
+                "\u0000\uF3B3\u0000\uF0A1\u0000\uF0A2\u0000\u0000\u8EA2\uD6A2" + //  7820 -  7824
+                "\u8EA2\uD6A1\u8EA2\uD5FE\u0000\u0000\u0000\u0000\u8EA2\uDBFA" + //  7825 -  7829
+                "\u8EA2\uDBFD\u0000\u0000\u8EA2\uDBFC\u8EA2\uDBFB\u0000\uF3B2" + //  7830 -  7834
+                "\u8EA2\uE0F4\u8EA2\uE0F2\u8EA2\uE0F1\u0000\u0000\u0000\uA1A1" + //  7835 -  7839
+                "\u0000\uA1A3\u0000\uA1A4\u0000\uA1F1\u0000\u0000\u8EAD\uA1AB" + //  7840 -  7844
+                "\u8EAD\uA1AC\u8EAD\uA1AD\u0000\uA1D2\u0000\uA1D3\u0000\uA1CE" + //  7845 -  7849
+                "\u0000\uA1CF\u0000\uA1D6\u0000\uA1D7\u0000\uA1DA\u0000\uA1DB" + //  7850 -  7854
+                "\u0000\uA1CA\u0000\uA1CB\u0000\uA2E5\u8EAD\uA1B5\u0000\uA1C6" + //  7855 -  7859
+                "\u0000\uA1C7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7860 -  7864
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA1E8\u0000\uA1E9" + //  7865 -  7869
+                "\u0000\u0000\u0000\u0000\u0000\uA4B5\u0000\uA4B6\u0000\uA4B7" + //  7870 -  7874
+                "\u0000\uA4B8\u0000\uA4B9\u0000\uA4BA\u0000\uA4BB\u0000\uA4BC" + //  7875 -  7879
+                "\u0000\uA4BD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7880 -  7884
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7885 -  7889
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7890 -  7894
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7895 -  7899
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uAFEE\u0000\uD6AE" + //  7900 -  7904
+                "\u8EA2\uAFEF\u0000\u0000\u8EA2\uAFE3\u0000\uD6A3\u0000\uD6AF" + //  7905 -  7909
+                "\u0000\u0000\u8EA2\uAFDC\u0000\u0000\u8EA2\uAFE5\u8EA2\uAFED" + //  7910 -  7914
+                "\u0000\u0000\u8EA2\uAFDB\u8EA2\uAFF6\u0000\uD5F7\u0000\u0000" + //  7915 -  7919
+                "\u0000\u0000\u0000\u0000\u8EA2\uAFF5\u8EA2\uAFF0\u0000\u0000" + //  7920 -  7924
+                "\u8EA2\uAFF1\u0000\uD6A1\u0000\uD6AC\u8EA2\uAFE7\u0000\u0000" + //  7925 -  7929
+                "\u8EA2\uAFE8\u8EA2\uAFF2\u8EA2\uAFE9\u0000\u0000\u8EA2\uAFE4" + //  7930 -  7934
+                "\u8EA2\uAFDE\u8EA2\uAFDF\u8EA2\uAFEC\u8EA2\uAFE6\u0000\u0000" + //  7935 -  7939
+                "\u0000\u0000\u0000\uD5F8\u0000\uD5FC\u8EA2\uAFF4\u8EA2\uAFE0" + //  7940 -  7944
+                "\u0000\uD6AA\u0000\uD6A6\u0000\u0000\u0000\u0000\u8EA2\uACFC" + //  7945 -  7949
+                "\u0000\uD3AA\u0000\uD3AB\u8EA2\uACFE\u0000\u0000\u8EA2\uACF8" + //  7950 -  7954
+                "\u8EA2\uACFB\u8EA2\uADA6\u8EA2\uADA4\u0000\u0000\u0000\uD3AC" + //  7955 -  7959
+                "\u8EA2\uADAA\u0000\uD3AF\u8EA2\uADA7\u8EA2\uACFD\u8EA2\uACFA" + //  7960 -  7964
+                "\u0000\u0000\u0000\u0000\u8EA2\uBFAE\u8EA2\uADA5\u0000\uD3A7" + //  7965 -  7969
+                "\u8EA2\uADA8\u8EA2\uACF7\u8EA2\uADA2\u0000\uD3A9\u0000\uD3AE" + //  7970 -  7974
+                "\u8EA2\uADA3\u0000\uD3B2\u0000\uD3B0\u0000\u0000\u8EA2\uACF9" + //  7975 -  7979
+                "\u0000\uD3AD\u0000\u0000\u8EA2\uADA1\u0000\uD3B1\u0000\uD3A8" + //  7980 -  7984
+                "\u8EA2\uADA9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  7985 -  7989
+                "\u0000\u0000\u0000\u0000\u0000\uD7DE\u0000\u0000\u0000\uD7E7" + //  7990 -  7994
+                "\u0000\uD7DC\u0000\uD7DA\u8EA2\uB2AE\u0000\uD7E2\u0000\uD7DF" + //  7995 -  7999
+                "\u8EA2\uB2B0\u0000\u0000\u0000\u0000\u0000\uD7E1\u8EA2\uB2AF" + //  8000 -  8004
+                "\u8EA2\uB2AD\u8EA2\uB2B2\u0000\uD7E6\u0000\uD7E4\u8EA2\uBFAD" + //  8005 -  8009
+                "\u0000\u0000\u8EA2\uAAE8\u0000\u0000\u8EA2\uAAE9\u0000\u0000" + //  8010 -  8014
+                "\u0000\uD1CA\u8EA2\uAFD0\u0000\u0000\u0000\uD5E6\u0000\uD5E7" + //  8015 -  8019
+                "\u8EA2\uAFCF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8020 -  8024
+                "\u0000\uDAF7\u0000\u0000\u0000\uDAF3\u0000\u0000\u8EA2\uB5E9" + //  8025 -  8029
+                "\u0000\uDAFA\u0000\uDAF9\u0000\uDAF2\u0000\uDAF5\u0000\uDAF8" + //  8030 -  8034
+                "\u0000\uDAF4\u0000\u0000\u0000\u0000\u8EA2\uBCBB\u0000\uDAF1" + //  8035 -  8039
+                "\u0000\uDFD4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDFD6" + //  8040 -  8044
+                "\u0000\uDFD7\u8EA2\uBCBA\u8EA2\uBCBD\u0000\uDFD5\u8EA2\uBCB8" + //  8045 -  8049
+                "\u8EA2\uBCBC\u0000\u0000\u8EA2\uBCB9\u0000\u0000\u0000\uE4B9" + //  8050 -  8054
+                "\u0000\u0000\u0000\u0000\u8EA2\uC3C2\u0000\u0000\u0000\u0000" + //  8055 -  8059
+                "\u0000\uE8FD\u8EA2\uCADB\u0000\uF0EC\u0000\uEDAE\u8EA2\uD0E4" + //  8060 -  8064
+                "\u0000\uEDAF\u0000\uEDB0\u8EA2\uD0E6\u8EA2\uD0E5\u8EA2\uD0E7" + //  8065 -  8069
+                "\u8EA2\uD7BC\u0000\u0000\u0000\u0000\u8EA2\uD7BB\u0000\uFBC6" + //  8070 -  8074
+                "\u8EA2\uECEB\u8EA2\uECEA\u0000\uFBC5\u8EA2\uECE9\u0000\uFBC4" + //  8075 -  8079
+                "\u8EA2\uECE8\u0000\u0000\u8EA2\uEECC\u8EA2\uEECE\u8EA2\uEECD" + //  8080 -  8084
+                "\u0000\u0000\u8EA2\uEECA\u0000\uFCA7\u8EA2\uEEC7\u8EA2\uEECB" + //  8085 -  8089
+                "\u8EA2\uEED0\u0000\u0000\u8EA2\uEECF\u8EA2\uEEC8\u8EA2\uEEC9" + //  8090 -  8094
+                "\u0000\uFCA6\u8EA2\uEFE0\u0000\uFCD3\u0000\u0000\u8EA2\uEFE1" + //  8095 -  8099
+                "\u0000\uFCD1\u0000\uFCD2\u0000\u0000\u0000\u0000\u8EA2\uF0E1" + //  8100 -  8104
+                "\u0000\uFCF5\u8EA2\uF1E5\u0000\u0000\u0000\uFDB7\u0000\u0000" + //  8105 -  8109
+                "\u8EA2\uF2A3\u0000\uFDB8\u8EA2\uF2A4\u8EA2\uF2A5\u8EA2\uF2B3" + //  8110 -  8114
+                "\u8EA2\uF2B2\u0000\uFDC7\u8EA2\uF2BB\u0000\u0000\u0000\u0000" + //  8115 -  8119
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8120 -  8124
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8125 -  8129
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8130 -  8134
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2F5\u0000\uA2F6" + //  8135 -  8139
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8140 -  8144
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8145 -  8149
+                "\u0000\u0000\u0000\u0000\u0000\uA2F0\u0000\uA2F1\u0000\uA2F2" + //  8150 -  8154
+                "\u0000\u0000\u0000\u0000\u0000\uA2F4\u0000\u0000\u0000\u0000" + //  8155 -  8159
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8160 -  8164
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8165 -  8169
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8170 -  8174
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8175 -  8179
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8180 -  8184
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8185 -  8189
+                "\u0000\uA2E6\u0000\uA2E7\u8EAD\uA4C0\u0000\uA2A4\u8EAD\uA4C1" + //  8190 -  8194
+                "\u0000\uA2E4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8195 -  8199
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8200 -  8204
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8205 -  8209
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8210 -  8214
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8215 -  8219
+                "\u0000\u0000\u0000\u0000\u8EAD\uA1BE\u0000\u0000\u8EAD\uA1BF" + //  8220 -  8224
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8225 -  8229
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8230 -  8234
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8235 -  8239
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA4BD\u0000\u0000" + //  8240 -  8244
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8245 -  8249
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8250 -  8254
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8255 -  8259
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8260 -  8264
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1C2\u0000\u0000" + //  8265 -  8269
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8270 -  8274
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8275 -  8279
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8280 -  8284
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8285 -  8289
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8290 -  8294
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8295 -  8299
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8300 -  8304
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8305 -  8309
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8310 -  8314
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA4C4\u0000\u0000" + //  8315 -  8319
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8320 -  8324
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8325 -  8329
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBDB1\u0000\uE0C6" + //  8330 -  8334
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC4C7\u8EA2\uC4C6" + //  8335 -  8339
+                "\u8EA2\uC4AC\u0000\uE4E3\u0000\u0000\u8EA2\uC4C5\u8EA2\uC4AF" + //  8340 -  8344
+                "\u8EA2\uC4B0\u0000\u0000\u0000\uE4ED\u8EA2\uC4CE\u0000\uE4E8" + //  8345 -  8349
+                "\u8EA2\uC4C4\u0000\u0000\u8EA2\uC4A9\u0000\uE4EE\u0000\uE4E4" + //  8350 -  8354
+                "\u8EA2\uC4B8\u8EA2\uC4AE\u8EA2\uC4B1\u8EA2\uC4C9\u0000\uE4DE" + //  8355 -  8359
+                "\u8EA2\uC4D0\u8EA2\uC4C8\u0000\uE4E7\u8EA2\uC4BD\u0000\uE4F2" + //  8360 -  8364
+                "\u0000\u0000\u0000\u0000\u0000\uE4F1\u0000\uE4EB\u0000\u0000" + //  8365 -  8369
+                "\u0000\u0000\u8EA2\uC4CF\u0000\uE4DF\u8EA2\uC4BB\u8EA2\uC4B2" + //  8370 -  8374
+                "\u8EA2\uC4BF\u8EA2\uC4CB\u0000\uE4F3\u0000\u0000\u0000\uE4E1" + //  8375 -  8379
+                "\u8EA2\uC4BA\u8EAD\uA4CB\u8EA2\uC4B3\u0000\uE4EA\u0000\u0000" + //  8380 -  8384
+                "\u0000\uE4E9\u8EA2\uC4B6\u8EA2\uC4C0\u8EA2\uC4CA\u8EA2\uCFB7" + //  8385 -  8389
+                "\u0000\u0000\u8EA2\uCFB6\u0000\uEBEE\u0000\u0000\u0000\uEBEF" + //  8390 -  8394
+                "\u0000\u0000\u8EA2\uCFB8\u8EA2\uD5E8\u0000\uEBF1\u0000\uEFF2" + //  8395 -  8399
+                "\u0000\u0000\u0000\uEBF0\u0000\u0000\u0000\u0000\u0000\u0000" + //  8400 -  8404
+                "\u0000\uF3A7\u8EA2\uD5EA\u0000\uEFF4\u0000\uEFF3\u8EA2\uD5EB" + //  8405 -  8409
+                "\u8EA2\uD5EE\u8EA2\uD5EC\u8EA2\uD5ED\u0000\uEFF5\u0000\u0000" + //  8410 -  8414
+                "\u0000\uF3AC\u0000\uF3AA\u0000\u0000\u0000\u0000\u0000\uF3A9" + //  8415 -  8419
+                "\u8EA2\uDBE9\u0000\u0000\u0000\uF3AB\u0000\u0000\u0000\u0000" + //  8420 -  8424
+                "\u8EA2\uDBE8\u8EA2\uE0D7\u0000\u0000\u8EA2\uDBEA\u0000\uF3A8" + //  8425 -  8429
+                "\u8EA2\uDBEB\u8EA2\uE0DA\u8EA2\uE0D8\u8EA2\uE0D9\u8EA2\uE0DE" + //  8430 -  8434
+                "\u0000\uF7F5\u8EA2\uE0DD\u8EA2\uE0E0\u8EA2\uE0DF\u8EA2\uE0DC" + //  8435 -  8439
+                "\u8EA2\uE0DB\u0000\u0000\u0000\uF6AA\u0000\u0000\u0000\u0000" + //  8440 -  8444
+                "\u0000\u0000\u0000\u0000\u8EA2\uE4D8\u0000\u0000\u8EA2\uE4D7" + //  8445 -  8449
+                "\u0000\uF7F4\u0000\uF7F2\u0000\uF7F3\u8EA2\uECE3\u8EA2\uEAE0" + //  8450 -  8454
+                "\u8EA2\uEAE1\u0000\u0000\u0000\uFAD1\u0000\u0000\u8EA2\uECE2" + //  8455 -  8459
+                "\u0000\u0000\u0000\u0000\u8EA2\uECE1\u0000\u0000\u8EA2\uEEC4" + //  8460 -  8464
+                "\u8EA2\uF1FE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8465 -  8469
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8470 -  8474
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8475 -  8479
+                "\u0000\uD3F9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD3FA" + //  8480 -  8484
+                "\u0000\u0000\u0000\u0000\u0000\uD8EA\u8EA2\uB3CB\u0000\u0000" + //  8485 -  8489
+                "\u8EA2\uBAB3\u0000\u0000\u0000\uE2FD\u0000\u0000\u0000\uE3A2" + //  8490 -  8494
+                "\u0000\uE2FE\u8EA2\uC1D3\u0000\u0000\u0000\uE3A4\u0000\u0000" + //  8495 -  8499
+                "\u0000\uE3A1\u0000\u0000\u0000\u0000\u0000\uE3A3\u0000\u0000" + //  8500 -  8504
+                "\u0000\uE7E6\u0000\u0000\u8EA2\uC8E8\u0000\u0000\u0000\u0000" + //  8505 -  8509
+                "\u8EA2\uC8E9\u8EA2\uD5E9\u0000\u0000\u0000\uE7E5\u0000\uE7E7" + //  8510 -  8514
+                "\u0000\uE7E8\u0000\u0000\u0000\uA2D1\u0000\u0000\u0000\uA2D2" + //  8515 -  8519
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8520 -  8524
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8525 -  8529
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8530 -  8534
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8535 -  8539
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8540 -  8544
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8545 -  8549
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8550 -  8554
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1CE" + //  8555 -  8559
+                "\u0000\u0000\u0000\u0000\u8EAD\uA1CD\u0000\u0000\u8EAD\uA1CC" + //  8560 -  8564
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8565 -  8569
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8570 -  8574
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8575 -  8579
+                "\u0000\u0000\u8EA2\uBAE9\u8EA2\uC2AE\u0000\uE3DB\u0000\uE3DE" + //  8580 -  8584
+                "\u0000\uE3D9\u8EA2\uC2AD\u8EA2\uC2B1\u8EA2\uC2AC\u0000\u0000" + //  8585 -  8589
+                "\u0000\uE3D3\u0000\uE3DD\u8EA2\uC2A9\u0000\uE3D7\u8EA2\uC2B0" + //  8590 -  8594
+                "\u0000\u0000\u0000\uE3D5\u0000\uE3D4\u8EA2\uC2B3\u0000\uE3D6" + //  8595 -  8599
+                "\u8EA2\uC2B5\u0000\u0000\u8EA2\uC2B2\u0000\uE3D2\u0000\u0000" + //  8600 -  8604
+                "\u0000\u0000\u0000\u0000\u0000\uE3DC\u8EA2\uC2B7\u8EA2\uC2AB" + //  8605 -  8609
+                "\u8EA2\uC2B4\u0000\u0000\u0000\u0000\u8EA2\uC2AA\u0000\u0000" + //  8610 -  8614
+                "\u0000\u0000\u0000\uE3D8\u0000\u0000\u0000\uE3DA\u0000\u0000" + //  8615 -  8619
+                "\u8EA2\uC2AF\u0000\u0000\u8EA2\uC2B8\u0000\u0000\u0000\u0000" + //  8620 -  8624
+                "\u8EA2\uC9C4\u0000\uE8B8\u8EA2\uC9CA\u0000\u0000\u0000\u0000" + //  8625 -  8629
+                "\u0000\uE8BD\u8EA2\uC9C6\u8EA2\uC9CD\u8EA2\uC9BE\u0000\uE8BF" + //  8630 -  8634
+                "\u0000\uE8B9\u8EA2\uC9C3\u8EA2\uEFDF\u0000\uD3F7\u0000\uDEA1" + //  8635 -  8639
+                "\u0000\uDEA2\u8EA2\uBAB2\u0000\uE2FA\u0000\uE2FB\u8EA2\uC1D1" + //  8640 -  8644
+                "\u0000\uE2FC\u0000\u0000\u0000\uE7E2\u0000\u0000\u0000\uE7E4" + //  8645 -  8649
+                "\u8EA2\uC8E5\u8EA2\uC8E6\u8EA2\uC8E4\u0000\uE7DF\u0000\uE7E0" + //  8650 -  8654
+                "\u0000\uE7E3\u0000\uE7E1\u0000\u0000\u0000\u0000\u8EA2\uCFB3" + //  8655 -  8659
+                "\u0000\uEBEA\u0000\uEBEB\u0000\u0000\u0000\u0000\u8EA2\uD5E5" + //  8660 -  8664
+                "\u0000\uEFF0\u8EA2\uD5E0\u8EA2\uD5DF\u0000\u0000\u8EA2\uD5E4" + //  8665 -  8669
+                "\u0000\uEFEE\u0000\u0000\u0000\u0000\u0000\uF3A6\u0000\u0000" + //  8670 -  8674
+                "\u8EA2\uD5E1\u8EA2\uD5E6\u8EA2\uD5E3\u8EA2\uD5E2\u0000\u0000" + //  8675 -  8679
+                "\u0000\uEFEF\u0000\u0000\u0000\uF3A4\u0000\u0000\u8EA2\uDBE6" + //  8680 -  8684
+                "\u0000\uF2FE\u0000\u0000\u8EA2\uDBE7\u0000\u0000\u0000\u0000" + //  8685 -  8689
+                "\u8EA2\uDBE5\u0000\u0000\u0000\uF3A3\u0000\uF3A1\u0000\uF3A5" + //  8690 -  8694
+                "\u0000\u0000\u0000\uF3A2\u0000\u0000\u0000\u0000\u0000\u0000" + //  8695 -  8699
+                "\u0000\u0000\u8EA2\uA1A1\u0000\uC4A5\u0000\u0000\u0000\uC4BC" + //  8700 -  8704
+                "\u0000\u0000\u8EA2\uA1A8\u0000\uC4BD\u0000\u0000\u0000\u0000" + //  8705 -  8709
+                "\u0000\uC4E6\u0000\u0000\u0000\uC5E5\u0000\uC5E7\u0000\uC5E6" + //  8710 -  8714
+                "\u0000\u0000\u0000\u0000\u0000\uC7A4\u0000\uC7A5\u0000\u0000" + //  8715 -  8719
+                "\u0000\u0000\u0000\uCBE5\u0000\u0000\u0000\uD3FD\u0000\uC4A2" + //  8720 -  8724
+                "\u0000\u0000\u0000\u0000\u8EA2\uA1A2\u0000\uC4A6\u0000\uC4BF" + //  8725 -  8729
+                "\u0000\uC4BE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8730 -  8734
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8735 -  8739
+                "\u0000\uC7A6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8740 -  8744
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8745 -  8749
+                "\u0000\uCBE6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8750 -  8754
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  8755 -  8759
+                "\u0000\u0000\u0000\uD8F1\u8EA2\uB3CE\u8EA2\uCFAB\u8EA2\uCFAF" + //  8760 -  8764
+                "\u8EA2\uCFAC\u8EA2\uCFAA\u8EA2\uCFAE\u0000\uEBE8\u0000\u0000" + //  8765 -  8769
+                "\u0000\u0000\u8EA2\uD5DC\u0000\u0000\u8EA2\uD5DA\u0000\uEFEC" + //  8770 -  8774
+                "\u0000\u0000\u0000\uEFEB\u8EA2\uD5DB\u0000\uEFED\u0000\u0000" + //  8775 -  8779
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDBE2\u0000\u0000" + //  8780 -  8784
+                "\u0000\u0000\u8EA2\uDBE1\u0000\uF2FD\u8EA2\uDBE0\u8EA2\uE0C9" + //  8785 -  8789
+                "\u0000\u0000\u8EA2\uE0CB\u8EA2\uE0CD\u8EA2\uE0CC\u0000\u0000" + //  8790 -  8794
+                "\u0000\uF6A6\u8EA2\uE0CA\u8EA2\uE4CB\u0000\uF7E8\u8EA2\uE4C9" + //  8795 -  8799
+                "\u8EA2\uE4CC\u0000\uF7E9\u0000\u0000\u8EA2\uE4C7\u0000\u0000" + //  8800 -  8804
+                "\u8EA2\uE4CA\u8EA2\uE4C8\u8EA2\uE4C5\u0000\uF7EA\u8EA2\uE4C6" + //  8805 -  8809
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE7EC" + //  8810 -  8814
+                "\u0000\u0000\u0000\u0000\u8EA2\uE7EE\u8EA2\uE7ED\u0000\u0000" + //  8815 -  8819
+                "\u8EA2\uEAD8\u0000\u0000\u8EA2\uEAD9\u0000\u0000\u0000\u0000" + //  8820 -  8824
+                "\u0000\u0000\u8EA2\uECDE\u0000\uEBE6\u0000\u0000\u8EA2\uD5D8" + //  8825 -  8829
+                "\u0000\u0000\u0000\uEFE6\u8EA2\uD5D6\u0000\uEFE7\u0000\uEFE8" + //  8830 -  8834
+                "\u8EA2\uD5D7\u0000\uEFE9\u0000\u0000\u8EA2\uDBDD\u0000\u0000" + //  8835 -  8839
+                "\u0000\uF2F7\u0000\uF2F4\u0000\uF2F9\u8EA2\uDBDF\u0000\uF2F5" + //  8840 -  8844
+                "\u8EA2\uDBDE\u0000\uF2F8\u0000\u0000\u0000\u0000\u0000\uF2F6" + //  8845 -  8849
+                "\u0000\u0000\u8EA2\uE0C6\u8EA2\uE0C8\u0000\u0000\u0000\u0000" + //  8850 -  8854
+                "\u0000\uF6A4\u8EA2\uE0C7\u0000\uF6A5\u8EA2\uE0C5\u8EA2\uE0C4" + //  8855 -  8859
+                "\u0000\u0000\u8EA2\uE4C3\u8EA2\uE4C2\u0000\uF7E7\u8EA2\uE4C4" + //  8860 -  8864
+                "\u8EA2\uE7EB\u0000\uF9C7\u8EA2\uE7EA\u8EA2\uE7E7\u0000\uF9C6" + //  8865 -  8869
+                "\u8EA2\uE7E8\u8EA2\uE7E9\u0000\u0000\u8EA2\uEAD6\u8EA2\uEAD7" + //  8870 -  8874
+                "\u0000\uFAD0\u0000\u0000\u0000\uFBBF\u0000\u0000\u0000\u0000" + //  8875 -  8879
+                "\u8EA2\uECDC\u0000\u0000\u0000\u0000\u0000\uFBBD\u0000\uFBBE" + //  8880 -  8884
+                "\u8EA2\uECDD\u0000\u0000\u0000\u0000\u0000\uFBFE\u0000\uFCA1" + //  8885 -  8889
+                "\u8EA2\uEEC0\u0000\uDDFA\u0000\uE2F2\u8EA2\uC1C9\u8EA2\uC1CB" + //  8890 -  8894
+                "\u0000\uE2F4\u0000\uE2F3\u0000\uE2F5\u0000\uE2F6\u8EA2\uC1CA" + //  8895 -  8899
+                "\u0000\uE7D6\u0000\uE7D7\u0000\uE7D5\u0000\uEBE4\u0000\uE7D4" + //  8900 -  8904
+                "\u8EA2\uC8DB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEBE5" + //  8905 -  8909
+                "\u8EA2\uD5D5\u8EA2\uDBDC\u0000\uF2F3\u0000\uF6A3\u8EA2\uE4BC" + //  8910 -  8914
+                "\u8EA2\uE4C0\u0000\uF7E4\u8EA2\uE4BD\u0000\uF7E5\u0000\uF7E3" + //  8915 -  8919
+                "\u8EA2\uE4C1\u0000\uF7E6\u8EA2\uE4BF\u0000\u0000\u8EA2\uE7E6" + //  8920 -  8924
+                "\u0000\uF7E2\u0000\uF9C5\u0000\u0000\u8EA2\uF0DB\u0000\u0000" + //  8925 -  8929
+                "\u0000\u0000\u0000\uCFE4\u0000\uDDFC\u0000\uDDFB\u0000\u0000" + //  8930 -  8934
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE2F7\u8EA2\uC1CD" + //  8935 -  8939
+                "\u8EA2\uC1CC\u0000\uE2F8\u0000\u0000\u0000\u0000\u8EA2\uC8DF" + //  8940 -  8944
+                "\u0000\uE7DB\u0000\uE7D8\u8EA2\uC8DE\u0000\uE7DA\u8EA2\uC8DC" + //  8945 -  8949
+                "\u0000\uE7D9\u0000\u0000\u8EA2\uC8DD\u0000\u0000\u8EA2\uCFA5" + //  8950 -  8954
+                "\u8EA2\uC1C8\u0000\u0000\u0000\u0000\u8EA2\uC1C7\u0000\uE2F1" + //  8955 -  8959
+                "\u0000\uE2ED\u0000\uE2EE\u8EA2\uC1C3\u8EA2\uC1C5\u8EA2\uC1C6" + //  8960 -  8964
+                "\u0000\uE2E9\u0000\uE2EB\u0000\u0000\u0000\uE2EF\u0000\uE2EA" + //  8965 -  8969
+                "\u0000\u0000\u0000\u0000\u8EA2\uC8D9\u8EA2\uC8D7\u8EA2\uC8D8" + //  8970 -  8974
+                "\u0000\uE7D2\u0000\uE7D3\u0000\u0000\u8EA2\uC8DA\u0000\uE7D1" + //  8975 -  8979
+                "\u0000\uEBE1\u0000\u0000\u0000\uEBE3\u0000\uEBE2\u0000\u0000" + //  8980 -  8984
+                "\u8EA2\uCFA3\u0000\u0000\u0000\u0000\u8EA2\uCFA4\u8EA2\uD5D4" + //  8985 -  8989
+                "\u0000\u0000\u8EA2\uD5D3\u0000\u0000\u0000\u0000\u0000\uF2F0" + //  8990 -  8994
+                "\u0000\uF2F1\u8EA2\uDBDB\u0000\uF2F2\u0000\u0000\u8EA2\uE0C3" + //  8995 -  8999
+                "\u0000\u0000\u8EA2\uE0C1\u0000\u0000\u8EA2\uE0C2\u0000\uF6A1" + //  9000 -  9004
+                "\u0000\u0000\u8EA2\uE4BB\u0000\uF9C4\u0000\u0000\u0000\uA8EC" + //  9005 -  9009
+                "\u0000\u0000\u0000\uF6A2\u0000\uCFE3\u0000\u0000\u0000\uD8E9" + //  9010 -  9014
+                "\u8EA2\uB3CA\u0000\u0000\u0000\u0000\u8EA2\uBAB0\u0000\uCFDE" + //  9015 -  9019
+                "\u0000\u0000\u0000\uCFE2\u8EA2\uA8FC\u0000\uCFE1\u0000\u0000" + //  9020 -  9024
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uADE7" + //  9025 -  9029
+                "\u0000\uD3EF\u0000\uD3F0\u0000\uD3F1\u8EA2\uADE8\u8EA2\uADE4" + //  9030 -  9034
+                "\u0000\uD3EE\u8EA2\uADE5\u0000\u0000\u8EA2\uADE6\u8EA2\uADE3" + //  9035 -  9039
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD8E7\u0000\u0000" + //  9040 -  9044
+                "\u0000\u0000\u0000\uD8E4\u8EA2\uB3C8\u0000\uD8E5\u0000\uD8E8" + //  9045 -  9049
+                "\u8EA2\uB3C9\u0000\u0000\u0000\uD8E3\u0000\uD8E1\u0000\uD8E2" + //  9050 -  9054
+                "\u0000\uD8E6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9055 -  9059
+                "\u0000\u0000\u0000\uDDF1\u8EA2\uBAAD\u0000\uDDF9\u8EA2\uBAAC" + //  9060 -  9064
+                "\u0000\u0000\u8EA2\uBAAF\u0000\uDDF5\u8EA2\uBAAE\u0000\uE2F0" + //  9065 -  9069
+                "\u0000\uDDF3\u0000\uDDF6\u0000\uDDF2\u0000\uDDF7\u0000\uDDF8" + //  9070 -  9074
+                "\u0000\uDDF4\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBAAB" + //  9075 -  9079
+                "\u0000\uE2EC\u8EA2\uC1C4\u0000\u0000\u0000\uA3B9\u8EAD\uA4A4" + //  9080 -  9084
+                "\u0000\uA3BA\u8EAD\uA4A5\u0000\u0000\u0000\u0000\u0000\u0000" + //  9085 -  9089
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9090 -  9094
+                "\u0000\uA3BC\u0000\u0000\u0000\u0000\u8EAD\uA4A6\u0000\uA3BD" + //  9095 -  9099
+                "\u0000\u0000\u0000\u0000\u8EAD\uA4A7\u0000\uA3BE\u0000\u0000" + //  9100 -  9104
+                "\u0000\u0000\u8EAD\uA4A9\u0000\uA3BF\u0000\u0000\u0000\u0000" + //  9105 -  9109
+                "\u8EAD\uA4A8\u0000\uA3B7\u8EAD\uA4B4\u0000\u0000\u0000\u0000" + //  9110 -  9114
+                "\u8EAD\uA4AF\u0000\u0000\u0000\u0000\u8EAD\uA4AA\u0000\uA3B6" + //  9115 -  9119
+                "\u8EAD\uA4B6\u0000\u0000\u0000\u0000\u8EAD\uA4B1\u0000\u0000" + //  9120 -  9124
+                "\u0000\u0000\u8EAD\uA4AC\u0000\uA3B5\u0000\u0000\u0000\u0000" + //  9125 -  9129
+                "\u8EAD\uA4B0\u8EAD\uA4B5\u0000\u0000\u0000\u0000\u8EAD\uA4AB" + //  9130 -  9134
+                "\u0000\uA3B4\u0000\u0000\u0000\u0000\u8EAD\uA4B2\u8EAD\uA4B7" + //  9135 -  9139
+                "\u0000\u0000\u0000\u0000\u8EAD\uA4AD\u0000\uA3B3\u0000\u0000" + //  9140 -  9144
+                "\u0000\u0000\u8EAD\uA4B3\u8EA2\uE0BC\u0000\u0000\u0000\u0000" + //  9145 -  9149
+                "\u8EA2\uE0BE\u0000\u0000\u8EA2\uE0BF\u0000\uF5FE\u8EA2\uE0BB" + //  9150 -  9154
+                "\u0000\uF5FD\u8EA2\uE0BD\u0000\uF5FA\u0000\uF5FB\u0000\uF5FC" + //  9155 -  9159
+                "\u8EA2\uDBD3\u0000\u0000\u0000\u0000\u0000\uF7E0\u8EA2\uE4BA" + //  9160 -  9164
+                "\u8EA2\uE4B8\u8EA2\uE4B9\u0000\uF7DE\u0000\uF7E1\u0000\uF7DF" + //  9165 -  9169
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE7E4\u8EA2\uE7E5" + //  9170 -  9174
+                "\u0000\uF9C3\u0000\u0000\u8EA2\uEAD3\u8EA2\uEAD5\u8EA2\uEAD4" + //  9175 -  9179
+                "\u0000\uFACF\u0000\uFBBC\u8EA2\uECDB\u8EA2\uECDA\u8EA2\uECD9" + //  9180 -  9184
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9185 -  9189
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9190 -  9194
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9195 -  9199
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9200 -  9204
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9205 -  9209
+                "\u0000\u0000\u0000\uA2BD\u0000\u0000\u0000\u0000\u0000\u0000" + //  9210 -  9214
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9215 -  9219
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9220 -  9224
+                "\u0000\uA2BB\u0000\uA2BE\u0000\u0000\u0000\u0000\u0000\u0000" + //  9225 -  9229
+                "\u0000\u0000\u0000\uA2B9\u0000\uA2BA\u0000\u0000\u0000\u0000" + //  9230 -  9234
+                "\u8EAD\uA1C5\u8EAD\uA1C6\u0000\u0000\u0000\u0000\u0000\u0000" + //  9235 -  9239
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9240 -  9244
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9245 -  9249
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9250 -  9254
+                "\u0000\u0000\u0000\u0000\u0000\uA2D8\u0000\uA2D5\u0000\uA2D7" + //  9255 -  9259
+                "\u0000\uA2D6\u0000\u0000\u0000\u0000\u0000\uA2D9\u0000\uA2DA" + //  9260 -  9264
+                "\u0000\uA2DC\u0000\uA2DB\u0000\u0000\u0000\u0000\u0000\u0000" + //  9265 -  9269
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9270 -  9274
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9275 -  9279
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9280 -  9284
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9285 -  9289
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9290 -  9294
+                "\u0000\u0000\u0000\u0000\u8EAD\uA4BE\u8EAD\uA4BF\u0000\u0000" + //  9295 -  9299
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9300 -  9304
+                "\u0000\uA2F7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9305 -  9309
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9310 -  9314
+                "\u0000\uA2F3\u0000\u0000\u0000\u0000\u0000\uA2CC\u0000\uA2CB" + //  9315 -  9319
+                "\u0000\u0000\u0000\u0000\u0000\uA2EF\u0000\u0000\u0000\u0000" + //  9320 -  9324
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9325 -  9329
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9330 -  9334
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9335 -  9339
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9340 -  9344
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9345 -  9349
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9350 -  9354
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9355 -  9359
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9360 -  9364
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9365 -  9369
+                "\u0000\u0000\u0000\uA1AB\u0000\uA1B6\u0000\uA1B8\u0000\uA1BA" + //  9370 -  9374
+                "\u0000\uA1BC\u0000\uA1C0\u0000\uA1C1\u0000\uA1C4\u0000\uA1C5" + //  9375 -  9379
+                "\u0000\uA1C8\u0000\uA1C9\u0000\uA1CC\u0000\uA1CD\u0000\uA1D0" + //  9380 -  9384
+                "\u0000\uA1D1\u0000\uA1D4\u0000\uCFDC\u0000\u0000\u0000\uD3ED" + //  9385 -  9389
+                "\u0000\uD8E0\u0000\u0000\u0000\u0000\u8EA2\uBAA9\u0000\u0000" + //  9390 -  9394
+                "\u8EA2\uBAAA\u0000\uDDF0\u0000\u0000\u0000\uE2E4\u8EA2\uC1C1" + //  9395 -  9399
+                "\u8EA2\uC1C0\u0000\uE2E8\u0000\uE2E3\u8EA2\uC1C2\u0000\uE2E5" + //  9400 -  9404
+                "\u0000\uE2E7\u0000\uE2E6\u0000\uE2E2\u0000\u0000\u0000\u0000" + //  9405 -  9409
+                "\u0000\u0000\u0000\uE7D0\u0000\u0000\u0000\u0000\u8EA2\uC8D6" + //  9410 -  9414
+                "\u8EA2\uC8D4\u0000\u0000\u8EA2\uC8D5\u8EA2\uC8D3\u0000\u0000" + //  9415 -  9419
+                "\u0000\uEBDB\u0000\u0000\u0000\uEBDE\u0000\uEBE0\u0000\uEBDF" + //  9420 -  9424
+                "\u0000\u0000\u0000\u0000\u0000\uEBDC\u0000\uEBDD\u0000\u0000" + //  9425 -  9429
+                "\u8EA2\uD5D0\u8EA2\uD5CF\u0000\uEFE4\u8EA2\uD5D1\u0000\u0000" + //  9430 -  9434
+                "\u8EA2\uD5D2\u0000\uEFE5\u0000\u0000\u0000\u0000\u0000\u0000" + //  9435 -  9439
+                "\u8EA2\uDBD9\u8EA2\uDBD7\u8EA2\uE0C0\u0000\u0000\u8EA2\uDBD5" + //  9440 -  9444
+                "\u8EA2\uDBD6\u0000\uF2EF\u8EA2\uDBD2\u8EA2\uDBDA\u8EA2\uDBD4" + //  9445 -  9449
+                "\u8EA2\uDBD8\u8EA2\uF2B0\u8EA2\uF2B1\u8EA2\uF2AF\u8EA2\uF2B7" + //  9450 -  9454
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9455 -  9459
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9460 -  9464
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9465 -  9469
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9470 -  9474
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9475 -  9479
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9480 -  9484
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9485 -  9489
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9490 -  9494
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9495 -  9499
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9500 -  9504
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9505 -  9509
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9510 -  9514
+                "\u8EAD\uA1A9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9515 -  9519
+                "\u0000\u0000\u8EA2\uA1BA\u0000\u0000\u0000\u0000\u8EA2\uA3D0" + //  9520 -  9524
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA7C2\u0000\u0000" + //  9525 -  9529
+                "\u8EA2\uA6A3\u8EA2\uA9E1\u8EA2\uAEDB\u0000\uD4EE\u0000\u0000" + //  9530 -  9534
+                "\u0000\u0000\u8EA2\uE5C5\u0000\u0000\u0000\uFAE7\u0000\uC4CA" + //  9535 -  9539
+                "\u0000\uC6C0\u8EA2\uA1D1\u0000\u0000\u0000\uC7E8\u0000\uC7E9" + //  9540 -  9544
+                "\u0000\u0000\u0000\uCCDF\u0000\u0000\u0000\u0000\u0000\u0000" + //  9545 -  9549
+                "\u0000\uD9DC\u0000\u0000\u0000\uE8C2\u0000\u0000\u0000\uE8C3" + //  9550 -  9554
+                "\u0000\uE8C1\u0000\u0000\u0000\uC4CB\u0000\u0000\u0000\uC5B2" + //  9555 -  9559
+                "\u0000\uC5B4\u0000\uC5B3\u8EA2\uA1BB\u0000\uC5B5\u0000\uC6C1" + //  9560 -  9564
+                "\u8EA2\uA1D2\u0000\u0000\u0000\uC6C2\u0000\u0000\u0000\u0000" + //  9565 -  9569
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC7EA\u0000\uC7EB" + //  9570 -  9574
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA2AB\u0000\u0000" + //  9575 -  9579
+                "\u0000\uC9E8\u0000\u0000\u0000\uC2A1\u0000\uC2A2\u0000\uC2A3" + //  9580 -  9584
+                "\u0000\uC2A4\u0000\uC2A5\u0000\uC2A6\u0000\uC2A7\u0000\uC2A8" + //  9585 -  9589
+                "\u0000\uC2A9\u0000\uC2AA\u0000\uC2AB\u0000\uC2AC\u0000\uC2AD" + //  9590 -  9594
+                "\u0000\uC2AE\u0000\uC2AF\u0000\uC2B0\u0000\uC2B1\u0000\uC2B2" + //  9595 -  9599
+                "\u0000\uC2B3\u0000\uC2B4\u0000\uC2B5\u0000\uC2B6\u0000\uC2B7" + //  9600 -  9604
+                "\u0000\uC2B8\u0000\uC2B9\u0000\uC2BA\u0000\uC2BB\u0000\uC2BC" + //  9605 -  9609
+                "\u0000\uC2BD\u0000\uC2BE\u0000\uC2BF\u0000\uC2C0\u0000\u0000" + //  9610 -  9614
+                "\u0000\uC2C1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9615 -  9619
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9620 -  9624
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9625 -  9629
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9630 -  9634
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9635 -  9639
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9640 -  9644
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA6A1\u0000\uA6A2" + //  9645 -  9649
+                "\u0000\uA6A3\u0000\uA6A4\u0000\uA6A5\u0000\uA6A6\u0000\uA6A7" + //  9650 -  9654
+                "\u0000\uA6A8\u0000\uA6A9\u0000\uA6AA\u0000\u0000\u0000\u0000" + //  9655 -  9659
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9660 -  9664
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA6AB\u0000\uA6AC" + //  9665 -  9669
+                "\u0000\uA6AD\u0000\uA6AE\u0000\uA6AF\u0000\uA6B0\u0000\uA6B1" + //  9670 -  9674
+                "\u0000\uA6B2\u0000\uA6B3\u0000\uA6B4\u0000\u0000\u0000\u0000" + //  9675 -  9679
+                "\u8EA2\uCCE4\u0000\u0000\u0000\uEAB1\u8EA2\uCCDF\u0000\u0000" + //  9680 -  9684
+                "\u0000\uEAB0\u8EA2\uCCD5\u0000\u0000\u8EA2\uCCD7\u0000\uEAA9" + //  9685 -  9689
+                "\u8EA2\uCCDC\u8EA2\uCCDB\u8EA2\uCCDE\u0000\uEAAE\u8EA2\uCCD9" + //  9690 -  9694
+                "\u8EA2\uCCD8\u0000\u0000\u0000\u0000\u0000\uEAAD\u0000\uEAA8" + //  9695 -  9699
+                "\u8EA2\uCCDA\u0000\uEAAB\u8EA2\uCCE0\u8EA2\uCCE2\u0000\u0000" + //  9700 -  9704
+                "\u8EA2\uCCDD\u8EA2\uCCD6\u0000\uEAAC\u0000\u0000\u0000\u0000" + //  9705 -  9709
+                "\u0000\uEEB4\u0000\uEAA7\u0000\u0000\u0000\u0000\u8EA2\uCCE3" + //  9710 -  9714
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9715 -  9719
+                "\u0000\u0000\u0000\u0000\u8EA2\uD2E1\u0000\uEEAD\u0000\u0000" + //  9720 -  9724
+                "\u8EA2\uD2E3\u0000\u0000\u0000\uEEAE\u0000\u0000\u0000\u0000" + //  9725 -  9729
+                "\u0000\uEEB0\u8EA2\uD2E6\u0000\u0000\u8EA2\uD2DE\u0000\uEAAF" + //  9730 -  9734
+                "\u8EA2\uD2E4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9735 -  9739
+                "\u8EA2\uD2E0\u0000\u0000\u0000\uF0DF\u0000\uF0E6\u8EA2\uD7B6" + //  9740 -  9744
+                "\u0000\uF0E4\u0000\uF0DE\u0000\u0000\u0000\uF0E5\u0000\u0000" + //  9745 -  9749
+                "\u8EA2\uD7B3\u0000\uF3E4\u0000\uF0E0\u0000\u0000\u0000\uF0E7" + //  9750 -  9754
+                "\u0000\uF3E3\u8EA2\uD7B2\u8EA2\uD7B1\u0000\u0000\u0000\uF0E9" + //  9755 -  9759
+                "\u0000\u0000\u0000\uF0EA\u0000\u0000\u8EA2\uD7B0\u8EA2\uD7AF" + //  9760 -  9764
+                "\u0000\uF3E5\u8EA2\uD7B9\u0000\uF0E3\u8EA2\uD7B7\u0000\u0000" + //  9765 -  9769
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF3E6\u0000\u0000" + //  9770 -  9774
+                "\u0000\uF3EB\u8EA2\uDCF5\u8EA2\uDCF7\u0000\u0000\u0000\uF3E8" + //  9775 -  9779
+                "\u0000\u0000\u8EA2\uDCF8\u8EA2\uDCF4\u0000\u0000\u8EA2\uDCF6" + //  9780 -  9784
+                "\u0000\uF3E9\u0000\uF3EC\u0000\u0000\u8EA2\uDCF3\u0000\uF3E7" + //  9785 -  9789
+                "\u0000\uF3EA\u0000\uF6C5\u8EA2\uD7B8\u0000\uF6C4\u0000\u0000" + //  9790 -  9794
+                "\u0000\u0000\u0000\uF6CA\u8EA2\uE1E0\u0000\u0000\u0000\uF6C8" + //  9795 -  9799
+                "\u0000\uF6C9\u8EA2\uE1E3\u8EA2\uE1DF\u0000\uF6C6\u8EA2\uE1DD" + //  9800 -  9804
+                "\u8EA2\uECD7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBFB" + //  9805 -  9809
+                "\u8EA2\uEEBC\u8EA2\uEEBF\u8EA2\uEEBB\u8EA2\uEEBD\u8EA2\uEEBE" + //  9810 -  9814
+                "\u8EA2\uEEB8\u8EA2\uEEB9\u8EA2\uEEB6\u0000\u0000\u0000\u0000" + //  9815 -  9819
+                "\u8EA2\uEEBA\u8EA2\uEEB7\u0000\uFBFC\u0000\uFBFD\u0000\u0000" + //  9820 -  9824
+                "\u0000\u0000\u8EA2\uEFD9\u0000\u0000\u8EA2\uEFDB\u0000\u0000" + //  9825 -  9829
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEFDA" + //  9830 -  9834
+                "\u8EA2\uEFDC\u0000\u0000\u0000\uFCCC\u0000\u0000\u8EA2\uEFD8" + //  9835 -  9839
+                "\u0000\uFCCB\u0000\uFCCD\u0000\u0000\u0000\u0000\u0000\u0000" + //  9840 -  9844
+                "\u8EA2\uF0D9\u8EA2\uF0DA\u0000\uFCEF\u8EA2\uF0D8\u0000\u0000" + //  9845 -  9849
+                "\u8EA2\uF1C2\u8EA2\uF1C1\u8EA2\uF1C3\u0000\uFDAC\u8EA2\uF1C4" + //  9850 -  9854
+                "\u0000\uFDAB\u8EA2\uF1C5\u8EA2\uF1E1\u8EA2\uF1E4\u8EA2\uF1E3" + //  9855 -  9859
+                "\u0000\uFDB5\u8EA2\uF1E2\u0000\u0000\u0000\u0000\u0000\u0000" + //  9860 -  9864
+                "\u0000\uFDBF\u0000\uFDBD\u0000\uFDBE\u0000\uFDC4\u8EA2\uEAC2" + //  9865 -  9869
+                "\u0000\u0000\u0000\u0000\u0000\uFACD\u0000\u0000\u0000\u0000" + //  9870 -  9874
+                "\u8EA2\uEAD2\u8EA2\uEAC4\u0000\u0000\u8EA2\uEAC9\u8EA2\uEACC" + //  9875 -  9879
+                "\u8EA2\uEAB5\u8EA2\uEACF\u8EA2\uEAC0\u8EA2\uEAC5\u8EA2\uEAB9" + //  9880 -  9884
+                "\u8EA2\uEABD\u8EA2\uEAD1\u8EA2\uEAC7\u8EA2\uEAB6\u8EA2\uEABA" + //  9885 -  9889
+                "\u8EA2\uEABC\u8EA2\uEAC6\u0000\u0000\u0000\uFACC\u8EA2\uEABF" + //  9890 -  9894
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9895 -  9899
+                "\u0000\u0000\u8EA2\uEAB8\u0000\u0000\u0000\u0000\u0000\u0000" + //  9900 -  9904
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEABE" + //  9905 -  9909
+                "\u8EA2\uECD0\u8EA2\uECD4\u0000\uFBBB\u8EA2\uECD6\u0000\u0000" + //  9910 -  9914
+                "\u0000\uFBB5\u0000\u0000\u8EA2\uECD2\u8EA2\uECD8\u0000\uFBBA" + //  9915 -  9919
+                "\u0000\uFBB6\u0000\u0000\u0000\uFBB7\u8EA2\uECCF\u8EA2\uECD5" + //  9920 -  9924
+                "\u0000\uFBB9\u8EA2\uECD3\u0000\uFBB8\u8EA2\uECCE\u8EA2\uEACB" + //  9925 -  9929
+                "\u8EA2\uECD1\u0000\u0000\u8EA2\uECCD\u8EA2\uE7DF\u0000\u0000" + //  9930 -  9934
+                "\u8EA2\uE7CF\u0000\uF9B8\u8EA2\uE7DD\u0000\u0000\u0000\u0000" + //  9935 -  9939
+                "\u8EA2\uE7CD\u0000\uF9B9\u0000\u0000\u8EA2\uE7D8\u0000\u0000" + //  9940 -  9944
+                "\u8EA2\uE7D4\u0000\uF9BE\u8EA2\uE7DE\u8EA2\uE7CE\u8EA2\uE7D1" + //  9945 -  9949
+                "\u0000\uF9B6\u8EA2\uE7E0\u0000\u0000\u8EA2\uE7D9\u8EA2\uE7DC" + //  9950 -  9954
+                "\u0000\uF9BC\u0000\uF9C1\u0000\uF9BF\u8EA2\uE7D5\u8EA2\uE7D0" + //  9955 -  9959
+                "\u0000\u0000\u0000\uF9BA\u0000\uF9BB\u8EA2\uE7CC\u0000\uF9B7" + //  9960 -  9964
+                "\u0000\u0000\u0000\uF9B5\u0000\uF9BD\u8EA2\uE7DB\u0000\uF9C0" + //  9965 -  9969
+                "\u0000\u0000\u8EA2\uE7D7\u8EA2\uE7E2\u0000\uF9C2\u0000\u0000" + //  9970 -  9974
+                "\u0000\u0000\u0000\u0000\u8EA2\uE7D3\u0000\u0000\u8EA2\uE7DA" + //  9975 -  9979
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + //  9980 -  9984
+                "\u0000\u0000\u8EA2\uEAC1\u8EA2\uEAD0\u8EA2\uEAC3\u8EA2\uEACA" + //  9985 -  9989
+                "\u8EA2\uE7D2\u8EA2\uEAC8\u8EA2\uEAB7\u8EA2\uEACE\u0000\uFACE" + //  9990 -  9994
+                "\u8EA2\uEABB\u8EA2\uEACD\u8EA2\uE4AF\u0000\u0000\u0000\uF5ED" + //  9995 -  9999
+                "\u8EA2\uDFFA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10000 - 10004
+                "\u8EA2\uE4AC\u8EA2\uE4A5\u0000\uF7D4\u0000\u0000\u8EA2\uE3FE" + // 10005 - 10009
+                "\u8EA2\uE4B0\u8EA2\uE4A7\u8EA2\uE0AA\u0000\u0000\u8EA2\uE4B2" + // 10010 - 10014
+                "\u8EA2\uE4A1\u0000\u0000\u0000\uF7D3\u8EA2\uE4AB\u0000\uF7D5" + // 10015 - 10019
+                "\u0000\uF7DD\u0000\uF7DB\u8EA2\uE4AD\u0000\uF7DC\u8EA2\uE4A3" + // 10020 - 10024
+                "\u0000\u0000\u8EA2\uE4A4\u8EA2\uE4A9\u8EA2\uE4AE\u0000\u0000" + // 10025 - 10029
+                "\u8EA2\uDFF9\u0000\uF7D6\u8EA2\uE4B7\u8EA2\uE4B4\u8EA2\uE7E1" + // 10030 - 10034
+                "\u8EA2\uE4AA\u8EA2\uE4A6\u8EA2\uE4B5\u8EA2\uE7D6\u8EA2\uE4A8" + // 10035 - 10039
+                "\u0000\u0000\u0000\uF7D9\u0000\u0000\u0000\uF7D8\u8EA2\uDFFB" + // 10040 - 10044
+                "\u0000\uF7DA\u8EA2\uE4B1\u8EA2\uE4B3\u0000\uF7D7\u8EA2\uE4B6" + // 10045 - 10049
+                "\u8EA2\uE3FD\u0000\u0000\u8EA2\uE4A2\u0000\u0000\u0000\u0000" + // 10050 - 10054
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10055 - 10059
+                "\u0000\u0000\u8EA2\uDBB8\u8EA2\uDFFE\u0000\u0000\u8EA2\uE0A5" + // 10060 - 10064
+                "\u0000\uF5F0\u0000\uF5F2\u8EA2\uE0AB\u0000\uF5EC\u8EA2\uE0B9" + // 10065 - 10069
+                "\u8EA2\uE0B1\u8EA2\uE0A6\u8EA2\uE0A7\u8EA2\uE0B0\u0000\u0000" + // 10070 - 10074
+                "\u0000\uF5F9\u8EA2\uE0AF\u8EA2\uDFFD\u8EA2\uE0AE\u8EA2\uE0A2" + // 10075 - 10079
+                "\u8EA2\uE0BA\u0000\uF5F8\u0000\uF5F6\u8EA2\uE0A3\u0000\u0000" + // 10080 - 10084
+                "\u8EA2\uE0B6\u0000\u0000\u8EA2\uE0A8\u8EA2\uE0B5\u0000\u0000" + // 10085 - 10089
+                "\u8EA2\uE0B7\u8EA2\uDFFC\u0000\uF5F1\u0000\u0000\u8EA2\uE0B8" + // 10090 - 10094
+                "\u0000\u0000\u0000\u0000\u8EA2\uE0AC\u0000\u0000\u0000\uF5F5" + // 10095 - 10099
+                "\u8EA2\uE0A9\u0000\u0000\u0000\u0000\u0000\uF5F7\u8EA2\uE0B2" + // 10100 - 10104
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF5EF\u8EA2\uE0A4" + // 10105 - 10109
+                "\u8EA2\uE0B3\u0000\u0000\u8EA2\uE0AD\u8EA2\uDBB1\u8EA2\uE0B4" + // 10110 - 10114
+                "\u8EA2\uE0A1\u0000\u0000\u0000\uF5F4\u0000\u0000\u8EAD\uA1C0" + // 10115 - 10119
+                "\u0000\u0000\u8EAD\uA1C3\u8EAD\uA1C1\u0000\u0000\u0000\u0000" + // 10120 - 10124
+                "\u0000\u0000\u8EAD\uA1C4\u8EAD\uA1B6\u0000\u0000\u0000\u0000" + // 10125 - 10129
+                "\u8EAD\uA1B7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10130 - 10134
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10135 - 10139
+                "\u0000\uA2E1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10140 - 10144
+                "\u0000\uA2B5\u0000\u0000\u0000\u0000\u8EAD\uA1C8\u0000\uA2BC" + // 10145 - 10149
+                "\u0000\uA2C9\u0000\uA2C8\u0000\u0000\u0000\u0000\u0000\u0000" + // 10150 - 10154
+                "\u0000\u0000\u0000\uA2DD\u0000\u0000\u8EAD\uA1BC\u8EAD\uA1BD" + // 10155 - 10159
+                "\u0000\uA2C5\u0000\uA2C6\u0000\uA2CD\u8EAD\uA1C9\u0000\u0000" + // 10160 - 10164
+                "\u0000\uA2CE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10165 - 10169
+                "\u0000\u0000\u0000\uA2D0\u0000\uA2CF\u0000\u0000\u0000\u0000" + // 10170 - 10174
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2C4" + // 10175 - 10179
+                "\u8EAD\uA1C7\u0000\u0000\u0000\u0000\u8EA2\uE2C1\u0000\u0000" + // 10180 - 10184
+                "\u8EA2\uE6A7\u0000\u0000\u0000\u0000\u0000\uF8D4\u0000\u0000" + // 10185 - 10189
+                "\u8EA2\uE6A5\u8EA2\uE6A6\u0000\u0000\u8EA2\uE9C3\u8EA2\uE9C6" + // 10190 - 10194
+                "\u8EA2\uE9C4\u8EA2\uE9C5\u8EA2\uEBEE\u0000\u0000\u0000\u0000" + // 10195 - 10199
+                "\u0000\uFAFA\u8EA2\uEFBA\u8EA2\uF0C2\u0000\u0000\u0000\uFCE3" + // 10200 - 10204
+                "\u8EA2\uF1A8\u8EA2\uF1A9\u0000\uFDB3\u0000\uC6F9\u0000\uD2E4" + // 10205 - 10209
+                "\u0000\u0000\u8EA2\uBEC7\u0000\u0000\u8EA2\uC5C9\u0000\u0000" + // 10210 - 10214
+                "\u0000\uC6FA\u0000\uCBB2\u0000\u0000\u0000\uCFA1\u0000\u0000" + // 10215 - 10219
+                "\u8EA2\uACCA\u8EA2\uACCB\u0000\uD6FB\u0000\u0000\u0000\u0000" + // 10220 - 10224
+                "\u8EA2\uBEC8\u0000\uE0FB\u0000\uE5CE\u0000\uF4CC\u8EA2\uDDEE" + // 10225 - 10229
+                "\u8EA2\uE6A8\u8EA2\uE9C7\u0000\uC6FB\u0000\u0000\u0000\u0000" + // 10230 - 10234
+                "\u0000\u0000\u8EA2\uA8C1\u8EA2\uA8BC\u8EA2\uA8BE\u8EA2\uA8C0" + // 10235 - 10239
+                "\u8EA2\uA8BF\u8EA2\uA8BD\u0000\uCFA2\u0000\u0000\u0000\u0000" + // 10240 - 10244
+                "\u0000\uD2E5\u8EA2\uACD4\u0000\u0000\u8EA2\uACCF\u8EA2\uACCC" + // 10245 - 10249
+                "\u0000\u0000\u0000\u0000\u8EA2\uACD3\u0000\u0000\u0000\u0000" + // 10250 - 10254
+                "\u0000\uD2E7\u0000\uD2E8\u8EA2\uACD2\u8EA2\uACD1\u8EA2\uACD0" + // 10255 - 10259
+                "\u8EA2\uACCD\u8EA2\uACCE\u8EA2\uACD5\u0000\uD2E6\u0000\u0000" + // 10260 - 10264
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10265 - 10269
+                "\u0000\u0000\u0000\u0000\u0000\uD7A1\u0000\u0000\u0000\uD7A7" + // 10270 - 10274
+                "\u0000\uD7A6\u8EA2\uB1C4\u8EA2\uB1BE\u8EA2\uB1BC\u0000\u0000" + // 10275 - 10279
+                "\u0000\uD7A4\u8EA2\uB7DC\u0000\uD6FD\u8EA2\uB1C1\u8EA2\uB1C5" + // 10280 - 10284
+                "\u8EA2\uB1C7\u8EA2\uB1C3\u8EA2\uB1BD\u0000\uD7A5\u8EA2\uB1C2" + // 10285 - 10289
+                "\u8EA2\uB1C0\u0000\uD6FC\u8EA2\uB1C8\u0000\uD7A8\u8EA2\uB1C6" + // 10290 - 10294
+                "\u0000\uD7A2\u8EA2\uB1BF\u0000\u0000\u0000\uD7A3\u0000\uD6FE" + // 10295 - 10299
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10300 - 10304
+                "\u0000\u0000\u0000\u0000\u0000\uA5C7\u0000\uA5C8\u0000\uA5C9" + // 10305 - 10309
+                "\u0000\uA5CA\u0000\uA5CB\u0000\uA5CC\u0000\uA5CD\u0000\uA5CE" + // 10310 - 10314
+                "\u0000\uA5CF\u0000\uA5D0\u0000\uA5D1\u0000\uA5D2\u0000\uA5D3" + // 10315 - 10319
+                "\u0000\uA5D4\u0000\uA5D5\u0000\uA5D6\u0000\uA5D7\u0000\uA5D8" + // 10320 - 10324
+                "\u0000\uA5D9\u0000\uA5DA\u0000\uA5DB\u0000\uA5DC\u0000\uA5DD" + // 10325 - 10329
+                "\u0000\uA5DE\u0000\uA5DF\u0000\uA5E0\u0000\uA5E1\u0000\uA5E2" + // 10330 - 10334
+                "\u0000\uA5E3\u0000\uA5E4\u0000\uA5E5\u0000\uA5E6\u0000\uA5E7" + // 10335 - 10339
+                "\u0000\uA5E8\u0000\uA5E9\u0000\uA5EA\u0000\uA5EB\u0000\u0000" + // 10340 - 10344
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10345 - 10349
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10350 - 10354
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10355 - 10359
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10360 - 10364
+                "\u0000\u0000\u0000\uA4F5\u0000\uA4F6\u0000\uA4F7\u0000\uA4F8" + // 10365 - 10369
+                "\u0000\uA4F9\u0000\uA4FA\u0000\uA4FB\u0000\uA4FC\u0000\uA4FD" + // 10370 - 10374
+                "\u0000\uA4FE\u0000\uA5A1\u0000\uA5A2\u0000\uA5A3\u0000\uA5A4" + // 10375 - 10379
+                "\u0000\uA5A5\u0000\uA5A6\u0000\uA5A7\u0000\u0000\u0000\uA5A8" + // 10380 - 10384
+                "\u0000\uA5A9\u0000\uA5AA\u0000\uA5AB\u0000\uA5AC\u0000\uA5AD" + // 10385 - 10389
+                "\u0000\uA5AE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10390 - 10394
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA5AF\u0000\uA5B0" + // 10395 - 10399
+                "\u0000\uA5B1\u0000\uA5B2\u0000\uA5B3\u0000\uA5B4\u0000\uA5B5" + // 10400 - 10404
+                "\u0000\uA5B6\u0000\uA5B7\u0000\uA5B8\u0000\uA5B9\u0000\uA5BA" + // 10405 - 10409
+                "\u0000\uA5BB\u0000\uA5BC\u0000\uA5BD\u8EA2\uDBCF\u8EA2\uDBB7" + // 10410 - 10414
+                "\u8EA2\uDBC3\u0000\u0000\u0000\uF2E7\u0000\u0000\u8EA2\uDBAF" + // 10415 - 10419
+                "\u0000\u0000\u8EA2\uDBAD\u8EA2\uDBCE\u0000\u0000\u8EA2\uDBCC" + // 10420 - 10424
+                "\u8EA2\uDBCB\u8EA2\uDBBB\u8EA2\uDBBA\u8EA2\uDBB0\u0000\uF2E9" + // 10425 - 10429
+                "\u0000\u0000\u8EA2\uDBB6\u8EA2\uDBBF\u8EA2\uDBCA\u0000\uF2EC" + // 10430 - 10434
+                "\u8EA2\uDBD1\u0000\u0000\u0000\uF5F3\u0000\uF2EE\u0000\uF2E8" + // 10435 - 10439
+                "\u8EA2\uDBB4\u0000\u0000\u8EA2\uDBBD\u8EA2\uDBAC\u8EA2\uDBAE" + // 10440 - 10444
+                "\u0000\uF2DF\u0000\uF2EB\u0000\uF2E4\u8EA2\uDBB5\u8EA2\uDBC4" + // 10445 - 10449
+                "\u8EA2\uD5CB\u0000\uF2EA\u8EA2\uDBAB\u0000\uF5EE\u8EA2\uDBC6" + // 10450 - 10454
+                "\u8EA2\uDBC9\u0000\uF2E6\u0000\u0000\u8EA2\uDBB9\u0000\uF2ED" + // 10455 - 10459
+                "\u0000\uF2E3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF2E2" + // 10460 - 10464
+                "\u8EA2\uDBC2\u8EA2\uDBC8\u0000\uF2E0\u0000\u0000\u8EA2\uDBB2" + // 10465 - 10469
+                "\u8EA2\uDBC7\u0000\u0000\u0000\u0000\u8EA2\uDBB3\u0000\u0000" + // 10470 - 10474
+                "\u0000\u0000\u0000\u0000\u0000\uF4C3\u8EA2\uDDE0\u0000\u0000" + // 10475 - 10479
+                "\u0000\u0000\u0000\uF4C2\u8EA2\uDDE3\u8EA2\uDDE1\u8EA2\uDDE2" + // 10480 - 10484
+                "\u0000\u0000\u0000\u0000\u0000\uF4C4\u0000\u0000\u0000\u0000" + // 10485 - 10489
+                "\u0000\u0000\u8EA2\uE2BA\u0000\u0000\u0000\uF6EB\u8EA2\uE2BB" + // 10490 - 10494
+                "\u0000\u0000\u0000\u0000\u0000\uF6E9\u8EA2\uE2BC\u0000\uF6EA" + // 10495 - 10499
+                "\u8EA2\uE2B9\u8EA2\uE2BD\u0000\u0000\u8EA2\uE2B7\u0000\u0000" + // 10500 - 10504
+                "\u0000\u0000\u0000\uF8D2\u8EA2\uE6A4\u0000\uF8D3\u0000\uF9FA" + // 10505 - 10509
+                "\u0000\u0000\u8EA2\uE2B8\u0000\uF9FB\u0000\u0000\u0000\u0000" + // 10510 - 10514
+                "\u0000\u0000\u0000\uFAF9\u8EA2\uEBED\u0000\u0000\u0000\uFBEA" + // 10515 - 10519
+                "\u8EA2\uEDE2\u0000\uFBE9\u0000\u0000\u8EA2\uEFB9\u0000\uFCE1" + // 10520 - 10524
+                "\u0000\uFCE2\u0000\u0000\u0000\u0000\u8EA2\uF2BA\u0000\uA8AA" + // 10525 - 10529
+                "\u0000\u0000\u0000\uD2D4\u8EA2\uACC0\u0000\u0000\u0000\uE0F4" + // 10530 - 10534
+                "\u0000\uE0F5\u0000\uC6F5\u0000\uC8CB\u8EA2\uA2E7\u8EA2\uD5AF" + // 10535 - 10539
+                "\u0000\uEFDD\u8EA2\uD5BB\u8EA2\uD5AD\u8EA2\uD5AE\u0000\uEFD8" + // 10540 - 10544
+                "\u8EA2\uD5CC\u0000\uEFE1\u8EA2\uD5BE\u8EA2\uD5C3\u8EA2\uD5BD" + // 10545 - 10549
+                "\u8EA2\uDBBC\u8EA2\uD5B9\u8EA2\uD5C1\u8EA2\uD5BF\u8EA2\uD5B2" + // 10550 - 10554
+                "\u8EA2\uD5AC\u8EA2\uD5C7\u0000\uEFE0\u8EA2\uD5C8\u0000\u0000" + // 10555 - 10559
+                "\u8EA2\uD5C2\u0000\u0000\u8EA2\uD5B7\u8EA2\uD5B5\u8EA2\uD5B0" + // 10560 - 10564
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD5B8\u8EA2\uD5C5" + // 10565 - 10569
+                "\u8EA2\uD5B4\u8EA2\uD5C4\u8EA2\uD5CA\u0000\u0000\u0000\u0000" + // 10570 - 10574
+                "\u0000\uEFDC\u0000\u0000\u8EA2\uD5C0\u8EA2\uD5C6\u8EA2\uD5BC" + // 10575 - 10579
+                "\u8EA2\uD5B6\u0000\uEFDB\u0000\u0000\u0000\u0000\u0000\u0000" + // 10580 - 10584
+                "\u8EA2\uCEEE\u8EA2\uD5BA\u0000\uEFE2\u8EA2\uD5B3\u0000\u0000" + // 10585 - 10589
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDBC1" + // 10590 - 10594
+                "\u0000\uF2E1\u8EA2\uDBC0\u8EA2\uDBBE\u8EA2\uDBD0\u0000\uF2E5" + // 10595 - 10599
+                "\u0000\u0000\u8EA2\uDBCD\u8EA2\uDBC5\u0000\uEBD1\u0000\u0000" + // 10600 - 10604
+                "\u8EA2\uCEF0\u8EA2\uC8BC\u0000\u0000\u0000\uEBD2\u8EA2\uCEF7" + // 10605 - 10609
+                "\u8EA2\uCEFC\u8EA2\uCEF4\u0000\u0000\u8EA2\uCEF6\u8EA2\uCFA1" + // 10610 - 10614
+                "\u8EA2\uCEF8\u8EA2\uCEE6\u8EA2\uCEEF\u0000\u0000\u0000\u0000" + // 10615 - 10619
+                "\u0000\uEBDA\u0000\u0000\u0000\uEBD6\u8EA2\uCEE4\u8EA2\uCEF1" + // 10620 - 10624
+                "\u0000\uEBD4\u8EA2\uCEEB\u0000\uEBD3\u8EA2\uCEF9\u8EA2\uCEE8" + // 10625 - 10629
+                "\u8EA2\uCEE1\u0000\uEBD7\u8EA2\uCEFE\u0000\u0000\u0000\u0000" + // 10630 - 10634
+                "\u8EA2\uCEE3\u8EA2\uCEF5\u8EA2\uCEF2\u8EA2\uCEED\u8EA2\uCEDF" + // 10635 - 10639
+                "\u8EA2\uCEDE\u8EA2\uCEE7\u8EA2\uCEFA\u0000\uEBD8\u8EA2\uCEFD" + // 10640 - 10644
+                "\u8EA2\uCEE5\u8EA2\uCEE9\u0000\uEBD0\u0000\u0000\u0000\u0000" + // 10645 - 10649
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEFE3\u0000\uEFDE" + // 10650 - 10654
+                "\u8EA2\uD5CD\u8EA2\uD5C9\u8EA2\uD5B1\u0000\uEFDA\u0000\u0000" + // 10655 - 10659
+                "\u0000\u0000\u0000\u0000\u0000\uEFD9\u0000\uEFDF\u0000\u0000" + // 10660 - 10664
+                "\u0000\u0000\u0000\u0000\u8EA2\uA7F8\u8EA2\uA7FA\u8EA2\uA7F5" + // 10665 - 10669
+                "\u8EA2\uA7F2\u8EA2\uA7F4\u0000\u0000\u0000\u0000\u0000\u0000" + // 10670 - 10674
+                "\u0000\uCEE5\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCEE3" + // 10675 - 10679
+                "\u0000\u0000\u0000\u0000\u8EA2\uA7F6\u0000\uCEE4\u8EA2\uA7F3" + // 10680 - 10684
+                "\u8EA2\uA7F0\u0000\uCEE2\u8EA2\uA7F7\u0000\u0000\u8EA2\uA7F1" + // 10685 - 10689
+                "\u0000\uCEE6\u8EA2\uA7F9\u0000\u0000\u0000\u0000\u0000\u0000" + // 10690 - 10694
+                "\u0000\u0000\u8EA2\uABEF\u0000\u0000\u8EA2\uABF3\u0000\u0000" + // 10695 - 10699
+                "\u0000\u0000\u0000\uD2BA\u0000\u0000\u0000\u0000\u0000\u0000" + // 10700 - 10704
+                "\u0000\u0000\u8EA2\uABF6\u0000\u0000\u0000\uD2B2\u0000\uD2B5" + // 10705 - 10709
+                "\u0000\uD2B7\u0000\uD2B9\u0000\uD2B6\u8EA2\uABF2\u8EA2\uABF1" + // 10710 - 10714
+                "\u0000\u0000\u0000\uD2B4\u8EA2\uABF4\u8EA2\uABF5\u0000\u0000" + // 10715 - 10719
+                "\u8EA2\uABEE\u0000\uD2B8\u0000\u0000\u0000\uD2B3\u0000\u0000" + // 10720 - 10724
+                "\u0000\u0000\u0000\u0000\u8EA2\uABF0\u0000\u0000\u8EAD\uA3F2" + // 10725 - 10729
+                "\u8EAD\uA3F3\u8EAD\uA3F4\u8EAD\uA3F5\u8EAD\uA3F6\u8EAD\uA3F7" + // 10730 - 10734
+                "\u8EAD\uA3F8\u8EAD\uA3F9\u8EAD\uA3FA\u8EAD\uA3FB\u8EAD\uA3FC" + // 10735 - 10739
+                "\u8EAD\uA3FD\u8EAD\uA3FE\u8EAD\uA4A1\u8EAD\uA4A2\u8EAD\uA4A3" + // 10740 - 10744
+                "\u0000\u0000\u8EAD\uA3E7\u0000\u0000\u0000\u0000\u0000\u0000" + // 10745 - 10749
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10750 - 10754
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10755 - 10759
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10760 - 10764
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10765 - 10769
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10770 - 10774
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10775 - 10779
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10780 - 10784
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10785 - 10789
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10790 - 10794
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10795 - 10799
+                "\u0000\uDEA5\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFADB" + // 10800 - 10804
+                "\u8EA2\uEDB7\u0000\u0000\u0000\uFCFB\u0000\uFCFC\u0000\u0000" + // 10805 - 10809
+                "\u0000\uDEA6\u0000\uE7C3\u0000\u0000\u0000\u0000\u0000\u0000" + // 10810 - 10814
+                "\u0000\u0000\u0000\uE7CC\u8EA2\uC8BF\u0000\u0000\u8EA2\uC8B4" + // 10815 - 10819
+                "\u0000\uE7CA\u8EA2\uC8BE\u0000\uE7C6\u8EA2\uC8D0\u0000\uE7CB" + // 10820 - 10824
+                "\u8EA2\uC8CE\u8EA2\uC8C2\u8EA2\uC8CC\u0000\uE7C8\u8EA2\uC8B5" + // 10825 - 10829
+                "\u8EA2\uC8CF\u8EA2\uC8CA\u0000\u0000\u8EA2\uC8D1\u0000\uE7C0" + // 10830 - 10834
+                "\u0000\u0000\u0000\u0000\u0000\uE7CF\u0000\uE7C5\u0000\u0000" + // 10835 - 10839
+                "\u0000\u0000\u8EA2\uC8BB\u0000\u0000\u8EA2\uC8C3\u8EA2\uC8C7" + // 10840 - 10844
+                "\u0000\u0000\u8EA2\uC8CB\u0000\uE7C7\u8EA2\uC8BA\u8EA2\uC8B8" + // 10845 - 10849
+                "\u8EA2\uC8C4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10850 - 10854
+                "\u8EA2\uC8C1\u8EA2\uC8C0\u0000\u0000\u8EA2\uC8C5\u8EA2\uC8C8" + // 10855 - 10859
+                "\u0000\u0000\u8EA2\uC8CD\u0000\u0000\u0000\u0000\u0000\u0000" + // 10860 - 10864
+                "\u8EA2\uCEE0\u0000\u0000\u0000\uEBCF\u8EA2\uCEEA\u8EA2\uCEE2" + // 10865 - 10869
+                "\u0000\uEBD5\u0000\uEBD9\u8EA2\uCEF3\u8EA2\uCEFB\u8EA2\uCEEC" + // 10870 - 10874
+                "\u8EA2\uC1B1\u8EA2\uC1A9\u8EA2\uC1B8\u8EA2\uC1AC\u8EA2\uC1B6" + // 10875 - 10879
+                "\u8EA2\uC1BD\u8EA2\uC1B5\u0000\uE2E0\u0000\u0000\u0000\uE2DC" + // 10880 - 10884
+                "\u8EA2\uC1AA\u0000\u0000\u8EA2\uC1B0\u0000\uE2DE\u0000\u0000" + // 10885 - 10889
+                "\u8EA2\uC1AF\u0000\uE2DF\u0000\uE2E1\u8EA2\uC1B2\u0000\u0000" + // 10890 - 10894
+                "\u0000\uE2D9\u0000\uE2DA\u8EA2\uC1BE\u8EA2\uC1BC\u0000\u0000" + // 10895 - 10899
+                "\u8EA2\uC1BB\u8EA2\uC1AD\u0000\u0000\u8EA2\uC1B9\u0000\u0000" + // 10900 - 10904
+                "\u0000\uE2DD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10905 - 10909
+                "\u0000\uE2DB\u8EA2\uC1BA\u8EA2\uC1AB\u8EA2\uC1AE\u8EA2\uC1B7" + // 10910 - 10914
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 10915 - 10919
+                "\u8EA2\uCFA2\u8EA2\uC8BD\u0000\u0000\u8EA2\uC8B6\u8EA2\uC8C9" + // 10920 - 10924
+                "\u8EA2\uC8D2\u8EA2\uC8B9\u0000\uE7C9\u0000\u0000\u8EA2\uC8C6" + // 10925 - 10929
+                "\u0000\uE7BF\u0000\uE7C1\u0000\uE7CD\u8EA2\uC8B7\u0000\u0000" + // 10930 - 10934
+                "\u0000\u0000\u0000\uE7C2\u0000\uE7C4\u0000\uE7CE\u0000\uFCEE" + // 10935 - 10939
+                "\u0000\uFDAA\u8EA2\uF0D7\u8EA2\uF1E0\u0000\u0000\u0000\uFDBC" + // 10940 - 10944
+                "\u0000\uCBDD\u0000\uCFD9\u0000\u0000\u0000\uE7BE\u0000\u0000" + // 10945 - 10949
+                "\u0000\uFACB\u0000\uCBDE\u0000\uD3EC\u0000\uDDE9\u0000\uE2D8" + // 10950 - 10954
+                "\u0000\uF7D2\u0000\uCFDA\u0000\u0000\u8EA2\uADE2\u8EA2\uADE1" + // 10955 - 10959
+                "\u8EA2\uB3C5\u0000\u0000\u0000\uD8DD\u0000\uD8DB\u0000\uD8DF" + // 10960 - 10964
+                "\u8EA2\uB3C7\u0000\u0000\u0000\uD8DE\u0000\uD8DC\u0000\u0000" + // 10965 - 10969
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB3C6\u0000\uDDEC" + // 10970 - 10974
+                "\u8EA2\uBAA1\u0000\u0000\u0000\uDDEB\u0000\uDDED\u8EA2\uBAA6" + // 10975 - 10979
+                "\u0000\uDDEF\u8EA2\uBAA3\u8EA2\uBAA4\u8EA2\uB9FA\u0000\uDDEE" + // 10980 - 10984
+                "\u8EA2\uBAA7\u0000\u0000\u0000\u0000\u8EA2\uB9FC\u0000\u0000" + // 10985 - 10989
+                "\u8EA2\uB9FD\u8EA2\uB9FB\u0000\uDDEA\u0000\u0000\u8EA2\uBAA5" + // 10990 - 10994
+                "\u8EA2\uB9FE\u8EA2\uBAA2\u0000\u0000\u0000\u0000\u0000\u0000" + // 10995 - 10999
+                "\u8EA2\uC1B4\u0000\u0000\u8EA2\uC1B3\u8EA2\uD5AB\u8EA2\uD5A8" + // 11000 - 11004
+                "\u8EA2\uD5A9\u0000\uEFD7\u8EA2\uD5AA\u8EA2\uD5A5\u8EA2\uD5A6" + // 11005 - 11009
+                "\u0000\uEFD4\u0000\u0000\u0000\uEFD5\u8EA2\uD5A7\u0000\uEFD6" + // 11010 - 11014
+                "\u0000\u0000\u8EA2\uDBA9\u0000\u0000\u8EA2\uDBAA\u8EA2\uDBA7" + // 11015 - 11019
+                "\u8EA2\uDBA8\u0000\uF2DE\u8EA2\uDBA6\u0000\u0000\u0000\u0000" + // 11020 - 11024
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDFF4\u8EA2\uDFF1" + // 11025 - 11029
+                "\u8EA2\uDFF3\u0000\uF5EB\u8EA2\uDFF7\u0000\uF5EA\u8EA2\uDFF5" + // 11030 - 11034
+                "\u8EA2\uDFF8\u8EA2\uDFF6\u8EA2\uDFF2\u0000\uF5E9\u0000\u0000" + // 11035 - 11039
+                "\u8EA2\uE3F9\u0000\u0000\u8EA2\uE3FA\u8EA2\uE3F8\u0000\u0000" + // 11040 - 11044
+                "\u8EA2\uE3FC\u0000\uF7D0\u0000\uF7D1\u8EA2\uE7CB\u0000\uF9B4" + // 11045 - 11049
+                "\u8EA2\uE3FB\u8EA2\uE7CA\u0000\uF9B3\u8EA2\uEAB3\u8EA2\uEAB4" + // 11050 - 11054
+                "\u0000\uFACA\u8EA2\uEAB2\u0000\u0000\u8EA2\uEAB1\u0000\u0000" + // 11055 - 11059
+                "\u8EA2\uECCC\u0000\uFBB4\u0000\u0000\u8EA2\uEFD7\u8EA2\uF0D6" + // 11060 - 11064
+                "\u8EA2\uF0D5\u0000\u0000\u0000\uA5BE\u0000\uA5BF\u0000\u0000" + // 11065 - 11069
+                "\u0000\uA5C0\u0000\uA5C1\u0000\uA5C2\u0000\uA5C3\u0000\uA5C4" + // 11070 - 11074
+                "\u0000\uA5C5\u0000\uA5C6\u0000\u0000\u0000\u0000\u0000\u0000" + // 11075 - 11079
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11080 - 11084
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11085 - 11089
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11090 - 11094
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11095 - 11099
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11100 - 11104
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11105 - 11109
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11110 - 11114
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11115 - 11119
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11120 - 11124
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11125 - 11129
+                "\u0000\u0000\u0000\u0000\u0000\uCFDB\u0000\u0000\u0000\u0000" + // 11130 - 11134
+                "\u8EA2\uBAA8\u8EA2\uC1BF\u8EA2\uD5CE\u8EA2\uE7E3\u0000\u0000" + // 11135 - 11139
+                "\u0000\u0000\u0000\uCEFC\u0000\uD2DA\u8EA2\uACC1\u0000\uD2DB" + // 11140 - 11144
+                "\u0000\uD2D9\u0000\u0000\u0000\uD2D8\u8EA2\uB1AF\u0000\uD6F4" + // 11145 - 11149
+                "\u0000\u0000\u0000\u0000\u0000\uD6F5\u0000\uD6F6\u0000\u0000" + // 11150 - 11154
+                "\u0000\u0000\u0000\u0000\u0000\uDCB5\u8EA2\uB7CA\u0000\uDCB4" + // 11155 - 11159
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11160 - 11164
+                "\u8EA2\uBEBD\u0000\uDCB6\u0000\uE0F9\u8EA2\uC5BD\u0000\uE5C0" + // 11165 - 11169
+                "\u0000\uE5C1\u0000\u0000\u0000\uE9F0\u0000\u0000\u0000\uE9F1" + // 11170 - 11174
+                "\u0000\uEDF5\u0000\uF1CE\u8EA2\uD8E1\u0000\uF1CD\u0000\u0000" + // 11175 - 11179
+                "\u8EA2\uDDE5\u0000\uF4C5\u0000\u0000\u8EA2\uE2C0\u8EA2\uE9C2" + // 11180 - 11184
+                "\u0000\uC6F8\u0000\uCBB1\u8EA2\uA8BA\u8EA2\uA8B9\u0000\uCEFD" + // 11185 - 11189
+                "\u8EA2\uA8B8\u0000\uCEFE\u8EA2\uA8BB\u0000\u0000\u8EA2\uACC7" + // 11190 - 11194
+                "\u0000\uD2DE\u0000\uD2DD\u8EA2\uACC9\u8EA2\uACC8\u0000\uD2E2" + // 11195 - 11199
+                "\u0000\u0000\u0000\uD2E1\u0000\u0000\u8EA2\uD7A9\u0000\uF3DD" + // 11200 - 11204
+                "\u8EA2\uDCEA\u0000\u0000\u8EA2\uD7A6\u8EA2\uD7A8\u0000\uF3DE" + // 11205 - 11209
+                "\u0000\uF0DC\u0000\uF3DC\u0000\uF0DB\u0000\uF3E0\u8EA2\uD7AA" + // 11210 - 11214
+                "\u0000\uF0D8\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11215 - 11219
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE1DB" + // 11220 - 11224
+                "\u0000\u0000\u8EA2\uE1D3\u0000\u0000\u0000\u0000\u0000\u0000" + // 11225 - 11229
+                "\u0000\u0000\u0000\u0000\u8EA2\uDCF2\u8EA2\uE1D4\u8EA2\uDCEE" + // 11230 - 11234
+                "\u0000\u0000\u0000\u0000\u0000\uF6C2\u8EA2\uDCF0\u8EA2\uDCEF" + // 11235 - 11239
+                "\u0000\uF3DF\u8EA2\uDCED\u8EA2\uDCF1\u8EA2\uE1DC\u8EA2\uE1D8" + // 11240 - 11244
+                "\u8EA2\uE1DA\u0000\u0000\u8EA2\uE1D5\u8EA2\uE1D6\u0000\u0000" + // 11245 - 11249
+                "\u8EA2\uE1D9\u8EA2\uE1D7\u0000\uF8B4\u0000\u0000\u0000\u0000" + // 11250 - 11254
+                "\u0000\uF8B7\u0000\uF8B6\u0000\uF8B5\u0000\uF9EC\u8EA2\uE8F6" + // 11255 - 11259
+                "\u0000\uF9ED\u8EA2\uE5CC\u0000\uFAEA\u8EA2\uEBDA\u0000\uFAEB" + // 11260 - 11264
+                "\u0000\uFBE0\u8EA2\uE7C8\u8EA2\uEAB0\u0000\u0000\u8EA2\uEAAF" + // 11265 - 11269
+                "\u8EA2\uECCA\u8EA2\uECCB\u8EA2\uECC9\u8EA2\uEEB5\u0000\uFBFA" + // 11270 - 11274
+                "\u0000\uCBDC\u0000\uD3EB\u0000\uD3EA\u0000\uD8DA\u0000\uD8D9" + // 11275 - 11279
+                "\u8EA2\uB3C3\u8EA2\uB3C4\u8EA2\uB3C2\u0000\u0000\u0000\uD8D8" + // 11280 - 11284
+                "\u8EA2\uB9F8\u0000\u0000\u8EA2\uB9F9\u8EA2\uB9F5\u0000\uDDE8" + // 11285 - 11289
+                "\u8EA2\uB9F6\u0000\u0000\u8EA2\uB9F7\u0000\u0000\u0000\u0000" + // 11290 - 11294
+                "\u0000\u0000\u0000\u0000\u8EA2\uC1A6\u8EA2\uC1A8\u8EA2\uC1A4" + // 11295 - 11299
+                "\u8EA2\uC1A7\u0000\uE2D6\u8EA2\uC1A5\u0000\uE2D7\u0000\u0000" + // 11300 - 11304
+                "\u0000\u0000\u8EA2\uC2F9\u0000\uE7BD\u0000\uE7BC\u0000\u0000" + // 11305 - 11309
+                "\u0000\uE7BB\u0000\u0000\u8EA2\uC8B2\u8EA2\uC8B3\u0000\u0000" + // 11310 - 11314
+                "\u0000\u0000\u8EA2\uCEDB\u8EA2\uCEDD\u0000\uEBCE\u0000\uEBCB" + // 11315 - 11319
+                "\u0000\u0000\u0000\uEBCD\u0000\uEBCC\u8EA2\uCEDC\u8EA2\uCEDA" + // 11320 - 11324
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11325 - 11329
+                "\u0000\uD9B6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11330 - 11334
+                "\u0000\uC4B4\u0000\uC4C6\u0000\uC5AF\u0000\uC5AE\u0000\u0000" + // 11335 - 11339
+                "\u0000\uC5B0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11340 - 11344
+                "\u0000\u0000\u0000\u0000\u0000\uCCBE\u0000\u0000\u0000\uCCBD" + // 11345 - 11349
+                "\u0000\uCCBF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0B5" + // 11350 - 11354
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD4D1\u0000\u0000" + // 11355 - 11359
+                "\u8EA2\uD6C6\u0000\uF6BB\u0000\uC4C7\u0000\uC6AC\u0000\uC6BB" + // 11360 - 11364
+                "\u0000\uC6B6\u0000\u0000\u0000\uC6B1\u0000\uC6B0\u0000\uC6B7" + // 11365 - 11369
+                "\u0000\uC6B5\u0000\uC6AE\u0000\uC6BC\u0000\uC6AF\u0000\uC6AB" + // 11370 - 11374
+                "\u0000\uC6BA\u0000\uC6B9\u0000\uC6B8\u0000\uC6AD\u0000\u0000" + // 11375 - 11379
+                "\u0000\uC6B4\u0000\u0000\u0000\u0000\u0000\uC6B3\u0000\u0000" + // 11380 - 11384
+                "\u0000\u0000\u0000\uC6BD\u0000\uC6B2\u0000\u0000\u0000\u0000" + // 11385 - 11389
+                "\u0000\u0000\u0000\uF6D3\u0000\uF6D0\u0000\u0000\u8EA2\uE1E9" + // 11390 - 11394
+                "\u8EA2\uE1ED\u8EA2\uE1F1\u0000\u0000\u0000\u0000\u0000\u0000" + // 11395 - 11399
+                "\u8EA2\uE5DC\u8EA2\uE5D9\u8EA2\uE5E2\u0000\u0000\u8EA2\uE5E1" + // 11400 - 11404
+                "\u8EA2\uE5DF\u8EA2\uE5DA\u0000\u0000\u0000\uF8BF\u0000\u0000" + // 11405 - 11409
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE5DB" + // 11410 - 11414
+                "\u0000\uF8BE\u0000\uF3F6\u8EA2\uE5DE\u0000\uF8BD\u8EA2\uE5E3" + // 11415 - 11419
+                "\u8EA2\uE5DD\u8EA2\uE5D8\u8EA2\uE1EC\u0000\u0000\u0000\u0000" + // 11420 - 11424
+                "\u0000\u0000\u0000\uF8BC\u0000\u0000\u8EA2\uE5D7\u8EA2\uE9A4" + // 11425 - 11429
+                "\u0000\u0000\u8EA2\uE9A3\u8EA2\uE5E0\u0000\uF9F3\u0000\u0000" + // 11430 - 11434
+                "\u8EA2\uE9A7\u8EA2\uE9A8\u8EA2\uE9A2\u8EA2\uE9A6\u0000\u0000" + // 11435 - 11439
+                "\u8EA2\uE9A1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11440 - 11444
+                "\u8EA2\uEBDF\u8EA2\uE9A5\u0000\uFAF2\u0000\uFAF0\u8EA2\uEBDD" + // 11445 - 11449
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCDDA\u0000\u0000" + // 11450 - 11454
+                "\u0000\uCDD8\u0000\u0000\u0000\uCDF0\u0000\uCDE8\u0000\uCDE2" + // 11455 - 11459
+                "\u0000\uCDD6\u8EA2\uA6F8\u0000\uCDE1\u0000\uCDD7\u0000\uCDE9" + // 11460 - 11464
+                "\u0000\uCDF2\u8EA2\uAAD5\u0000\uCDE6\u8EA2\uA6F4\u0000\uCDDC" + // 11465 - 11469
+                "\u0000\uCDDF\u0000\uCDE0\u0000\u0000\u0000\uCDEE\u0000\uCDEF" + // 11470 - 11474
+                "\u0000\uCDED\u0000\uCDE7\u0000\uCDEB\u0000\uCDDD\u0000\uD1B8" + // 11475 - 11479
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11480 - 11484
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11485 - 11489
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uAADB" + // 11490 - 11494
+                "\u0000\uD1C4\u0000\uD1BC\u0000\uD1BE\u0000\uD1C3\u8EA2\uAAE7" + // 11495 - 11499
+                "\u0000\uD1C1\u8EA2\uAFB3\u0000\uD5D3\u0000\uD1C6\u8EA2\uAAD8" + // 11500 - 11504
+                "\u8EA2\uAAE0\u0000\uD1C2\u8EA2\uAADF\u8EA2\uAADC\u8EA2\uAAE4" + // 11505 - 11509
+                "\u8EA2\uAAE6\u0000\uD1BB\u0000\uD1BF\u0000\uD1C5\u0000\uD5D5" + // 11510 - 11514
+                "\u8EA2\uC0FE\u8EA2\uC0FD\u0000\uE2D2\u8EA2\uC1A3\u8EA2\uC0F7" + // 11515 - 11519
+                "\u8EA2\uC1A2\u8EA2\uC0F5\u8EA2\uC1A1\u8EA2\uC0FA\u0000\uE2D4" + // 11520 - 11524
+                "\u0000\u0000\u8EA2\uC8B0\u0000\u0000\u8EA2\uC8AB\u8EA2\uC8B1" + // 11525 - 11529
+                "\u8EA2\uC8AC\u8EA2\uC8AA\u8EA2\uC8AD\u0000\uE7B9\u0000\u0000" + // 11530 - 11534
+                "\u8EA2\uC8AF\u0000\u0000\u8EA2\uC8AE\u0000\uE7BA\u0000\uEBC9" + // 11535 - 11539
+                "\u0000\uEBC8\u8EA2\uCED6\u8EA2\uCED9\u8EA2\uCED1\u8EA2\uCED5" + // 11540 - 11544
+                "\u0000\uEBCA\u8EA2\uCED4\u8EA2\uCED2\u8EA2\uCED8\u8EA2\uCED3" + // 11545 - 11549
+                "\u8EA2\uCED0\u8EA2\uCED7\u0000\u0000\u8EA2\uD5A3\u0000\uEFD2" + // 11550 - 11554
+                "\u8EA2\uE3F4\u8EA2\uD4FE\u8EA2\uD5A1\u8EA2\uD4FD\u8EA2\uC0F6" + // 11555 - 11559
+                "\u0000\uEFD1\u8EA2\uD5A4\u8EA2\uD4FC\u0000\uEFD0\u0000\uEFD3" + // 11560 - 11564
+                "\u8EA2\uD5A2\u8EA2\uDBA3\u0000\uF2DD\u8EA2\uDBA4\u8EA2\uDBA5" + // 11565 - 11569
+                "\u0000\u0000\u8EA2\uDFF0\u0000\uF5E8\u8EA2\uE3F5\u8EA2\uE3F6" + // 11570 - 11574
+                "\u0000\u0000\u0000\u0000\u8EA2\uE3F7\u8EA2\uE7C9\u0000\uF5E7" + // 11575 - 11579
+                "\u0000\uF5E5\u0000\uF5E6\u0000\uF7CE\u0000\uF5E4\u8EA2\uDFEE" + // 11580 - 11584
+                "\u8EA2\uDBA1\u0000\uF7CD\u0000\uF7CF\u0000\u0000\u0000\uF9B1" + // 11585 - 11589
+                "\u0000\uF9B2\u0000\u0000\u8EA2\uEAAE\u0000\u0000\u0000\uFCCA" + // 11590 - 11594
+                "\u0000\uFCC9\u0000\uCBD7\u0000\u0000\u0000\u0000\u8EA2\uA2F5" + // 11595 - 11599
+                "\u0000\uD8D4\u0000\u0000\u8EA2\uA2F2\u8EA2\uA2F3\u8EA2\uA2F1" + // 11600 - 11604
+                "\u0000\u0000\u8EA2\uA2F4\u0000\u0000\u0000\u0000\u8EA2\uA5AA" + // 11605 - 11609
+                "\u8EA2\uA5A7\u8EA2\uA5AC\u8EA2\uA5A8\u0000\uCBD8\u0000\uCBDB" + // 11610 - 11614
+                "\u0000\u0000\u8EA2\uA5A9\u0000\uCBDA\u8EA2\uA5AB\u0000\u0000" + // 11615 - 11619
+                "\u0000\u0000\u0000\uCBD9\u0000\u0000\u0000\u0000\u0000\u0000" + // 11620 - 11624
+                "\u0000\u0000\u8EA2\uA8F5\u8EA2\uA8F7\u0000\uCFD7\u8EA2\uA8F3" + // 11625 - 11629
+                "\u8EA2\uA8F6\u8EA2\uA8F4\u0000\uCFD5\u0000\uCFD8\u0000\u0000" + // 11630 - 11634
+                "\u0000\uCFD6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11635 - 11639
+                "\u8EA2\uADD9\u8EA2\uADDD\u8EA2\uADDA\u0000\uD8CD\u0000\uD8CA" + // 11640 - 11644
+                "\u8EA2\uB3B0\u0000\uD8D0\u8EA2\uB3B3\u0000\uD8D2\u0000\uD8CB" + // 11645 - 11649
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB9E6" + // 11650 - 11654
+                "\u8EA2\uB9E9\u0000\uDDD6\u0000\u0000\u0000\uDDE0\u0000\uDDDC" + // 11655 - 11659
+                "\u8EA2\uB9E7\u0000\u0000\u0000\u0000\u0000\uDDE4\u0000\uDDDD" + // 11660 - 11664
+                "\u0000\uDDE2\u0000\uDDD8\u0000\u0000\u0000\uDDD5\u0000\uDDD7" + // 11665 - 11669
+                "\u0000\uDDE3\u8EA2\uB9E8\u0000\uDDDB\u0000\uDDDE\u0000\uDDDA" + // 11670 - 11674
+                "\u0000\uDDDF\u8EA2\uB9EA\u0000\uDDE1\u0000\uDDD9\u8EA2\uB9E5" + // 11675 - 11679
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11680 - 11684
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC0F2\u0000\uE2CC" + // 11685 - 11689
+                "\u8EA2\uC0F4\u0000\u0000\u0000\uE2CE\u0000\uE2D0\u0000\u0000" + // 11690 - 11694
+                "\u8EA2\uC0F3\u0000\uE2CD\u0000\uE2D1\u0000\u0000\u0000\uE2CF" + // 11695 - 11699
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE7AF\u8EA2\uC8A9" + // 11700 - 11704
+                "\u0000\uE7B7\u8EA2\uC8A6\u8EA2\uDFED\u0000\u0000\u0000\uF5DF" + // 11705 - 11709
+                "\u8EA2\uDFEC\u0000\uF5DD\u0000\uF5E0\u8EA2\uE3F0\u8EA2\uE3F1" + // 11710 - 11714
+                "\u8EA2\uE3F2\u0000\uF7CB\u0000\u0000\u8EA2\uE3F3\u0000\u0000" + // 11715 - 11719
+                "\u0000\uF7CC\u0000\uF9AF\u8EA2\uE7C4\u8EA2\uE7C5\u8EA2\uE7C3" + // 11720 - 11724
+                "\u8EA2\uE7C2\u8EA2\uE7C6\u0000\uF9AE\u8EA2\uEAAB\u8EA2\uEAA9" + // 11725 - 11729
+                "\u8EA2\uEAAA\u8EA2\uEAAC\u8EA2\uEAA8\u8EA2\uEAAD\u8EA2\uECC7" + // 11730 - 11734
+                "\u0000\u0000\u8EA2\uECC8\u8EA2\uECC6\u0000\uFBB2\u8EA2\uEEB3" + // 11735 - 11739
+                "\u0000\uFBF9\u8EA2\uEEB4\u8EA2\uEFD6\u8EA2\uEFD5\u0000\u0000" + // 11740 - 11744
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11745 - 11749
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11750 - 11754
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11755 - 11759
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11760 - 11764
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11765 - 11769
+                "\u0000\u0000\u0000\uA2B2\u0000\u0000\u0000\u0000\u0000\u0000" + // 11770 - 11774
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11775 - 11779
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11780 - 11784
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11785 - 11789
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11790 - 11794
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11795 - 11799
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2B3\u0000\u0000" + // 11800 - 11804
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 11805 - 11809
+                "\u0000\u0000\u0000\u0000\u0000\uE4B8\u0000\u0000\u0000\u0000" + // 11810 - 11814
+                "\u8EA2\uC3A4\u8EA2\uC3B7\u8EA2\uC3BC\u8EA2\uC3B0\u0000\uE4B4" + // 11815 - 11819
+                "\u8EA2\uC3C1\u0000\uE4B1\u8EA2\uC3A2\u0000\u0000\u8EA2\uC3A3" + // 11820 - 11824
+                "\u0000\uE4AA\u0000\uE4B3\u8EA2\uC3AA\u0000\uE4B6\u0000\uE4B7" + // 11825 - 11829
+                "\u8EA2\uC3AB\u0000\u0000\u8EA2\uC3B8\u8EA2\uC3BE\u0000\uE4B2" + // 11830 - 11834
+                "\u0000\u0000\u0000\uE4AC\u8EA2\uC3A9\u8EA2\uC3A5\u8EA2\uC3C0" + // 11835 - 11839
+                "\u8EA2\uC3AE\u8EA2\uC3AF\u8EA2\uC3A6\u8EA2\uC3BA\u8EA2\uC3B1" + // 11840 - 11844
+                "\u8EA2\uC3BB\u8EA2\uC3B3\u0000\u0000\u0000\uE4AD\u8EA2\uCAC0" + // 11845 - 11849
+                "\u0000\uE4B0\u0000\uE4AE\u8EA2\uC3BF\u8EA2\uC3B6\u8EA2\uC3B2" + // 11850 - 11854
+                "\u0000\u0000\u0000\u0000\u8EA2\uC3A7\u0000\uE8FA\u8EA2\uC3B5" + // 11855 - 11859
+                "\u0000\uE4B5\u8EA2\uC3AD\u0000\u0000\u8EA2\uC3AC\u0000\u0000" + // 11860 - 11864
+                "\u0000\u0000\u0000\u0000\u0000\uE4AF\u0000\uE4AB\u8EA2\uCAD5" + // 11865 - 11869
+                "\u8EA2\uC7FD\u8EA2\uC7FC\u8EA2\uC8A3\u0000\uE7A4\u0000\u0000" + // 11870 - 11874
+                "\u8EA2\uC7FE\u8EA2\uC7FA\u8EA2\uC8A1\u8EA2\uC8A2\u0000\uE7A5" + // 11875 - 11879
+                "\u0000\uE7A7\u8EA2\uC8A4\u0000\u0000\u8EA2\uCECF\u8EA2\uCECE" + // 11880 - 11884
+                "\u0000\u0000\u8EA2\uCECC\u8EA2\uCECD\u0000\uEBBB\u0000\uEBBD" + // 11885 - 11889
+                "\u0000\uEBBA\u0000\uEBBC\u8EA2\uD4F5\u8EA2\uD4F6\u8EA2\uD4F1" + // 11890 - 11894
+                "\u0000\u0000\u8EA2\uD4F2\u0000\uEFC3\u0000\uEFC8\u0000\uEFC2" + // 11895 - 11899
+                "\u0000\uEFC9\u0000\uEFC4\u8EA2\uD4F3\u0000\u0000\u0000\u0000" + // 11900 - 11904
+                "\u8EA2\uD4F4\u8EA2\uD4F0\u0000\uEFCA\u0000\uEFC6\u0000\u0000" + // 11905 - 11909
+                "\u0000\u0000\u0000\uEFC5\u0000\uEFC7\u0000\u0000\u8EA2\uD4EF" + // 11910 - 11914
+                "\u0000\u0000\u8EA2\uDAF6\u0000\uF2D2\u0000\u0000\u0000\u0000" + // 11915 - 11919
+                "\u8EA2\uDAF8\u0000\uF2D4\u8EA2\uDAFB\u8EA2\uDAF7\u8EA2\uDAF5" + // 11920 - 11924
+                "\u8EA2\uDAFA\u0000\uF2D3\u8EA2\uDAF9\u0000\u0000\u0000\uF2D1" + // 11925 - 11929
+                "\u0000\u0000\u0000\u0000\u0000\uF5DE\u0000\uF5E1\u0000\uF7CA" + // 11930 - 11934
+                "\u0000\u0000\u8EA2\uE7C1\u0000\u0000\u0000\u0000\u0000\u0000" + // 11935 - 11939
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uF1FA\u0000\uCBCF" + // 11940 - 11944
+                "\u0000\uCFD1\u0000\uD3DC\u0000\uD3DB\u0000\u0000\u0000\uD8C8" + // 11945 - 11949
+                "\u0000\u0000\u8EA2\uB3AC\u0000\uD8C6\u8EA2\uB3AD\u0000\uD8C7" + // 11950 - 11954
+                "\u0000\u0000\u0000\u0000\u8EA2\uB9E2\u8EA2\uB9DE\u0000\u0000" + // 11955 - 11959
+                "\u0000\u0000\u0000\uDDD3\u8EA2\uB9E1\u8EA2\uB9E0\u8EA2\uB9DF" + // 11960 - 11964
+                "\u0000\uDDD4\u8EA2\uB9E3\u8EA2\uB9E4\u0000\u0000\u0000\u0000" + // 11965 - 11969
+                "\u0000\u0000\u8EA2\uC0E8\u8EA2\uC0E6\u8EA2\uC0EA\u8EA2\uC0EB" + // 11970 - 11974
+                "\u8EA2\uC0F1\u0000\u0000\u8EA2\uC0ED\u8EA2\uC0EF\u0000\u0000" + // 11975 - 11979
+                "\u8EA2\uC0E7\u8EA2\uC0E2\u0000\u0000\u8EA2\uC0EE\u0000\u0000" + // 11980 - 11984
+                "\u0000\u0000\u8EA2\uC0F0\u8EA2\uC0E9\u8EA2\uC0EC\u8EA2\uC0E3" + // 11985 - 11989
+                "\u0000\uE2C9\u8EA2\uC0E5\u8EA2\uC0E4\u0000\uE2C8\u0000\uE2CA" + // 11990 - 11994
+                "\u0000\u0000\u0000\uE7A6\u8EA2\uC7FB\u8EA2\uDAEC\u8EA2\uDAF1" + // 11995 - 11999
+                "\u0000\uF2CE\u0000\u0000\u0000\uF2CB\u8EA2\uDAED\u0000\u0000" + // 12000 - 12004
+                "\u8EA2\uDFEB\u0000\uF5DB\u0000\uF5D9\u0000\uF5DC\u0000\uF5DA" + // 12005 - 12009
+                "\u8EA2\uDFEA\u8EA2\uDFE7\u8EA2\uDFE6\u0000\u0000\u8EA2\uDFE9" + // 12010 - 12014
+                "\u0000\u0000\u0000\u0000\u8EA2\uDFE8\u8EA2\uE3EF\u0000\uF7C9" + // 12015 - 12019
+                "\u8EA2\uE3E6\u8EA2\uE3E5\u0000\u0000\u0000\uF7C4\u8EA2\uE3EB" + // 12020 - 12024
+                "\u8EA2\uE3EA\u8EA2\uE3E2\u8EA2\uE3ED\u8EA2\uE3E7\u0000\uF7C8" + // 12025 - 12029
+                "\u8EA2\uE3E4\u8EA2\uE3EC\u8EA2\uE3E3\u0000\uF7C5\u0000\uF7C7" + // 12030 - 12034
+                "\u8EA2\uE3E8\u0000\uF7C6\u8EA2\uE3E9\u0000\u0000\u8EA2\uE3EE" + // 12035 - 12039
+                "\u8EA2\uE7BE\u0000\u0000\u0000\uF9AB\u8EA2\uE7BB\u0000\u0000" + // 12040 - 12044
+                "\u8EA2\uE7BF\u0000\u0000\u0000\u0000\u0000\uF9A8\u8EA2\uE7BD" + // 12045 - 12049
+                "\u0000\uF9AD\u0000\u0000\u0000\uF9AA\u0000\u0000\u8EA2\uE7BC" + // 12050 - 12054
+                "\u0000\u0000\u0000\uF9AC\u8EA2\uE7C0\u0000\uF9A7\u0000\u0000" + // 12055 - 12059
+                "\u0000\u0000\u0000\u0000\u0000\uE4CD\u8EA2\uC5AC\u0000\u0000" + // 12060 - 12064
+                "\u0000\u0000\u0000\uE4D4\u0000\u0000\u0000\u0000\u0000\u0000" + // 12065 - 12069
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCAF0\u8EA2\uCAEE" + // 12070 - 12074
+                "\u0000\u0000\u8EA2\uCBA6\u8EA2\uCAEC\u0000\u0000\u8EA2\uCAFE" + // 12075 - 12079
+                "\u0000\uE4C5\u0000\uE9A8\u8EA2\uCAE8\u8EA2\uCBA5\u0000\u0000" + // 12080 - 12084
+                "\u8EA2\uCAED\u8EA2\uCAFB\u0000\uE9AD\u0000\uE9A6\u0000\u0000" + // 12085 - 12089
+                "\u8EA2\uCBA3\u0000\u0000\u8EA2\uCAE6\u8EA2\uCBA2\u0000\u0000" + // 12090 - 12094
+                "\u0000\uE9B8\u8EA2\uCAF7\u8EA2\uCBA9\u0000\uE9B6\u8EA2\uCAEF" + // 12095 - 12099
+                "\u0000\uE9A7\u8EA2\uCAF1\u8EA2\uCBA1\u0000\uE9B0\u8EA2\uCAEA" + // 12100 - 12104
+                "\u0000\uE9B4\u0000\uE9AA\u8EA2\uCAF3\u8EA2\uCAE9\u8EA2\uCAE3" + // 12105 - 12109
+                "\u0000\u0000\u8EA2\uCAFD\u0000\uE9B1\u8EA2\uCBA8\u8EA2\uCAE4" + // 12110 - 12114
+                "\u0000\uE9AE\u0000\u0000\u8EA2\uCAF9\u0000\u0000\u0000\uE9AF" + // 12115 - 12119
+                "\u8EA2\uCAEB\u8EA2\uCAF6\u8EA2\uCAF2\u8EA2\uCAF4\u8EA2\uCECA" + // 12120 - 12124
+                "\u0000\u0000\u8EA2\uCEC0\u8EA2\uCEC5\u8EA2\uCECB\u8EA2\uCEC8" + // 12125 - 12129
+                "\u8EA2\uCEC7\u8EA2\uCEC6\u0000\u0000\u8EA2\uCEBF\u8EA2\uCEC4" + // 12130 - 12134
+                "\u0000\u0000\u0000\u0000\u8EA2\uCEC2\u0000\u0000\u0000\uEFBC" + // 12135 - 12139
+                "\u0000\uEFB9\u8EA2\uD4E4\u8EA2\uD4E9\u8EA2\uD4EB\u8EA2\uD4E8" + // 12140 - 12144
+                "\u8EA2\uD4E1\u8EA2\uD4E3\u8EA2\uD4ED\u8EA2\uD4EA\u8EA2\uD4E5" + // 12145 - 12149
+                "\u8EA2\uD4EE\u8EA2\uD4E2\u8EA2\uD4EC\u0000\uEFBA\u0000\uEFC0" + // 12150 - 12154
+                "\u0000\uEFBE\u8EA2\uD4DC\u0000\uEFBF\u0000\uEFBB\u8EA2\uD4DD" + // 12155 - 12159
+                "\u8EA2\uD4DF\u8EA2\uD4DE\u8EA2\uD4E6\u8EA2\uD4E7\u0000\u0000" + // 12160 - 12164
+                "\u0000\uEFBD\u0000\u0000\u0000\uEFB8\u0000\u0000\u0000\u0000" + // 12165 - 12169
+                "\u8EA2\uD4E0\u0000\u0000\u8EA2\uDAF2\u0000\uF2CC\u0000\u0000" + // 12170 - 12174
+                "\u8EA2\uDAE9\u0000\uF2CD\u0000\uF2D0\u8EA2\uDAEE\u0000\u0000" + // 12175 - 12179
+                "\u8EA2\uDAEB\u0000\uF2CF\u0000\u0000\u0000\u0000\u8EA2\uDAEF" + // 12180 - 12184
+                "\u8EA2\uDAF0\u8EA2\uDAEA\u8EA2\uDAF3\u8EA2\uC0D4\u0000\uE2BF" + // 12185 - 12189
+                "\u0000\u0000\u0000\u0000\u8EA2\uC0D3\u0000\uE2BE\u0000\u0000" + // 12190 - 12194
+                "\u0000\u0000\u0000\u0000\u8EA2\uC0D5\u0000\uE2BD\u0000\u0000" + // 12195 - 12199
+                "\u8EA2\uC7E5\u8EA2\uC7E8\u8EA2\uC7E6\u8EA2\uC7E7\u8EA2\uC7EB" + // 12200 - 12204
+                "\u8EA2\uC7E4\u8EA2\uC7EC\u8EA2\uC7E9\u8EA2\uC7EA\u0000\uEBB8" + // 12205 - 12209
+                "\u8EA2\uCEBE\u0000\u0000\u0000\u0000\u0000\uEBB7\u0000\u0000" + // 12210 - 12214
+                "\u8EA2\uD4DB\u8EA2\uD4D9\u0000\u0000\u0000\u0000\u0000\uEFB6" + // 12215 - 12219
+                "\u8EA2\uD4D8\u8EA2\uD4DA\u0000\u0000\u0000\uEFB7\u0000\u0000" + // 12220 - 12224
+                "\u8EA2\uDAE7\u0000\u0000\u8EA2\uDAE8\u0000\uF5D8\u0000\u0000" + // 12225 - 12229
+                "\u8EA2\uE7B8\u8EA2\uE7BA\u8EA2\uE7B7\u8EA2\uE7B9\u8EA2\uEAA4" + // 12230 - 12234
+                "\u8EA2\uECC3\u0000\u0000\u0000\u0000\u8EA2\uF1DE\u0000\uCBCD" + // 12235 - 12239
+                "\u0000\uD3DA\u8EA2\uB3A9\u8EA2\uB3AB\u8EA2\uB3AA\u0000\u0000" + // 12240 - 12244
+                "\u8EA2\uB9DB\u0000\uDDD2\u0000\u0000\u8EA2\uB9D9\u0000\u0000" + // 12245 - 12249
+                "\u0000\uDDD1\u8EA2\uB9DC\u8EA2\uE3E1\u0000\u0000\u8EA2\uE3E0" + // 12250 - 12254
+                "\u0000\u0000\u8EA2\uE3DF\u0000\uF7C3\u8EA2\uE7B4\u8EA2\uE7B5" + // 12255 - 12259
+                "\u0000\uF9A5\u8EA2\uE7B6\u0000\uF9A6\u0000\u0000\u0000\u0000" + // 12260 - 12264
+                "\u0000\uFAC5\u0000\u0000\u0000\uFAC4\u8EA2\uECC1\u0000\u0000" + // 12265 - 12269
+                "\u0000\u0000\u0000\uFBAE\u8EA2\uECC2\u8EA2\uEEAB\u0000\uFBF5" + // 12270 - 12274
+                "\u0000\uFBF6\u0000\u0000\u8EA2\uEFD3\u0000\u0000\u0000\uFCED" + // 12275 - 12279
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12280 - 12284
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12285 - 12289
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12290 - 12294
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12295 - 12299
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12300 - 12304
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12305 - 12309
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12310 - 12314
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12315 - 12319
+                "\u0000\uD8EC\u0000\u0000\u0000\u0000\u8EA2\uC8EF\u0000\u0000" + // 12320 - 12324
+                "\u8EA2\uC8EE\u0000\u0000\u0000\uEBF3\u0000\uEBF4\u8EA2\uCFC2" + // 12325 - 12329
+                "\u0000\u0000\u8EA2\uD5FB\u8EA2\uDBF8\u0000\u0000\u0000\u0000" + // 12330 - 12334
+                "\u0000\uEFFE\u0000\uF3B0\u8EA2\uDBF6\u0000\u0000\u8EA2\uDBF9" + // 12335 - 12339
+                "\u0000\uF3B1\u0000\u0000\u8EA2\uE0F0\u8EA2\uDBF7\u0000\uE2B7" + // 12340 - 12344
+                "\u0000\uE2B5\u0000\uE6F6\u0000\uE6F5\u0000\uE6F3\u0000\uE6F7" + // 12345 - 12349
+                "\u0000\u0000\u0000\uE6F1\u0000\uE6F2\u0000\u0000\u0000\uE6F0" + // 12350 - 12354
+                "\u0000\u0000\u8EA2\uC7E1\u0000\u0000\u0000\u0000\u8EA2\uCEBC" + // 12355 - 12359
+                "\u0000\u0000\u0000\uEBB4\u0000\uEBB5\u0000\uEBB3\u0000\u0000" + // 12360 - 12364
+                "\u8EA2\uCEBB\u0000\u0000\u8EA2\uCEBD\u0000\u0000\u8EA2\uD4D3" + // 12365 - 12369
+                "\u8EA2\uD4D5\u0000\u0000\u0000\uEFB2\u8EA2\uD4D6\u0000\uEFAB" + // 12370 - 12374
+                "\u8EA2\uD4D2\u0000\uEFAA\u0000\uEFB4\u0000\uEFB0\u0000\uEFB1" + // 12375 - 12379
+                "\u0000\uEFAD\u8EA2\uD4D1\u0000\uEFAC\u8EA2\uD4D7\u8EA2\uD4D4" + // 12380 - 12384
+                "\u0000\u0000\u0000\uEFB3\u0000\u0000\u0000\uEFAE\u0000\uEFAF" + // 12385 - 12389
+                "\u8EA2\uDAE1\u0000\u0000\u8EA2\uDAE3\u8EA2\uDAE2\u0000\u0000" + // 12390 - 12394
+                "\u8EA2\uDAE4\u0000\uF2CA\u8EA2\uDAE0\u0000\u0000\u0000\u0000" + // 12395 - 12399
+                "\u0000\uF5D6\u8EA2\uDFE4\u0000\uF5D3\u0000\uF5D7\u0000\uF5D5" + // 12400 - 12404
+                "\u0000\uF5D4\u8EA2\uE3DE\u0000\u0000\u0000\u0080\u0000\u0081" + // 12405 - 12409
+                "\u0000\u0082\u0000\u0083\u0000\u0084\u0000\u0085\u0000\u0086" + // 12410 - 12414
+                "\u0000\u0087\u0000\u0088\u0000\u0089\u0000\u008A\u0000\u008B" + // 12415 - 12419
+                "\u0000\u008C\u0000\u008D\u0000\u0000\u0000\u0000\u0000\u0090" + // 12420 - 12424
+                "\u0000\u0091\u0000\u0092\u0000\u0093\u0000\u0094\u0000\u0095" + // 12425 - 12429
+                "\u0000\u0096\u0000\u0097\u0000\u0098\u0000\u0099\u0000\u009A" + // 12430 - 12434
+                "\u0000\u009B\u0000\u009C\u0000\u009D\u0000\u009E\u0000\u009F" + // 12435 - 12439
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12440 - 12444
+                "\u0000\u0000\u0000\u0000\u0000\uA1F0\u8EAD\uA1A3\u0000\u0000" + // 12445 - 12449
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12450 - 12454
+                "\u0000\u0000\u0000\uA2F8\u0000\uA2B4\u0000\u0000\u0000\u0000" + // 12455 - 12459
+                "\u8EAD\uA1B2\u0000\u0000\u8EAD\uA1D1\u0000\uA1B1\u0000\u0000" + // 12460 - 12464
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12465 - 12469
+                "\u0000\u0000\u0000\u0000\u8EA2\uAAAC\u8EA2\uAAA5\u8EA2\uAAAB" + // 12470 - 12474
+                "\u8EA2\uAAA4\u8EA2\uAAA6\u8EA2\uA9FE\u8EA2\uA9FC\u0000\u0000" + // 12475 - 12479
+                "\u8EA2\uAAAD\u8EA2\uAAAA\u8EA2\uA9FA\u0000\u0000\u0000\uD0F2" + // 12480 - 12484
+                "\u8EA2\uAAA8\u8EA2\uAAA9\u0000\u0000\u8EA2\uAAA7\u8EA2\uA9FD" + // 12485 - 12489
+                "\u8EA2\uA9FB\u0000\uD0F1\u8EA2\uAAA3\u8EA2\uAAA1\u0000\u0000" + // 12490 - 12494
+                "\u0000\u0000\u8EA2\uAAA2\u8EA2\uAAAE\u0000\u0000\u0000\u0000" + // 12495 - 12499
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12500 - 12504
+                "\u0000\u0000\u0000\uD5B3\u0000\u0000\u0000\uD5B2\u0000\u0000" + // 12505 - 12509
+                "\u8EA2\uAEEE\u0000\uD5AF\u8EA2\uAEF0\u0000\u0000\u0000\uD5B4" + // 12510 - 12514
+                "\u8EA2\uAEF1\u0000\u0000\u0000\u0000\u0000\uD5B7\u0000\u0000" + // 12515 - 12519
+                "\u0000\uD5B5\u8EA2\uAEF2\u8EA2\uAAAF\u8EA2\uAEF4\u0000\u0000" + // 12520 - 12524
+                "\u0000\uD5B1\u0000\u0000\u0000\uD5B0\u0000\u0000\u8EA2\uAEEF" + // 12525 - 12529
+                "\u8EA2\uC0CD\u8EA2\uC0CC\u0000\uE2B0\u0000\u0000\u8EA2\uC7DF" + // 12530 - 12534
+                "\u8EA2\uC7E0\u8EA2\uC7DE\u0000\u0000\u0000\u0000\u0000\uE6EF" + // 12535 - 12539
+                "\u0000\uE6EE\u0000\u0000\u0000\uEBB2\u0000\uEBB1\u0000\u0000" + // 12540 - 12544
+                "\u8EA2\uD4D0\u8EA2\uDADF\u8EA2\uDADD\u8EA2\uDADE\u0000\uF2C9" + // 12545 - 12549
+                "\u8EA2\uDFE3\u8EA2\uDFE2\u0000\u0000\u8EA2\uE3DD\u8EA2\uE3DC" + // 12550 - 12554
+                "\u8EA2\uE3DB\u8EA2\uE7B3\u0000\u0000\u8EA2\uF1F8\u0000\uCBCA" + // 12555 - 12559
+                "\u0000\uD3D6\u0000\u0000\u0000\uD3D7\u0000\uD8C2\u0000\uD8C3" + // 12560 - 12564
+                "\u8EA2\uB3A6\u8EA2\uB3A5\u8EA2\uB9D5\u0000\u0000\u0000\uDDCE" + // 12565 - 12569
+                "\u0000\uDDCC\u0000\uDDC9\u0000\uDDCD\u0000\uDDCB\u0000\uDDCA" + // 12570 - 12574
+                "\u0000\u0000\u0000\u0000\u0000\uE2B1\u8EA2\uC0D0\u0000\u0000" + // 12575 - 12579
+                "\u0000\uE6F4\u0000\uE2B3\u0000\uE2B8\u8EA2\uC0D2\u0000\uE2BA" + // 12580 - 12584
+                "\u0000\uE2B9\u0000\uE2BC\u8EA2\uC0D1\u8EA2\uC0CE\u0000\uE2B6" + // 12585 - 12589
+                "\u0000\uE2B2\u0000\uE2B4\u8EA2\uC0CF\u0000\uE2BB\u0000\uFBF4" + // 12590 - 12594
+                "\u0000\u0000\u8EA2\uEEA7\u0000\u0000\u8EA2\uEEA6\u8EA2\uEEA9" + // 12595 - 12599
+                "\u8EA2\uEEA8\u0000\u0000\u8EA2\uEFD1\u0000\u0000\u0000\uFCC8" + // 12600 - 12604
+                "\u8EA2\uEFD0\u8EA2\uEFCE\u0000\u0000\u8EA2\uEFCF\u0000\u0000" + // 12605 - 12609
+                "\u0000\u0000\u0000\u0000\u0000\uFCEA\u0000\uFCE9\u8EA2\uF0CF" + // 12610 - 12614
+                "\u8EA2\uF0D0\u0000\uFCEB\u0000\u0000\u8EA2\uF1BC\u8EA2\uF1BD" + // 12615 - 12619
+                "\u0000\uFDB4\u0000\u0000\u0000\uFDBA\u0000\u0000\u8EA2\uF1F7" + // 12620 - 12624
+                "\u8EA2\uF2B6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12625 - 12629
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12630 - 12634
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12635 - 12639
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12640 - 12644
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12645 - 12649
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12650 - 12654
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA4AB\u0000\uA4AC" + // 12655 - 12659
+                "\u0000\uA4AD\u0000\uA4AE\u0000\uA4AF\u0000\uA4B0\u0000\uA4B1" + // 12660 - 12664
+                "\u0000\uA4B2\u0000\uA4B3\u0000\uA4B4\u0000\u0000\u0000\u0000" + // 12665 - 12669
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA6B5" + // 12670 - 12674
+                "\u0000\uA6B6\u0000\uA6B7\u0000\uA6B8\u0000\uA6B9\u0000\uA6BA" + // 12675 - 12679
+                "\u0000\uA6BB\u0000\uA6BC\u0000\uA6BD\u0000\uA6BE\u0000\u0000" + // 12680 - 12684
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12685 - 12689
+                "\u8EA2\uEAFB\u8EA2\uEBA3\u8EA2\uEBA1\u8EA2\uEAF9\u8EA2\uEBA6" + // 12690 - 12694
+                "\u0000\u0000\u8EA2\uEAF8\u0000\u0000\u0000\uFADA\u8EA2\uEBA2" + // 12695 - 12699
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEAFC\u0000\uFAD9" + // 12700 - 12704
+                "\u8EA2\uEBA5\u0000\u0000\u0000\u0000\u8EA2\uEBA4\u0000\u0000" + // 12705 - 12709
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uECF7\u8EA2\uECF6" + // 12710 - 12714
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uECFD\u0000\u0000" + // 12715 - 12719
+                "\u8EA2\uECF9\u8EA2\uECFC\u0000\uFBCC\u0000\u0000\u0000\u0000" + // 12720 - 12724
+                "\u8EA2\uECFA\u8EA2\uECFB\u0000\u0000\u8EA2\uECF5\u8EA2\uECF8" + // 12725 - 12729
+                "\u0000\uFBCB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFCAB" + // 12730 - 12734
+                "\u8EA2\uEEE1\u8EA2\uEEDC\u8EA2\uEEE0\u0000\u0000\u8EA2\uEEE3" + // 12735 - 12739
+                "\u8EA2\uEEDF\u0000\u0000\u8EA2\uEEDB\u0000\u0000\u0000\uFCAD" + // 12740 - 12744
+                "\u8EA2\uEEDE\u8EA2\uEEE2\u0000\uFCAC\u8EA2\uEED9\u8EA2\uE7A6" + // 12745 - 12749
+                "\u0000\uF8FA\u8EA2\uE7AD\u0000\u0000\u0000\u0000\u8EA2\uECBE" + // 12750 - 12754
+                "\u0000\uF9A3\u8EA2\uE3CB\u8EA2\uE7A4\u0000\uF8FD\u8EA2\uE7A5" + // 12755 - 12759
+                "\u8EA2\uE7AA\u0000\u0000\u0000\u0000\u0000\uF9A1\u0000\uF9A2" + // 12760 - 12764
+                "\u8EA2\uE7A3\u8EA2\uE7AC\u8EA2\uE7AE\u8EA2\uE7A7\u8EA2\uE7A9" + // 12765 - 12769
+                "\u8EA2\uE7AB\u8EA2\uE7A8\u8EA2\uE7AF\u0000\uF8FC\u0000\uF9A4" + // 12770 - 12774
+                "\u0000\uF8FE\u0000\u0000\u0000\uF8FB\u8EA2\uE9FC\u0000\u0000" + // 12775 - 12779
+                "\u0000\uFAC2\u8EA2\uE9FA\u0000\u0000\u0000\u0000\u8EA2\uE9FE" + // 12780 - 12784
+                "\u0000\u0000\u8EA2\uEAA1\u0000\uFAC0\u8EA2\uEAA2\u8EA2\uE9FD" + // 12785 - 12789
+                "\u0000\u0000\u8EA2\uE9FB\u0000\uFAC3\u0000\uFABF\u8EA2\uEAA3" + // 12790 - 12794
+                "\u0000\u0000\u0000\uFAC1\u0000\uFABE\u0000\u0000\u0000\u0000" + // 12795 - 12799
+                "\u0000\u0000\u0000\uFBAB\u0000\u0000\u0000\u0000\u0000\uFBAC" + // 12800 - 12804
+                "\u8EA2\uECBD\u8EA2\uECBC\u8EA2\uECBF\u8EA2\uECC0\u0000\u0000" + // 12805 - 12809
+                "\u0000\uFBAD\u8EA2\uEEA5\u8EA2\uEEAA\u0000\uF2BB\u0000\uF2C0" + // 12810 - 12814
+                "\u0000\uF2C1\u0000\u0000\u0000\uF5CE\u8EA2\uDFD0\u8EA2\uDFD9" + // 12815 - 12819
+                "\u8EA2\uDFD6\u8EA2\uDFD8\u0000\u0000\u0000\uF5CB\u8EA2\uDFD1" + // 12820 - 12824
+                "\u0000\u0000\u8EA2\uDFD7\u0000\uF5C7\u8EA2\uDFD3\u0000\uF5CF" + // 12825 - 12829
+                "\u8EA2\uDFCF\u8EA2\uDFD4\u8EA2\uDFDB\u8EA2\uDAD2\u8EA2\uDFD5" + // 12830 - 12834
+                "\u8EA2\uDFCE\u0000\uF5C8\u8EA2\uDFCD\u0000\uF5C9\u8EA2\uDFDC" + // 12835 - 12839
+                "\u0000\uF5CA\u8EA2\uDFDA\u0000\uF5CD\u8EA2\uDFCC\u0000\u0000" + // 12840 - 12844
+                "\u0000\uF5CC\u0000\u0000\u8EA2\uDFD2\u8EA2\uE3C7\u8EA2\uE3D5" + // 12845 - 12849
+                "\u8EA2\uE3D0\u8EA2\uE3D2\u8EA2\uE3C6\u0000\uF7BE\u0000\u0000" + // 12850 - 12854
+                "\u8EA2\uE3C5\u0000\uF7C1\u0000\uF7C0\u0000\u0000\u8EA2\uE3D4" + // 12855 - 12859
+                "\u8EA2\uE3CC\u8EA2\uE3C9\u8EA2\uE3CF\u0000\u0000\u8EA2\uE3C8" + // 12860 - 12864
+                "\u0000\u0000\u8EA2\uE3CA\u8EA2\uE3D3\u8EA2\uE3D1\u0000\u0000" + // 12865 - 12869
+                "\u0000\uF7BF\u8EA2\uE3D8\u8EA2\uE3D6\u8EA2\uE3CD\u8EA2\uE3D7" + // 12870 - 12874
+                "\u8EA2\uE3CE\u0000\u0000\u0000\uA4DB\u0000\uA4DC\u0000\uA4DD" + // 12875 - 12879
+                "\u0000\uA4DE\u0000\uA4DF\u0000\uA4E0\u0000\uA4E1\u0000\uA4E2" + // 12880 - 12884
+                "\u0000\uA4E3\u0000\uA4E4\u0000\uA4E5\u0000\uA4E6\u0000\uA4E7" + // 12885 - 12889
+                "\u0000\uA4E8\u0000\uA4E9\u0000\uA4EA\u0000\uA4EB\u0000\uA4EC" + // 12890 - 12894
+                "\u0000\uA4ED\u0000\uA4EE\u0000\uA4EF\u0000\uA4F0\u0000\uA4F1" + // 12895 - 12899
+                "\u0000\uA4F2\u0000\uA4F3\u0000\uA4F4\u0000\uA1C2\u0000\uA2DE" + // 12900 - 12904
+                "\u0000\uA1C3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12905 - 12909
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12910 - 12914
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12915 - 12919
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12920 - 12924
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12925 - 12929
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12930 - 12934
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 12935 - 12939
+                "\u0000\u0000\u0000\u0000\u0000\uCBCB\u0000\u0000\u0000\uDDD0" + // 12940 - 12944
+                "\u0000\uDDCF\u8EA2\uC7E2\u8EA2\uC7E3\u0000\u0000\u0000\uEBB6" + // 12945 - 12949
+                "\u8EA2\uDAE5\u0000\uEFB5\u8EA2\uDAE6\u8EA2\uDFE5\u0000\uCBCC" + // 12950 - 12954
+                "\u0000\u0000\u8EA2\uADD3\u0000\uD3D9\u0000\uD3D8\u0000\u0000" + // 12955 - 12959
+                "\u8EA2\uB3A7\u0000\uD8C4\u8EA2\uB3A8\u8EA2\uB9D8\u0000\u0000" + // 12960 - 12964
+                "\u8EA2\uB9D7\u0000\u0000\u8EA2\uB9D6\u0000\u0000\u0000\u0000" + // 12965 - 12969
+                "\u0000\uC6CF\u8EA2\uA2BD\u0000\u0000\u0000\uCAAD\u8EA2\uA3F2" + // 12970 - 12974
+                "\u0000\u0000\u8EA2\uAABC\u0000\uD0FB\u0000\u0000\u0000\uE8E2" + // 12975 - 12979
+                "\u0000\uC4DD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC8A2" + // 12980 - 12984
+                "\u0000\u0000\u0000\u0000\u0000\uE3EF\u0000\uC4DE\u0000\uC5BE" + // 12985 - 12989
+                "\u0000\uC5BF\u0000\u0000\u0000\uC6D1\u0000\uC6D0\u0000\u0000" + // 12990 - 12994
+                "\u8EA2\uA2BE\u0000\uC8A3\u0000\u0000\u8EA2\uA3F3\u0000\u0000" + // 12995 - 12999
+                "\u0000\uCAAE\u0000\u0000\u0000\u0000\u8EA2\uA6D2\u8EA2\uA6D3" + // 13000 - 13004
+                "\u8EA2\uA6D4\u0000\u0000\u0000\uCDB8\u0000\uCDB9\u8EA2\uA6D1" + // 13005 - 13009
+                "\u0000\uCDBA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0FC" + // 13010 - 13014
+                "\u8EA2\uAABD\u0000\u0000\u8EA2\uAEFC\u0000\uD5BE\u0000\u0000" + // 13015 - 13019
+                "\u8EA2\uAEFB\u0000\u0000\u0000\uDAAF\u8EA2\uB5B0\u0000\uDAB0" + // 13020 - 13024
+                "\u8EA2\uB5B1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDFA4" + // 13025 - 13029
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC6CB\u0000\uC6CC" + // 13030 - 13034
+                "\u8EA2\uA1D9\u0000\u0000\u0000\uC7FD\u0000\u0000\u0000\u0000" + // 13035 - 13039
+                "\u0000\u0000\u8EA2\uA3EB\u0000\u0000\u0000\uCAA8\u0000\u0000" + // 13040 - 13044
+                "\u8EA2\uA3EC\u0000\u0000\u0000\u0000\u0000\uCDB0\u0000\u0000" + // 13045 - 13049
+                "\u0000\u0000\u8EA2\uA6CF\u0000\uCDAE\u0000\uCDAD\u8EA2\uA6CE" + // 13050 - 13054
+                "\u0000\uCDAB\u8EA2\uA6D0\u0000\uCDAC\u0000\uCDAF\u0000\u0000" + // 13055 - 13059
+                "\u0000\uD0F4\u0000\u0000\u0000\uD0F6\u8EA2\uAAB4\u8EA2\uAAB1" + // 13060 - 13064
+                "\u8EA2\uAAB2\u8EA2\uAAB3\u8EA2\uAAB5\u0000\uD0F5\u0000\u0000" + // 13065 - 13069
+                "\u0000\u0000\u8EA2\uAEF6\u8EA2\uAEF5\u0000\u0000\u0000\uD5BA" + // 13070 - 13074
+                "\u0000\u0000\u0000\uD5B9\u0000\u0000\u0000\u0000\u0000\u0000" + // 13075 - 13079
+                "\u0000\u0000\u0000\u0000\u0000\uDAA8\u8EA2\uB5AA\u0000\u0000" + // 13080 - 13084
+                "\u0000\uDAA7\u0000\uDAA9\u0000\uDAA6\u0000\u0000\u0000\u0000" + // 13085 - 13089
+                "\u0000\u0000\u0000\u0000\u0000\uDEFA\u8EA2\uB5A9\u0000\u0000" + // 13090 - 13094
+                "\u0000\u0040\u0000\u0041\u0000\u0042\u0000\u0043\u0000\u0044" + // 13095 - 13099
+                "\u0000\u0045\u0000\u0046\u0000\u0047\u0000\u0048\u0000\u0049" + // 13100 - 13104
+                "\u0000\u004A\u0000\u004B\u0000\u004C\u0000\u004D\u0000\u004E" + // 13105 - 13109
+                "\u0000\u004F\u0000\u0050\u0000\u0051\u0000\u0052\u0000\u0053" + // 13110 - 13114
+                "\u0000\u0054\u0000\u0055\u0000\u0056\u0000\u0057\u0000\u0058" + // 13115 - 13119
+                "\u0000\u0059\u0000\u005A\u0000\u005B\u0000\\\u0000\u005D" + // 13120 - 13124
+                "\u0000\u005E\u0000\u005F\u0000\u0060\u0000\u0061\u0000\u0062" + // 13125 - 13129
+                "\u0000\u0063\u0000\u0064\u0000\u0065\u0000\u0066\u0000\u0067" + // 13130 - 13134
+                "\u0000\u0068\u0000\u0069\u0000\u006A\u0000\u006B\u0000\u006C" + // 13135 - 13139
+                "\u0000\u006D\u0000\u006E\u0000\u006F\u0000\u0070\u0000\u0071" + // 13140 - 13144
+                "\u0000\u0072\u0000\u0073\u0000\u0074\u0000\u0075\u0000\u0076" + // 13145 - 13149
+                "\u0000\u0077\u0000\u0078\u0000\u0079\u0000\u007A\u0000\u007B" + // 13150 - 13154
+                "\u0000\u007C\u0000\u007D\u0000\u007E\u0000\u007F\u8EA2\uD4C7" + // 13155 - 13159
+                "\u0000\u0000\u0000\uEEFD\u8EA2\uD4CA\u0000\uEEF7\u8EA2\uD4C8" + // 13160 - 13164
+                "\u8EA2\uD4BE\u0000\uEEF6\u8EA2\uDAD6\u0000\uEEFC\u0000\u0000" + // 13165 - 13169
+                "\u0000\uEEF9\u0000\u0000\u0000\uEFA3\u0000\u0000\u8EA2\uD4BD" + // 13170 - 13174
+                "\u0000\u0000\u8EA2\uD4C1\u0000\uEEF5\u8EA2\uD4C0\u8EA2\uD4C2" + // 13175 - 13179
+                "\u8EA2\uD4C3\u0000\uEFA2\u8EA2\uD4C5\u8EA2\uD4C9\u8EA2\uD4CD" + // 13180 - 13184
+                "\u0000\u0000\u0000\uEFA6\u0000\uF2BC\u8EA2\uDAD1\u8EA2\uDAD7" + // 13185 - 13189
+                "\u8EA2\uDAD4\u8EA2\uDACC\u8EA2\uDAD8\u8EA2\uDACD\u0000\u0000" + // 13190 - 13194
+                "\u8EA2\uDAD3\u0000\u0000\u0000\uF2B7\u0000\uF2BD\u8EA2\uDAD9" + // 13195 - 13199
+                "\u0000\u0000\u0000\u0000\u0000\uF2B9\u0000\u0000\u0000\uF2C3" + // 13200 - 13204
+                "\u0000\uF2BE\u8EA2\uDADB\u8EA2\uDAD5\u0000\uF2BA\u8EA2\uDACE" + // 13205 - 13209
+                "\u0000\uF2C4\u8EA2\uDACF\u8EA2\uDAD0\u0000\uF2C5\u0000\uF2C2" + // 13210 - 13214
+                "\u0000\uEEFA\u0000\u0000\u0000\uF2B8\u8EA2\uDADC\u0000\uF2C6" + // 13215 - 13219
+                "\u0000\u0000\u0000\uF2BF\u8EA2\uDADA\u8EA2\uC0C0\u0000\uE2A6" + // 13220 - 13224
+                "\u0000\u0000\u0000\u0000\u8EA2\uC0C3\u8EA2\uC0C4\u0000\uE2AA" + // 13225 - 13229
+                "\u0000\u0000\u8EA2\uC0C6\u0000\u0000\u8EA2\uC0C8\u0000\u0000" + // 13230 - 13234
+                "\u8EA2\uC0C9\u8EA2\uC0BD\u8EA2\uC0BC\u8EA2\uC0CA\u0000\uE2A9" + // 13235 - 13239
+                "\u8EA2\uC0C7\u8EA2\uC0C5\u0000\u0000\u0000\uE2A7\u0000\uE2A3" + // 13240 - 13244
+                "\u0000\uE2AE\u8EA2\uC0C1\u8EA2\uC0C2\u8EA2\uC0BF\u0000\u0000" + // 13245 - 13249
+                "\u0000\uE2A8\u0000\u0000\u0000\u0000\u0000\uE2A4\u0000\u0000" + // 13250 - 13254
+                "\u0000\uE2A2\u8EA2\uC7CE\u0000\uE6E6\u0000\uE6E1\u0000\u0000" + // 13255 - 13259
+                "\u0000\u0000\u0000\uE6DC\u0000\u0000\u0000\uE6EC\u0000\uE6DD" + // 13260 - 13264
+                "\u0000\u0000\u0000\uE6D9\u0000\uE6E8\u0000\uE6E5\u0000\uE6E7" + // 13265 - 13269
+                "\u0000\u0000\u0000\uE6DE\u0000\uE6E3\u0000\uE6DA\u0000\uE6DB" + // 13270 - 13274
+                "\u8EA2\uC7D6\u8EA2\uC7D3\u8EA2\uC7CB\u8EA2\uC7D0\u0000\u0000" + // 13275 - 13279
+                "\u0000\uE6E9\u8EA2\uC7D7\u0000\uE6EA\u0000\uE6E0\u0000\u0000" + // 13280 - 13284
+                "\u0000\u0000\u8EA2\uC7CD\u0000\uCBC6\u0000\u0000\u0000\uD3D4" + // 13285 - 13289
+                "\u0000\uD3D5\u8EA2\uADD1\u0000\u0000\u0000\u0000\u8EA2\uADD2" + // 13290 - 13294
+                "\u0000\uD3D3\u0000\u0000\u0000\uD8B9\u0000\u0000\u0000\uD8B7" + // 13295 - 13299
+                "\u0000\u0000\u0000\uD8B6\u0000\uD8BD\u0000\uD8B5\u0000\uD8BE" + // 13300 - 13304
+                "\u8EA2\uB3A1\u0000\uD8BB\u0000\u0000\u0000\uD8B8\u0000\uD8BC" + // 13305 - 13309
+                "\u0000\uD8BA\u0000\uD8B4\u0000\u0000\u0000\u0000\u0000\uDDC5" + // 13310 - 13314
+                "\u0000\u0000\u0000\uDDBF\u8EA2\uB9CF\u0000\uDDC4\u0000\u0000" + // 13315 - 13319
+                "\u0000\u0000\u0000\uDDC6\u0000\uDDC0\u0000\u0000\u0000\uDDC1" + // 13320 - 13324
+                "\u0000\u0000\u8EA2\uB9CD\u0000\u0000\u0000\u0000\u0000\uDDBE" + // 13325 - 13329
+                "\u0000\u0000\u8EA2\uB9CE\u0000\uDDC3\u0000\u0000\u0000\u0000" + // 13330 - 13334
+                "\u8EA2\uB9CC\u0000\uDDC2\u0000\u0000\u0000\u0000\u0000\uE2AB" + // 13335 - 13339
+                "\u0000\u0000\u0000\uE2AD\u0000\u0000\u0000\u0000\u8EA2\uC0BE" + // 13340 - 13344
+                "\u0000\uE2AC\u0000\uE2A1\u0000\uE2A5\u0000\u0000\u0000\uE6EB" + // 13345 - 13349
+                "\u8EA2\uC7CF\u0000\uFDA8\u0000\u0000\u0000\u0000\u0000\u0000" + // 13350 - 13354
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 13355 - 13359
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 13360 - 13364
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCBC5" + // 13365 - 13369
+                "\u8EA2\uADD0\u0000\uD3D2\u8EA2\uB9CB\u8EA2\uB9C9\u0000\u0000" + // 13370 - 13374
+                "\u0000\u0000\u8EA2\uB9CA\u8EA2\uC0BA\u8EA2\uC0BB\u8EA2\uC7C9" + // 13375 - 13379
+                "\u8EA2\uC0B9\u0000\u0000\u8EA2\uC7C3\u8EA2\uC7C7\u8EA2\uC7C6" + // 13380 - 13384
+                "\u8EA2\uC7C8\u0000\uE6D8\u8EA2\uC7C5\u8EA2\uC7C4\u8EA2\uC7CA" + // 13385 - 13389
+                "\u0000\u0000\u8EA2\uCEB1\u8EA2\uCEAF\u0000\u0000\u8EA2\uCEB0" + // 13390 - 13394
+                "\u8EA2\uD4BC\u8EA2\uD4BA\u0000\u0000\u0000\u0000\u8EA2\uD4BB" + // 13395 - 13399
+                "\u8EA2\uDACB\u8EA2\uDFCA\u8EA2\uDFCB\u0000\uF7BD\u0000\u0000" + // 13400 - 13404
+                "\u8EA2\uE7A2\u8EA2\uE9F9\u0000\uFABD\u0000\u0000\u8EA2\uECBB" + // 13405 - 13409
+                "\u8EA2\uEEA4\u0000\uFBF3\u0000\u0000\u8EA2\uEFCD\u8EA2\uF1BB" + // 13410 - 13414
+                "\u8EA2\uC0AD\u0000\uE1FA\u0000\uE1FB\u0000\u0000\u0000\u0000" + // 13415 - 13419
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC0B5" + // 13420 - 13424
+                "\u0000\uE6D4\u8EA2\uC7B9\u8EA2\uC7BF\u8EA2\uC7BA\u8EA2\uC7BB" + // 13425 - 13429
+                "\u0000\u0000\u8EA2\uC7C0\u0000\u0000\u0000\uE6D6\u0000\u0000" + // 13430 - 13434
+                "\u0000\uE6CE\u0000\uE6D5\u8EA2\uC7B8\u8EA2\uC0AA\u0000\uE6D1" + // 13435 - 13439
+                "\u0000\uE6CF\u8EA2\uC7BE\u8EA2\uC7BD\u0000\uE6D0\u0000\uE6D2" + // 13440 - 13444
+                "\u8EA2\uC7BC\u0000\uE6CD\u0000\u0000\u0000\uE6D3\u0000\u0000" + // 13445 - 13449
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCDFD" + // 13450 - 13454
+                "\u0000\uEAFC\u0000\u0000\u0000\u0000\u8EA2\uCEAA\u8EA2\uCEA9" + // 13455 - 13459
+                "\u0000\u0000\u8EA2\uCEA4\u0000\uEAFE\u8EA2\uCEA8\u8EA2\uCDFE" + // 13460 - 13464
+                "\u8EA2\uCEA1\u0000\uEAF6\u0000\uEAF8\u0000\u0000\u8EA2\uCEA6" + // 13465 - 13469
+                "\u8EA2\uCDFC\u0000\uEAFA\u0000\uEAF9\u8EA2\uCEA2\u8EA2\uCEA7" + // 13470 - 13474
+                "\u8EA2\uCEA5\u0000\uEAFB\u8EA2\uCEA3\u0000\u0000\u0000\uA1AA" + // 13475 - 13479
+                "\u8EAD\uA4C3\u0000\uA1EC\u0000\uA2E3\u0000\uA2E8\u0000\uA1ED" + // 13480 - 13484
+                "\u8EAD\uA4C2\u0000\uA1BE\u0000\uA1BF\u0000\uA1EE\u0000\uA2B0" + // 13485 - 13489
+                "\u0000\uA1A2\u0000\uA2B1\u0000\uA1A5\u0000\uA2DF\u0000\uA4A1" + // 13490 - 13494
+                "\u0000\uA4A2\u0000\uA4A3\u0000\uA4A4\u0000\uA4A5\u0000\uA4A6" + // 13495 - 13499
+                "\u0000\uA4A7\u0000\uA4A8\u0000\uA4A9\u0000\uA4AA\u0000\uA1A8" + // 13500 - 13504
+                "\u0000\uA1A7\u0000\uA2B6\u0000\uA2B8\u0000\uA2B7\u0000\uA1A9" + // 13505 - 13509
+                "\u0000\uA2E9\u0000\uA4C1\u0000\uA4C2\u0000\uA4C3\u0000\uA4C4" + // 13510 - 13514
+                "\u0000\uA4C5\u0000\uA4C6\u0000\uA4C7\u0000\uA4C8\u0000\uA4C9" + // 13515 - 13519
+                "\u0000\uA4CA\u0000\uA4CB\u0000\uA4CC\u0000\uA4CD\u0000\uA4CE" + // 13520 - 13524
+                "\u0000\uA4CF\u0000\uA4D0\u0000\uA4D1\u0000\uA4D2\u0000\uA4D3" + // 13525 - 13529
+                "\u0000\uA4D4\u0000\uA4D5\u0000\uA4D6\u0000\uA4D7\u0000\uA4D8" + // 13530 - 13534
+                "\u0000\uA4D9\u0000\uA4DA\u8EAD\uA1B0\u0000\uA2E0\u8EAD\uA1B1" + // 13535 - 13539
+                "\u8EAD\uA1A4\u0000\uA2A5\u8EA2\uB2F7\u0000\uD8B0\u0000\uD8B1" + // 13540 - 13544
+                "\u8EA2\uB2FB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 13545 - 13549
+                "\u0000\uDDB6\u8EA2\uB9B5\u0000\u0000\u0000\uDDBB\u8EA2\uB9C5" + // 13550 - 13554
+                "\u0000\uDDBA\u8EA2\uB9C7\u0000\u0000\u0000\u0000\u8EA2\uB9BB" + // 13555 - 13559
+                "\u0000\uDDB8\u8EA2\uB9C6\u0000\u0000\u8EA2\uB9B6\u0000\uDDB9" + // 13560 - 13564
+                "\u8EA2\uB9C2\u8EA2\uB9BE\u8EA2\uB9C0\u8EA2\uB9BA\u8EA2\uB9C1" + // 13565 - 13569
+                "\u0000\u0000\u0000\u0000\u0000\uDDB5\u8EA2\uB9BD\u0000\u0000" + // 13570 - 13574
+                "\u8EA2\uB9BC\u8EA2\uB9B8\u0000\u0000\u8EA2\uB9C3\u0000\u0000" + // 13575 - 13579
+                "\u0000\u0000\u8EA2\uB9BF\u8EA2\uB9B7\u0000\u0000\u8EA2\uB9B9" + // 13580 - 13584
+                "\u0000\uDDB7\u8EA2\uB9C4\u0000\u0000\u0000\u0000\u0000\u0000" + // 13585 - 13589
+                "\u0000\u0000\u0000\uE1FC\u8EA2\uC0B3\u0000\u0000\u0000\u0000" + // 13590 - 13594
+                "\u0000\u0000\u8EA2\uC0AF\u8EA2\uC0B1\u8EA2\uC0AC\u8EA2\uC0AB" + // 13595 - 13599
+                "\u8EA2\uC0A9\u0000\u0000\u8EA2\uC0B0\u8EA2\uC0B2\u8EA2\uC0AE" + // 13600 - 13604
+                "\u0000\u0000\u0000\uEBF6\u0000\uEBF7\u8EA2\uD6A4\u0000\uF0A5" + // 13605 - 13609
+                "\u0000\uF0A4\u8EA2\uD6A3\u0000\u0000\u8EA2\uE0F5\u0000\u0000" + // 13610 - 13614
+                "\u8EA2\uE4EA\u8EA2\uE4EC\u8EA2\uE4EB\u0000\uF7FD\u0000\uF7FC" + // 13615 - 13619
+                "\u0000\uF7FB\u0000\u0000\u0000\uFBCA\u8EA2\uECF4\u0000\u0000" + // 13620 - 13624
+                "\u0000\uFBC9\u8EA2\uEED6\u8EA2\uEED5\u0000\u0000\u0000\uFCF7" + // 13625 - 13629
+                "\u8EA2\uF0E3\u0000\uDEA3\u8EA2\uC8F0\u0000\u0000\u0000\u0000" + // 13630 - 13634
+                "\u0000\u0000\u8EA2\uCFC9\u8EA2\uCFC7\u8EA2\uCFC8\u0000\u0000" + // 13635 - 13639
+                "\u0000\u0000\u8EA2\uD6AD\u0000\u0000\u8EA2\uD6A8\u8EA2\uD6A5" + // 13640 - 13644
+                "\u8EA2\uD6AC\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD6AE" + // 13645 - 13649
+                "\u0000\u0000\u0000\u0000\u0000\uF0A7\u8EA2\uD6AB\u8EA2\uD6A7" + // 13650 - 13654
+                "\u0000\u0000\u0000\u0000\u8EA2\uD6A6\u8EA2\uD6AA\u8EA2\uD6A9" + // 13655 - 13659
+                "\u0000\uF0A6\u0000\u0000\u0000\u0000\u8EA2\uDCAB\u8EA2\uDCA6" + // 13660 - 13664
+                "\u8EA2\uDCA4\u8EA2\uDCAD\u8EA2\uDCA5\u0000\u0000\u8EA2\uEDA3" + // 13665 - 13669
+                "\u0000\uFBCF\u8EA2\uEDA9\u0000\u0000\u8EA2\uEDA8\u0000\u0000" + // 13670 - 13674
+                "\u8EA2\uEDA4\u8EA2\uEDB0\u0000\u0000\u8EA2\uEDA5\u8EA2\uEEE8" + // 13675 - 13679
+                "\u8EA2\uEDB3\u8EA2\uEDB5\u8EA2\uEDAC\u8EA2\uEDA6\u8EA2\uEEE9" + // 13680 - 13684
+                "\u8EA2\uEEEB\u8EA2\uEEE5\u0000\uFCAE\u0000\u0000\u8EA2\uEEF2" + // 13685 - 13689
+                "\u8EA2\uEEF0\u0000\uFCAF\u8EA2\uEEEF\u8EA2\uEEEE\u8EA2\uEEE7" + // 13690 - 13694
+                "\u8EA2\uEEE4\u8EA2\uEEEA\u8EA2\uEEF3\u8EA2\uEEE6\u8EA2\uEEEC" + // 13695 - 13699
+                "\u0000\u0000\u8EA2\uEFF7\u8EA2\uEFFC\u8EA2\uEFF2\u8EA2\uEFF5" + // 13700 - 13704
+                "\u0000\uFCDA\u8EA2\uEFF9\u0000\u0000\u8EA2\uF0A2\u8EA2\uEEED" + // 13705 - 13709
+                "\u0000\u0000\u8EA2\uEFF3\u8EA2\uEFFD\u8EA2\uF0A3\u8EA2\uEFF8" + // 13710 - 13714
+                "\u8EA2\uEFF1\u8EA2\uEFFB\u0000\u0000\u8EA2\uEFFA\u8EA2\uF0A1" + // 13715 - 13719
+                "\u8EA2\uEFFE\u8EA2\uEEF1\u8EA2\uEFF6\u8EA2\uEFF0\u8EA2\uEFF4" + // 13720 - 13724
+                "\u0000\uFCF9\u0000\uFCFA\u8EA2\uEFEF\u0000\u0000\u8EA2\uF0F4" + // 13725 - 13729
+                "\u8EA2\uF0EB\u8EA2\uF0F3\u0000\uC8E6\u8EA2\uADCB\u0000\u0000" + // 13730 - 13734
+                "\u8EA2\uB2F1\u8EA2\uB2F2\u0000\u0000\u0000\u0000\u0000\u0000" + // 13735 - 13739
+                "\u8EA2\uC0A6\u0000\u0000\u8EA2\uECB6\u8EA2\uF0CE\u0000\uC8E7" + // 13740 - 13744
+                "\u0000\uD3CF\u8EA2\uADCC\u0000\u0000\u0000\u0000\u0000\u0000" + // 13745 - 13749
+                "\u8EA2\uB9B4\u0000\uDDB4\u0000\u0000\u8EA2\uC0A8\u8EA2\uC0A7" + // 13750 - 13754
+                "\u0000\uE1F9\u0000\u0000\u0000\uE6CC\u8EA2\uD4AA\u0000\uEEEC" + // 13755 - 13759
+                "\u0000\u0000\u0000\uEEED\u0000\u0000\u0000\u0000\u0000\u0000" + // 13760 - 13764
+                "\u0000\uF2AF\u0000\uFCE8\u0000\uC8E8\u0000\u0000\u0000\u0000" + // 13765 - 13769
+                "\u0000\u0000\u8EA2\uADCD\u0000\uCFD0\u8EA2\uADCF\u8EA2\uADCE" + // 13770 - 13774
+                "\u0000\uD3D0\u0000\u0000\u8EA2\uB2F3\u0000\u0000\u8EA2\uB2FA" + // 13775 - 13779
+                "\u0000\uD8AE\u8EA2\uB2F8\u8EA2\uB2F6\u0000\u0000\u8EA2\uB2FD" + // 13780 - 13784
+                "\u8EA2\uB2F4\u8EA2\uB2F5\u0000\uD8AF\u0000\u0000\u0000\uD8B3" + // 13785 - 13789
+                "\u0000\u0000\u0000\u0000\u8EA2\uB2FE\u0000\uD8B2\u8EA2\uB2FC" + // 13790 - 13794
+                "\u8EA2\uB2F9\u8EA2\uE6E6\u8EA2\uE3B9\u8EA2\uE6F3\u8EA2\uE6E8" + // 13795 - 13799
+                "\u0000\u0000\u0000\uF8F2\u8EA2\uE6EE\u0000\u0000\u8EA2\uE6F0" + // 13800 - 13804
+                "\u8EA2\uE6EB\u8EA2\uE6F2\u8EA2\uE6ED\u8EA2\uE6EC\u0000\uF8F3" + // 13805 - 13809
+                "\u0000\u0000\u0000\u0000\u8EA2\uE9F1\u8EA2\uE9F2\u0000\u0000" + // 13810 - 13814
+                "\u8EA2\uE9F4\u0000\uFAB9\u0000\uFABA\u8EA2\uE9F5\u8EA2\uE9F3" + // 13815 - 13819
+                "\u0000\u0000\u8EA2\uE9F0\u0000\u0000\u8EA2\uECB1\u8EA2\uECB4" + // 13820 - 13824
+                "\u8EA2\uECB0\u0000\u0000\u0000\uFBA7\u8EA2\uECB2\u0000\uFBA6" + // 13825 - 13829
+                "\u0000\uFBA5\u0000\uFBA4\u8EA2\uECB3\u8EA2\uEDFE\u8EA2\uEDFC" + // 13830 - 13834
+                "\u0000\u0000\u8EA2\uEDFB\u8EA2\uECAF\u8EA2\uEDFD\u8EA2\uECB5" + // 13835 - 13839
+                "\u8EA2\uEDFA\u0000\u0000\u8EA2\uEFC8\u8EA2\uEFA6\u8EA2\uEFC6" + // 13840 - 13844
+                "\u0000\uFCC7\u8EA2\uEFC7\u8EA2\uEFC9\u0000\u0000\u8EA2\uF0CD" + // 13845 - 13849
+                "\u0000\uFCE6\u8EA2\uF0CC\u8EA2\uF0CB\u0000\uFCE7\u0000\u0000" + // 13850 - 13854
+                "\u0000\uFDA7\u8EA2\uF1DD\u8EA2\uF1F5\u8EA2\uF1F4\u8EA2\uF1F6" + // 13855 - 13859
+                "\u0000\uF5B7\u0000\u0000\u8EA2\uDFB2\u8EA2\uDFB1\u8EA2\uDFB6" + // 13860 - 13864
+                "\u8EA2\uDFA9\u0000\uF5BB\u0000\u0000\u0000\uF5BF\u8EA2\uDFB0" + // 13865 - 13869
+                "\u8EA2\uDFB7\u0000\uF5C0\u8EA2\uDFB3\u0000\u0000\u0000\u0000" + // 13870 - 13874
+                "\u0000\u0000\u0000\u0000\u0000\uF5B8\u0000\uF5BA\u8EA2\uE3B3" + // 13875 - 13879
+                "\u8EA2\uE3B1\u0000\u0000\u0000\u0000\u8EA2\uE3B7\u8EA2\uE3B5" + // 13880 - 13884
+                "\u8EA2\uE3B8\u0000\u0000\u8EA2\uE3AA\u8EA2\uE3B2\u8EA2\uE3BC" + // 13885 - 13889
+                "\u8EA2\uDFBD\u8EA2\uE3AE\u0000\uF7BA\u8EA2\uD3EC\u8EA2\uE3A9" + // 13890 - 13894
+                "\u8EA2\uE3B6\u8EA2\uE3B0\u8EA2\uE3AD\u8EA2\uE3A8\u8EA2\uE3A7" + // 13895 - 13899
+                "\u8EA2\uE3BB\u0000\u0000\u8EA2\uE3AC\u8EA2\uE3AB\u0000\uF7B8" + // 13900 - 13904
+                "\u8EA2\uE3B4\u0000\u0000\u0000\uF7B7\u0000\u0000\u0000\u0000" + // 13905 - 13909
+                "\u0000\uF7B9\u8EA2\uE3AF\u8EA2\uE3BA\u0000\u0000\u8EA2\uE6E9" + // 13910 - 13914
+                "\u8EA2\uE6EA\u0000\u0000\u0000\uF8F4\u8EA2\uE6E7\u0000\uF8F1" + // 13915 - 13919
+                "\u8EA2\uE6EF\u0000\u0000\u0000\uF8F5\u8EA2\uE6F1\u8EA2\uCDE0" + // 13920 - 13924
+                "\u8EA2\uCDE8\u8EA2\uCDF4\u8EA2\uCDE6\u0000\u0000\u0000\u0000" + // 13925 - 13929
+                "\u8EA2\uCDEA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 13930 - 13934
+                "\u0000\u0000\u0000\uEEEA\u8EA2\uC7B0\u8EA2\uD3F9\u8EA2\uD4A4" + // 13935 - 13939
+                "\u8EA2\uD3F8\u8EA2\uD3F4\u8EA2\uD3F1\u0000\uEEEB\u8EA2\uD3EF" + // 13940 - 13944
+                "\u0000\uEAF3\u8EA2\uD3E8\u0000\uEEE9\u8EA2\uD3EE\u0000\uEEE8" + // 13945 - 13949
+                "\u8EA2\uD3F3\u8EA2\uD3F0\u8EA2\uD4A2\u8EA2\uD3FB\u8EA2\uD3F5" + // 13950 - 13954
+                "\u8EA2\uD3FA\u0000\uEEE4\u8EA2\uD3F2\u8EA2\uD4A7\u8EA2\uD3E9" + // 13955 - 13959
+                "\u8EA2\uD3EA\u8EA2\uD4A3\u0000\uEEE5\u8EA2\uD4A8\u0000\uEEE7" + // 13960 - 13964
+                "\u8EA2\uD4A9\u8EA2\uD3F7\u8EA2\uCDDF\u8EA2\uD3FD\u8EA2\uD3F6" + // 13965 - 13969
+                "\u8EA2\uD4A1\u8EA2\uD3FC\u0000\u0000\u0000\u0000\u0000\u0000" + // 13970 - 13974
+                "\u8EA2\uD3ED\u0000\uEEE2\u8EA2\uD4A6\u0000\uEEE3\u8EA2\uD3EB" + // 13975 - 13979
+                "\u0000\uEEE6\u8EA2\uDAB2\u8EA2\uD3FE\u8EA2\uD4A5\u0000\u0000" + // 13980 - 13984
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA4B8\u0000\u0000" + // 13985 - 13989
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 13990 - 13994
+                "\u0000\u0000\u0000\u0000\u8EAD\uA4AE\u0000\u0000\u0000\u0000" + // 13995 - 13999
+                "\u0000\u0000\u0000\u0000\u0000\uA3C4\u0000\u0000\u0000\u0000" + // 14000 - 14004
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14005 - 14009
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14010 - 14014
+                "\u0000\u0000\u0000\uA3C5\u0000\u0000\u0000\u0000\u0000\uA3C7" + // 14015 - 14019
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14020 - 14024
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA3C6\u0000\u0000" + // 14025 - 14029
+                "\u0000\u0000\u0000\uA3C0\u0000\uA3C1\u0000\uA3C3\u0000\uA3C2" + // 14030 - 14034
+                "\u0000\uA3CC\u0000\uA3CD\u0000\uA3CE\u0000\uA1BB\u0000\u0000" + // 14035 - 14039
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14040 - 14044
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14045 - 14049
+                "\u0000\uA5EF\u0000\u0000\u0000\uA5ED\u0000\uA5EE\u0000\uA5F0" + // 14050 - 14054
+                "\u0000\u0000\u0000\uA2A6\u0000\u0000\u0000\u0000\u0000\u0000" + // 14055 - 14059
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14060 - 14064
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA5EC\u0000\u0000" + // 14065 - 14069
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14070 - 14074
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14075 - 14079
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14080 - 14084
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14085 - 14089
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14090 - 14094
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14095 - 14099
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14100 - 14104
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD3F8" + // 14105 - 14109
+                "\u8EA2\uC1D2\u0000\u0000\u0000\u0000\u8EA2\uC8E7\u8EA2\uCFB4" + // 14110 - 14114
+                "\u8EA2\uCFB5\u0000\uEBEC\u0000\u0000\u0000\uEBED\u8EA2\uD5E7" + // 14115 - 14119
+                "\u0000\uEFF1\u0000\u0000\u0000\u0000\u0000\uF6A9\u0000\u0000" + // 14120 - 14124
+                "\u8EA2\uE4D5\u0000\u0000\u0000\uF7F1\u8EA2\uE7F8\u0000\uF9CE" + // 14125 - 14129
+                "\u8EA2\uE7F7\u8EA2\uE7F9\u8EA2\uE7F6\u0000\uE6C5\u8EA2\uC7B4" + // 14130 - 14134
+                "\u0000\uE6C8\u0000\uE6C9\u8EA2\uC7AA\u8EA2\uC7B7\u0000\uE6CA" + // 14135 - 14139
+                "\u0000\uE6C4\u0000\uE6C3\u8EA2\uC7B3\u0000\uE6CB\u8EA2\uC7A9" + // 14140 - 14144
+                "\u8EA2\uC7AC\u8EA2\uC7B6\u8EA2\uC7B2\u0000\u0000\u0000\u0000" + // 14145 - 14149
+                "\u8EA2\uCDFB\u8EA2\uCDF0\u0000\uE6C2\u0000\u0000\u0000\u0000" + // 14150 - 14154
+                "\u0000\u0000\u0000\u0000\u0000\uEAF2\u8EA2\uCDE4\u8EA2\uCDF9" + // 14155 - 14159
+                "\u8EA2\uCDE5\u0000\uEAED\u0000\u0000\u8EA2\uCDE2\u0000\u0000" + // 14160 - 14164
+                "\u8EA2\uCDEB\u8EA2\uCDE3\u0000\uEAEF\u8EA2\uCDDD\u8EA2\uCDF8" + // 14165 - 14169
+                "\u0000\uEAF0\u8EA2\uCDF5\u8EA2\uCDF6\u8EA2\uCDDE\u0000\uEAF5" + // 14170 - 14174
+                "\u8EA2\uCDED\u0000\u0000\u8EA2\uCDE7\u8EA2\uCDEE\u8EA2\uCDE1" + // 14175 - 14179
+                "\u0000\u0000\u8EA2\uCDFA\u8EA2\uCDF2\u8EA2\uCDEC\u8EA2\uCDDC" + // 14180 - 14184
+                "\u0000\uEAF1\u8EA2\uCDF3\u0000\u0000\u0000\uEAF4\u8EA2\uCDF7" + // 14185 - 14189
+                "\u0000\u0000\u8EA2\uCDF1\u0000\uEAEE\u8EA2\uCDEF\u0000\u0000" + // 14190 - 14194
+                "\u8EA2\uCDE9\u0000\uEAEC\u0000\uDDAB\u8EA2\uB9A5\u8EA2\uB9A4" + // 14195 - 14199
+                "\u8EA2\uB9B1\u0000\uDDAD\u8EA2\uB9A6\u0000\uDDAF\u0000\uDDAA" + // 14200 - 14204
+                "\u8EA2\uB9A9\u0000\uDDB3\u0000\u0000\u0000\uDDB0\u8EA2\uB9AD" + // 14205 - 14209
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE1F7\u8EA2\uC0A5" + // 14210 - 14214
+                "\u0000\u0000\u8EA2\uBFF8\u0000\uE1F4\u0000\u0000\u8EA2\uC7AE" + // 14215 - 14219
+                "\u8EA2\uC0A3\u8EA2\uBFF5\u0000\uE1F2\u8EA2\uBFFA\u0000\uE1F5" + // 14220 - 14224
+                "\u8EA2\uBFFE\u8EA2\uBFFC\u0000\uE1F8\u0000\uE1F1\u0000\u0000" + // 14225 - 14229
+                "\u0000\u0000\u8EA2\uBFF6\u8EA2\uBFF9\u0000\uE1F6\u0000\u0000" + // 14230 - 14234
+                "\u8EA2\uBFF7\u0000\u0000\u8EA2\uC0A4\u8EA2\uC0A2\u8EA2\uBFFB" + // 14235 - 14239
+                "\u8EA2\uBFFD\u8EA2\uC0A1\u0000\uE1F3\u0000\u0000\u0000\u0000" + // 14240 - 14244
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14245 - 14249
+                "\u8EA2\uC7AF\u8EA2\uC7B5\u8EA2\uC7AB\u8EA2\uC7B1\u0000\uE6C1" + // 14250 - 14254
+                "\u8EA2\uC7AD\u0000\uE6C7\u0000\u0000\u0000\u0000\u0000\uE6C6" + // 14255 - 14259
+                "\u0000\u0000\u8EA2\uE0F3\u0000\u0000\u0000\uF7F9\u8EA2\uE4E6" + // 14260 - 14264
+                "\u8EA2\uE4E7\u0000\uF7FA\u0000\u0000\u8EA2\uE4E5\u0000\u0000" + // 14265 - 14269
+                "\u8EA2\uE8B0\u8EA2\uE8AF\u8EA2\uE8B2\u0000\uF9D3\u8EA2\uE8B1" + // 14270 - 14274
+                "\u0000\u0000\u8EA2\uEAF5\u8EA2\uEAF7\u8EA2\uEAF6\u0000\u0000" + // 14275 - 14279
+                "\u0000\u0000\u8EA2\uECEF\u8EA2\uECF2\u8EA2\uECF0\u8EA2\uECF1" + // 14280 - 14284
+                "\u8EA2\uEED2\u0000\uFCA9\u0000\u0000\u0000\u0000\u0000\u0000" + // 14285 - 14289
+                "\u8EA2\uEFE2\u8EA2\uEFE3\u8EA2\uEFE4\u0000\u0000\u0000\uFCF6" + // 14290 - 14294
+                "\u0000\uFDB0\u8EA2\uF2A6\u0000\uD8EE\u0000\u0000\u0000\uF0A3" + // 14295 - 14299
+                "\u0000\uF3B4\u8EA2\uE4E8\u0000\u0000\u8EA2\uEED3\u0000\u0000" + // 14300 - 14304
+                "\u0000\u0000\u8EA2\uF1E6\u8EA2\uB3CD\u0000\u0000\u0000\uFDC8" + // 14305 - 14309
+                "\u0000\uD8EF\u8EA2\uDBFE\u0000\u0000\u8EA2\uE4E9\u0000\u0000" + // 14310 - 14314
+                "\u8EA2\uE8B3\u0000\u0000\u0000\u0000\u8EA2\uECF3\u8EA2\uEED4" + // 14315 - 14319
+                "\u0000\uD8F0\u0000\u0000\u8EA2\uCFC5\u8EA2\uCFC6\u8EA2\uEFC0" + // 14320 - 14324
+                "\u0000\u0000\u0000\u0000\u8EA2\uF0CA\u0000\u0000\u0000\u0000" + // 14325 - 14329
+                "\u8EA2\uF1B4\u8EA2\uF1B5\u8EA2\uF1B6\u0000\u0000\u0000\u0000" + // 14330 - 14334
+                "\u8EA2\uF2B5\u8EA2\uF2AD\u8EA2\uA2EF\u0000\uCFCD\u0000\u0000" + // 14335 - 14339
+                "\u0000\uD3CB\u0000\u0000\u8EA2\uB2DA\u8EA2\uB2D9\u0000\uD8A5" + // 14340 - 14344
+                "\u0000\uDDA8\u8EA2\uB9A1\u0000\u0000\u0000\u0000\u8EA2\uB8FE" + // 14345 - 14349
+                "\u0000\u0000\u0000\uE1F0\u0000\uE6BF\u0000\u0000\u0000\uE6BE" + // 14350 - 14354
+                "\u0000\uE6C0\u0000\u0000\u8EA2\uCDDB\u8EA2\uD3E7\u8EA2\uDAA5" + // 14355 - 14359
+                "\u8EA2\uDAA7\u8EA2\uDAA6\u0000\u0000\u0000\uF5B6\u8EA2\uDFA5" + // 14360 - 14364
+                "\u8EA2\uE3A6\u8EA2\uF1F3\u0000\uC8E5\u0000\u0000\u8EA2\uA8E9" + // 14365 - 14369
+                "\u8EA2\uA8EA\u8EA2\uA8E8\u8EA2\uA8E7\u0000\uCFCE\u0000\u0000" + // 14370 - 14374
+                "\u8EA2\uADCA\u8EA2\uADC8\u0000\u0000\u0000\u0000\u8EA2\uADC7" + // 14375 - 14379
+                "\u0000\u0000\u0000\uD3CC\u0000\uD3CE\u0000\uD3CD\u8EA2\uADC9" + // 14380 - 14384
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCACD\u0000\u0000" + // 14385 - 14389
+                "\u0000\u0000\u8EA2\uD0D8\u0000\u0000\u0000\uE8F1\u0000\uECFC" + // 14390 - 14394
+                "\u8EA2\uD7B5\u8EA2\uD0DD\u8EA2\uD0DC\u8EA2\uD0DE\u0000\u0000" + // 14395 - 14399
+                "\u0000\u0000\u8EA2\uD0DB\u0000\uECFD\u8EAD\uA4C7\u0000\uEDA5" + // 14400 - 14404
+                "\u0000\uEDA2\u0000\u0000\u0000\uEDA3\u8EA2\uD0D6\u8EA2\uD0D9" + // 14405 - 14409
+                "\u8EA2\uD0E3\u0000\uEDAB\u0000\uEDA9\u0000\u0000\u8EA2\uD0DA" + // 14410 - 14414
+                "\u8EA2\uBBFD\u0000\uECFA\u8EA2\uD0E0\u8EA2\uD0D7\u0000\u0000" + // 14415 - 14419
+                "\u0000\uEDAC\u8EA2\uD0DF\u0000\uE8F4\u0000\uEDA1\u8EA2\uCACB" + // 14420 - 14424
+                "\u0000\u0000\u0000\u0000\u0000\uEDA4\u0000\u0000\u0000\uEDA8" + // 14425 - 14429
+                "\u0000\uEDAA\u0000\uEDA7\u0000\uEDA6\u0000\u0000\u0000\uECFE" + // 14430 - 14434
+                "\u8EA2\uD0E2\u0000\uECFB\u0000\uEDAD\u0000\u0000\u0000\u0000" + // 14435 - 14439
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14440 - 14444
+                "\u0000\uF0E1\u0000\uF0E2\u8EA2\uD7B4\u0000\uF0EB\u0000\uF0E8" + // 14445 - 14449
+                "\u8EA2\uE9E9\u8EA2\uE9E6\u0000\u0000\u0000\u0000\u8EA2\uE9EB" + // 14450 - 14454
+                "\u8EA2\uE9ED\u0000\uFAB5\u0000\uFAB7\u0000\u0000\u8EA2\uE9EC" + // 14455 - 14459
+                "\u0000\uFAB8\u0000\uFAB6\u8EA2\uE9EE\u0000\u0000\u0000\u0000" + // 14460 - 14464
+                "\u0000\u0000\u0000\u0000\u0000\uFAB3\u0000\u0000\u0000\u0000" + // 14465 - 14469
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBA1\u8EA2\uECA1" + // 14470 - 14474
+                "\u8EA2\uECA7\u0000\uFBA3\u8EA2\uE9E8\u8EA2\uECA6\u0000\u0000" + // 14475 - 14479
+                "\u8EA2\uECAD\u8EA2\uECA4\u8EA2\uECAB\u8EA2\uECAA\u8EA2\uE9E4" + // 14480 - 14484
+                "\u8EA2\uECA5\u8EA2\uE3A2\u8EA2\uECAE\u8EA2\uECA3\u8EA2\uECA8" + // 14485 - 14489
+                "\u0000\u0000\u8EA2\uECAC\u8EA2\uECA2\u0000\u0000\u8EA2\uEDF7" + // 14490 - 14494
+                "\u0000\uFBA2\u8EA2\uECA9\u0000\u0000\u0000\u0000\u8EA2\uEFC3" + // 14495 - 14499
+                "\u8EA2\uEDF8\u8EA2\uEDF6\u8EA2\uEDF4\u8EA2\uEDF5\u8EA2\uEDF9" + // 14500 - 14504
+                "\u0000\u0000\u0000\uFCC5\u8EA2\uEFC1\u8EA2\uEFBF\u8EA2\uEFC4" + // 14505 - 14509
+                "\u8EA2\uEFC2\u0000\u0000\u8EA2\uEFC5\u0000\uFCC6\u8EA2\uE2F0" + // 14510 - 14514
+                "\u0000\u0000\u8EA2\uE2F2\u8EA2\uE2F1\u8EA2\uE2F7\u8EA2\uE2FC" + // 14515 - 14519
+                "\u8EA2\uE2EF\u8EA2\uE2F6\u8EA2\uE2FB\u0000\uF7B3\u0000\u0000" + // 14520 - 14524
+                "\u8EA2\uE2F9\u0000\u0000\u0000\uF7B1\u8EA2\uE2FA\u0000\uF7AF" + // 14525 - 14529
+                "\u0000\uF7B2\u8EA2\uE6E0\u8EA2\uE3A1\u0000\u0000\u0000\u0000" + // 14530 - 14534
+                "\u0000\uF8ED\u0000\u0000\u8EA2\uE6D8\u8EA2\uE6DC\u8EA2\uE6D4" + // 14535 - 14539
+                "\u8EA2\uE6D7\u0000\u0000\u8EA2\uE6DF\u0000\uF8EB\u8EA2\uE6E4" + // 14540 - 14544
+                "\u8EA2\uE6DD\u0000\u0000\u8EA2\uE6D5\u8EA2\uE6E5\u8EA2\uE6DE" + // 14545 - 14549
+                "\u0000\uF8EE\u0000\uF8EF\u8EA2\uE6E2\u0000\u0000\u8EA2\uE6D6" + // 14550 - 14554
+                "\u0000\uF8EA\u0000\uF8EC\u8EA2\uE6D1\u8EA2\uE6D9\u8EA2\uE6D3" + // 14555 - 14559
+                "\u0000\u0000\u8EA2\uE6E3\u8EA2\uE6E1\u8EA2\uE6D2\u8EA2\uE6DA" + // 14560 - 14564
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE9EA\u0000\uF8F0" + // 14565 - 14569
+                "\u8EA2\uE6DB\u0000\uFAB2\u0000\uFAB4\u0000\uFAB1\u0000\u0000" + // 14570 - 14574
+                "\u8EA2\uE9EF\u8EA2\uE9E7\u8EA2\uE9E5\u8EA2\uDEE1\u8EA2\uDEF9" + // 14575 - 14579
+                "\u8EA2\uDEFB\u8EA2\uDEE0\u0000\uF5AB\u8EA2\uDEFD\u8EA2\uDEF5" + // 14580 - 14584
+                "\u0000\uF5B2\u8EA2\uDEFC\u8EA2\uDEEE\u0000\uF5B4\u8EA2\uDEE6" + // 14585 - 14589
+                "\u8EA2\uD9FD\u8EA2\uDEF6\u8EA2\uDEF3\u8EA2\uDEE2\u8EA2\uDFA3" + // 14590 - 14594
+                "\u0000\uF5AE\u0000\u0000\u0000\u0000\u0000\uF5AF\u8EA2\uDEE4" + // 14595 - 14599
+                "\u8EA2\uDEF4\u0000\u0000\u8EA2\uDFA2\u8EA2\uDEF7\u8EA2\uDEEA" + // 14600 - 14604
+                "\u0000\uF5B1\u0000\uF5AD\u8EA2\uDEF8\u8EA2\uDEEB\u8EA2\uDFA4" + // 14605 - 14609
+                "\u8EA2\uDEE5\u8EA2\uDEEF\u8EA2\uDEFA\u8EA2\uDEE7\u8EA2\uDEE9" + // 14610 - 14614
+                "\u0000\u0000\u0000\uF5B5\u8EA2\uDEE3\u0000\uF5B3\u0000\uF7B0" + // 14615 - 14619
+                "\u0000\uF5AA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14620 - 14624
+                "\u0000\uF5B0\u0000\uF7B4\u8EA2\uE2FD\u0000\u0000\u8EA2\uE2F3" + // 14625 - 14629
+                "\u8EA2\uE2EE\u8EA2\uE2F4\u8EA2\uE2FE\u8EA2\uE3A4\u8EA2\uE3A3" + // 14630 - 14634
+                "\u0000\uF7B6\u0000\uF7B5\u0000\u0000\u0000\u0000\u8EA2\uE2F5" + // 14635 - 14639
+                "\u8EA2\uE3A5\u8EA2\uE2F8\u8EA2\uD9EB\u8EA2\uD9EE\u0000\u0000" + // 14640 - 14644
+                "\u0000\uF2A5\u8EA2\uD9F0\u8EA2\uD9E5\u8EA2\uD9EC\u8EA2\uD9F2" + // 14645 - 14649
+                "\u0000\uF2A2\u0000\uF2A6\u0000\uF1FE\u0000\u0000\u0000\u0000" + // 14650 - 14654
+                "\u8EA2\uD9E7\u8EA2\uD9F7\u0000\u0000\u0000\u0000\u8EA2\uD9F1" + // 14655 - 14659
+                "\u0000\u0000\u8EA2\uD9E8\u8EA2\uDAA2\u8EA2\uD9FA\u8EA2\uD9E4" + // 14660 - 14664
+                "\u8EA2\uDEF2\u8EA2\uD9EA\u0000\uF2A1\u0000\u0000\u8EA2\uD9F5" + // 14665 - 14669
+                "\u0000\u0000\u8EA2\uDAA1\u0000\uF2A9\u0000\u0000\u8EA2\uD9FC" + // 14670 - 14674
+                "\u8EA2\uD9E9\u8EA2\uD9EF\u8EA2\uD9F3\u8EA2\uD9ED\u8EA2\uDAA3" + // 14675 - 14679
+                "\u8EA2\uD9FE\u8EA2\uD9FB\u0000\uF2A3\u0000\uF2A4\u0000\uF2A8" + // 14680 - 14684
+                "\u8EA2\uD9E6\u8EA2\uDAA4\u0000\uF2A7\u8EA2\uD9F8\u0000\u0000" + // 14685 - 14689
+                "\u0000\u0000\u8EA2\uD9F6\u0000\u0000\u0000\u0000\u0000\u0000" + // 14690 - 14694
+                "\u8EA2\uD9F9\u8EA2\uDFA1\u8EA2\uDEEC\u8EA2\uDEF1\u8EA2\uDEFE" + // 14695 - 14699
+                "\u8EA2\uDEF0\u8EA2\uDEE8\u8EA2\uDEED\u0000\u0000\u0000\uF5AC" + // 14700 - 14704
+                "\u0000\u0000\u0000\uF6AB\u8EA2\uE0E4\u8EA2\uE0EF\u8EA2\uE4DD" + // 14705 - 14709
+                "\u8EA2\uE4E0\u8EA2\uE4E2\u8EA2\uE4E1\u0000\u0000\u8EA2\uE4DB" + // 14710 - 14714
+                "\u8EA2\uE4DF\u8EA2\uE4DA\u0000\u0000\u8EA2\uE4DC\u0000\uF7F7" + // 14715 - 14719
+                "\u8EA2\uE4D9\u0000\u0000\u8EA2\uE4DE\u0000\u0000\u0000\u0000" + // 14720 - 14724
+                "\u8EA2\uE8AD\u8EA2\uE8A2\u0000\uF9D1\u0000\u0000\u0000\u0000" + // 14725 - 14729
+                "\u0000\uF9D2\u8EA2\uE8A1\u8EA2\uE8A6\u8EA2\uE8AC\u8EA2\uE8A4" + // 14730 - 14734
+                "\u8EA2\uE8AB\u0000\u0000\u8EA2\uE8A8\u0000\u0000\u8EA2\uE8A7" + // 14735 - 14739
+                "\u8EA2\uE8AA\u8EA2\uE8A5\u8EA2\uE8A3\u0000\u0000\u8EA2\uE8A9" + // 14740 - 14744
+                "\u0000\u0000\u8EA2\uEAEE\u8EA2\uEAEC\u0000\uFAD5\u8EA2\uEAEB" + // 14745 - 14749
+                "\u8EA2\uEAF1\u8EA2\uEAEF\u0000\u0000\u0000\uFAD6\u8EA2\uEAEA" + // 14750 - 14754
+                "\u8EA2\uEAE8\u0000\u0000\u8EA2\uEAE9\u0000\uFAD8\u8EA2\uEAED" + // 14755 - 14759
+                "\u0000\uFAD7\u8EA2\uEAF0\u8EA2\uECE6\u8EA2\uECEC\u0000\u0000" + // 14760 - 14764
+                "\u0000\u0000\u8EA2\uECE7\u0000\uFBC7\u8EA2\uECED\u8EA2\uD3B8" + // 14765 - 14769
+                "\u0000\u0000\u8EA2\uD3D6\u0000\u0000\u0000\u0000\u0000\u0000" + // 14770 - 14774
+                "\u0000\uEEE0\u8EA2\uC6E2\u8EA2\uD3C4\u8EA2\uD3BB\u8EA2\uD3BE" + // 14775 - 14779
+                "\u8EA2\uD3E4\u8EA2\uD3C5\u8EA2\uD3BC\u8EA2\uD3BA\u8EA2\uD3B7" + // 14780 - 14784
+                "\u0000\u0000\u0000\uEED9\u8EA2\uD3CE\u0000\uEED8\u0000\uEEDC" + // 14785 - 14789
+                "\u8EA2\uD3C9\u8EA2\uD3D1\u0000\uEED2\u8EA2\uD3E1\u8EA2\uD3E5" + // 14790 - 14794
+                "\u0000\uEED4\u0000\u0000\u8EA2\uD3C0\u8EA2\uD3D4\u8EA2\uD3D8" + // 14795 - 14799
+                "\u8EA2\uD3BD\u8EA2\uD3E2\u0000\uEEDB\u0000\u0000\u0000\uEEDA" + // 14800 - 14804
+                "\u8EA2\uD3B5\u0000\uEEDE\u8EA2\uD3DB\u8EA2\uD3BF\u8EA2\uD3D3" + // 14805 - 14809
+                "\u8EA2\uD3B9\u8EA2\uD3C7\u8EA2\uD3C2\u0000\uEED6\u0000\uEED7" + // 14810 - 14814
+                "\u8EA2\uD3D5\u8EA2\uD3E6\u8EA2\uD3E3\u8EA2\uD3DA\u0000\u0000" + // 14815 - 14819
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14820 - 14824
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD3B6\u0000\u0000" + // 14825 - 14829
+                "\u0000\uEED3\u8EA2\uD9F4\u0000\u0000\u0000\uEBF2\u8EA2\uCFBF" + // 14830 - 14834
+                "\u8EA2\uCFBB\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCFC1" + // 14835 - 14839
+                "\u0000\u0000\u8EA2\uD5F5\u0000\u0000\u8EA2\uD5F8\u8EA2\uD5FA" + // 14840 - 14844
+                "\u8EA2\uD5F0\u8EA2\uD5F4\u8EA2\uD5F1\u0000\uEFF7\u0000\uEFFA" + // 14845 - 14849
+                "\u0000\uEFFC\u8EA2\uD5F2\u8EA2\uD5F3\u0000\uEFFB\u8EA2\uD5F6" + // 14850 - 14854
+                "\u8EA2\uD5F9\u8EA2\uD5F7\u0000\uEFFD\u0000\u0000\u0000\uEFF9" + // 14855 - 14859
+                "\u8EA2\uD5EF\u0000\uEFF6\u0000\u0000\u0000\uEFF8\u0000\u0000" + // 14860 - 14864
+                "\u0000\u0000\u0000\uF3AE\u8EA2\uDBF2\u8EA2\uDBF0\u8EA2\uDBEF" + // 14865 - 14869
+                "\u0000\u0000\u8EA2\uDBF5\u0000\u0000\u8EA2\uDBF4\u8EA2\uDBF3" + // 14870 - 14874
+                "\u0000\u0000\u8EA2\uDBEE\u0000\uF3AD\u8EA2\uDBED\u0000\u0000" + // 14875 - 14879
+                "\u8EA2\uDBF1\u0000\uF3AF\u0000\u0000\u0000\u0000\u8EA2\uE0E6" + // 14880 - 14884
+                "\u0000\u0000\u8EA2\uE0EA\u8EA2\uE0E7\u8EA2\uE0E9\u8EA2\uE0E8" + // 14885 - 14889
+                "\u8EA2\uE0E5\u8EA2\uE0EB\u8EA2\uE0EE\u8EA2\uE0EC\u8EA2\uE0ED" + // 14890 - 14894
+                "\u0000\uF6AC\u0000\uEAE6\u8EA2\uCDBF\u8EA2\uCDB9\u0000\u0000" + // 14895 - 14899
+                "\u0000\uEADF\u8EA2\uC6F9\u0000\uEADE\u8EA2\uCDCA\u0000\u0000" + // 14900 - 14904
+                "\u0000\uEADC\u0000\uEAEB\u0000\uEAE4\u8EA2\uCDCB\u8EA2\uCDC0" + // 14905 - 14909
+                "\u8EA2\uCDB8\u8EA2\uCDD3\u8EA2\uCDC4\u0000\uEAEA\u8EA2\uCDD7" + // 14910 - 14914
+                "\u0000\uEAE7\u8EA2\uCDD6\u0000\u0000\u8EA2\uCDD0\u8EA2\uCDD5" + // 14915 - 14919
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCDD8\u0000\u0000" + // 14920 - 14924
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14925 - 14929
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 14930 - 14934
+                "\u8EA2\uD3DC\u8EA2\uD3DD\u8EA2\uD3D0\u8EA2\uD3CF\u8EA2\uD3CB" + // 14935 - 14939
+                "\u0000\uEEDD\u0000\u0000\u0000\uEED5\u8EA2\uD3DF\u8EA2\uD3DE" + // 14940 - 14944
+                "\u8EA2\uC6CE\u8EA2\uD3C8\u8EA2\uD3CC\u8EA2\uD3C6\u0000\u0000" + // 14945 - 14949
+                "\u8EA2\uD3D9\u8EA2\uD3CA\u0000\u0000\u8EA2\uD3E0\u8EA2\uD3C3" + // 14950 - 14954
+                "\u8EA2\uD3C1\u8EA2\uD3CD\u8EA2\uD3D7\u8EA2\uD3D2\u0000\uEEDF" + // 14955 - 14959
+                "\u8EA2\uC6D7\u0000\u0000\u8EA2\uC6F0\u8EA2\uC6E8\u8EA2\uC7A3" + // 14960 - 14964
+                "\u8EA2\uC6EB\u0000\uE6BD\u8EA2\uC6FC\u0000\u0000\u0000\uE6B4" + // 14965 - 14969
+                "\u0000\u0000\u8EA2\uC6EE\u8EA2\uC6F6\u8EA2\uC6DB\u8EA2\uC6F5" + // 14970 - 14974
+                "\u0000\u0000\u8EA2\uC7A8\u8EA2\uC6D6\u8EA2\uC6F7\u0000\u0000" + // 14975 - 14979
+                "\u8EA2\uC7A6\u0000\u0000\u8EA2\uC6D0\u0000\uE1E1\u0000\u0000" + // 14980 - 14984
+                "\u8EA2\uC6DE\u8EA2\uC6DD\u0000\uE6B6\u0000\u0000\u8EA2\uC6E1" + // 14985 - 14989
+                "\u8EA2\uC6E3\u8EA2\uC6F2\u8EA2\uC7A5\u0000\uE6B9\u0000\u0000" + // 14990 - 14994
+                "\u0000\uE6BA\u0000\u0000\u8EA2\uC6D5\u0000\uE6B2\u8EA2\uC6D9"   // 14995 - 14999
+                ;
+
+            index2b =
+                "\u8EA2\uC7A1\u0000\uE6BB\u0000\u0000\u0000\uE6B3\u0000\uE6B5" + // 15000 - 15004
+                "\u0000\uE6BC\u8EA2\uC7A7\u8EA2\uC6F8\u8EA2\uC6F3\u0000\u0000" + // 15005 - 15009
+                "\u0000\u0000\u8EA2\uC6E0\u8EA2\uC6DF\u0000\uE6B1\u8EA2\uC6D1" + // 15010 - 15014
+                "\u0000\uE6AE\u8EA2\uC6E9\u8EA2\uC6D2\u8EA2\uC6E7\u0000\u0000" + // 15015 - 15019
+                "\u0000\u0000\u8EA2\uC6DC\u8EA2\uC7A2\u0000\u0000\u8EA2\uE4D6" + // 15020 - 15024
+                "\u0000\u0000\u8EA2\uE7FC\u0000\u0000\u0000\uF9CF\u0000\u0000" + // 15025 - 15029
+                "\u8EA2\uE7FB\u8EA2\uE7FA\u0000\uF9D0\u0000\u0000\u8EA2\uEAE6" + // 15030 - 15034
+                "\u8EA2\uEAE5\u0000\u0000\u8EA2\uEAE3\u0000\u0000\u8EA2\uEAE2" + // 15035 - 15039
+                "\u0000\uFAD3\u0000\uFAD2\u8EA2\uEAE7\u8EA2\uEEC5\u0000\uFCA5" + // 15040 - 15044
+                "\u8EA2\uECE5\u0000\uFBC3\u8EA2\uECE4\u8EA2\uEAE4\u0000\u0000" + // 15045 - 15049
+                "\u8EA2\uEEC6\u0000\uFCD0\u0000\u0000\u0000\uFDAE\u8EA2\uF1C8" + // 15050 - 15054
+                "\u0000\u0000\u8EA2\uF2A1\u0000\u0000\u0000\u0000\u0000\u0000" + // 15055 - 15059
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15060 - 15064
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15065 - 15069
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15070 - 15074
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15075 - 15079
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15080 - 15084
+                "\u0000\u0000\u0000\u0000\u0000\uCFDD\u0000\u0000\u8EA2\uA1E9" + // 15085 - 15089
+                "\u0000\u0000\u8EA2\uA2F8\u0000\uC8EA\u8EA2\uA2F6\u8EA2\uA2F9" + // 15090 - 15094
+                "\u8EA2\uA2F7\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA5AE" + // 15095 - 15099
+                "\u0000\u0000\u0000\uCBE2\u0000\u0000\u0000\uCBE3\u8EA2\uA5B0" + // 15100 - 15104
+                "\u0000\uCBE0\u8EA2\uA5AF\u8EA2\uA5AD\u0000\uCBE1\u0000\uCBDF" + // 15105 - 15109
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15110 - 15114
+                "\u0000\u0000\u8EA2\uA8F8\u8EA2\uA8FB\u0000\uCFE0\u8EA2\uA8FA" + // 15115 - 15119
+                "\u8EA2\uA8F9\u0000\u0000\u0000\uCFDF\u8EA2\uBFC5\u0000\uE1DD" + // 15120 - 15124
+                "\u8EA2\uBFE2\u8EA2\uBFEB\u8EA2\uBFEE\u0000\uE1DB\u8EA2\uBFCD" + // 15125 - 15129
+                "\u8EA2\uBFE6\u8EA2\uBFCE\u8EA2\uBFDC\u0000\uE1E8\u8EA2\uBFD8" + // 15130 - 15134
+                "\u0000\uE1E5\u0000\u0000\u8EA2\uBFD9\u8EA2\uBFC2\u0000\u0000" + // 15135 - 15139
+                "\u8EA2\uBFE7\u0000\u0000\u0000\u0000\u0000\uE1EE\u8EA2\uBFE4" + // 15140 - 15144
+                "\u8EA2\uBFDA\u8EA2\uBFF0\u8EA2\uBFD5\u8EA2\uC6ED\u0000\u0000" + // 15145 - 15149
+                "\u8EA2\uBFF3\u0000\uE1EC\u8EA2\uBFD3\u8EA2\uBFDF\u0000\uE1EF" + // 15150 - 15154
+                "\u0000\uE1DA\u8EA2\uBFD7\u8EA2\uBFF1\u8EA2\uBFD0\u8EA2\uBFC9" + // 15155 - 15159
+                "\u8EA2\uBFD4\u0000\u0000\u8EA2\uBFC8\u8EA2\uBFC6\u0000\uE1D6" + // 15160 - 15164
+                "\u8EA2\uBFE8\u8EA2\uBFCF\u8EA2\uBFEC\u0000\u0000\u8EA2\uBFED" + // 15165 - 15169
+                "\u0000\uE1DE\u0000\uE1E3\u0000\uE1DF\u0000\uE1E7\u8EA2\uBFE3" + // 15170 - 15174
+                "\u0000\uE1E0\u8EA2\uBFDB\u8EA2\uBFCB\u0000\u0000\u0000\uE1D8" + // 15175 - 15179
+                "\u8EA2\uBFC3\u8EA2\uBFE5\u8EA2\uBFEF\u8EA2\uBFCA\u0000\uE1E6" + // 15180 - 15184
+                "\u8EA2\uBFF4\u8EA2\uBFD6\u0000\uD8A1\u8EA2\uB2BF\u8EA2\uB2C3" + // 15185 - 15189
+                "\u0000\uD8A4\u8EA2\uB2B9\u8EA2\uB2D1\u0000\u0000\u8EA2\uB2D0" + // 15190 - 15194
+                "\u8EA2\uB2D8\u0000\uD7F7\u0000\uD7F4\u8EA2\uB2D6\u8EA2\uB2D2" + // 15195 - 15199
+                "\u8EA2\uB2C9\u8EA2\uB2C4\u0000\uD7FA\u0000\uD7F6\u8EA2\uB2BB" + // 15200 - 15204
+                "\u0000\uD7F2\u8EA2\uB2D3\u0000\uD7F3\u0000\u0000\u8EA2\uB2BD" + // 15205 - 15209
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15210 - 15214
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15215 - 15219
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15220 - 15224
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15225 - 15229
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15230 - 15234
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB8E2\u8EA2\uB8E4" + // 15235 - 15239
+                "\u8EA2\uB8E9\u8EA2\uB8FD\u0000\uDDA3\u0000\uDCF7\u0000\u0000" + // 15240 - 15244
+                "\u8EA2\uB8E1\u0000\uDDA4\u0000\uDDA5\u8EA2\uB8EC\u8EA2\uB8F3" + // 15245 - 15249
+                "\u8EA2\uB8F9\u8EA2\uADB3\u0000\uD3C2\u0000\uD3BD\u0000\uD3B6" + // 15250 - 15254
+                "\u0000\uD3BB\u0000\uD3B7\u0000\uD3CA\u8EA2\uADB1\u8EA2\uB2C7" + // 15255 - 15259
+                "\u0000\uD3BE\u0000\u0000\u0000\u0000\u8EA2\uADBD\u8EA2\uA9C2" + // 15260 - 15264
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15265 - 15269
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB2CA\u0000\uD7FE" + // 15270 - 15274
+                "\u0000\u0000\u8EA2\uB2BA\u0000\u0000\u8EA2\uB2C5\u8EA2\uB2C1" + // 15275 - 15279
+                "\u0000\u0000\u8EA2\uB2D4\u0000\u0000\u8EA2\uB2CC\u0000\u0000" + // 15280 - 15284
+                "\u8EA2\uB2C2\u0000\u0000\u8EA2\uB2CB\u8EA2\uB2BC\u8EA2\uB2C0" + // 15285 - 15289
+                "\u8EA2\uB2D7\u0000\uD8A3\u8EA2\uB2CF\u8EA2\uB2C6\u0000\uD7F1" + // 15290 - 15294
+                "\u8EA2\uB2D5\u8EA2\uB2B8\u0000\u0000\u8EA2\uB2CE\u0000\u0000" + // 15295 - 15299
+                "\u0000\uD8A2\u0000\uD7FB\u8EA2\uB2B7\u0000\uD7F9\u0000\uD7F8" + // 15300 - 15304
+                "\u0000\uD7FD\u8EA2\uB2CD\u0000\uD7F5\u0000\uD7FC\u8EA2\uADB5" + // 15305 - 15309
+                "\u8EA2\uBFC1\u8EA2\uB2C8\u0000\u0000\u0000\u0000\u8EA2\uB2BE" + // 15310 - 15314
+                "\u8EA2\uA8D3\u0000\u0000\u8EA2\uA8E2\u8EA2\uA8E4\u0000\u0000" + // 15315 - 15319
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15320 - 15324
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15325 - 15329
+                "\u0000\u0000\u0000\u0000\u0000\uD3C5\u0000\uD3BF\u0000\uD3C7" + // 15330 - 15334
+                "\u0000\uD3C4\u8EA2\uADB4\u8EA2\uADB7\u0000\uD3C0\u0000\u0000" + // 15335 - 15339
+                "\u8EA2\uADAE\u0000\u0000\u0000\uD3B9\u0000\uD3C3\u0000\u0000" + // 15340 - 15344
+                "\u0000\uD3C6\u0000\uD3C8\u8EA2\uADC3\u8EA2\uADBA\u0000\u0000" + // 15345 - 15349
+                "\u0000\uD3B8\u8EA2\uADC2\u0000\uD3BC\u0000\uD3BA\u0000\uD3B5" + // 15350 - 15354
+                "\u8EA2\uADB2\u0000\u0000\u8EA2\uADC1\u8EA2\uADB6\u8EA2\uADB9" + // 15355 - 15359
+                "\u8EA2\uADC6\u0000\u0000\u0000\uD3C9\u8EA2\uADC0\u0000\uD3C1" + // 15360 - 15364
+                "\u8EA2\uADBB\u8EA2\uADC5\u8EA2\uADB8\u8EA2\uADBC\u8EA2\uADBF" + // 15365 - 15369
+                "\u0000\u0000\u0000\u0000\u8EA2\uADB0\u8EA2\uADC4\u8EA2\uADBE" + // 15370 - 15374
+                "\u0000\u0000\u0000\u0000\u8EA2\uADAF\u0000\u0000\u8EA2\uE0D1" + // 15375 - 15379
+                "\u0000\u0000\u8EA2\uE0D6\u8EA2\uE0D2\u8EA2\uE0D5\u0000\uF6A8" + // 15380 - 15384
+                "\u0000\u0000\u8EA2\uDEC1\u8EA2\uE0D4\u8EA2\uE0D3\u0000\u0000" + // 15385 - 15389
+                "\u0000\uF7EE\u0000\uF7EC\u0000\uF7EF\u0000\uF7ED\u8EA2\uE4D2" + // 15390 - 15394
+                "\u8EA2\uE4D3\u8EA2\uE4D4\u0000\uF7F0\u0000\u0000\u0000\u0000" + // 15395 - 15399
+                "\u0000\u0000\u8EA2\uE7F5\u0000\uF9CC\u8EA2\uE7F3\u0000\u0000" + // 15400 - 15404
+                "\u0000\uF9CD\u8EA2\uE7F2\u8EA2\uE7F4\u0000\uF9CB\u8EA2\uEADF" + // 15405 - 15409
+                "\u8EA2\uEADC\u0000\u0000\u8EA2\uEADD\u8EA2\uEADE\u8EA2\uECE0" + // 15410 - 15414
+                "\u0000\uFBC2\u0000\u0000\u0000\uFBC1\u0000\u0000\u8EA2\uEEC3" + // 15415 - 15419
+                "\u8EA2\uEEC2\u0000\uFCA4\u0000\u0000\u0000\u0000\u0000\u0000" + // 15420 - 15424
+                "\u0000\uFCCF\u0000\uFCF4\u0000\uFDAD\u8EA2\uF1C7\u8EA2\uF1FC" + // 15425 - 15429
+                "\u8EA2\uF1FD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15430 - 15434
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15435 - 15439
+                "\u0000\u0000\u0000\u0000\u0000\uA1FA\u0000\uA1F9\u0000\u0000" + // 15440 - 15444
+                "\u0000\u0000\u0000\u0000\u0000\uA1F2\u0000\u0000\u0000\u0000" + // 15445 - 15449
+                "\u0000\uA1F6\u0000\uA1F3\u0000\u0000\u0000\u0000\u0000\u0000" + // 15450 - 15454
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15455 - 15459
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15460 - 15464
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15465 - 15469
+                "\u0000\uA3C8\u0000\uA3C9\u0000\uA3CB\u0000\uA3CA\u0000\u0000" + // 15470 - 15474
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15475 - 15479
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1D2\u0000\u0000" + // 15480 - 15484
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15485 - 15489
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15490 - 15494
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15495 - 15499
+                "\u8EAD\uA4C8\u8EAD\uA4CA\u0000\u0000\u0000\u0000\u0000\u0000" + // 15500 - 15504
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15505 - 15509
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15510 - 15514
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15515 - 15519
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15520 - 15524
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15525 - 15529
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15530 - 15534
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15535 - 15539
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15540 - 15544
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15545 - 15549
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15550 - 15554
+                "\u0000\u0000\u0000\uC8CF\u0000\u0000\u0000\uD2FE\u8EA2\uB0D2" + // 15555 - 15559
+                "\u0000\uD7CD\u0000\u0000\u0000\u0000\u0000\uDCDF\u8EA2\uBFA2" + // 15560 - 15564
+                "\u8EA2\uBFA3\u8EA2\uA2EC\u0000\u0000\u0000\u0000\u8EA2\uA5A2" + // 15565 - 15569
+                "\u8EA2\uA5A3\u8EA2\uA4FB\u0000\u0000\u0000\u0000\u0000\u0000" + // 15570 - 15574
+                "\u0000\u0000\u8EA2\uA5A1\u0000\uCBC2\u0000\u0000\u0000\uCBC3" + // 15575 - 15579
+                "\u8EA2\uA4FC\u8EA2\uA4FA\u8EA2\uA4F9\u8EA2\uA4FD\u0000\uCBC1" + // 15580 - 15584
+                "\u8EA2\uA4FE\u8EA2\uADAD\u0000\u0000\u0000\u0000\u0000\u0000" + // 15585 - 15589
+                "\u8EA2\uA8D6\u0000\uCFBF\u8EA2\uA8D5\u8EA2\uA8D7\u0000\u0000" + // 15590 - 15594
+                "\u0000\uCFBE\u8EA2\uA8DC\u0000\uCFC2\u8EA2\uA8D2\u8EA2\uA8E0" + // 15595 - 15599
+                "\u8EA2\uA8E6\u0000\uCFC9\u8EA2\uA8E3\u0000\uCFC6\u0000\u0000" + // 15600 - 15604
+                "\u8EA2\uA8D9\u8EA2\uA8DF\u8EA2\uA8E1\u0000\u0000\u8EA2\uA8D4" + // 15605 - 15609
+                "\u0000\uCFC5\u0000\uCFC0\u8EA2\uA8DA\u0000\uCFC7\u0000\uCFCA" + // 15610 - 15614
+                "\u0000\uCFC4\u0000\u0000\u0000\uCFBD\u8EA2\uA8DE\u8EA2\uA8D8" + // 15615 - 15619
+                "\u8EA2\uA8E5\u0000\uCFCC\u0000\uCFC8\u0000\uCFC3\u8EA2\uA8DD" + // 15620 - 15624
+                "\u0000\uD7F0\u8EA2\uA8DB\u0000\uCFC1\u0000\uCFCB\u0000\u0000" + // 15625 - 15629
+                "\u0000\uFCA3\u0000\u0000\u0000\uFCA2\u8EA2\uEFDD\u8EA2\uEFDE" + // 15630 - 15634
+                "\u0000\uFCF3\u8EA2\uF0DF\u0000\u0000\u0000\uFDB6\u0000\u0000" + // 15635 - 15639
+                "\u0000\uD3F4\u0000\uE2F9\u8EA2\uCFB2\u8EA2\uCFB1\u8EA2\uD5DE" + // 15640 - 15644
+                "\u8EA2\uD5DD\u0000\u0000\u0000\u0000\u0000\uF6A7\u8EA2\uE0CF" + // 15645 - 15649
+                "\u8EA2\uE0CE\u8EA2\uE4CF\u8EA2\uE4CD\u8EA2\uE4D0\u8EA2\uE4CE" + // 15650 - 15654
+                "\u0000\u0000\u0000\u0000\u0000\uF9C9\u8EA2\uE7EF\u8EA2\uE7F0" + // 15655 - 15659
+                "\u8EA2\uE7F1\u0000\u0000\u8EA2\uECDF\u0000\u0000\u8EA2\uEEC1" + // 15660 - 15664
+                "\u0000\u0000\u8EA2\uF0E0\u0000\u0000\u0000\u0000\u0000\u0000" + // 15665 - 15669
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD3F5" + // 15670 - 15674
+                "\u0000\u0000\u0000\u0000\u8EA2\uDBE3\u8EA2\uE0D0\u0000\u0000" + // 15675 - 15679
+                "\u0000\uD3F6\u0000\u0000\u0000\u0000\u0000\uEBE9\u0000\u0000" + // 15680 - 15684
+                "\u8EA2\uDBE4\u0000\uF7EB\u8EA2\uE4D1\u0000\uF9CA\u0000\u0000" + // 15685 - 15689
+                "\u8EA2\uEADA\u8EA2\uEADB\u0000\uFBC0\u8EA2\uC6CB\u0000\u0000" + // 15690 - 15694
+                "\u8EA2\uC6CC\u0000\u0000\u8EA2\uC6CA\u8EA2\uC6CD\u0000\u0000" + // 15695 - 15699
+                "\u0000\uE6AC\u0000\u0000\u8EA2\uC6C9\u0000\u0000\u0000\uEADB" + // 15700 - 15704
+                "\u0000\u0000\u0000\u0000\u8EA2\uD3B3\u8EA2\uD3AF\u8EA2\uD3B2" + // 15705 - 15709
+                "\u8EA2\uD3B4\u8EA2\uD3B1\u8EA2\uD3B0\u0000\u0000\u8EA2\uD9E1" + // 15710 - 15714
+                "\u8EA2\uD9E2\u8EA2\uD9E3\u0000\uF1FC\u0000\uF1FD\u8EA2\uDEDE" + // 15715 - 15719
+                "\u8EA2\uDEDD\u8EA2\uDEDF\u0000\u0000\u8EA2\uE2ED\u8EA2\uE2EC" + // 15720 - 15724
+                "\u0000\u0000\u8EA2\uE6CF\u0000\u0000\u8EA2\uE6D0\u8EA2\uE6CE" + // 15725 - 15729
+                "\u0000\u0000\u0000\uFAB0\u0000\u0000\u8EA2\uE9E2\u8EA2\uE9E3" + // 15730 - 15734
+                "\u0000\u0000\u8EA2\uEDF3\u8EA2\uEFBE\u8EA2\uF0C9\u0000\uC8E2" + // 15735 - 15739
+                "\u0000\uCBC0\u0000\u0000\u0000\uF5A9\u0000\uC8E3\u0000\u0000" + // 15740 - 15744
+                "\u8EA2\uB8DC\u8EA2\uBFC0\u0000\u0000\u0000\uFCEC\u8EA2\uA2EA" + // 15745 - 15749
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA2EB\u8EA2\uA2ED" + // 15750 - 15754
+                "\u0000\uC8E4\u8EA2\uA2EE\u0000\uD7EA\u8EA2\uB2B4\u0000\uDCEF" + // 15755 - 15759
+                "\u0000\u0000\u8EA2\uBFBC\u0000\uE6AB\u0000\u0000\u0000\uEAD8" + // 15760 - 15764
+                "\u0000\uF1FB\u0000\uF5A8\u0000\uF7AE\u8EA2\uE6CD\u0000\uC8DF" + // 15765 - 15769
+                "\u0000\uCFBC\u0000\u0000\u0000\u0000\u0000\uD7EB\u8EA2\uB8D6" + // 15770 - 15774
+                "\u0000\uE1D4\u0000\u0000\u0000\uEAD9\u8EA2\uCDB2\u8EA2\uD3AE" + // 15775 - 15779
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC8E0" + // 15780 - 15784
+                "\u0000\uE1D5\u8EA2\uC6C8\u0000\uEADA\u0000\uC8E1\u8EA2\uA8D1" + // 15785 - 15789
+                "\u8EA2\uADAC\u0000\uD3B4\u0000\u0000\u0000\u0000\u8EA2\uB2B6" + // 15790 - 15794
+                "\u0000\u0000\u0000\u0000\u0000\uD7EE\u0000\u0000\u0000\uD7EC" + // 15795 - 15799
+                "\u0000\uD7ED\u0000\uD7EF\u0000\u0000\u0000\u0000\u8EA2\uB2B5" + // 15800 - 15804
+                "\u0000\u0000\u0000\u0000\u8EA2\uB8DB\u8EA2\uB8D8\u8EA2\uB8DA" + // 15805 - 15809
+                "\u0000\uDCF0\u0000\uDCF2\u0000\uDCF1\u8EA2\uB8D7\u0000\uDCF3" + // 15810 - 15814
+                "\u8EA2\uB8D9\u0000\u0000\u8EA2\uBFBD\u8EA2\uBFBE\u0000\u0000" + // 15815 - 15819
+                "\u8EA2\uBFBF\u0000\uF5A2\u0000\u0000\u0000\uF5A1\u0000\uF4FD" + // 15820 - 15824
+                "\u8EA2\uDED6\u8EA2\uDED9\u0000\uF4FC\u8EA2\uDEDA\u0000\u0000" + // 15825 - 15829
+                "\u0000\uF5A5\u8EA2\uDED8\u0000\u0000\u8EA2\uDED7\u0000\uF7AC" + // 15830 - 15834
+                "\u0000\u0000\u0000\uF7AD\u8EA2\uE2EB\u8EA2\uE2E9\u8EA2\uE2EA" + // 15835 - 15839
+                "\u0000\u0000\u0000\u0000\u8EA2\uE6CC\u0000\u0000\u8EA2\uE6CB" + // 15840 - 15844
+                "\u0000\uF8E9\u8EA2\uE9E1\u0000\uFAAF\u8EA2\uE9E0\u0000\u0000" + // 15845 - 15849
+                "\u8EA2\uEBFE\u8EA2\uEDF2\u0000\uFBF0\u8EA2\uF1B2\u8EA2\uF1B3" + // 15850 - 15854
+                "\u0000\uFCC4\u0000\uC8DB\u0000\u0000\u0000\uCFBA\u8EA2\uBFB7" + // 15855 - 15859
+                "\u0000\uEAD6\u0000\uF5A7\u8EA2\uDEDC\u0000\uC8DC\u0000\u0000" + // 15860 - 15864
+                "\u0000\uD7E9\u0000\uD7E8\u8EA2\uBFB8\u0000\u0000\u0000\u0000" + // 15865 - 15869
+                "\u0000\u0000\u8EA2\uD9E0\u0000\uC8DD\u0000\uD3B3\u0000\u0000" + // 15870 - 15874
+                "\u0000\u0000\u8EA2\uBFB9\u8EA2\uBFBA\u8EA2\uBFBB\u0000\uEAD7" + // 15875 - 15879
+                "\u0000\uF1FA\u0000\uC8DE\u0000\u0000\u0000\uCFBB\u8EA2\uADAB" + // 15880 - 15884
+                "\u0000\uEAD0\u0000\u0000\u0000\uEAD5\u8EA2\uCDAD\u0000\u0000" + // 15885 - 15889
+                "\u0000\u0000\u8EA2\uCDAC\u8EA2\uCDAE\u0000\uEAD2\u8EA2\uCDAB" + // 15890 - 15894
+                "\u0000\uEAD3\u8EA2\uCDB1\u8EA2\uCDB0\u8EA2\uCDAF\u0000\u0000" + // 15895 - 15899
+                "\u0000\uEAD1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15900 - 15904
+                "\u0000\u0000\u8EA2\uD3AA\u0000\u0000\u8EA2\uD3AD\u0000\uEED1" + // 15905 - 15909
+                "\u8EA2\uD3AC\u0000\uEED0\u0000\uEECC\u0000\uEECD\u0000\uEECE" + // 15910 - 15914
+                "\u8EA2\uD3A9\u8EA2\uD3A8\u0000\uEECF\u0000\u0000\u8EA2\uD3AB" + // 15915 - 15919
+                "\u8EA2\uD3A7\u0000\u0000\u0000\u0000\u8EA2\uD9D5\u8EA2\uD9DF" + // 15920 - 15924
+                "\u0000\uF1F9\u0000\uF1F8\u0000\u0000\u8EA2\uD9D9\u8EA2\uD9DB" + // 15925 - 15929
+                "\u0000\u0000\u8EA2\uD9D6\u0000\u0000\u8EA2\uD9DA\u8EA2\uD9D4" + // 15930 - 15934
+                "\u8EA2\uD9DD\u0000\uF1F7\u8EA2\uD9DC\u8EA2\uD9D8\u0000\u0000" + // 15935 - 15939
+                "\u8EA2\uD9DE\u0000\u0000\u8EA2\uD9D7\u0000\uF4FE\u8EA2\uDED5" + // 15940 - 15944
+                "\u8EA2\uDEDB\u0000\uF5A4\u0000\uF5A6\u0000\uF5A3\u8EA2\uB2B3" + // 15945 - 15949
+                "\u8EA2\uB2B1\u0000\uD7DB\u0000\u0000\u0000\u0000\u0000\uD7DD" + // 15950 - 15954
+                "\u0000\uD7E0\u0000\u0000\u0000\uD7E3\u0000\u0000\u0000\uD7E5" + // 15955 - 15959
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15960 - 15964
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 15965 - 15969
+                "\u8EA2\uB8D2\u0000\uDCE9\u0000\u0000\u8EA2\uB8C9\u8EA2\uB8CB" + // 15970 - 15974
+                "\u0000\u0000\u8EA2\uB8CC\u0000\u0000\u8EA2\uB8D4\u8EA2\uB8D0" + // 15975 - 15979
+                "\u8EA2\uB8CE\u0000\u0000\u8EA2\uB8D1\u8EA2\uB8D5\u0000\uDCEA" + // 15980 - 15984
+                "\u0000\uDCEE\u8EA2\uB8CA\u0000\u0000\u8EA2\uB8D3\u0000\u0000" + // 15985 - 15989
+                "\u0000\uDCEC\u0000\u0000\u0000\uDCEB\u8EA2\uB8CF\u8EA2\uB8CD" + // 15990 - 15994
+                "\u0000\u0000\u0000\uDCE8\u0000\uDCED\u0000\u0000\u0000\u0000" + // 15995 - 15999
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16000 - 16004
+                "\u0000\u0000\u0000\uE1CE\u8EA2\uBFB6\u0000\u0000\u0000\u0000" + // 16005 - 16009
+                "\u8EA2\uBFB4\u0000\uE1D0\u0000\u0000\u0000\uD3E8\u0000\u0000" + // 16010 - 16014
+                "\u0000\uD3E9\u0000\u0000\u8EA2\uADDC\u0000\u0000\u8EA2\uADDE" + // 16015 - 16019
+                "\u8EA2\uADE0\u0000\u0000\u0000\uD3E6\u8EA2\uADDF\u0000\u0000" + // 16020 - 16024
+                "\u0000\u0000\u0000\uD3E7\u0000\u0000\u0000\u0000\u0000\u0000" + // 16025 - 16029
+                "\u0000\u0000\u0000\u0000\u8EA2\uB9F1\u8EA2\uADDB\u8EA2\uB3B6" + // 16030 - 16034
+                "\u8EA2\uB3BF\u8EA2\uB3BD\u8EA2\uB3B8\u8EA2\uB3B9\u8EA2\uB3BE" + // 16035 - 16039
+                "\u8EA2\uB3C0\u0000\uD8D6\u0000\u0000\u8EA2\uB3BB\u8EA2\uB3B7" + // 16040 - 16044
+                "\u0000\uD8D5\u0000\uD8D7\u8EA2\uB3BA\u8EA2\uB3C1\u8EA2\uB3BC" + // 16045 - 16049
+                "\u0000\u0000\u0000\u0000\u0000\uDDE5\u8EA2\uB9F4\u8EA2\uB9EC" + // 16050 - 16054
+                "\u8EA2\uB9F2\u8EA2\uB9F3\u0000\uDDE6\u0000\u0000\u8EA2\uB9EB" + // 16055 - 16059
+                "\u8EA2\uB9ED\u8EA2\uADD8\u8EA2\uB9EF\u8EA2\uB9F0\u8EA2\uB9EE" + // 16060 - 16064
+                "\u0000\uE2D3\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC0FB" + // 16065 - 16069
+                "\u8EA2\uDBA2\u8EA2\uC0FC\u8EA2\uC0F9\u0000\uDDE7\u0000\uE2D5" + // 16070 - 16074
+                "\u8EA2\uC0F8\u0000\uFAAE\u0000\uC8D2\u0000\u0000\u0000\uC8D3" + // 16075 - 16079
+                "\u0000\uD7D3\u0000\uCFAF\u0000\uD7D2\u8EA2\uACF2\u0000\u0000" + // 16080 - 16084
+                "\u0000\u0000\u0000\u0000\u0000\uE1C6\u0000\uC8D4\u0000\uD3A4" + // 16085 - 16089
+                "\u8EA2\uACF3\u8EA2\uACF4\u0000\uD3A3\u0000\uD3A5\u0000\uC8D5" + // 16090 - 16094
+                "\u0000\u0000\u8EA2\uACF5\u0000\uD7D5\u8EA2\uB2AA\u0000\uD7D7" + // 16095 - 16099
+                "\u0000\uD7D4\u0000\uD7D6\u0000\u0000\u8EA2\uB8C5\u0000\uDCE5" + // 16100 - 16104
+                "\u0000\u0000\u8EA2\uB8C4\u8EA2\uB8C3\u0000\u0000\u8EA2\uC6B8" + // 16105 - 16109
+                "\u0000\u0000\u0000\u0000\u8EA2\uCDA8\u0000\u0000\u0000\uEECB" + // 16110 - 16114
+                "\u0000\u0000\u0000\uF1F6\u8EA2\uD9D2\u8EA2\uD9D1\u0000\u0000" + // 16115 - 16119
+                "\u8EA2\uDED4\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEBFD" + // 16120 - 16124
+                "\u0000\u0000\u0000\u0000\u0000\uC8D6\u8EA2\uA4F3\u8EA2\uA8CA" + // 16125 - 16129
+                "\u0000\uD3A6\u8EA2\uACF6\u0000\u0000\u8EA2\uB2AC\u0000\u0000" + // 16130 - 16134
+                "\u0000\u0000\u0000\u0000\u0000\uD7D8\u8EA2\uB2AB\u0000\uD7D9" + // 16135 - 16139
+                "\u8EA2\uB2A9\u0000\uD7D1\u8EA2\uB2A8\u8EA2\uB2A7\u0000\u0000" + // 16140 - 16144
+                "\u0000\uD7D0\u0000\u0000\u8EA2\uB8C0\u0000\u0000\u8EA2\uB8C2" + // 16145 - 16149
+                "\u8EA2\uB8BB\u8EA2\uB8BC\u0000\uDCE2\u8EA2\uB8BD\u0000\uDCE3" + // 16150 - 16154
+                "\u8EA2\uB8C1\u8EA2\uB8BE\u8EA2\uB8BF\u0000\uDCE4\u0000\u0000" + // 16155 - 16159
+                "\u0000\uE1C4\u0000\uE1C5\u0000\u0000\u8EA2\uBFA9\u0000\u0000" + // 16160 - 16164
+                "\u0000\u0000\u0000\u0000\u8EA2\uC6B6\u8EA2\uC6B7\u0000\u0000" + // 16165 - 16169
+                "\u8EA2\uCDA7\u0000\uEACB\u0000\uEAC9\u0000\uEACA\u8EA2\uCDA4" + // 16170 - 16174
+                "\u8EA2\uCDA5\u0000\u0000\u8EA2\uCDA6\u8EA2\uD3A3\u0000\u0000" + // 16175 - 16179
+                "\u8EA2\uD3A4\u0000\uEECA\u8EA2\uD3A1\u8EA2\uD2FE\u8EA2\uD3A2" + // 16180 - 16184
+                "\u8EA2\uD2FD\u0000\uF1F5\u8EA2\uD9D0\u0000\uF1F3\u0000\uF1F4" + // 16185 - 16189
+                "\u8EA2\uDED3\u0000\uF4F5\u8EA2\uDED2\u8EA2\uE1B4\u0000\u0000" + // 16190 - 16194
+                "\u8EA2\uE2E6\u8EA2\uE2E7\u0000\uF7A8\u0000\u0000\u0000\uF7A9" + // 16195 - 16199
+                "\u0000\uF4F6\u8EA2\uE6C8\u8EA2\uE6C9\u8EA2\uE9DE\u8EA2\uE9DC" + // 16200 - 16204
+                "\u8EA2\uE9DB\u0000\uFAAC\u0000\u0000\u0000\u0000\u0000\u0000" + // 16205 - 16209
+                "\u8EA2\uEBF9\u8EA2\uEBF6\u8EA2\uEBF7\u0000\u0000\u8EA2\uEBF5" + // 16210 - 16214
+                "\u8EA2\uEBF8\u0000\uFAFD\u8EA2\uEBFA\u0000\u0000\u0000\uFAFC" + // 16215 - 16219
+                "\u0000\u0000\u8EA2\uEDEF\u0000\u0000\u0000\uFCC1\u0000\uFCC3" + // 16220 - 16224
+                "\u8EA2\uEFBD\u0000\uFCC2\u8EA2\uF0C7\u8EA2\uF1AF\u8EA2\uF1B1" + // 16225 - 16229
+                "\u8EA2\uF1AE\u8EA2\uF1B0\u0000\uFDB9\u0000\u0000\u0000\u0000" + // 16230 - 16234
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16235 - 16239
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16240 - 16244
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16245 - 16249
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16250 - 16254
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16255 - 16259
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16260 - 16264
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16265 - 16269
+                "\u0000\uDEA4\u8EA2\uC1D4\u8EA2\uC8F3\u0000\u0000\u0000\uE7ED" + // 16270 - 16274
+                "\u8EA2\uC8F1\u0000\u0000\u0000\u0000\u8EA2\uC8F2\u0000\u0000" + // 16275 - 16279
+                "\u0000\u0000\u0000\u0000\u8EA2\uCFCA\u8EA2\uCFCB\u0000\uEBFA" + // 16280 - 16284
+                "\u0000\uEBF8\u8EA2\uCFCC\u0000\uEBF9\u8EA2\uD6B3\u0000\u0000" + // 16285 - 16289
+                "\u8EA2\uD6B6\u8EA2\uD6B0\u8EA2\uD6B7\u8EA2\uD6AF\u8EA2\uD6B1" + // 16290 - 16294
+                "\u0000\u0000\u8EA2\uD6B2\u8EA2\uDEC5\u0000\uF4ED\u8EA2\uDEBF" + // 16295 - 16299
+                "\u0000\uF4E8\u8EA2\uDECC\u0000\uF4EC\u0000\uF4E5\u8EA2\uDEC6" + // 16300 - 16304
+                "\u0000\uF4F0\u8EA2\uDEC4\u0000\u0000\u0000\u0000\u8EA2\uDEC8" + // 16305 - 16309
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE2DA\u8EA2\uE2E0" + // 16310 - 16314
+                "\u0000\uF7A5\u8EA2\uE2E3\u0000\uF6FE\u0000\uF7A1\u8EA2\uE2DB" + // 16315 - 16319
+                "\u8EA2\uE2E2\u8EA2\uE2DD\u0000\uF7A6\u0000\uF7A3\u0000\u0000" + // 16320 - 16324
+                "\u8EA2\uE2D9\u0000\u0000\u0000\uF7A2\u8EA2\uE2DF\u8EA2\uE2E1" + // 16325 - 16329
+                "\u0000\uF7A4\u8EA2\uE2DE\u8EA2\uE2DC\u0000\u0000\u0000\u0000" + // 16330 - 16334
+                "\u0000\u0000\u0000\u0000\u8EA2\uE6C2\u0000\uF8E2\u0000\uF8E3" + // 16335 - 16339
+                "\u0000\uF8DF\u0000\u0000\u0000\uF8E0\u0000\u0000\u8EA2\uE6BE" + // 16340 - 16344
+                "\u8EA2\uE6BC\u0000\u0000\u8EA2\uE6C0\u0000\uF8E4\u8EA2\uE6C1" + // 16345 - 16349
+                "\u8EA2\uE6BA\u8EA2\uE6B9\u8EA2\uE6BD\u8EA2\uE6BB\u0000\uF8E1" + // 16350 - 16354
+                "\u8EA2\uE6BF\u8EA2\uE9D9\u0000\uFAAB\u0000\uFAAA\u8EA2\uE9DA" + // 16355 - 16359
+                "\u0000\u0000\u0000\uE7B8\u0000\uE7AD\u0000\u0000\u8EA2\uC8A7" + // 16360 - 16364
+                "\u0000\u0000\u0000\u0000\u0000\uE7B2\u0000\u0000\u8EA2\uC8A8" + // 16365 - 16369
+                "\u0000\uE7AB\u0000\uE7AA\u0000\u0000\u0000\uE7B5\u0000\uE7B4" + // 16370 - 16374
+                "\u0000\uE7B3\u0000\uE7B1\u0000\uE7B6\u8EA2\uC8A5\u0000\uE7AC" + // 16375 - 16379
+                "\u0000\uE7AE\u0000\uE7B0\u0000\u0000\u0000\u0000\u0000\uEBC0" + // 16380 - 16384
+                "\u0000\uEBC3\u0000\u0000\u0000\uEBC7\u0000\uEBC1\u0000\uEBC6" + // 16385 - 16389
+                "\u0000\uEBC4\u0000\u0000\u0000\uEBBF\u0000\u0000\u0000\uEBC5" + // 16390 - 16394
+                "\u0000\uEBC2\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD4FA" + // 16395 - 16399
+                "\u0000\uEFCD\u0000\uEFCB\u0000\u0000\u8EA2\uD4FB\u0000\u0000" + // 16400 - 16404
+                "\u0000\uEFCE\u0000\uEFCC\u8EA2\uD4F9\u8EA2\uD4F8\u0000\u0000" + // 16405 - 16409
+                "\u0000\uF2DA\u8EA2\uD4F7\u0000\uF2D8\u0000\uF2D7\u8EA2\uDAFC" + // 16410 - 16414
+                "\u0000\uEFCF\u0000\uF2D9\u8EA2\uDAFD\u0000\uF2DC\u8EA2\uDAFE" + // 16415 - 16419
+                "\u0000\uF2DB\u0000\uF5E3\u8EA2\uDFEF\u0000\uF5E2\u8EA2\uCCEF" + // 16420 - 16424
+                "\u8EA2\uCCEE\u8EA2\uCCEB\u0000\u0000\u8EA2\uCCF3\u8EA2\uCCF0" + // 16425 - 16429
+                "\u8EA2\uCCF4\u0000\uEAC6\u0000\u0000\u8EA2\uCDA2\u0000\uEABB" + // 16430 - 16434
+                "\u8EA2\uCCF5\u8EA2\uCCF6\u0000\u0000\u8EA2\uCCF2\u0000\u0000" + // 16435 - 16439
+                "\u0000\u0000\u0000\u0000\u0000\uEAC5\u0000\u0000\u0000\u0000" + // 16440 - 16444
+                "\u0000\u0000\u0000\u0000\u8EA2\uD2EF\u0000\uEEBB\u0000\uEEC4" + // 16445 - 16449
+                "\u0000\uEEC0\u8EA2\uD2EC\u0000\u0000\u0000\uEEBD\u0000\uEEC1" + // 16450 - 16454
+                "\u8EA2\uD2F8\u0000\uEEB7\u8EA2\uD2F0\u0000\u0000\u0000\uEEBF" + // 16455 - 16459
+                "\u0000\u0000\u0000\u0000\u8EA2\uD2F3\u8EA2\uD2EE\u0000\uEEBE" + // 16460 - 16464
+                "\u0000\uEEC2\u8EA2\uD2ED\u0000\u0000\u0000\uEEBC\u0000\u0000" + // 16465 - 16469
+                "\u8EA2\uD2F7\u0000\uEEB9\u8EA2\uD2F6\u8EA2\uD2F5\u0000\uEEC5" + // 16470 - 16474
+                "\u8EA2\uD0BB\u0000\uEEB8\u0000\u0000\u8EA2\uD2F4\u8EA2\uD2EB" + // 16475 - 16479
+                "\u0000\u0000\u0000\uEEC6\u8EA2\uD2F2\u0000\uEEBA\u0000\u0000" + // 16480 - 16484
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1BA\u8EAD\uA1BB" + // 16485 - 16489
+                "\u0000\u0000\u0000\u0000\u8EAD\uA1B8\u8EAD\uA1B9\u0000\u0000" + // 16490 - 16494
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16495 - 16499
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16500 - 16504
+                "\u0000\u0000\u0000\u0000\u0000\uA2D3\u0000\u0000\u0000\u0000" + // 16505 - 16509
+                "\u0000\u0000\u0000\uA2D4\u0000\u0000\u0000\u0000\u0000\u0000" + // 16510 - 16514
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16515 - 16519
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2C7\u0000\u0000" + // 16520 - 16524
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16525 - 16529
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16530 - 16534
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16535 - 16539
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16540 - 16544
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA2CA" + // 16545 - 16549
+                "\u8EA2\uC5FE\u0000\uE5F1\u0000\u0000\u8EA2\uC6A7\u8EA2\uC6AB" + // 16550 - 16554
+                "\u8EA2\uC6A3\u8EA2\uC5FD\u0000\u0000\u8EA2\uC5FC\u0000\u0000" + // 16555 - 16559
+                "\u0000\u0000\u0000\u0000\u8EA2\uC6A9\u8EA2\uC6A1\u8EA2\uC6A5" + // 16560 - 16564
+                "\u0000\uE5F2\u0000\u0000\u0000\uE5F0\u8EA2\uC6AD\u0000\uE5EE" + // 16565 - 16569
+                "\u8EA2\uC6AA\u0000\u0000\u8EA2\uCCF9\u0000\u0000\u0000\u0000" + // 16570 - 16574
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEAB7\u8EA2\uCCF1" + // 16575 - 16579
+                "\u0000\uEEC3\u8EA2\uCCFB\u0000\uEABA\u8EA2\uCDA1\u0000\uEAC0" + // 16580 - 16584
+                "\u8EA2\uCCEC\u0000\u0000\u0000\u0000\u8EA2\uCCFC\u8EA2\uCCE9" + // 16585 - 16589
+                "\u0000\u0000\u8EA2\uCCFE\u8EA2\uCCED\u0000\u0000\u0000\uEAC7" + // 16590 - 16594
+                "\u0000\uEAC4\u8EA2\uCCFD\u8EA2\uCCF7\u0000\uEAB6\u0000\uEABE" + // 16595 - 16599
+                "\u0000\uEABD\u0000\u0000\u0000\uEABC\u0000\uEAC2\u0000\u0000" + // 16600 - 16604
+                "\u8EA2\uCCEA\u0000\uEAC3\u8EA2\uCCF8\u0000\uEABF\u0000\uEAB5" + // 16605 - 16609
+                "\u8EA2\uCCFA\u0000\uEAB8\u0000\uEAB9\u0000\uEAC1\u0000\uDCD7" + // 16610 - 16614
+                "\u8EA2\uB8AF\u0000\uDCDC\u0000\uDCD2\u0000\uDCDA\u8EA2\uB8AC" + // 16615 - 16619
+                "\u0000\uDCD1\u8EA2\uB8B0\u0000\u0000\u0000\u0000\u8EA2\uB8B3" + // 16620 - 16624
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBFA1\u8EA2\uBEF6" + // 16625 - 16629
+                "\u0000\uE1B8\u8EA2\uBEFD\u8EA2\uBEFA\u8EA2\uBEF2\u8EA2\uBEFB" + // 16630 - 16634
+                "\u0000\uE1BA\u8EA2\uBEF3\u0000\u0000\u8EA2\uBEEF\u0000\u0000" + // 16635 - 16639
+                "\u0000\u0000\u0000\uE5F3\u8EA2\uBEF8\u0000\u0000\u0000\uE1B7" + // 16640 - 16644
+                "\u8EA2\uBEFE\u0000\u0000\u0000\uE1BE\u0000\uE1C0\u8EA2\uBEF1" + // 16645 - 16649
+                "\u0000\u0000\u0000\u0000\u0000\uE1BF\u8EA2\uBEF4\u0000\uE1B9" + // 16650 - 16654
+                "\u8EA2\uBEFC\u8EA2\uBEF5\u8EA2\uBEF9\u0000\u0000\u8EA2\uBEF7" + // 16655 - 16659
+                "\u0000\uE1BC\u8EA2\uBEF0\u0000\uE1C1\u0000\uDCD3\u0000\uE1BD" + // 16660 - 16664
+                "\u0000\uE1C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16665 - 16669
+                "\u0000\u0000\u0000\uE5EF\u8EA2\uC6A4\u8EA2\uC6A6\u8EA2\uC6A8" + // 16670 - 16674
+                "\u8EA2\uC6AC\u0000\u0000\u8EA2\uC6A2\u0000\uD2F9\u8EA2\uACED" + // 16675 - 16679
+                "\u0000\uD2F7\u8EA2\uACEB\u0000\uD2FC\u0000\uD2F8\u0000\uD2FD" + // 16680 - 16684
+                "\u0000\uD2FB\u8EA2\uACEC\u0000\uD2FA\u0000\uD7C2\u0000\uD7C1" + // 16685 - 16689
+                "\u8EA2\uB1FC\u0000\uD7CA\u8EA2\uB1F5\u8EA2\uB1FB\u0000\uD7C6" + // 16690 - 16694
+                "\u8EA2\uB1F4\u8EA2\uB1FA\u8EA2\uB1F8\u0000\uD7C5\u0000\uD7C7" + // 16695 - 16699
+                "\u8EA2\uB1F7\u0000\uD7C0\u8EA2\uB1F6\u0000\uD7CB\u0000\uD7C8" + // 16700 - 16704
+                "\u0000\uD7CC\u0000\uD7C9\u8EA2\uB1F3\u8EA2\uB1F2\u8EA2\uB1F9" + // 16705 - 16709
+                "\u0000\uD7C3\u0000\uD7BF\u0000\uD7C4\u0000\u0000\u0000\u0000" + // 16710 - 16714
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB8B5\u8EA2\uB8AE" + // 16715 - 16719
+                "\u0000\u0000\u0000\uE1BB\u8EA2\uB8AD\u0000\u0000\u0000\uDCD4" + // 16720 - 16724
+                "\u0000\uDCDB\u0000\uDCD8\u0000\uDCDE\u0000\uDCDD\u0000\uDCD9" + // 16725 - 16729
+                "\u0000\u0000\u8EA2\uB8A7\u8EA2\uB8AA\u0000\u0000\u8EA2\uB8A9" + // 16730 - 16734
+                "\u0000\uDCD5\u8EA2\uB8AB\u8EA2\uB8B4\u0000\uDCD6\u8EA2\uB8A8" + // 16735 - 16739
+                "\u8EA2\uB8B1\u8EA2\uB8B2\u8EA2\uACE9\u8EA2\uACEA\u0000\u0000" + // 16740 - 16744
+                "\u0000\u0000\u8EA2\uB1EB\u8EA2\uB1F1\u0000\u0000\u0000\u0000" + // 16745 - 16749
+                "\u8EA2\uB1EF\u0000\uD7BE\u8EA2\uB1ED\u0000\u0000\u8EA2\uB1EE" + // 16750 - 16754
+                "\u8EA2\uB1F0\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB1EC" + // 16755 - 16759
+                "\u0000\uDCCE\u0000\u0000\u8EA2\uB8A3\u0000\uDCD0\u8EA2\uB8A5" + // 16760 - 16764
+                "\u0000\uDCCF\u8EA2\uB8A4\u0000\u0000\u0000\u0000\u0000\u0000" + // 16765 - 16769
+                "\u0000\u0000\u0000\u0000\u8EA2\uBEEC\u0000\uE1B5\u0000\u0000" + // 16770 - 16774
+                "\u8EA2\uBEEE\u8EA2\uBEEB\u8EA2\uB8A6\u0000\u0000\u0000\uE1B6" + // 16775 - 16779
+                "\u0000\u0000\u0000\u0000\u8EA2\uBEED\u0000\u0000\u0000\u0000" + // 16780 - 16784
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC5FB" + // 16785 - 16789
+                "\u0000\u0000\u0000\uE5EB\u8EA2\uC5F9\u0000\uE5EC\u8EA2\uC5FA" + // 16790 - 16794
+                "\u0000\uE5ED\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEAB2" + // 16795 - 16799
+                "\u8EA2\uCCE8\u8EA2\uCCE5\u8EA2\uCCE7\u0000\uEAB3\u0000\uEAB4" + // 16800 - 16804
+                "\u8EA2\uCCE6\u0000\uF8DE\u0000\u0000\u0000\u0000\u0000\uFAA5" + // 16805 - 16809
+                "\u0000\u0000\u8EA2\uE9D7\u0000\u0000\u8EA2\uE9D6\u8EA2\uE9D4" + // 16810 - 16814
+                "\u8EA2\uE9D3\u8EA2\uE9D5\u0000\u0000\u0000\uFAA4\u0000\uFAA6" + // 16815 - 16819
+                "\u0000\u0000\u0000\u0000\u0000\uFAFB\u0000\u0000\u0000\u0000" + // 16820 - 16824
+                "\u8EA2\uEBF3\u8EA2\uEBF2\u0000\u0000\u0000\u0000\u8EA2\uEDE8" + // 16825 - 16829
+                "\u0000\u0000\u8EA2\uEDEA\u8EA2\uEDEC\u8EA2\uEDEB\u8EA2\uEDE9" + // 16830 - 16834
+                "\u0000\u0000\u0000\u0000\u0000\uFBED\u0000\uFBEC\u0000\u0000" + // 16835 - 16839
+                "\u0000\u0000\u0000\uFCBF\u0000\uFCBE\u0000\uFCC0\u8EA2\uEFBC" + // 16840 - 16844
+                "\u8EA2\uEFBB\u0000\u0000\u8EA2\uF1AB\u8EA2\uF0C6\u8EA2\uF1AC" + // 16845 - 16849
+                "\u0000\uFDA5\u0000\u0000\u0000\uFDA6\u8EA2\uF1DC\u0000\u0000" + // 16850 - 16854
+                "\u0000\u0000\u0000\uFDCB\u0000\uC8CD\u0000\u0000\u8EA2\uA8C8" + // 16855 - 16859
+                "\u0000\u0000\u0000\u0000\u8EA2\uACE6\u8EA2\uACE7\u8EA2\uACE5" + // 16860 - 16864
+                "\u0000\u0000\u0000\u0000\u0000\uD2F6\u0000\u0000\u8EA2\uACE8" + // 16865 - 16869
+                "\u8EA2\uDEAA\u8EA2\uDEB4\u8EA2\uDEB1\u8EA2\uDEB3\u0000\u0000" + // 16870 - 16874
+                "\u8EA2\uDEA7\u8EA2\uDEB7\u0000\uF4D6\u0000\u0000\u8EA2\uDEB2" + // 16875 - 16879
+                "\u8EA2\uDEBB\u8EA2\uDEAF\u0000\uF4DA\u0000\uF4D7\u8EA2\uDEAD" + // 16880 - 16884
+                "\u8EA2\uDEA8\u8EA2\uDEBA\u0000\uF1DF\u0000\u0000\u0000\u0000" + // 16885 - 16889
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 16890 - 16894
+                "\u8EA2\uE2CF\u0000\u0000\u0000\u0000\u8EA2\uE2CD\u8EA2\uE2D3" + // 16895 - 16899
+                "\u0000\uF6FA\u8EA2\uE2D1\u8EA2\uE2D0\u0000\uF6FC\u8EA2\uE2D6" + // 16900 - 16904
+                "\u0000\uF6FB\u0000\u0000\u8EA2\uE2D7\u8EA2\uE2D4\u0000\uF6F8" + // 16905 - 16909
+                "\u8EA2\uE2D5\u8EA2\uE2CE\u0000\uF6F9\u0000\uF6F7\u8EA2\uE6B5" + // 16910 - 16914
+                "\u8EA2\uE2D2\u0000\u0000\u0000\u0000\u8EA2\uE2D8\u0000\u0000" + // 16915 - 16919
+                "\u0000\u0000\u8EA2\uE6B2\u0000\u0000\u0000\u0000\u0000\u0000" + // 16920 - 16924
+                "\u0000\uF8DD\u0000\uF8DB\u8EA2\uE6B4\u0000\u0000\u8EA2\uE6B6" + // 16925 - 16929
+                "\u8EA2\uE6B3\u0000\uF8DC\u0000\uF8D9\u0000\uF8DA\u0000\uE5E7" + // 16930 - 16934
+                "\u0000\uEEB3\u0000\u0000\u0000\u0000\u0000\uEEAF\u0000\u0000" + // 16935 - 16939
+                "\u0000\uEEB1\u0000\uEEB2\u0000\u0000\u0000\uF1E0\u8EA2\uD2E5" + // 16940 - 16944
+                "\u8EA2\uD2DF\u0000\uEEB5\u0000\u0000\u8EA2\uD2E2\u0000\u0000" + // 16945 - 16949
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD9AC" + // 16950 - 16954
+                "\u8EA2\uD9A7\u0000\u0000\u0000\u0000\u8EA2\uD9B1\u0000\uF1DE" + // 16955 - 16959
+                "\u8EA2\uD9A9\u0000\uF1E2\u8EA2\uD9AF\u8EA2\uD9A6\u8EA2\uD9A3" + // 16960 - 16964
+                "\u8EA2\uD9B2\u0000\uF4DB\u0000\uF1E3\u8EA2\uD9AE\u8EA2\uD9A4" + // 16965 - 16969
+                "\u0000\uF1E1\u8EA2\uD9A8\u0000\uF1E5\u8EA2\uD9A5\u8EA2\uD9AA" + // 16970 - 16974
+                "\u0000\uF1E4\u8EA2\uD9AD\u8EA2\uD9B0\u0000\u0000\u0000\u0000" + // 16975 - 16979
+                "\u0000\u0000\u0000\u0000\u8EA2\uDEB8\u8EA2\uDEB9\u8EA2\uDEA9" + // 16980 - 16984
+                "\u8EA2\uDEB0\u8EA2\uDEAE\u0000\u0000\u0000\u0000\u0000\uF4D9" + // 16985 - 16989
+                "\u8EA2\uDEB5\u8EA2\uD9AB\u0000\u0000\u8EA2\uDEAC\u0000\u0000" + // 16990 - 16994
+                "\u8EA2\uDEB6\u0000\uF4D8\u8EA2\uDEAB\u8EA2\uBEE8\u0000\u0000" + // 16995 - 16999
+                "\u0000\u0000\u0000\u0000\u8EA2\uBEE4\u8EA2\uBEEA\u0000\uE1AD" + // 17000 - 17004
+                "\u8EA2\uBEE3\u8EA2\uBEE5\u0000\uE1AB\u8EA2\uBEE2\u0000\uE1B2" + // 17005 - 17009
+                "\u8EA2\uBEE6\u0000\uE1B1\u8EA2\uBEE7\u0000\uE1B3\u0000\uE1AE" + // 17010 - 17014
+                "\u0000\uE1B4\u0000\uE1AF\u0000\u0000\u0000\uE1B0\u0000\u0000" + // 17015 - 17019
+                "\u0000\uE1AC\u0000\u0000\u8EA2\uBEE9\u0000\u0000\u0000\u0000" + // 17020 - 17024
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17025 - 17029
+                "\u0000\uE5E8\u8EA2\uC5F5\u0000\u0000\u8EA2\uC5F8\u8EA2\uC5EC" + // 17030 - 17034
+                "\u8EA2\uC5F1\u8EA2\uC5EB\u0000\uE5EA\u0000\u0000\u8EA2\uC5EF" + // 17035 - 17039
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC5ED\u0000\uE5E9" + // 17040 - 17044
+                "\u0000\u0000\u8EA2\uC5F4\u8EA2\uC5F3\u8EA2\uC5F0\u8EA2\uC5F2" + // 17045 - 17049
+                "\u8EA2\uC5EE\u0000\uEAAA\u8EA2\uC5F7\u0000\uE5E6\u8EA2\uC5F6" + // 17050 - 17054
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17055 - 17059
+                "\u0000\u0000\u0000\u0000\u0000\uC5FD\u0000\uC5FE\u0000\u0000" + // 17060 - 17064
+                "\u0000\uC7CA\u8EA2\uA3B3\u8EA2\uA5D6\u8EA2\uA5D7\u0000\u0000" + // 17065 - 17069
+                "\u0000\uD0B1\u8EA2\uAEB1\u0000\uD9B1\u0000\uD9B0\u8EA2\uBAC7" + // 17070 - 17074
+                "\u8EA2\uBAC6\u0000\u0000\u0000\u0000\u0000\uC4B1\u0000\uC5A7" + // 17075 - 17079
+                "\u0000\uC6A1\u0000\u0000\u0000\uD9B2\u8EA2\uA1A4\u0000\u0000" + // 17080 - 17084
+                "\u8EA2\uA1CD\u0000\uC6A2\u0000\u0000\u8EA2\uA2A2\u0000\uC7CC" + // 17085 - 17089
+                "\u0000\uC7CB\u8EA2\uA2A1\u0000\uC9BA\u0000\u0000\u0000\u0000" + // 17090 - 17094
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD4CD" + // 17095 - 17099
+                "\u0000\u0000\u0000\u0000\u8EA2\uB3F2\u0000\u0000\u0000\uE3BE" + // 17100 - 17104
+                "\u8EA2\uC9AC\u0000\uE8A4\u0000\u0000\u0000\u0000\u8EA2\uD6C5" + // 17105 - 17109
+                "\u0000\u0000\u0000\u0000\u8EA2\uE8EA\u0000\uA7B7\u0000\uC5A8" + // 17110 - 17114
+                "\u0000\u0000\u0000\u0000\u8EA2\uA5D8\u8EA2\uA9B6\u0000\uD9B5" + // 17115 - 17119
+                "\u0000\uD9B3\u8EA2\uACE3\u8EA2\uACE4\u0000\u0000\u0000\u0000" + // 17120 - 17124
+                "\u8EA2\uB1E2\u8EA2\uB1E4\u0000\uD7BC\u0000\u0000\u8EA2\uB1E6" + // 17125 - 17129
+                "\u8EA2\uB1E9\u8EA2\uB1E7\u0000\u0000\u0000\u0000\u0000\u0000" + // 17130 - 17134
+                "\u8EA2\uB1E8\u8EA2\uB1E5\u8EA2\uB1E1\u0000\uD7BD\u8EA2\uB1EA" + // 17135 - 17139
+                "\u8EA2\uB1E3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17140 - 17144
+                "\u8EA2\uB7F6\u0000\uDCCB\u8EA2\uB8A1\u0000\uDCC8\u0000\u0000" + // 17145 - 17149
+                "\u8EA2\uB7F8\u0000\uDCCC\u0000\u0000\u0000\uDCC6\u0000\u0000" + // 17150 - 17154
+                "\u8EA2\uB7F3\u8EA2\uB8A2\u8EA2\uB7F4\u8EA2\uB7F1\u0000\uDCCA" + // 17155 - 17159
+                "\u0000\u0000\u0000\uDCC7\u0000\u0000\u8EA2\uB7F7\u8EA2\uB7FA" + // 17160 - 17164
+                "\u0000\uDCC9\u8EA2\uB7FB\u0000\uDCCD\u8EA2\uB7FC\u8EA2\uB7F2" + // 17165 - 17169
+                "\u8EA2\uB7F9\u8EA2\uB7FD\u8EA2\uB7F5\u8EA2\uB7F0\u8EA2\uB7EE" + // 17170 - 17174
+                "\u0000\u0000\u0000\u0000\u8EA2\uB7FE\u0000\u0000\u0000\u0000" + // 17175 - 17179
+                "\u8EA2\uB7EF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17180 - 17184
+                "\u8EA2\uBFAF\u8EA2\uC6C6\u0000\u0000\u0000\uE1CF\u8EA2\uBFB3" + // 17185 - 17189
+                "\u0000\u0000\u0000\u0000\u8EA2\uBFB0\u0000\uE1CB\u0000\uE1D1" + // 17190 - 17194
+                "\u8EA2\uBFB5\u0000\uE1CD\u8EA2\uBFB2\u0000\uEACF\u0000\uE1CC" + // 17195 - 17199
+                "\u8EA2\uBFB1\u0000\uE1D2\u0000\uE1CA\u0000\uE1C9\u0000\u0000" + // 17200 - 17204
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC6BE" + // 17205 - 17209
+                "\u8EA2\uC6BC\u0000\u0000\u8EA2\uC6C2\u0000\u0000\u8EA2\uC6BA" + // 17210 - 17214
+                "\u8EA2\uC6C7\u8EA2\uC6BF\u0000\u0000\u8EA2\uC6B9\u0000\uE6A4" + // 17215 - 17219
+                "\u0000\uE6AA\u8EA2\uC6C4\u0000\u0000\u8EA2\uC6BD\u0000\u0000" + // 17220 - 17224
+                "\u0000\uE6A7\u0000\u0000\u0000\u0000\u0000\uE6A5\u8EA2\uC6C5" + // 17225 - 17229
+                "\u0000\uE6A2\u0000\uE6A1\u8EA2\uC6C0\u0000\uE6A6\u0000\uE1D3" + // 17230 - 17234
+                "\u0000\u0000\u8EA2\uC6C3\u8EA2\uC6BB\u0000\uE6A3\u0000\uE6A8" + // 17235 - 17239
+                "\u0000\uE6A9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17240 - 17244
+                "\u0000\uEAD4\u8EA2\uDEA5\u8EA2\uDEA6\u0000\u0000\u0000\u0000" + // 17245 - 17249
+                "\u0000\uF6F5\u0000\uF6F6\u0000\u0000\u0000\uFAA2\u0000\u0000" + // 17250 - 17254
+                "\u0000\u0000\u0000\uFCBD\u0000\uC7A1\u0000\u0000\u0000\u0000" + // 17255 - 17259
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uACE2\u0000\u0000" + // 17260 - 17264
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17265 - 17269
+                "\u8EA2\uB1E0\u0000\uD7BB\u0000\u0000\u0000\u0000\u0000\u0000" + // 17270 - 17274
+                "\u0000\u0000\u0000\u0000\u0000\uDDFE\u0000\uDDFD\u0000\u0000" + // 17275 - 17279
+                "\u0000\u0000\u0000\uE1AA\u8EA2\uBEE1\u0000\uE1A9\u8EA2\uBEE0" + // 17280 - 17284
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC5EA" + // 17285 - 17289
+                "\u0000\u0000\u0000\uEAA5\u8EA2\uCCD4\u0000\uEAA6\u0000\u0000" + // 17290 - 17294
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17295 - 17299
+                "\u0000\uFAA3\u8EA2\uE9D2\u0000\u0000\u0000\uC8CC\u0000\uCFAA" + // 17300 - 17304
+                "\u8EA2\uA8C7\u0000\u0000\u0000\uD2F5\u0000\u0000\u0000\uD2F4" + // 17305 - 17309
+                "\u8EA2\uACE0\u0000\uD2F3\u0000\u0000\u0000\u0000\u0000\uD7B9" + // 17310 - 17314
+                "\u8EA2\uB1DB\u8EA2\uB1D9\u8EA2\uB1DF\u0000\uD7BA\u8EA2\uB1DA" + // 17315 - 17319
+                "\u8EA2\uB1DE\u8EA2\uB1DC\u8EA2\uB1DD\u0000\u0000\u0000\u0000" + // 17320 - 17324
+                "\u8EA2\uB7EB\u8EA2\uB7ED\u0000\u0000\u0000\uDCC4\u0000\u0000" + // 17325 - 17329
+                "\u8EA2\uB7EC\u0000\uDCC5\u0000\uE1A8\u0000\uE1A7\u0000\uE1A6" + // 17330 - 17334
+                "\u8EA2\uBEDF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17335 - 17339
+                "\u8EA2\uC5E9\u0000\uE5E4\u0000\uE5E5\u0000\u0000\u8EA2\uC5E8" + // 17340 - 17344
+                "\u8EA2\uC5E7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17345 - 17349
+                "\u8EA2\uCCD1\u0000\uEAA4\u0000\uEAA3\u8EA2\uCCD2\u8EA2\uCCD3" + // 17350 - 17354
+                "\u0000\u0000\u0000\uEEAC\u0000\uEEAB\u0000\u0000\u8EA2\uD9A1" + // 17355 - 17359
+                "\u8EA2\uD2DB\u8EA2\uD2DD\u8EA2\uD2DC\u8EA2\uD8FE\u8EA2\uD8FC" + // 17360 - 17364
+                "\u8EA2\uD9A2\u8EA2\uD8FD\u0000\u0000\u0000\uF1DD\u0000\u0000" + // 17365 - 17369
+                "\u0000\u0000\u0000\u0000\u8EA2\uDEA4\u0000\uF4D5\u0000\uEEA7" + // 17370 - 17374
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD8F9\u0000\u0000" + // 17375 - 17379
+                "\u0000\uF1DA\u8EA2\uD8FB\u8EA2\uD8FA\u0000\u0000\u8EA2\uCCCC" + // 17380 - 17384
+                "\u0000\uF1DC\u0000\uF1DB\u0000\uF1D8\u0000\uF1D9\u0000\u0000" + // 17385 - 17389
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDEA2" + // 17390 - 17394
+                "\u0000\u0000\u8EA2\uDDFE\u0000\uF4D4\u8EA2\uDEA1\u0000\u0000" + // 17395 - 17399
+                "\u8EA2\uDEA3\u8EA2\uDDFD\u8EA2\uDDFC\u0000\u0000\u0000\u0000" + // 17400 - 17404
+                "\u8EA2\uE2CC\u0000\uF6F4\u0000\uF6F2\u0000\uF6F3\u0000\u0000" + // 17405 - 17409
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE6B0\u8EA2\uE6B1" + // 17410 - 17414
+                "\u0000\uF8D8\u0000\u0000\u0000\uF8D7\u8EA2\uE9D0\u8EA2\uE9D1" + // 17415 - 17419
+                "\u8EA2\uE9CF\u0000\u0000\u8EA2\uEDE6\u8EA2\uEDE7\u0000\u0000" + // 17420 - 17424
+                "\u0000\u0000\u0000\uC6FE\u8EA2\uA2E8\u0000\uCBB6\u0000\u0000" + // 17425 - 17429
+                "\u8EA2\uA8C5\u0000\uCFA9\u0000\uCFA8\u8EA2\uA8C6\u0000\u0000" + // 17430 - 17434
+                "\u0000\u0000\u8EA2\uACE1\u0000\uD2F2\u0000\uE1A5\u0000\u0000" + // 17435 - 17439
+                "\u8EA2\uBEDA\u8EA2\uBEDC\u8EA2\uBEDE\u0000\uE1A4\u0000\u0000" + // 17440 - 17444
+                "\u0000\u0000\u0000\uE1A2\u0000\u0000\u8EA2\uBEDB\u0000\uE1A3" + // 17445 - 17449
+                "\u8EA2\uBEDD\u0000\uE1A1\u0000\u0000\u0000\u0000\u8EA2\uC5E6" + // 17450 - 17454
+                "\u8EA2\uC5DD\u8EA2\uC5E0\u8EA2\uC5E4\u0000\uE5E1\u8EA2\uC5E2" + // 17455 - 17459
+                "\u0000\u0000\u8EA2\uC5E1\u8EA2\uC5DE\u8EA2\uC5DF\u0000\uE5DF" + // 17460 - 17464
+                "\u8EA2\uC5E5\u0000\uE5DE\u0000\u0000\u0000\uE5E3\u0000\uE5E2" + // 17465 - 17469
+                "\u0000\uE5E0\u0000\u0000\u8EA2\uC5E3\u0000\u0000\u0000\u0000" + // 17470 - 17474
+                "\u0000\u0000\u8EA2\uCCD0\u0000\u0000\u8EA2\uCCCF\u0000\u0000" + // 17475 - 17479
+                "\u0000\u0000\u8EA2\uCCCB\u0000\u0000\u0000\u0000\u0000\uEAA1" + // 17480 - 17484
+                "\u8EA2\uCCCE\u8EA2\uCCCD\u0000\uEAA2\u0000\u0000\u0000\u0000" + // 17485 - 17489
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEEA9\u0000\u0000" + // 17490 - 17494
+                "\u8EA2\uD2DA\u0000\u0000\u0000\uEEAA\u0000\uEEA6\u0000\uEEA8" + // 17495 - 17499
+                "\u0000\u0000\u0000\uEEA5\u0000\uCBB4\u0000\uCBB3\u0000\u0000" + // 17500 - 17504
+                "\u0000\u0000\u0000\u0000\u8EA2\uA8C4\u0000\u0000\u0000\u0000" + // 17505 - 17509
+                "\u0000\uCFA7\u0000\uCFA6\u0000\u0000\u0000\uD2F1\u0000\u0000" + // 17510 - 17514
+                "\u8EA2\uACDC\u8EA2\uACDF\u8EA2\uACDD\u0000\u0000\u0000\uD2EF" + // 17515 - 17519
+                "\u0000\uD2F0\u0000\u0000\u0000\u0000\u8EA2\uACDB\u8EA2\uACDE" + // 17520 - 17524
+                "\u0000\u0000\u0000\uD7B8\u0000\u0000\u0000\u0000\u0000\u0000" + // 17525 - 17529
+                "\u8EA2\uB1D6\u8EA2\uB1D8\u8EA2\uB1D7\u0000\uD7B5\u8EA2\uB1D2" + // 17530 - 17534
+                "\u0000\u0000\u0000\u0000\u0000\uD7B3\u0000\uD7B2\u0000\u0000" + // 17535 - 17539
+                "\u0000\uD7B6\u0000\uD7B4\u0000\u0000\u0000\uD7B7\u8EA2\uB1D5" + // 17540 - 17544
+                "\u8EA2\uB1D0\u8EA2\uB1D1\u8EA2\uB1D4\u8EA2\uB1D3\u0000\u0000" + // 17545 - 17549
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17550 - 17554
+                "\u0000\u0000\u8EA2\uB7E9\u8EA2\uB7EA\u8EA2\uB7E8\u0000\u0000" + // 17555 - 17559
+                "\u8EA2\uB7E7\u0000\uDCC3\u0000\u0000\u0000\u0000\u0000\u0000" + // 17560 - 17564
+                "\u0000\u0000\u8EA2\uB8C7\u0000\u0000\u0000\u0000\u0000\uDCE7" + // 17565 - 17569
+                "\u8EA2\uB8C6\u8EA2\uB8C8\u0000\u0000\u0000\uDCE6\u0000\u0000" + // 17570 - 17574
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBFAB\u8EA2\uBFAC" + // 17575 - 17579
+                "\u8EA2\uBFAA\u0000\uE1C7\u0000\u0000\u0000\u0000\u0000\u0000" + // 17580 - 17584
+                "\u0000\uE5FB\u0000\u0000\u0000\uE5FC\u0000\u0000\u0000\uEACD" + // 17585 - 17589
+                "\u0000\u0000\u8EA2\uCDAA\u8EA2\uCDA9\u0000\uEACC\u0000\u0000" + // 17590 - 17594
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD3A5" + // 17595 - 17599
+                "\u0000\u0000\u0000\u0000\u8EA2\uD3A6\u0000\u0000\u0000\u0000" + // 17600 - 17604
+                "\u0000\u0000\u0000\u0000\u8EA2\uD9D3\u0000\u0000\u0000\u0000" + // 17605 - 17609
+                "\u0000\uF4FA\u0000\uF4F9\u0000\uF4F7\u0000\uF4F8\u0000\uF4FB" + // 17610 - 17614
+                "\u0000\u0000\u8EA2\uE2E8\u0000\uF7AB\u0000\uF7AA\u8EA2\uE6CA" + // 17615 - 17619
+                "\u8EA2\uE9DF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFBEF" + // 17620 - 17624
+                "\u0000\uFBEE\u0000\uC8D7\u0000\uCFA4\u0000\uCFA5\u8EA2\uA8C2" + // 17625 - 17629
+                "\u0000\u0000\u8EA2\uACDA\u8EA2\uACD9\u0000\uD2E9\u0000\uD2EC" + // 17630 - 17634
+                "\u0000\uD2EB\u0000\uD2EA\u8EA2\uACD6\u8EA2\uACD8\u8EA2\uACD7" + // 17635 - 17639
+                "\u0000\u0000\u0000\u0000\u8EA2\uB1CB\u0000\uD7AA\u8EA2\uB1CF" + // 17640 - 17644
+                "\u8EA2\uB1CE\u8EA2\uB1CD\u8EA2\uB1C9\u0000\uD7A9\u0000\uD7AD" + // 17645 - 17649
+                "\u0000\uD7B0\u0000\u0000\u0000\u0000\u0000\uD7B1\u8EA2\uB1CA" + // 17650 - 17654
+                "\u8EA2\uB1CC\u0000\uD7AF\u0000\uD7AE\u0000\uD7AC\u0000\uD7AB" + // 17655 - 17659
+                "\u8EA2\uB7E5\u0000\u0000\u8EA2\uB7E3\u8EA2\uB7DF\u0000\uDCC0" + // 17660 - 17664
+                "\u0000\u0000\u8EA2\uB7E0\u0000\uDCC1\u8EA2\uB7E1\u8EA2\uB7E2" + // 17665 - 17669
+                "\u8EA2\uB7E4\u0000\u0000\u0000\uDCC2\u0000\u0000\u0000\u0000" + // 17670 - 17674
+                "\u8EA2\uBED9\u0000\u0000\u8EA2\uBED8\u8EA2\uBED7\u8EA2\uBED6" + // 17675 - 17679
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC5DC" + // 17680 - 17684
+                "\u0000\uE5D9\u0000\u0000\u8EA2\uC5D9\u8EA2\uC5DB\u0000\u0000" + // 17685 - 17689
+                "\u0000\uE5DA\u8EA2\uC5D6\u0000\u0000\u0000\u0000\u8EA2\uC5D3" + // 17690 - 17694
+                "\u8EA2\uC5CE\u8EA2\uC5D0\u8EA2\uC5D1\u8EA2\uC5CA\u0000\u0000" + // 17695 - 17699
+                "\u0000\uE5D4\u0000\u0000\u0000\u0000\u0000\uE5D3\u0000\u0000" + // 17700 - 17704
+                "\u0000\uE5CF\u8EA2\uC5CD\u0000\u0000\u0000\uE5D6\u0000\u0000" + // 17705 - 17709
+                "\u0000\uE5D7\u8EA2\uC5CC\u8EA2\uC5CF\u8EA2\uC5D7\u0000\uE5D1" + // 17710 - 17714
+                "\u0000\uE5D2\u8EA2\uC5D5\u8EA2\uC5CB\u0000\u0000\u0000\u0000" + // 17715 - 17719
+                "\u0000\u0000\u8EA2\uCCBA\u0000\uE9F7\u8EA2\uCCBC\u8EA2\uC5D2" + // 17720 - 17724
+                "\u8EA2\uCCBE\u0000\uE9FB\u8EA2\uCCBF\u8EA2\uCCBB\u0000\u0000" + // 17725 - 17729
+                "\u0000\uE9F8\u8EA2\uCCB7\u0000\uE9FA\u8EA2\uCCB4\u8EA2\uCCB9" + // 17730 - 17734
+                "\u8EA2\uCCBD\u8EA2\uCCB6\u0000\u0000\u0000\u0000\u0000\uE5D0" + // 17735 - 17739
+                "\u0000\u0000\u8EA2\uCCB3\u0000\uE9F9\u8EA2\uCCB5\u0000\u0000" + // 17740 - 17744
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEDFD" + // 17745 - 17749
+                "\u8EA2\uD2C9\u0000\uEEA3\u0000\u0000\u0000\uEEA1\u0000\u0000" + // 17750 - 17754
+                "\u0000\uFAC7\u0000\uFAC9\u0000\u0000\u8EA2\uEAA7\u0000\uFAC8" + // 17755 - 17759
+                "\u8EA2\uEAA5\u0000\uF9A9\u8EA2\uEAA6\u0000\uFAC6\u0000\uFBAF" + // 17760 - 17764
+                "\u0000\uFBB1\u8EA2\uECC5\u0000\uFBB0\u8EA2\uECC4\u0000\u0000" + // 17765 - 17769
+                "\u8EA2\uEEB0\u0000\uFBF7\u8EA2\uEEAF\u0000\uFBF8\u8EA2\uEEAD" + // 17770 - 17774
+                "\u8EA2\uEEAC\u8EA2\uEEB1\u8EA2\uEEB2\u8EA2\uEFD4\u0000\u0000" + // 17775 - 17779
+                "\u8EA2\uEEAE\u0000\u0000\u0000\u0000\u8EA2\uF0D4\u8EA2\uF0D1" + // 17780 - 17784
+                "\u8EA2\uF0D2\u8EA2\uF0D3\u0000\uFDA9\u0000\u0000\u8EA2\uF1C0" + // 17785 - 17789
+                "\u8EA2\uF1BF\u8EA2\uF1BE\u8EA2\uF1DF\u0000\u0000\u8EA2\uF2AE" + // 17790 - 17794
+                "\u8EA2\uF1F9\u0000\uFDBB\u0000\uCBCE\u0000\uD8C5\u0000\u0000" + // 17795 - 17799
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE7A3" + // 17800 - 17804
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 17805 - 17809
+                "\u0000\u0000\u0000\u0000\u0000\uEFC1\u0000\u0000\u0000\u0000" + // 17810 - 17814
+                "\u8EA2\uDAF4\u0000\u0000\u0000\u0000\u0000\uF0C9\u8EA2\uD6D8" + // 17815 - 17819
+                "\u0000\u0000\u0000\u0000\u0000\uF0CC\u8EA2\uD6DA\u0000\uF0CB" + // 17820 - 17824
+                "\u8EA2\uD6D3\u8EA2\uD6D5\u0000\u0000\u0000\u0000\u0000\u0000" + // 17825 - 17829
+                "\u0000\u0000\u0000\uF3CE\u8EA2\uDCD8\u0000\u0000\u0000\uF3CD" + // 17830 - 17834
+                "\u8EA2\uDCD9\u0000\uF3CC\u8EA2\uDCD7\u0000\uF3CB\u8EA2\uDCD6" + // 17835 - 17839
+                "\u0000\u0000\u0000\uF6BF\u0000\uF6BE\u8EA2\uE5C2\u8EA2\uE5C4" + // 17840 - 17844
+                "\u0000\u0000\u8EA2\uE5C3\u0000\uF8AE\u0000\uF8AF\u0000\u0000" + // 17845 - 17849
+                "\u0000\u0000\u0000\uF8B0\u8EA2\uE8EE\u0000\uF9E6\u0000\u0000" + // 17850 - 17854
+                "\u0000\u0000\u8EA2\uEFA2\u8EA2\uEFA1\u0000\uFCDE\u0000\u0000" + // 17855 - 17859
+                "\u0000\uC4C9\u0000\uC5B1\u0000\u0000\u0000\u0000\u0000\uC9E7" + // 17860 - 17864
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA9E0" + // 17865 - 17869
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDEE2" + // 17870 - 17874
+                "\u0000\uDEE3\u0000\u0000\u8EA2\uC2B9\u0000\uE8C0\u8EA2\uC9D0" + // 17875 - 17879
+                "\u8EA2\uCFFA\u8EA2\uCCAF\u8EA2\uCCAA\u8EA2\uCCAD\u8EA2\uCCB2" + // 17880 - 17884
+                "\u0000\uE9F2\u8EA2\uCCAC\u0000\u0000\u0000\uEDF7\u8EA2\uD2C7" + // 17885 - 17889
+                "\u8EA2\uD2C6\u0000\u0000\u0000\uEDFA\u0000\uEDF8\u8EA2\uD2C4" + // 17890 - 17894
+                "\u0000\uEDF6\u8EA2\uD2C5\u0000\u0000\u0000\uEDF9\u0000\u0000" + // 17895 - 17899
+                "\u0000\u0000\u0000\u0000\u8EA2\uD8E9\u0000\u0000\u8EA2\uD8EB" + // 17900 - 17904
+                "\u0000\u0000\u8EA2\uD8EA\u8EA2\uD8E2\u8EA2\uD8E6\u8EA2\uD8E5" + // 17905 - 17909
+                "\u8EA2\uD8E3\u0000\uF1D0\u0000\uF1D1\u0000\uF1CF\u8EA2\uD8E4" + // 17910 - 17914
+                "\u8EA2\uD8E7\u8EA2\uD8E8\u0000\u0000\u0000\uF1D2\u0000\u0000" + // 17915 - 17919
+                "\u0000\uF4CA\u8EA2\uDDED\u0000\u0000\u0000\uF4C7\u8EA2\uDDE7" + // 17920 - 17924
+                "\u0000\uF4C9\u0000\uF4CB\u0000\u0000\u0000\u0000\u0000\uF4C8" + // 17925 - 17929
+                "\u8EA2\uDDEC\u8EA2\uDDE8\u0000\uF4C6\u8EA2\uDDEB\u8EA2\uDDE6" + // 17930 - 17934
+                "\u8EA2\uDDEA\u8EA2\uDDE9\u0000\u0000\u0000\u0000\u8EA2\uE2C2" + // 17935 - 17939
+                "\u0000\uF6EE\u0000\uF6EF\u0000\uF6EC\u0000\u0000\u0000\uF6ED" + // 17940 - 17944
+                "\u0000\uE5B7\u0000\uE5B9\u0000\u0000\u8EA2\uC5AF\u0000\u0000" + // 17945 - 17949
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCCA3\u0000\uE9EE" + // 17950 - 17954
+                "\u8EA2\uCCA7\u0000\uE9ED\u8EA2\uCCA4\u0000\uE9EC\u0000\u0000" + // 17955 - 17959
+                "\u8EA2\uC5AE\u8EA2\uC5B5\u8EA2\uCCA6\u0000\u0000\u0000\uE9EF" + // 17960 - 17964
+                "\u8EA2\uCCA8\u8EA2\uCCA5\u8EA2\uCCA2\u0000\u0000\u0000\u0000" + // 17965 - 17969
+                "\u8EA2\uD2B9\u8EA2\uD2BD\u8EA2\uD2BF\u8EA2\uD2BB\u8EA2\uD2BA" + // 17970 - 17974
+                "\u8EA2\uD2B8\u0000\uEDEE\u0000\uEDEC\u0000\uEDF1\u0000\uEDF2" + // 17975 - 17979
+                "\u8EA2\uD2BC\u0000\uEDEF\u8EA2\uD2B7\u0000\uEDF0\u0000\uE9EB" + // 17980 - 17984
+                "\u8EA2\uD2BE\u0000\uEDED\u0000\u0000\u0000\u0000\u0000\u0000" + // 17985 - 17989
+                "\u8EA2\uD8D8\u0000\u0000\u8EA2\uD8D7\u8EA2\uD8DF\u8EA2\uD8D9" + // 17990 - 17994
+                "\u8EA2\uD8DE\u8EA2\uD8DB\u0000\uF1CA\u8EA2\uD8DD\u0000\u0000" + // 17995 - 17999
+                "\u0000\u0000\u0000\uF1CB\u0000\u0000\u0000\uF1CC\u0000\u0000" + // 18000 - 18004
+                "\u8EA2\uD8DC\u8EA2\uD8DA\u0000\u0000\u0000\u0000\u8EA2\uAECA" + // 18005 - 18009
+                "\u8EA2\uAECB\u0000\uD4E7\u0000\uD4E8\u0000\u0000\u0000\u0000" + // 18010 - 18014
+                "\u8EA2\uB4AF\u0000\uD9CE\u0000\uD9D0\u8EA2\uB4AE\u0000\uD9CF" + // 18015 - 18019
+                "\u8EA2\uBAE0\u0000\uDED8\u0000\u0000\u0000\u0000\u0000\u0000" + // 18020 - 18024
+                "\u0000\u0000\u0000\uE3D0\u0000\uE3D1\u8EA2\uC2A8\u0000\u0000" + // 18025 - 18029
+                "\u0000\uE8B7\u0000\u0000\u0000\uE8B6\u0000\u0000\u8EA2\uCFF0" + // 18030 - 18034
+                "\u8EA2\uD6D2\u8EA2\uD6D1\u0000\u0000\u8EA2\uF1DA\u0000\uC4C8" + // 18035 - 18039
+                "\u8EA2\uA1B9\u0000\u0000\u8EA2\uA1CF\u8EA2\uA1D0\u0000\u0000" + // 18040 - 18044
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC7E3\u0000\uC7E7" + // 18045 - 18049
+                "\u8EA2\uA2A9\u0000\u0000\u0000\uC7E5\u0000\uC7E4\u8EA2\uA2A8" + // 18050 - 18054
+                "\u0000\uC7E6\u0000\uC7E2\u0000\u0000\u0000\u0000\u0000\uC7E1" + // 18055 - 18059
+                "\u8EA2\uA2AA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18060 - 18064
+                "\u0000\u0000\u0000\u0000\u0000\uC9E6\u0000\u0000\u0000\u0000" + // 18065 - 18069
+                "\u0000\uC9E3\u0000\u0000\u8EA2\uB9DD\u8EA2\uB9DA\u0000\u0000" + // 18070 - 18074
+                "\u0000\u0000\u8EA2\uC0E1\u0000\uE2C7\u8EA2\uC0D9\u8EA2\uC0DF" + // 18075 - 18079
+                "\u0000\u0000\u0000\u0000\u0000\uE2C2\u0000\uE2C5\u8EA2\uC0D8" + // 18080 - 18084
+                "\u0000\uE2C0\u8EA2\uC0DC\u8EA2\uC7F2\u0000\uE2C4\u0000\u0000" + // 18085 - 18089
+                "\u8EA2\uC0D7\u0000\u0000\u8EA2\uC0DD\u8EA2\uC0DA\u8EA2\uC0E0" + // 18090 - 18094
+                "\u8EA2\uC0D6\u8EA2\uC0DE\u0000\uE2C3\u0000\uE2C6\u8EA2\uC0DB" + // 18095 - 18099
+                "\u0000\uE2C1\u0000\u0000\u0000\uE6F9\u8EA2\uC7EE\u0000\uE6F8" + // 18100 - 18104
+                "\u8EA2\uC7F5\u8EA2\uC7F4\u0000\uE7A1\u0000\u0000\u0000\uE7A2" + // 18105 - 18109
+                "\u8EA2\uC7F6\u0000\uE6FA\u8EA2\uC7F3\u0000\uE6FE\u8EA2\uC7F8" + // 18110 - 18114
+                "\u8EA2\uC7EF\u0000\u0000\u8EA2\uC7F1\u0000\uE6FB\u8EA2\uC7ED" + // 18115 - 18119
+                "\u8EA2\uC7F0\u8EA2\uC7F7\u0000\uE6FC\u8EA2\uC7F9\u0000\u0000" + // 18120 - 18124
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE6FD" + // 18125 - 18129
+                "\u0000\u0000\u0000\uEBB9\u8EA2\uCEC3\u8EA2\uCEC9\u8EA2\uCEC1" + // 18130 - 18134
+                "\u8EA2\uB1AA\u8EA2\uB1A7\u0000\uD6F0\u0000\u0000\u8EA2\uB1A9" + // 18135 - 18139
+                "\u0000\uD6E9\u0000\u0000\u0000\uD6EA\u0000\u0000\u0000\u0000" + // 18140 - 18144
+                "\u0000\uDCB1\u8EA2\uB7C4\u8EA2\uB7C5\u0000\uDCB2\u8EA2\uB7C1" + // 18145 - 18149
+                "\u8EA2\uB7C3\u8EA2\uB7C7\u8EA2\uB7C6\u8EA2\uB7C2\u0000\u0000" + // 18150 - 18154
+                "\u0000\uDCAE\u0000\uDCAF\u0000\u0000\u8EA2\uBEBA\u0000\uE0F1" + // 18155 - 18159
+                "\u0000\uE0F0\u8EA2\uBEB4\u0000\uE0EE\u0000\u0000\u8EA2\uBEB7" + // 18160 - 18164
+                "\u0000\uE0F2\u8EA2\uBEB8\u0000\uE0F3\u8EA2\uBEB5\u0000\uE0ED" + // 18165 - 18169
+                "\u0000\uE0EF\u8EA2\uBEB9\u0000\u0000\u8EA2\uBEB6\u8EA2\uBEB3" + // 18170 - 18174
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18175 - 18179
+                "\u8EA2\uC5B8\u0000\u0000\u8EA2\uC5AD\u0000\uE5B8\u0000\uE5BB" + // 18180 - 18184
+                "\u0000\uE5BA\u0000\uE5BF\u0000\uE5BE\u8EA2\uC5B9\u8EA2\uC5B7" + // 18185 - 18189
+                "\u8EA2\uC5B0\u8EA2\uC5B4\u8EA2\uC5B3\u0000\uE5BC\u8EA2\uC5B6" + // 18190 - 18194
+                "\u8EA2\uC5B2\u8EA2\uC5BA\u8EA2\uC5B1\u0000\uE5BD\u8EA2\uD8D6" + // 18195 - 18199
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDDDF\u0000\u0000" + // 18200 - 18204
+                "\u0000\uF8D1\u0000\uF8D0\u0000\u0000\u0000\u0000\u0000\uFBE8" + // 18205 - 18209
+                "\u0000\uC6F4\u8EA2\uA8B5\u0000\u0000\u0000\u0000\u0000\uDCAD" + // 18210 - 18214
+                "\u8EA2\uCCA1\u0000\uE9EA\u0000\uA8A9\u0000\u0000\u8EA2\uA4EF" + // 18215 - 18219
+                "\u8EA2\uA4F0\u0000\u0000\u0000\u0000\u8EA2\uA8B6\u0000\uCEF9" + // 18220 - 18224
+                "\u0000\uCEFA\u0000\u0000\u0000\u0000\u0000\uCEF8\u0000\u0000" + // 18225 - 18229
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD2D2\u0000\uD2D3" + // 18230 - 18234
+                "\u0000\uD2D0\u0000\uD2D1\u0000\u0000\u8EA2\uACBE\u0000\u0000" + // 18235 - 18239
+                "\u0000\u0000\u8EA2\uACBF\u0000\uD2CF\u0000\u0000\u0000\u0000" + // 18240 - 18244
+                "\u0000\u0000\u0000\u0000\u8EA2\uB1A6\u0000\u0000\u0000\uD6EB" + // 18245 - 18249
+                "\u0000\uD6EC\u0000\u0000\u0000\uDCB0\u8EA2\uB1AC\u0000\u0000" + // 18250 - 18254
+                "\u0000\uD6F1\u0000\uD6EF\u8EA2\uB1AD\u8EA2\uB1A8\u0000\uD6EE" + // 18255 - 18259
+                "\u0000\uD6ED\u0000\uD6E8\u8EA2\uB1AB\u8EA2\uA8B3\u0000\u0000" + // 18260 - 18264
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18265 - 18269
+                "\u8EA2\uACBC\u8EA2\uACBD\u0000\u0000\u0000\u0000\u0000\uD2CE" + // 18270 - 18274
+                "\u0000\uD2CC\u0000\u0000\u0000\uD2CD\u0000\uD2CB\u0000\u0000" + // 18275 - 18279
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD6E3\u0000\u0000" + // 18280 - 18284
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD6E7\u0000\uD6E6" + // 18285 - 18289
+                "\u8EA2\uB1A4\u0000\uD6E5\u0000\uD6E4\u0000\u0000\u8EA2\uB1A5" + // 18290 - 18294
+                "\u0000\u0000\u0000\u0000\u0000\uDCAB\u8EA2\uB7C0\u8EA2\uB7BF" + // 18295 - 18299
+                "\u0000\uDCA9\u0000\uDCAA\u0000\u0000\u0000\u0000\u0000\u0000" + // 18300 - 18304
+                "\u0000\uE0EC\u0000\uE0EB\u8EA2\uBEB2\u0000\u0000\u0000\u0000" + // 18305 - 18309
+                "\u8EA2\uBEB1\u0000\uDCAC\u0000\u0000\u0000\u0000\u0000\u0000" + // 18310 - 18314
+                "\u0000\u0000\u0000\u0000\u0000\uE5B5\u8EA2\uC5AB\u0000\uE5B6" + // 18315 - 18319
+                "\u8EA2\uC5AA\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCBFE" + // 18320 - 18324
+                "\u8EA2\uD2B6\u0000\uEDEB\u8EA2\uCBFB\u0000\u0000\u8EA2\uCBFC" + // 18325 - 18329
+                "\u8EA2\uCBFD\u0000\uE9E9\u0000\u0000\u0000\u0000\u8EA2\uD2B5" + // 18330 - 18334
+                "\u8EA2\uD2B4\u0000\u0000\u0000\u0000\u8EA2\uD8D5\u0000\uF1C8" + // 18335 - 18339
+                "\u0000\uF1C9\u0000\u0000\u8EA2\uDDDE\u8EA2\uDDDB\u8EA2\uDDDC" + // 18340 - 18344
+                "\u8EA2\uDDDD\u8EA2\uE2B6\u8EA2\uE2B5\u0000\uF6E8\u8EA2\uE6A3" + // 18345 - 18349
+                "\u8EA2\uEBEC\u0000\uC6EC\u0000\u0000\u0000\uD2C9\u0000\u0000" + // 18350 - 18354
+                "\u0000\uDCA7\u8EA2\uC5A9\u0000\u0000\u0000\uC6ED\u0000\u0000" + // 18355 - 18359
+                "\u8EA2\uB1A3\u0000\uDCA8\u0000\u0000\u0000\u0000\u0000\uE0E9" + // 18360 - 18364
+                "\u0000\uE0EA\u0000\u0000\u0000\uC6EE\u0000\uC6EF\u8EA2\uA2E6" + // 18365 - 18369
+                "\u0000\uCBAD\u0000\uCBAC\u0000\uD2CA\u8EA2\uACBB\u8EA2\uBEB0" + // 18370 - 18374
+                "\u0000\uC6F0\u0000\uC6F1\u0000\uC6F2\u0000\uC6F3\u0000\u0000" + // 18375 - 18379
+                "\u0000\u0000\u0000\u0000\u0000\uCBAE\u0000\uCBAF\u8EA2\uA4EE" + // 18380 - 18384
+                "\u8EA2\uA4ED\u0000\u0000\u0000\u0000\u0000\uCEF7\u8EA2\uA8B4" + // 18385 - 18389
+                "\u8EA2\uA8B2\u8EA2\uE2AE\u8EA2\uE2B0\u8EA2\uE2B4\u8EA2\uE6A2" + // 18390 - 18394
+                "\u0000\u0000\u8EA2\uE5FE\u0000\u0000\u0000\u0000\u0000\u0000" + // 18395 - 18399
+                "\u0000\u0000\u0000\uF8CE\u8EA2\uE5FD\u0000\u0000\u0000\u0000" + // 18400 - 18404
+                "\u0000\u0000\u0000\uF9F9\u0000\u0000\u0000\u0000\u0000\u0000" + // 18405 - 18409
+                "\u0000\u0000\u0000\uFAF8\u8EA2\uEDDF\u0000\uFAF7\u8EA2\uEDE1" + // 18410 - 18414
+                "\u8EA2\uEDDE\u8EA2\uEDE0\u0000\uFCBC\u8EA2\uF0C0\u0000\uC6EA" + // 18415 - 18419
+                "\u8EA2\uA8B0\u8EA2\uB0FD\u8EA2\uB0FE\u0000\uDCA4\u8EA2\uC5A5" + // 18420 - 18424
+                "\u0000\uF1C7\u0000\uF8CF\u0000\uFBE7\u8EA2\uF0C1\u0000\uC6EB" + // 18425 - 18429
+                "\u0000\u0000\u8EA2\uA8B1\u0000\uA3A2\u0000\u0000\u0000\u0000" + // 18430 - 18434
+                "\u8EA2\uACB9\u0000\u0000\u8EA2\uACBA\u0000\u0000\u0000\u0000" + // 18435 - 18439
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB1A1\u8EA2\uB1A2" + // 18440 - 18444
+                "\u0000\uDCA5\u0000\uDCA6\u0000\u0000\u0000\u0000\u0000\u0000" + // 18445 - 18449
+                "\u8EA2\uBEAF\u0000\u0000\u8EA2\uC5A8\u8EA2\uC5A7\u8EA2\uC5A6" + // 18450 - 18454
+                "\u0000\uEDEA\u8EA2\uD2AE\u0000\u0000\u0000\uEDE8\u0000\u0000" + // 18455 - 18459
+                "\u8EA2\uD2B0\u8EA2\uD2AD\u8EA2\uD2AA\u8EA2\uD2B1\u8EA2\uD2AB" + // 18460 - 18464
+                "\u8EA2\uD2AC\u0000\uEDE7\u0000\u0000\u0000\u0000\u0000\u0000" + // 18465 - 18469
+                "\u0000\u0000\u8EA2\uDDD5\u0000\u0000\u8EA2\uD8D2\u0000\u0000" + // 18470 - 18474
+                "\u8EA2\uD8D1\u8EA2\uD8D3\u0000\u0000\u8EA2\uDDD2\u0000\uF1C4" + // 18475 - 18479
+                "\u0000\u0000\u8EA2\uD8CF\u0000\u0000\u0000\uF1C2\u0000\u0000" + // 18480 - 18484
+                "\u0000\uF1C6\u0000\uF1C5\u8EA2\uD8D0\u8EA2\uD8D4\u0000\u0000" + // 18485 - 18489
+                "\u0000\uF1C3\u0000\u0000\u8EA2\uDDD9\u0000\uF4C0\u0000\uF6E6" + // 18490 - 18494
+                "\u0000\uF4C1\u0000\uF4BE\u8EA2\uDDD6\u8EA2\uDDD4\u0000\u0000" + // 18495 - 18499
+                "\u8EA2\uDDD7\u0000\u0000\u8EA2\uDDDA\u0000\uF4BF\u8EA2\uDDD8" + // 18500 - 18504
+                "\u8EA2\uDDD3\u0000\u0000\u0000\u0000\u8EA2\uE2AF\u8EA2\uE2B2" + // 18505 - 18509
+                "\u8EA2\uE6A1\u8EA2\uE2AD\u0000\u0000\u8EA2\uE9BE\u8EA2\uE2B3" + // 18510 - 18514
+                "\u0000\u0000\u0000\uF8CD\u8EA2\uE2B1\u0000\uF6E7\u8EA2\uC4FB" + // 18515 - 18519
+                "\u0000\uE5B0\u8EA2\uC5A1\u0000\u0000\u8EA2\uC4F5\u0000\u0000" + // 18520 - 18524
+                "\u8EA2\uC5A2\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC4F6" + // 18525 - 18529
+                "\u8EA2\uC4F7\u0000\u0000\u8EA2\uC5A3\u8EA2\uC4FE\u8EA2\uC4FC" + // 18530 - 18534
+                "\u8EA2\uC4FD\u8EA2\uC4F9\u8EA2\uC4F8\u0000\u0000\u8EA2\uC5A4" + // 18535 - 18539
+                "\u0000\uE5AD\u0000\u0000\u8EA2\uC4FA\u0000\u0000\u0000\uE5B2" + // 18540 - 18544
+                "\u0000\uE5AC\u0000\uE5B3\u0000\uE5B4\u0000\u0000\u0000\uE5AF" + // 18545 - 18549
+                "\u0000\uE5AE\u0000\u0000\u0000\u0000\u8EA2\uCBF4\u0000\uE9E5" + // 18550 - 18554
+                "\u0000\uE9E4\u0000\u0000\u0000\u0000\u8EA2\uCBF9\u0000\u0000" + // 18555 - 18559
+                "\u0000\uEDE6\u0000\uE9E6\u0000\u0000\u0000\u0000\u0000\uE9E8" + // 18560 - 18564
+                "\u8EA2\uCBFA\u0000\uE5AB\u0000\uE9E7\u8EA2\uCBF6\u8EA2\uCBF8" + // 18565 - 18569
+                "\u8EA2\uCBF5\u0000\u0000\u8EA2\uCBF7\u0000\u0000\u0000\u0000" + // 18570 - 18574
+                "\u0000\u0000\u8EA2\uD2B3\u0000\u0000\u0000\u0000\u8EA2\uD2B2" + // 18575 - 18579
+                "\u8EA2\uD2AF\u0000\uEDE9\u8EA2\uD8CE\u8EA2\uB7B7\u8EA2\uB7B4" + // 18580 - 18584
+                "\u0000\u0000\u0000\uDBFE\u8EA2\uB7B3\u0000\uDBFC\u0000\uDCA1" + // 18585 - 18589
+                "\u8EA2\uB7B6\u8EA2\uB7BE\u0000\uD6DE\u0000\uDBFD\u8EA2\uB7BC" + // 18590 - 18594
+                "\u8EA2\uB7BB\u0000\uDCA3\u0000\u0000\u0000\u0000\u0000\u0000" + // 18595 - 18599
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18600 - 18604
+                "\u8EA2\uBEA4\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBEA5" + // 18605 - 18609
+                "\u0000\uE0E6\u0000\u0000\u8EA2\uBEAB\u0000\u0000\u0000\u0000" + // 18610 - 18614
+                "\u8EA2\uBEAD\u8EA2\uBEA6\u0000\uE0E0\u8EA2\uBEAA\u8EA2\uBEA9" + // 18615 - 18619
+                "\u0000\uE0E1\u0000\uE0E7\u0000\u0000\u0000\uE0E8\u8EA2\uBEAC" + // 18620 - 18624
+                "\u0000\uE0DE\u8EA2\uBEA3\u8EA2\uBEA1\u8EA2\uBEA7\u8EA2\uBDFE" + // 18625 - 18629
+                "\u0000\uE0E5\u8EA2\uBEA2\u8EA2\uBEA8\u8EA2\uBEAE\u0000\uE0DF" + // 18630 - 18634
+                "\u0000\uE0E4\u0000\uE0E2\u0000\uE0E3\u0000\u0000\u0000\u0000" + // 18635 - 18639
+                "\u0000\u0000\u0000\uE0DD\u0000\u0000\u0000\u0000\u0000\u0000" + // 18640 - 18644
+                "\u0000\u0000\u0000\uE5B1\u0000\uD2C7\u0000\u0000\u8EA2\uACAA" + // 18645 - 18649
+                "\u8EA2\uACB5\u0000\u0000\u8EA2\uACAC\u8EA2\uACB6\u8EA2\uACB3" + // 18650 - 18654
+                "\u8EA2\uACAB\u0000\u0000\u0000\uD2C3\u8EA2\uACB8\u8EA2\uACA9" + // 18655 - 18659
+                "\u0000\uD2C6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18660 - 18664
+                "\u8EA2\uB0F5\u8EA2\uB0EC\u8EA2\uB0F7\u0000\u0000\u8EA2\uB0EF" + // 18665 - 18669
+                "\u8EA2\uB0FA\u8EA2\uB0FB\u8EA2\uB0ED\u8EA2\uB0F9\u8EA2\uB0F6" + // 18670 - 18674
+                "\u8EA2\uB0F4\u8EA2\uB0F8\u0000\uD6E2\u0000\u0000\u0000\uD6E0" + // 18675 - 18679
+                "\u0000\u0000\u0000\u0000\u8EA2\uB0F2\u0000\u0000\u8EA2\uB0EE" + // 18680 - 18684
+                "\u0000\u0000\u8EA2\uB0F1\u8EA2\uB0FC\u8EA2\uB0F3\u0000\uD6E1" + // 18685 - 18689
+                "\u8EA2\uACB1\u0000\u0000\u0000\uD6DD\u0000\uD6DF\u0000\u0000" + // 18690 - 18694
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB7BD" + // 18695 - 18699
+                "\u8EA2\uB7B2\u8EA2\uB7B0\u0000\u0000\u8EA2\uB7B1\u0000\u0000" + // 18700 - 18704
+                "\u8EA2\uB7B8\u0000\u0000\u8EA2\uB7B9\u8EA2\uB7B5\u0000\uDCA2" + // 18705 - 18709
+                "\u8EA2\uB7BA\u0000\uFBE6\u8EA2\uEFB7\u8EA2\uEFB6\u8EA2\uEFB8" + // 18710 - 18714
+                "\u0000\uC6E8\u8EA2\uACA8\u0000\uD6DC\u0000\uDBFB\u8EA2\uB7AF" + // 18715 - 18719
+                "\u0000\uC6E9\u8EA2\uA1E6\u0000\uC5DE\u0000\u0000\u0000\u0000" + // 18720 - 18724
+                "\u8EA2\uA2E5\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA4EC" + // 18725 - 18729
+                "\u8EA2\uA4EA\u8EA2\uA4EB\u8EA2\uA4E8\u0000\uCBAB\u8EA2\uA4E9" + // 18730 - 18734
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18735 - 18739
+                "\u8EA2\uA8AF\u0000\u0000\u0000\uCEF4\u8EA2\uA8AD\u8EA2\uA8A9" + // 18740 - 18744
+                "\u8EA2\uA8AC\u0000\u0000\u8EA2\uA8A8\u0000\uCEF6\u8EA2\uA8AB" + // 18745 - 18749
+                "\u0000\u0000\u0000\uCEF3\u0000\uCEF2\u0000\u0000\u0000\uCEF5" + // 18750 - 18754
+                "\u8EA2\uA8AE\u8EA2\uA8AA\u0000\u0000\u0000\u0000\u0000\u0000" + // 18755 - 18759
+                "\u0000\u0000\u0000\uD2C5\u0000\uD2C8\u8EA2\uACB0\u8EA2\uACAF" + // 18760 - 18764
+                "\u8EA2\uACAE\u0000\uD2C2\u8EA2\uACB7\u8EA2\uACAD\u0000\u0000" + // 18765 - 18769
+                "\u0000\uD2C4\u8EA2\uB0F0\u0000\u0000\u8EA2\uACB4\u8EA2\uACB2" + // 18770 - 18774
+                "\u8EA2\uC4F2\u0000\u0000\u8EA2\uC4EF\u8EA2\uCBF0\u0000\uE9E2" + // 18775 - 18779
+                "\u0000\uE5A8\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC4F4" + // 18780 - 18784
+                "\u8EA2\uC4F3\u0000\u0000\u8EA2\uCBF3\u8EA2\uCBF1\u0000\uEDE4" + // 18785 - 18789
+                "\u0000\u0000\u0000\uE9E3\u8EA2\uCBF2\u8EA2\uD1FE\u0000\u0000" + // 18790 - 18794
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEDE5\u8EA2\uD1FD" + // 18795 - 18799
+                "\u8EA2\uD2A8\u8EA2\uD2A7\u8EA2\uD2A5\u0000\u0000\u8EA2\uD2A4" + // 18800 - 18804
+                "\u8EA2\uD2A1\u8EA2\uD2A2\u8EA2\uD2A3\u8EA2\uD2A6\u8EA2\uD2A9" + // 18805 - 18809
+                "\u0000\u0000\u0000\u0000\u8EA2\uD8CB\u8EA2\uD8C8\u8EA2\uD8C9" + // 18810 - 18814
+                "\u0000\uF1C1\u8EA2\uD8C7\u8EA2\uD8CD\u8EA2\uD8CC\u8EA2\uD8CA" + // 18815 - 18819
+                "\u0000\u0000\u8EA2\uDDD0\u8EA2\uDDD1\u0000\uF4BC\u0000\u0000" + // 18820 - 18824
+                "\u0000\uF4BD\u8EA2\uDDCF\u0000\u0000\u0000\uF6E5\u8EA2\uE2AC" + // 18825 - 18829
+                "\u0000\uF6E4\u0000\uF8CB\u0000\u0000\u0000\uF8CC\u0000\uF9F8" + // 18830 - 18834
+                "\u8EA2\uE9BD\u8EA2\uE9BC\u8EA2\uEBEB\u8EA2\uEDDD\u8EA2\uB0E4" + // 18835 - 18839
+                "\u8EA2\uB0EB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 18840 - 18844
+                "\u0000\u0000\u8EA2\uB7A7\u8EA2\uB7AB\u0000\u0000\u8EA2\uB7AA" + // 18845 - 18849
+                "\u8EA2\uBDF2\u8EA2\uBDFD\u0000\u0000\u0000\u0000\u8EA2\uB7AD" + // 18850 - 18854
+                "\u0000\u0000\u8EA2\uB7A8\u8EA2\uBDF1\u0000\uDBF9\u0000\u0000" + // 18855 - 18859
+                "\u0000\u0000\u0000\uDBF8\u8EA2\uB7A6\u8EA2\uB7A9\u0000\uDBFA" + // 18860 - 18864
+                "\u0000\u0000\u0000\uDBF7\u0000\uDBF6\u8EA2\uB7A5\u8EA2\uB7AE" + // 18865 - 18869
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBDF4\u8EA2\uBDFB" + // 18870 - 18874
+                "\u0000\u0000\u0000\uE0DA\u8EA2\uBDFA\u8EA2\uBDF7\u0000\u0000" + // 18875 - 18879
+                "\u0000\uE0DC\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBDF9" + // 18880 - 18884
+                "\u0000\u0000\u0000\u0000\u8EA2\uBDF3\u8EA2\uBDF5\u8EA2\uBDF8" + // 18885 - 18889
+                "\u8EA2\uBDF6\u0000\uE0DB\u8EA2\uBDFC\u0000\uE0D9\u0000\uE5A7" + // 18890 - 18894
+                "\u0000\u0000\u0000\u0000\u8EA2\uC4F1\u8EA2\uC4F0\u8EA2\uC4EE" + // 18895 - 18899
+                "\u0000\u0000\u0000\uE5AA\u0000\uE5A9\u0000\uCEED\u8EA2\uA4E5" + // 18900 - 18904
+                "\u0000\uCBAA\u8EA2\uA4E3\u0000\uCBA9\u8EA2\uA4E7\u8EA2\uA4E4" + // 18905 - 18909
+                "\u0000\u0000\u0000\u0000\u8EA2\uA8A1\u8EA2\uABFE\u8EA2\uA7FD" + // 18910 - 18914
+                "\u8EA2\uA8A6\u0000\u0000\u0000\uCEEE\u0000\u0000\u0000\uCEF1" + // 18915 - 18919
+                "\u8EA2\uA8A7\u8EA2\uA8A3\u0000\u0000\u8EA2\uA8A4\u0000\u0000" + // 18920 - 18924
+                "\u8EA2\uA7FC\u0000\uCEF0\u8EA2\uA7FE\u0000\uCEEF\u8EA2\uA8A5" + // 18925 - 18929
+                "\u0000\u0000\u8EA2\uA8A2\u0000\u0000\u0000\u0000\u8EA2\uACA4" + // 18930 - 18934
+                "\u0000\uD2C0\u0000\uD2C1\u0000\u0000\u8EA2\uACA7\u8EA2\uACA1" + // 18935 - 18939
+                "\u0000\u0000\u8EA2\uACA6\u0000\u0000\u8EA2\uACA2\u0000\uD2BF" + // 18940 - 18944
+                "\u8EA2\uACA5\u8EA2\uACA3\u0000\u0000\u0000\u0000\u0000\u0000" + // 18945 - 18949
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB0E9" + // 18950 - 18954
+                "\u8EA2\uB0E6\u0000\u0000\u8EA2\uB0E8\u0000\uD6DB\u0000\uD6DA" + // 18955 - 18959
+                "\u0000\uD6D8\u8EA2\uB0E5\u8EA2\uB0EA\u0000\uD6D7\u0000\uD6D9" + // 18960 - 18964
+                "\u8EA2\uB0E7\u8EA2\uB7AC\u0000\uE0D8\u0000\uDBF5\u0000\u0000" + // 18965 - 18969
+                "\u0000\u0000\u0000\uE0D7\u8EA2\uBDEF\u8EA2\uBDEE\u0000\u0000" + // 18970 - 18974
+                "\u8EA2\uBDEC\u8EA2\uBDED\u0000\u0000\u8EA2\uBDF0\u8EA2\uC4EA" + // 18975 - 18979
+                "\u8EA2\uC4E9\u8EA2\uC4ED\u0000\u0000\u8EA2\uC4EC\u8EA2\uC4EB" + // 18980 - 18984
+                "\u0000\uE9E0\u8EA2\uCBEF\u0000\u0000\u8EA2\uCBEE\u0000\uE9E1" + // 18985 - 18989
+                "\u8EA2\uCBED\u8EA2\uD1FB\u0000\u0000\u8EA2\uD1FC\u0000\uEDE3" + // 18990 - 18994
+                "\u0000\u0000\u8EA2\uD8C5\u8EA2\uD8C6\u0000\u0000\u0000\u0000" + // 18995 - 18999
+                "\u8EA2\uE5FC\u0000\uF8CA\u8EA2\uE5FB\u8EA2\uE5FA\u8EA2\uE5F8" + // 19000 - 19004
+                "\u8EA2\uE5F9\u0000\uFAF6\u8EA2\uE9BB\u8EA2\uEDDC\u8EA2\uF1A7" + // 19005 - 19009
+                "\u0000\u0000\u0000\uC5DD\u0000\u0000\u8EA2\uA1E4\u0000\uC6E7" + // 19010 - 19014
+                "\u8EA2\uA1E5\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA2E3" + // 19015 - 19019
+                "\u8EA2\uA2E4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19020 - 19024
+                "\u8EA2\uA4E6\u0000\u0000\u0000\u0000\u8EA2\uA4E2\u0000\u0000" + // 19025 - 19029
+                "\u8EA2\uA4E1\u8EA2\uD8B8\u8EA2\uD8B9\u8EA2\uD8B4\u0000\uF1BF" + // 19030 - 19034
+                "\u0000\uF1C0\u8EA2\uD8B3\u8EA2\uD8C2\u8EA2\uD8BD\u0000\uF1B9" + // 19035 - 19039
+                "\u0000\uF1B6\u8EA2\uD8BC\u8EA2\uD8BA\u0000\u0000\u0000\u0000" + // 19040 - 19044
+                "\u0000\uF1BC\u8EA2\uD8BE\u0000\uF1B7\u0000\u0000\u0000\uF1B8" + // 19045 - 19049
+                "\u0000\u0000\u8EA2\uD8BB\u0000\uF1BA\u8EA2\uD8B7\u0000\u0000" + // 19050 - 19054
+                "\u8EA2\uD8C0\u0000\uF1BD\u8EA2\uD8C3\u8EA2\uD8C4\u0000\uF1BE" + // 19055 - 19059
+                "\u0000\u0000\u0000\u0000\u0000\uF4B2\u0000\uF4B9\u8EA2\uDDC8" + // 19060 - 19064
+                "\u8EA2\uDDCE\u0000\u0000\u8EA2\uDDCC\u0000\uF4B5\u0000\uF4B4" + // 19065 - 19069
+                "\u0000\uF4B1\u8EA2\uDDCA\u0000\u0000\u0000\u0000\u0000\u0000" + // 19070 - 19074
+                "\u0000\uF4B7\u0000\uF4B6\u0000\uF4B3\u0000\u0000\u8EA2\uDDCD" + // 19075 - 19079
+                "\u8EA2\uDDC9\u8EA2\uDDCB\u0000\u0000\u0000\uF4B8\u0000\u0000" + // 19080 - 19084
+                "\u0000\u0000\u0000\u0000\u0000\uF6E3\u8EA2\uE2A9\u0000\u0000" + // 19085 - 19089
+                "\u0000\uF6E0\u0000\uF6E1\u8EA2\uE2AB\u0000\uF6E2\u8EA2\uE2A8" + // 19090 - 19094
+                "\u8EA2\uCBE3\u8EA2\uCBE9\u8EA2\uCBE5\u0000\u0000\u0000\uE9DD" + // 19095 - 19099
+                "\u8EA2\uCBE4\u8EA2\uCBE8\u8EA2\uCBE0\u0000\u0000\u8EA2\uCBE2" + // 19100 - 19104
+                "\u0000\uE9DC\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19105 - 19109
+                "\u8EA2\uCBE6\u8EA2\uCBE1\u0000\u0000\u0000\uE9DE\u0000\u0000" + // 19110 - 19114
+                "\u0000\uE9D9\u0000\u0000\u0000\u0000\u8EA2\uCBEA\u0000\u0000" + // 19115 - 19119
+                "\u0000\uE9DA\u8EA2\uD1EF\u8EA2\uD1EC\u8EA2\uD1F8\u8EA2\uD1F2" + // 19120 - 19124
+                "\u8EA2\uD1F4\u0000\uEDDE\u8EA2\uD1EE\u8EA2\uD1F6\u0000\u0000" + // 19125 - 19129
+                "\u0000\u0000\u8EA2\uD1F5\u8EA2\uD1F3\u0000\u0000\u8EA2\uD1F9" + // 19130 - 19134
+                "\u0000\uEDE1\u8EA2\uD1F0\u8EA2\uD1F7\u0000\u0000\u0000\uEDDF" + // 19135 - 19139
+                "\u0000\u0000\u0000\u0000\u8EA2\uD1EB\u8EA2\uD1ED\u0000\uEDE0" + // 19140 - 19144
+                "\u8EA2\uD1EA\u8EA2\uD1FA\u0000\u0000\u8EA2\uD1F1\u0000\u0000" + // 19145 - 19149
+                "\u0000\u0000\u8EA2\uD8B6\u0000\uF1BB\u0000\u0000\u0000\u0000" + // 19150 - 19154
+                "\u8EA2\uD8C1\u8EA2\uD8BF\u0000\uF1B5\u8EA2\uD8B5\u8EA2\uB6F9" + // 19155 - 19159
+                "\u0000\u0000\u8EA2\uB6FD\u0000\u0000\u8EA2\uB6F2\u0000\u0000" + // 19160 - 19164
+                "\u8EA2\uB6F7\u0000\u0000\u0000\u0000\u0000\uDBEF\u0000\uDBF0" + // 19165 - 19169
+                "\u8EA2\uB6FC\u8EA2\uB6F0\u8EA2\uB6EC\u8EA2\uB6FE\u0000\u0000" + // 19170 - 19174
+                "\u8EA2\uB6F4\u0000\u0000\u0000\u0000\u8EA2\uB6F8\u0000\u0000" + // 19175 - 19179
+                "\u0000\u0000\u0000\u0000\u8EA2\uB6EE\u0000\u0000\u0000\uE0CE" + // 19180 - 19184
+                "\u0000\uE0CF\u8EA2\uBDE9\u0000\uE0D5\u0000\u0000\u8EA2\uBDDD" + // 19185 - 19189
+                "\u8EA2\uBDE6\u8EA2\uBDDC\u0000\uE0D2\u8EA2\uBDE4\u8EA2\uBDE2" + // 19190 - 19194
+                "\u0000\u0000\u8EA2\uBDE3\u0000\uE0D0\u0000\u0000\u8EA2\uBDE7" + // 19195 - 19199
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19200 - 19204
+                "\u8EA2\uBDE0\u8EA2\uBDDE\u0000\uE0D1\u8EA2\uBDE1\u8EA2\uBDE5" + // 19205 - 19209
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE0D3\u0000\u0000" + // 19210 - 19214
+                "\u0000\u0000\u0000\u0000\u8EA2\uBDE8\u0000\u0000\u0000\u0000" + // 19215 - 19219
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBEC0\u8EA2\uBEC2" + // 19220 - 19224
+                "\u8EA2\uBEBE\u8EA2\uBEBF\u0000\u0000\u0000\u0000\u8EA2\uBEC3" + // 19225 - 19229
+                "\u8EA2\uBEC5\u8EA2\uBEC6\u8EA2\uBEC1\u8EA2\uBEC4\u0000\uE0FA" + // 19230 - 19234
+                "\u0000\u0000\u0000\u0000\u8EA2\uC5C1\u0000\u0000\u8EA2\uC5C6" + // 19235 - 19239
+                "\u8EA2\uC5BE\u8EA2\uC5C2\u0000\u0000\u0000\u0000\u8EA2\uC5C7" + // 19240 - 19244
+                "\u8EA2\uC5C3\u0000\uE5C2\u0000\uE5CA\u0000\u0000\u0000\uE5C5" + // 19245 - 19249
+                "\u8EA2\uC5BF\u8EA2\uC5C0\u0000\uE9F5\u0000\uE5CD\u0000\uE5C6" + // 19250 - 19254
+                "\u0000\u0000\u0000\uE5CB\u0000\uE5C4\u8EA2\uC5C5\u0000\uE5CC" + // 19255 - 19259
+                "\u8EA2\uC5C4\u0000\uE5C8\u0000\uE5C3\u0000\uE5C9\u8EA2\uC5C8" + // 19260 - 19264
+                "\u8EA2\uCCAE\u8EA2\uCCB0\u0000\u0000\u0000\u0000\u0000\u0000" + // 19265 - 19269
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19270 - 19274
+                "\u0000\u0000\u0000\uE5C7\u0000\u0000\u0000\u0000\u8EA2\uCCAB" + // 19275 - 19279
+                "\u0000\uE9F3\u8EA2\uCCB1\u0000\uE9F4\u8EA2\uE9B5\u8EA2\uE9B8" + // 19280 - 19284
+                "\u8EA2\uE9AF\u8EA2\uEBE1\u8EA2\uEBE2\u8EA2\uEBE6\u8EA2\uEBE7" + // 19285 - 19289
+                "\u0000\u0000\u8EA2\uEBE4\u8EA2\uEBE5\u8EA2\uEBE3\u0000\u0000" + // 19290 - 19294
+                "\u0000\uFAF4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19295 - 19299
+                "\u0000\uFBE4\u8EA2\uEDD9\u0000\u0000\u0000\u0000\u8EA2\uEDD6" + // 19300 - 19304
+                "\u8EA2\uEDD7\u8EA2\uEDD8\u0000\uFBE5\u0000\u0000\u8EA2\uEFB4" + // 19305 - 19309
+                "\u8EA2\uEFB3\u0000\u0000\u8EA2\uF0BD\u0000\uFCE0\u8EA2\uF0BB" + // 19310 - 19314
+                "\u8EA2\uF0BE\u8EA2\uF0BC\u8EA2\uF1A5\u0000\uFDA4\u0000\uFDB2" + // 19315 - 19319
+                "\u8EA2\uF1F1\u8EA2\uF1DB\u0000\u0000\u8EA2\uF1F0\u8EA2\uF2BE" + // 19320 - 19324
+                "\u8EA2\uF2BF\u0000\uC5D6\u0000\u0000\u0000\u0000\u0000\u0000" + // 19325 - 19329
+                "\u0000\u0000\u0000\uC8C8\u8EA2\uA2E1\u0000\u0000\u0000\u0000" + // 19330 - 19334
+                "\u8EA2\uA4DE\u0000\u0000\u0000\uCBA2\u0000\u0000\u0000\uCBA5" + // 19335 - 19339
+                "\u0000\u0000\u8EA2\uA4DF\u0000\u0000\u0000\uCBA3\u0000\uCBA4" + // 19340 - 19344
+                "\u0000\u0000\u0000\u0000\u0000\uC7D4\u0000\u0000\u0000\uC7DA" + // 19345 - 19349
+                "\u0000\uC7D6\u0000\u0000\u0000\uC7DC\u8EA2\uA2A5\u0000\uC7D9" + // 19350 - 19354
+                "\u0000\uC7CF\u0000\uC7D2\u0000\uC7D5\u0000\uC7D1\u0000\uC7D8" + // 19355 - 19359
+                "\u0000\uC7DB\u0000\uC7D0\u0000\uC7D3\u0000\uC7D7\u0000\uC7DD" + // 19360 - 19364
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19365 - 19369
+                "\u8EA2\uA3C0\u8EA2\uA3BD\u0000\u0000\u0000\uC9C9\u8EA2\uA3BE" + // 19370 - 19374
+                "\u0000\uC9BD\u0000\uC9BF\u0000\uC9D7\u0000\uC9D2\u0000\u0000" + // 19375 - 19379
+                "\u0000\u0000\u0000\u0000\u8EA2\uA3C5\u8EA2\uA3BF\u0000\uC9C1" + // 19380 - 19384
+                "\u0000\uC9C3\u8EA2\uA3C4\u0000\uC9CA\u8EA2\uA3BA\u0000\uC9D6" + // 19385 - 19389
+                "\u0000\uC9D8\u0000\uC9BE\u0000\uC9CF\u0000\u0000\u8EA2\uA3B8" + // 19390 - 19394
+                "\u0000\uC9D5\u0000\u0000\u0000\uC9C6\u0000\u0000\u0000\uC9D0" + // 19395 - 19399
+                "\u0000\uC9D1\u8EA2\uA3B9\u0000\uC9CE\u0000\uC9CC\u0000\u0000" + // 19400 - 19404
+                "\u0000\uC9CD\u0000\uC9D3\u8EA2\uA3C1\u0000\uC9C0\u0000\u0000" + // 19405 - 19409
+                "\u0000\uF5D0\u8EA2\uE3D9\u8EA2\uE7B0\u0000\u0000\u8EA2\uEFD2" + // 19410 - 19414
+                "\u0000\uCBC8\u8EA2\uB3A2\u0000\uD8BF\u0000\uDDC7\u8EA2\uC7DA" + // 19415 - 19419
+                "\u8EA2\uC7D9\u0000\uEFA7\u8EA2\uD4CF\u0000\uEFA8\u8EA2\uDFDD" + // 19420 - 19424
+                "\u0000\uF7C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uFDC3" + // 19425 - 19429
+                "\u0000\uCBC9\u8EA2\uA8EB\u8EA2\uB3A3\u0000\u0000\u0000\u0000" + // 19430 - 19434
+                "\u0000\uDDC8\u0000\u0000\u8EA2\uB9D2\u8EA2\uB9D3\u0000\u0000" + // 19435 - 19439
+                "\u8EA2\uC0CB\u0000\u0000\u0000\uE2AF\u0000\uE6ED\u0000\u0000" + // 19440 - 19444
+                "\u8EA2\uC7DC\u8EA2\uC7DB\u8EA2\uC7DD\u0000\u0000\u8EA2\uCEB9" + // 19445 - 19449
+                "\u8EA2\uCEBA\u0000\uEBB0\u0000\uF2C7\u0000\uEFA9\u0000\uF2C8" + // 19450 - 19454
+                "\u0000\u0000\u8EA2\uDFE1\u8EA2\uDFDE\u8EA2\uDFE0\u8EA2\uDFDF" + // 19455 - 19459
+                "\u0000\uF5D2\u0000\u0000\u8EA2\uE3DA\u8EA2\uE7B2\u8EA2\uE7B1" + // 19460 - 19464
+                "\u8EA2\uA5A4\u0000\uD8C1\u0000\uD8C0\u8EA2\uB3A4\u0000\u0000" + // 19465 - 19469
+                "\u8EA2\uB9D4\u0000\u0000\u0000\u0000\u8EA2\uAEDA\u0000\uD4E9" + // 19470 - 19474
+                "\u0000\uD4EC\u0000\u0000\u0000\u0000\u8EA2\uAED1\u8EA2\uAED7" + // 19475 - 19479
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD4EB\u8EA2\uAECC" + // 19480 - 19484
+                "\u0000\u0000\u0000\uD0D2\u8EA2\uB4BD\u8EA2\uAED8\u0000\u0000" + // 19485 - 19489
+                "\u8EA2\uAECF\u0000\u0000\u0000\uD4EA\u8EA2\uAECE\u0000\u0000" + // 19490 - 19494
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19495 - 19499
+                "\u8EA2\uB4B4\u0000\u0000\u0000\u0000\u0000\uD9D1\u0000\uD9D5" + // 19500 - 19504
+                "\u8EA2\uB4C4\u8EA2\uB4B2\u8EA2\uB4C0\u0000\uD9D6\u8EA2\uB4C2" + // 19505 - 19509
+                "\u0000\u0000\u8EA2\uB4C8\u0000\u0000\u8EA2\uB4CC\u0000\u0000" + // 19510 - 19514
+                "\u0000\u0000\u8EA2\uB4C3\u8EA2\uB4B7\u8EA2\uB4BF\u0000\u0000" + // 19515 - 19519
+                "\u8EA2\uB4CD\u8EA2\uB4CB\u8EA2\uB4C1\u8EA2\uB4BC\u8EA2\uB4B5" + // 19520 - 19524
+                "\u8EA2\uBAE8\u8EA2\uB4B3\u0000\uD9DA\u8EA2\uB4BA\u0000\uD9DB" + // 19525 - 19529
+                "\u0000\uD9D7\u8EA2\uB4B0\u8EA2\uB4C6\u8EA2\uB4B8\u0000\u0000" + // 19530 - 19534
+                "\u0000\u0000\u0000\u0001\u0000\u0002\u0000\u0003\u0000\u0004" + // 19535 - 19539
+                "\u0000\u0005\u0000\u0006\u0000\u0007\u0000\u0008\u0000\u0009" + // 19540 - 19544
+                "\u0000\n\u0000\u000B\u0000\u000C\u0000\r\u0000\u000E" + // 19545 - 19549
+                "\u0000\u000F\u0000\u0010\u0000\u0011\u0000\u0012\u0000\u0013" + // 19550 - 19554
+                "\u0000\u0014\u0000\u0015\u0000\u0016\u0000\u0017\u0000\u0018" + // 19555 - 19559
+                "\u0000\u0019\u0000\u001A\u0000\u001B\u0000\u001C\u0000\u001D" + // 19560 - 19564
+                "\u0000\u001E\u0000\u001F\u0000\u0020\u0000\u0021\u0000\"" + // 19565 - 19569
+                "\u0000\u0023\u0000\u0024\u0000\u0025\u0000\u0026\u0000\u0027" + // 19570 - 19574
+                "\u0000\u0028\u0000\u0029\u0000\u002A\u0000\u002B\u0000\u002C" + // 19575 - 19579
+                "\u0000\u002D\u0000\u002E\u0000\u002F\u0000\u0030\u0000\u0031" + // 19580 - 19584
+                "\u0000\u0032\u0000\u0033\u0000\u0034\u0000\u0035\u0000\u0036" + // 19585 - 19589
+                "\u0000\u0037\u0000\u0038\u0000\u0039\u0000\u003A\u0000\u003B" + // 19590 - 19594
+                "\u0000\u003C\u0000\u003D\u0000\u003E\u0000\u003F\u8EA2\uE2A1" + // 19595 - 19599
+                "\u8EA2\uE1FA\u0000\u0000\u0000\u0000\u8EA2\uD8A3\u8EA2\uE1FB" + // 19600 - 19604
+                "\u0000\uF6DC\u8EA2\uE1F7\u0000\u0000\u0000\uF6D9\u8EA2\uE2A6" + // 19605 - 19609
+                "\u0000\uF6DA\u8EA2\uE1F8\u8EA2\uE1F9\u8EA2\uE1FD\u0000\uF6DF" + // 19610 - 19614
+                "\u0000\u0000\u0000\uF6DE\u0000\u0000\u0000\u0000\u8EA2\uE1FC" + // 19615 - 19619
+                "\u0000\uF8C5\u8EA2\uE5EA\u8EA2\uE5F0\u0000\uF8C6\u8EA2\uE5E7" + // 19620 - 19624
+                "\u0000\uF8C3\u0000\uF8C0\u8EA2\uE5F2\u0000\uF8C4\u0000\u0000" + // 19625 - 19629
+                "\u0000\uF8C1\u8EA2\uE5E9\u8EA2\uE5EC\u8EA2\uE5ED\u8EA2\uE5EE" + // 19630 - 19634
+                "\u8EA2\uE5F1\u0000\u0000\u8EA2\uE2A3\u8EA2\uE5E8\u0000\uF8C2" + // 19635 - 19639
+                "\u8EA2\uE5EF\u8EA2\uE9B4\u8EA2\uE5EB\u0000\u0000\u0000\u0000" + // 19640 - 19644
+                "\u0000\u0000\u8EA2\uE9AB\u0000\uF9F5\u8EA2\uE9AE\u0000\uF9F6" + // 19645 - 19649
+                "\u8EA2\uE9B7\u8EA2\uE9AD\u8EA2\uE9AA\u0000\u0000\u8EA2\uE9AC" + // 19650 - 19654
+                "\u8EA2\uE9B0\u8EA2\uE9B3\u8EA2\uE9B2\u8EA2\uE9B6\u8EA2\uE9A9" + // 19655 - 19659
+                "\u0000\u0000\u0000\uF9F4\u8EA2\uE9B1\u0000\uF1AF\u0000\uF1AC" + // 19660 - 19664
+                "\u0000\uF1A7\u0000\uF1AA\u8EA2\uD7FC\u0000\u0000\u8EA2\uD1C6" + // 19665 - 19669
+                "\u8EA2\uD7F7\u8EA2\uD7FA\u8EA2\uD8AD\u8EA2\uD8A1\u8EA2\uD7F5" + // 19670 - 19674
+                "\u8EA2\uDDBA\u8EA2\uD8AF\u8EA2\uD7F9\u8EA2\uD8A9\u0000\u0000" + // 19675 - 19679
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDDBD\u0000\uF4AE" + // 19680 - 19684
+                "\u0000\u0000\u0000\u0000\u0000\uF4A2\u0000\u0000\u0000\u0000" + // 19685 - 19689
+                "\u0000\uF4A6\u8EA2\uDDBF\u8EA2\uDDC5\u8EA2\uDDC3\u0000\uF4A4" + // 19690 - 19694
+                "\u0000\uF4A5\u0000\uF4AC\u8EA2\uDDC6\u8EA2\uDDBE\u0000\uF4A7" + // 19695 - 19699
+                "\u0000\u0000\u8EA2\uDDC2\u8EA2\uDDC1\u8EA2\uDDC7\u0000\uF4AD" + // 19700 - 19704
+                "\u0000\u0000\u0000\uF4A8\u0000\uF4AB\u8EA2\uDDC0\u0000\uF4AF" + // 19705 - 19709
+                "\u0000\uF4A9\u0000\uF4B0\u0000\uF4A3\u8EA2\uDDC4\u0000\u0000" + // 19710 - 19714
+                "\u8EA2\uDDBC\u0000\u0000\u0000\u0000\u8EA2\uE2A5\u0000\u0000" + // 19715 - 19719
+                "\u0000\u0000\u0000\uF6DD\u8EA2\uE2A2\u8EA2\uE2A4\u0000\u0000" + // 19720 - 19724
+                "\u0000\uF6DB\u8EA2\uE1FE\u0000\uF4AA\u0000\u0000\u8EA2\uD1D2" + // 19725 - 19729
+                "\u0000\u0000\u0000\uEDCB\u8EA2\uD1CD\u0000\uEDCF\u8EA2\uD1C5" + // 19730 - 19734
+                "\u0000\uE9D2\u8EA2\uD1C9\u0000\u0000\u8EA2\uD1E2\u8EA2\uD1CA" + // 19735 - 19739
+                "\u8EA2\uD1C8\u0000\uEDD4\u0000\u0000\u8EA2\uD1E0\u0000\u0000" + // 19740 - 19744
+                "\u8EA2\uD1C7\u8EA2\uD1D9\u8EA2\uD1D8\u8EA2\uD1E5\u8EA2\uD1CF" + // 19745 - 19749
+                "\u0000\uEDD8\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19750 - 19754
+                "\u0000\u0000\u0000\u0000\u8EA2\uD7FE\u0000\u0000\u0000\uF1B3" + // 19755 - 19759
+                "\u0000\uF1A9\u8EA2\uD8AC\u8EA2\uD7F6\u0000\uF1AB\u8EA2\uD8A4" + // 19760 - 19764
+                "\u0000\uF1B2\u0000\uF1AD\u8EA2\uD8A2\u8EA2\uDDBB\u8EA2\uD8A8" + // 19765 - 19769
+                "\u8EA2\uD8AE\u8EA2\uD8A7\u8EA2\uD7F4\u8EA2\uD8A5\u8EA2\uD8B0" + // 19770 - 19774
+                "\u8EA2\uD8B2\u0000\uF1A8\u8EA2\uD8B1\u0000\uF1AE\u0000\uF1B4" + // 19775 - 19779
+                "\u0000\u0000\u0000\uF1B1\u0000\u0000\u8EA2\uD8AB\u0000\uF1B0" + // 19780 - 19784
+                "\u8EA2\uD8A6\u0000\u0000\u8EA2\uD7F8\u8EA2\uD7FD\u0000\u0000" + // 19785 - 19789
+                "\u8EA2\uD8AA\u8EA2\uCBCC\u8EA2\uD1C2\u0000\u0000\u8EA2\uCBD3" + // 19790 - 19794
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19795 - 19799
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19800 - 19804
+                "\u8EA2\uCBBE\u8EA2\uD1CC\u8EA2\uD1D6\u0000\uEDCC\u8EA2\uD1D5" + // 19805 - 19809
+                "\u8EA2\uD1E1\u0000\uEDCE\u8EA2\uD1D3\u0000\u0000\u8EA2\uD1D7" + // 19810 - 19814
+                "\u0000\uEDD9\u0000\u0000\u8EA2\uD1CE\u0000\uEDD1\u0000\u0000" + // 19815 - 19819
+                "\u8EA2\uD1DA\u8EA2\uD7FB\u0000\uEDDD\u0000\uEDDC\u8EA2\uD1DC" + // 19820 - 19824
+                "\u8EA2\uD1CB\u8EA2\uD1E6\u0000\uEDD7\u0000\u0000\u0000\uEDCD" + // 19825 - 19829
+                "\u8EA2\uD1DF\u0000\u0000\u8EA2\uD1E3\u8EA2\uD1E8\u8EA2\uD1DD" + // 19830 - 19834
+                "\u8EA2\uD1D1\u0000\uEDD0\u0000\uEDD3\u0000\uEDDB\u0000\uEDD6" + // 19835 - 19839
+                "\u0000\u0000\u8EA2\uD1D4\u8EA2\uCBC8\u0000\u0000\u0000\u0000" + // 19840 - 19844
+                "\u8EA2\uD1D0\u8EA2\uD1E7\u0000\uEDD2\u0000\u0000\u0000\uEDD5" + // 19845 - 19849
+                "\u8EA2\uD1E9\u0000\uEDCA\u8EA2\uD1DE\u8EA2\uD1C4\u8EA2\uD1E4" + // 19850 - 19854
+                "\u8EA2\uD1DB\u0000\uE9D5\u0000\uE9C6\u8EA2\uCBB7\u0000\u0000" + // 19855 - 19859
+                "\u8EA2\uCBD4\u0000\uE9CA\u8EA2\uCBD1\u8EA2\uCBDE\u8EA2\uCBBD" + // 19860 - 19864
+                "\u8EA2\uCBC6\u0000\u0000\u0000\u0000\u8EA2\uCBDC\u8EA2\uCBD2" + // 19865 - 19869
+                "\u0000\uE9C5\u0000\u0000\u0000\u0000\u8EA2\uCBC4\u0000\uE9BF" + // 19870 - 19874
+                "\u0000\uE9BD\u0000\uE9CF\u0000\u0000\u0000\u0000\u8EA2\uCBC2" + // 19875 - 19879
+                "\u8EA2\uCBBF\u8EA2\uCBC0\u0000\u0000\u8EA2\uCBD8\u0000\u0000" + // 19880 - 19884
+                "\u8EA2\uCBDD\u8EA2\uCBDB\u0000\uE9C3\u8EA2\uCBDF\u0000\uE9C7" + // 19885 - 19889
+                "\u0000\uE9CE\u0000\u0000\u8EA2\uCBB8\u8EA2\uD1C3\u8EA2\uCBC1" + // 19890 - 19894
+                "\u0000\u0000\u0000\uE9C1\u0000\uE9D3\u0000\uE9D0\u0000\uE9C4" + // 19895 - 19899
+                "\u8EA2\uCBCB\u8EA2\uCBBC\u0000\uE9D1\u8EA2\uCBCD\u0000\uE9CB" + // 19900 - 19904
+                "\u0000\uE9CD\u0000\uE9BC\u0000\u0000\u8EA2\uCBCF\u8EA2\uCBC7" + // 19905 - 19909
+                "\u8EA2\uCBBA\u0000\uE9CC\u8EA2\uCBD7\u8EA2\uCBDA\u8EA2\uCBC3" + // 19910 - 19914
+                "\u8EA2\uCBCE\u0000\u0000\u0000\uE9C2\u0000\uEDC9\u8EA2\uC4AD" + // 19915 - 19919
+                "\u8EA2\uC4B7\u0000\uE4E2\u8EA2\uC4C1\u0000\uE4EF\u0000\uE4E6" + // 19920 - 19924
+                "\u8EA2\uC4B4\u0000\uE4E5\u8EA2\uC4AB\u8EA2\uC4B9\u8EA2\uC4CD" + // 19925 - 19929
+                "\u0000\uE0C5\u0000\uE9D7\u8EA2\uC4BC\u8EA2\uCBB4\u8EA2\uC4BE" + // 19930 - 19934
+                "\u8EA2\uC4CC\u0000\uE4EC\u8EA2\uC4B5\u0000\uE4E0\u0000\uE4F0" + // 19935 - 19939
+                "\u0000\uEDDA\u8EA2\uC4AA\u0000\u0000\u8EA2\uC4C3\u0000\u0000" + // 19940 - 19944
+                "\u0000\u0000\u0000\u0000\u8EA2\uC4C2\u0000\u0000\u0000\u0000" + // 19945 - 19949
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19950 - 19954
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 19955 - 19959
+                "\u0000\u0000\u0000\u0000\u8EA2\uCBD0\u0000\uE9D4\u8EA2\uCBC5" + // 19960 - 19964
+                "\u8EA2\uCBCA\u0000\uE9C9\u0000\u0000\u8EA2\uCBB6\u0000\uE9D6" + // 19965 - 19969
+                "\u0000\u0000\u0000\uE9C0\u8EA2\uCBB5\u8EA2\uCBD6\u0000\uE9D8" + // 19970 - 19974
+                "\u8EA2\uCBB9\u8EA2\uCBC9\u0000\u0000\u8EA2\uCBBB\u8EA2\uCBD9" + // 19975 - 19979
+                "\u8EA2\uCBD5\u0000\uE9BE\u0000\uE9C8\u8EA2\uBDBE\u8EA2\uBDB8" + // 19980 - 19984
+                "\u0000\u0000\u0000\uE0C2\u0000\uE0CA\u8EA2\uBDB4\u8EA2\uBDAD" + // 19985 - 19989
+                "\u8EA2\uBDAE\u0000\u0000\u8EA2\uBDB0\u0000\uE0B1\u8EA2\uBDBD" + // 19990 - 19994
+                "\u0000\u0000\u0000\uE0BF\u0000\uE0C8\u0000\u0000\u0000\u0000" + // 19995 - 19999
+                "\u8EA2\uBDBF\u8EA2\uBDD7\u8EA2\uBDCF\u0000\uE0AD\u8EA2\uBDD5" + // 20000 - 20004
+                "\u0000\uE0B9\u0000\u0000\u0000\uE0B7\u0000\u0000\u8EA2\uBDDB" + // 20005 - 20009
+                "\u0000\uE0B6\u8EA2\uBDC5\u8EA2\uBDB9\u8EA2\uBDC3\u0000\uE0CD" + // 20010 - 20014
+                "\u8EA2\uBDC9\u8EA2\uBDC6\u8EA2\uBDB5\u0000\uE0C9\u8EA2\uBDD3" + // 20015 - 20019
+                "\u8EA2\uBDD0\u8EA2\uBDD8\u0000\uE0B0\u8EA2\uBDC4\u0000\uE0CC" + // 20020 - 20024
+                "\u0000\u0000\u8EA2\uBDCB\u0000\u0000\u0000\u0000\u0000\uE0BA" + // 20025 - 20029
+                "\u0000\uE0BD\u0000\u0000\u8EA2\uBDCA\u0000\uE0CB\u8EA2\uBDBA" + // 20030 - 20034
+                "\u8EA2\uB6C8\u0000\u0000\u0000\u0000\u8EA2\uBDD4\u8EA2\uBDD2" + // 20035 - 20039
+                "\u8EA2\uBDD6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20040 - 20044
+                "\u0000\u0000\u0000\u0000\u8EA2\uB2E6\u8EA2\uB2E3\u8EA2\uB2E1" + // 20045 - 20049
+                "\u0000\u0000\u0000\u0000\u0000\uD8A6\u8EA2\uB2E4\u0000\uD8AB" + // 20050 - 20054
+                "\u8EA2\uB2DE\u8EA2\uB2ED\u0000\u0000\u8EA2\uB2EF\u8EA2\uB2DF" + // 20055 - 20059
+                "\u0000\u0000\u0000\uD8A8\u8EA2\uB2F0\u8EA2\uB2EB\u8EA2\uB2DD" + // 20060 - 20064
+                "\u8EA2\uB2E2\u8EA2\uB2EC\u8EA2\uB2E8\u8EA2\uB2E5\u0000\u0000" + // 20065 - 20069
+                "\u0000\uD8AD\u8EA2\uB2EE\u8EA2\uB2E0\u0000\u0000\u0000\u0000" + // 20070 - 20074
+                "\u8EA2\uB2E9\u8EA2\uB2DB\u0000\uD8AC\u0000\uD8A9\u8EA2\uB2E7" + // 20075 - 20079
+                "\u0000\u0000\u8EA2\uB2EA\u8EA2\uB2DC\u0000\uD8AA\u0000\uD8A7" + // 20080 - 20084
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDDB2" + // 20085 - 20089
+                "\u8EA2\uB9A8\u0000\uDDB1\u0000\u0000\u8EA2\uB9AB\u8EA2\uB9AE" + // 20090 - 20094
+                "\u0000\uDDAE\u0000\uDDAC\u8EA2\uB9A3\u8EA2\uB9AC\u8EA2\uB9AA" + // 20095 - 20099
+                "\u8EA2\uB9A7\u8EA2\uB9AF\u8EA2\uB9B0\u8EA2\uB9B2\u8EA2\uB9B3" + // 20100 - 20104
+                "\u8EA2\uB9A2\u8EA2\uB6CF\u0000\u0000\u0000\u0000\u8EA2\uBDC1" + // 20105 - 20109
+                "\u0000\u0000\u0000\uDBD2\u0000\u0000\u0000\u0000\u0000\u0000" + // 20110 - 20114
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20115 - 20119
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20120 - 20124
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20125 - 20129
+                "\u0000\u0000\u0000\uE0C7\u0000\uDBDF\u0000\uE0B5\u8EA2\uBDBB" + // 20130 - 20134
+                "\u0000\uE0C3\u0000\u0000\u8EA2\uBDAF\u0000\uE0B2\u0000\uE0AE" + // 20135 - 20139
+                "\u8EA2\uBDCD\u0000\uE0B4\u0000\uE0B8\u0000\uE0B3\u0000\uE0BC" + // 20140 - 20144
+                "\u8EA2\uBDD1\u8EA2\uBDC8\u0000\u0000\u0000\u0000\u8EA2\uBDB6" + // 20145 - 20149
+                "\u0000\uE0C1\u0000\uE0BB\u8EA2\uBDC2\u0000\uE0AB\u8EA2\uBDCE" + // 20150 - 20154
+                "\u8EA2\uBDC7\u0000\uE0AF\u8EA2\uBDBC\u0000\uE0BE\u8EA2\uBDD9" + // 20155 - 20159
+                "\u8EA2\uBDDA\u0000\u0000\u0000\uE0AC\u8EA2\uBDCC\u0000\uE0C0" + // 20160 - 20164
+                "\u8EA2\uBDC0\u8EA2\uBDB2\u8EA2\uBDB3\u0000\uE0C4\u8EA2\uBDB7" + // 20165 - 20169
+                "\u8EA2\uB6C4\u0000\u0000\u8EA2\uB6E0\u0000\u0000\u0000\uDBE9" + // 20170 - 20174
+                "\u0000\uDBDD\u0000\uDBE8\u0000\uDBD3\u8EA2\uB6D0\u8EA2\uB6E2" + // 20175 - 20179
+                "\u8EA2\uB6DA\u0000\uDBD4\u0000\uDBCE\u8EA2\uB6E8\u0000\u0000" + // 20180 - 20184
+                "\u8EA2\uB6E1\u8EA2\uB6E3\u0000\uDBD6\u0000\uDBDE\u8EA2\uB6E5" + // 20185 - 20189
+                "\u8EA2\uB6CE\u8EA2\uB6DF\u8EA2\uB6D3\u8EA2\uB6E7\u0000\uDBE3" + // 20190 - 20194
+                "\u0000\uDBCB\u0000\uDBE1\u8EA2\uB6D8\u8EA2\uB6D6\u8EA2\uB6D7" + // 20195 - 20199
+                "\u0000\uDBD8\u8EA2\uB6D2\u8EA2\uB6D1\u0000\uDBCD\u8EA2\uB6CB" + // 20200 - 20204
+                "\u8EA2\uB6E9\u0000\uDBCF\u8EA2\uB6D5\u0000\uDBED\u0000\u0000" + // 20205 - 20209
+                "\u0000\uDBE7\u8EA2\uB6CA\u0000\uDBE4\u0000\uDBE2\u0000\uDBEB" + // 20210 - 20214
+                "\u8EA2\uB6DC\u0000\uDBE6\u8EA2\uB0B5\u8EA2\uB6DD\u0000\uDBE5" + // 20215 - 20219
+                "\u8EA2\uB6E4\u0000\uDBCA\u8EA2\uB6D9\u0000\uDBDC\u8EA2\uB6CD" + // 20220 - 20224
+                "\u0000\uDBDB\u0000\u0000\u0000\uDBD9\u0000\uDBD1\u0000\uDBD0" + // 20225 - 20229
+                "\u8EA2\uBDAC\u8EA2\uB6E6\u0000\u0000\u0000\u0000\u0000\uCCB2" + // 20230 - 20234
+                "\u0000\u0000\u0000\uD0A7\u8EA2\uA9B2\u0000\u0000\u8EA2\uA5D3" + // 20235 - 20239
+                "\u0000\uD0AC\u0000\u0000\u8EA2\uA9B3\u0000\uD0A8\u0000\uD0AB" + // 20240 - 20244
+                "\u0000\uD0AA\u0000\uD0A9\u0000\uD0A6\u0000\u0000\u0000\u0000" + // 20245 - 20249
+                "\u0000\u0000\u8EA2\uAEAB\u0000\u0000\u0000\uD4CA\u8EA2\uAEAE" + // 20250 - 20254
+                "\u0000\uD4C8\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uAEAA" + // 20255 - 20259
+                "\u0000\uD4CB\u0000\uD4C9\u0000\uD4CC\u8EA2\uAEAC\u8EA2\uAEAD" + // 20260 - 20264
+                "\u0000\u0000\u8EA2\uAEA9\u8EA2\uAEAF\u0000\u0000\u0000\u0000" + // 20265 - 20269
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDEB7" + // 20270 - 20274
+                "\u0000\uD9AA\u8EA2\uB3EC\u8EA2\uB3EE\u8EA2\uB3ED\u8EA2\uB3EF" + // 20275 - 20279
+                "\u0000\uD9AB\u0000\u0000\u0000\u0000\u0000\uDEB4\u0000\u0000" + // 20280 - 20284
+                "\u0000\uDEB5\u0000\uDEB6\u0000\u0000\u0000\uE3B7\u8EA2\uC1EC" + // 20285 - 20289
+                "\u0000\u0000\u8EA2\uC1EB\u8EA2\uC1ED\u8EA2\uC1EE\u0000\uE3B8" + // 20290 - 20294
+                "\u0000\u0000\u0000\uE3B6\u8EA2\uB0C5\u0000\u0000\u8EA2\uB0BF" + // 20295 - 20299
+                "\u8EA2\uB0C8\u8EA2\uB0C6\u0000\uD6CC\u8EA2\uB0B7\u0000\uD6BD" + // 20300 - 20304
+                "\u0000\uD6BC\u0000\uD6C4\u0000\uD6CA\u8EA2\uB0C3\u0000\uD6C9" + // 20305 - 20309
+                "\u8EA2\uB0B4\u0000\uDBC8\u0000\u0000\u8EA2\uB0CC\u8EA2\uB0B3" + // 20310 - 20314
+                "\u8EA2\uB0AE\u0000\uD6C2\u0000\uD6CE\u0000\uD6BB\u0000\u0000" + // 20315 - 20319
+                "\u8EA2\uB0BB\u8EA2\uB0C0\u0000\u0000\u0000\u0000\u0000\u0000" + // 20320 - 20324
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20325 - 20329
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20330 - 20334
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDBEA" + // 20335 - 20339
+                "\u8EA2\uB6C5\u8EA2\uB6C9\u0000\u0000\u0000\uDBD7\u0000\uDBD5" + // 20340 - 20344
+                "\u0000\u0000\u0000\u0000\u0000\uDBCC\u8EA2\uB6C7\u8EA2\uB6C6" + // 20345 - 20349
+                "\u0000\uDBE0\u0000\u0000\u8EA2\uB6CC\u0000\uDBDA\u0000\u0000" + // 20350 - 20354
+                "\u8EA2\uB6DE\u8EA2\uB6EA\u0000\uDBC9\u8EA2\uB6DB\u8EA2\uB6D4" + // 20355 - 20359
+                "\u0000\uDBEC\u8EA2\uABE6\u0000\uD1FC\u8EA2\uABE0\u0000\u0000" + // 20360 - 20364
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20365 - 20369
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20370 - 20374
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20375 - 20379
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20380 - 20384
+                "\u8EA2\uB0AF\u0000\uD6C1\u0000\uD6C6\u0000\u0000\u0000\u0000" + // 20385 - 20389
+                "\u0000\u0000\u8EA2\uB0B8\u8EA2\uB0BE\u8EA2\uB0BA\u8EA2\uB0AD" + // 20390 - 20394
+                "\u8EA2\uB0B0\u8EA2\uB0A9\u8EA2\uB0AA\u0000\uD6CD\u0000\uD6BE" + // 20395 - 20399
+                "\u8EA2\uB0B9\u8EA2\uB0C2\u0000\uD6C8\u0000\uD6BA\u0000\u0000" + // 20400 - 20404
+                "\u0000\uD6C3\u8EA2\uB0B1\u0000\uD6C5\u8EA2\uB0B2\u8EA2\uB0BC" + // 20405 - 20409
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD6C7\u8EA2\uB0CB" + // 20410 - 20414
+                "\u8EA2\uB0AB\u0000\uD6C0\u0000\uD6BF\u0000\uD6CB\u8EA2\uB0A8" + // 20415 - 20419
+                "\u8EA2\uB0C9\u8EA2\uB0BD\u8EA2\uB0CA\u8EA2\uB0C4\u8EA2\uB0B6" + // 20420 - 20424
+                "\u8EA2\uABDE\u8EA2\uABE1\u0000\u0000\u8EA2\uABE4\u8EA2\uABD9" + // 20425 - 20429
+                "\u0000\u0000\u0000\u0000\u8EA2\uABE7\u8EA2\uABEA\u8EA2\uABEC" + // 20430 - 20434
+                "\u8EA2\uABD6\u0000\uD1F9\u0000\uD1FE\u8EA2\uB0AC\u0000\uD2B0" + // 20435 - 20439
+                "\u8EA2\uABE5\u8EA2\uABED\u8EA2\uABDD\u8EA2\uABD5\u0000\u0000" + // 20440 - 20444
+                "\u0000\u0000\u0000\u0000\u8EA2\uB0C7\u0000\uD2A3\u8EA2\uABE2" + // 20445 - 20449
+                "\u8EA2\uABDA\u8EA2\uABDC\u0000\uD2A8\u0000\u0000\u8EA2\uABDF" + // 20450 - 20454
+                "\u0000\uD2A2\u8EA2\uABD2\u8EA2\uABE8\u0000\u0000\u8EA2\uABEB" + // 20455 - 20459
+                "\u0000\u0000\u0000\u0000\u0000\uD1FD\u0000\u0000\u0000\uD2AB" + // 20460 - 20464
+                "\u8EA2\uABCF\u0000\uD2AD\u0000\uD1FB\u0000\uD2B1\u8EA2\uABE9" + // 20465 - 20469
+                "\u8EA2\uABD1\u0000\uD2AE\u8EA2\uB0C1\u8EA2\uA7E8\u0000\uD2A1" + // 20470 - 20474
+                "\u0000\uD1FA\u8EA2\uABD8\u8EA2\uABD0\u0000\uD2AF\u0000\uD2A7" + // 20475 - 20479
+                "\u8EA2\uABE3\u0000\uD2AC\u0000\uD2AA\u8EA2\uABDB\u0000\uD2A4" + // 20480 - 20484
+                "\u8EA2\uABD3\u0000\uD2A5\u0000\uD2A6\u8EA2\uABD4\u8EA2\uA7E7" + // 20485 - 20489
+                "\u0000\uCED3\u8EA2\uA7DA\u8EA2\uA7DC\u0000\uCED1\u0000\uCED6" + // 20490 - 20494
+                "\u8EA2\uA7DD\u8EA2\uA7EA\u0000\u0000\u0000\uD1F8\u0000\uCEDC" + // 20495 - 20499
+                "\u0000\u0000\u0000\uCEC6\u8EA2\uA7E9\u0000\u0000\u8EA2\uA7ED" + // 20500 - 20504
+                "\u8EA2\uA7D9\u8EA2\uA7EF\u8EA2\uA7E0\u0000\uCECF\u8EA2\uA7D5" + // 20505 - 20509
+                "\u0000\uCECE\u0000\uCEE0\u0000\uCED5\u0000\u0000\u8EA2\uA7D3" + // 20510 - 20514
+                "\u8EA2\uABD7\u0000\uCEDB\u0000\uCEDF\u8EA2\uA7E1\u8EA2\uA7E6" + // 20515 - 20519
+                "\u0000\u0000\u0000\uCEE1\u0000\uCEDA\u0000\uCECC\u0000\uCEC2" + // 20520 - 20524
+                "\u0000\u0000\u0000\uCEC7\u0000\u0000\u8EA2\uA7D7\u0000\uCEC3" + // 20525 - 20529
+                "\u8EA2\uA7EE\u0000\u0000\u8EA2\uA7D1\u8EA2\uA7D0\u8EA2\uA7DE" + // 20530 - 20534
+                "\u8EA2\uA7D2\u0000\uCEDE\u0000\uD6B9\u0000\uCED7\u8EA2\uA7DF" + // 20535 - 20539
+                "\u0000\uCEC4\u0000\u0000\u0000\uD2A9\u0000\u0000\u0000\u0000" + // 20540 - 20544
+                "\u0000\u0000\u8EA2\uA7EC\u0000\u0000\u0000\u0000\u0000\u0000" + // 20545 - 20549
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD2E7\u0000\u0000" + // 20550 - 20554
+                "\u0000\u0000\u8EA2\uD2E8\u0000\u0000\u0000\uEEB6\u8EA2\uD2EA" + // 20555 - 20559
+                "\u8EA2\uD2E9\u0000\u0000\u0000\uA3A3\u0000\u0000\u8EA2\uD9B6" + // 20560 - 20564
+                "\u8EA2\uD9B7\u8EA2\uD9B3\u0000\u0000\u8EA2\uD9B4\u0000\uF1E6" + // 20565 - 20569
+                "\u0000\uF1E7\u8EA2\uD9B5\u0000\u0000\u0000\uF4E1\u0000\u0000" + // 20570 - 20574
+                "\u0000\u0000\u0000\uF4DD\u0000\uF4E2\u0000\uF4DE\u0000\uF4E0" + // 20575 - 20579
+                "\u0000\uF4DC\u0000\u0000\u0000\uF4DF\u0000\u0000\u0000\u0000" + // 20580 - 20584
+                "\u0000\u0000\u0000\u0000\u0000\uF6FD\u8EA2\uDEBC\u0000\u0000" + // 20585 - 20589
+                "\u8EA2\uE6B8\u0000\u0000\u8EA2\uE6B7\u0000\u0000\u8EA2\uE9D8" + // 20590 - 20594
+                "\u0000\uFAA7\u0000\uFAA8\u8EA2\uEDEE\u8EA2\uEBF4\u0000\u0000" + // 20595 - 20599
+                "\u8EA2\uEDED\u0000\u0000\u8EA2\uF1AD\u8EA2\uF1F2\u0000\uC8CE" + // 20600 - 20604
+                "\u0000\u0000\u0000\u0000\u0000\uCBB7\u0000\u0000\u8EA2\uA8C9" + // 20605 - 20609
+                "\u0000\uCFAB\u0000\u0000\u8EA2\uC7D5\u8EA2\uC7D1\u8EA2\uC7D4" + // 20610 - 20614
+                "\u8EA2\uC7D2\u0000\uE6E4\u8EA2\uC7CC\u0000\uE6DF\u0000\u0000" + // 20615 - 20619
+                "\u0000\u0000\u0000\u0000\u8EA2\uCEB4\u0000\uEBA2\u0000\uEBA5" + // 20620 - 20624
+                "\u0000\u0000\u8EA2\uCEB6\u0000\u0000\u0000\uEBAD\u8EA2\uCEB5" + // 20625 - 20629
+                "\u0000\uEBA7\u0000\u0000\u0000\uEEF8\u8EA2\uCEB7\u0000\u0000" + // 20630 - 20634
+                "\u0000\uEBAC\u8EA2\uCEB3\u0000\uEBAE\u0000\u0000\u0000\u0000" + // 20635 - 20639
+                "\u0000\u0000\u0000\uEBA3\u0000\u0000\u0000\uE6E2\u0000\uEBA6" + // 20640 - 20644
+                "\u0000\u0000\u0000\uEBA4\u0000\uEBA8\u0000\uEBAA\u0000\uEBA1" + // 20645 - 20649
+                "\u0000\uEBAF\u0000\uEBAB\u0000\u0000\u0000\uEBA9\u8EA2\uCEB2" + // 20650 - 20654
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uEFA1" + // 20655 - 20659
+                "\u0000\u0000\u0000\uEEFB\u0000\u0000\u0000\u0000\u0000\u0000" + // 20660 - 20664
+                "\u0000\uEFA4\u0000\u0000\u8EA2\uD4BF\u0000\uEFA5\u8EA2\uD4CB" + // 20665 - 20669
+                "\u8EA2\uD4C4\u0000\uEEF4\u8EA2\uD4CC\u8EA2\uD4C6\u0000\uEEFE" + // 20670 - 20674
+                "\u8EA2\uA7E5\u0000\uCAE8\u0000\uCBA1\u0000\uCAF6\u8EA2\uA4CE" + // 20675 - 20679
+                "\u0000\uCAEB\u0000\uCAFA\u8EA2\uA4D6\u0000\uCAE9\u0000\uCAEA" + // 20680 - 20684
+                "\u8EA2\uA7E3\u8EA2\uA4CF\u0000\uCAF1\u0000\uCAFC\u8EA2\uA4DD" + // 20685 - 20689
+                "\u8EA2\uA4D0\u0000\uCAEF\u0000\u0000\u0000\uCAF4\u8EA2\uA7CF" + // 20690 - 20694
+                "\u0000\uCAFD\u8EA2\uA4D7\u0000\uCAF3\u0000\u0000\u0000\uCAFE" + // 20695 - 20699
+                "\u0000\uCAE7\u8EA2\uA4D4\u0000\uCAEC\u8EA2\uA4D8\u8EA2\uA7E4" + // 20700 - 20704
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20705 - 20709
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 20710 - 20714
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCECD\u0000\uCEDD" + // 20715 - 20719
+                "\u8EA2\uA7D6\u0000\uCED4\u0000\u0000\u8EA2\uA7EB\u0000\uCEC5" + // 20720 - 20724
+                "\u0000\u0000\u0000\uCEC8\u8EA2\uA7E2\u0000\u0000\u8EA2\uA7D4" + // 20725 - 20729
+                "\u8EA2\uA7D8\u0000\uCED0\u0000\uCED2\u8EA2\uA7DB\u0000\uCED9" + // 20730 - 20734
+                "\u0000\uCECB\u0000\uCEC9\u0000\uCECA\u0000\uCED8\u0000\uC6E5" + // 20735 - 20739
+                "\u0000\uC6E4\u0000\uCAE5\u8EA2\uA1E1\u0000\u0000\u0000\u0000" + // 20740 - 20744
+                "\u8EA2\uA2D9\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA2DD" + // 20745 - 20749
+                "\u8EA2\uA2DF\u8EA2\uA2E0\u0000\uC8C6\u0000\uC8C7\u8EA2\uA2DC" + // 20750 - 20754
+                "\u0000\uC8C2\u0000\u0000\u8EA2\uA2DA\u0000\u0000\u8EA2\uA2DE" + // 20755 - 20759
+                "\u0000\uC8C3\u0000\u0000\u0000\uC8BE\u0000\u0000\u0000\uC8BF" + // 20760 - 20764
+                "\u0000\u0000\u0000\uC8C5\u8EA2\uA2DB\u0000\uC8BD\u0000\uCAE6" + // 20765 - 20769
+                "\u0000\uC8C0\u0000\uC8C1\u0000\uC8C4\u0000\u0000\u0000\u0000" + // 20770 - 20774
+                "\u0000\u0000\u8EA2\uA4DB\u8EA2\uA4D9\u8EA2\uA4CC\u0000\uCAF2" + // 20775 - 20779
+                "\u8EA2\uA4D3\u0000\uCAED\u8EA2\uA4CD\u0000\u0000\u8EA2\uA4D5" + // 20780 - 20784
+                "\u0000\u0000\u8EA2\uA4D2\u0000\uCAF0\u8EA2\uA4D1\u0000\uCAF7" + // 20785 - 20789
+                "\u8EA2\uA4DA\u0000\uCAF9\u0000\u0000\u0000\uCAFB\u0000\u0000" + // 20790 - 20794
+                "\u8EA2\uA4CB\u0000\u0000\u0000\uCAEE\u8EA2\uA4DC\u0000\u0000" + // 20795 - 20799
+                "\u0000\uCAF5\u0000\uCAF8\u0000\u0000\u0000\uD3D1\u8EA2\uB9C8" + // 20800 - 20804
+                "\u0000\uE1FD\u0000\u0000\u8EA2\uC7C1\u0000\uF7BB\u0000\u0000" + // 20805 - 20809
+                "\u8EA2\uE6FD\u0000\u0000\u0000\u0000\u0000\uCBC4\u0000\u0000" + // 20810 - 20814
+                "\u0000\u0000\u0000\u0000\u0000\uDDBD\u0000\u0000\u0000\u0000" + // 20815 - 20819
+                "\u0000\u0000\u0000\uDDBC\u0000\u0000\u8EA2\uC0B6\u0000\uE1FE" + // 20820 - 20824
+                "\u8EA2\uC0B8\u8EA2\uC0B7\u0000\u0000\u0000\u0000\u8EA2\uC7C2" + // 20825 - 20829
+                "\u0000\uE6D7\u8EA2\uCEAB\u8EA2\uCEAE\u8EA2\uCEAD\u0000\u0000" + // 20830 - 20834
+                "\u8EA2\uCEAC\u8EA2\uD4B7\u8EA2\uD4B9\u8EA2\uD4B8\u0000\u0000" + // 20835 - 20839
+                "\u0000\uF2B6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF2B5" + // 20840 - 20844
+                "\u0000\u0000\u0000\uF5C6\u8EA2\uDFC7\u8EA2\uDFC9\u8EA2\uDFC8" + // 20845 - 20849
+                "\u0000\u0000\u0000\u0000\u0000\uF7BC\u0000\u0000\u0000\u0000" + // 20850 - 20854
+                "\u0000\u0000\u8EA2\uE7A1\u8EA2\uE6FE\u0000\u0000\u8EA2\uE9F8" + // 20855 - 20859
+                "\u0000\uFABC\u0000\u0000\u0000\u0000\u0000\uFBAA\u8EA2\uEEA3" + // 20860 - 20864
+                "\u8EA2\uEEA2\u8EA2\uD1BF\u8EA2\uD1BE\u8EA2\uD1C1\u8EA2\uD7F2" + // 20865 - 20869
+                "\u8EA2\uD7F1\u0000\uF1A6\u8EA2\uD7F3\u0000\u0000\u0000\uF4A1" + // 20870 - 20874
+                "\u8EA2\uDDB9\u0000\u0000\u8EA2\uE1F6\u8EA2\uE5E6\u8EA2\uEDD5" + // 20875 - 20879
+                "\u0000\u0000\u0000\uC5D4\u0000\uC6E2\u0000\uC6E1\u0000\u0000" + // 20880 - 20884
+                "\u0000\uCEC0\u8EA2\uA1C1\u8EA2\uA1DF\u0000\uC8BC\u0000\u0000" + // 20885 - 20889
+                "\u8EA2\uA2D8\u8EA2\uA4C9\u8EA2\uA4CA\u0000\uCEC1\u0000\u0000" + // 20890 - 20894
+                "\u8EA2\uA7CE\u0000\u0000\u0000\uD1F7\u8EA2\uABCD\u8EA2\uABCE" + // 20895 - 20899
+                "\u0000\u0000\u0000\uD6B4\u0000\uD6B8\u8EA2\uB0A7\u0000\uD6B7" + // 20900 - 20904
+                "\u0000\uD6B5\u0000\uD6B6\u0000\u0000\u8EA2\uB6C3\u0000\uDBC7" + // 20905 - 20909
+                "\u0000\uE0AA\u0000\u0000\u0000\uE0A8\u0000\uE0A9\u8EA2\uBDAB" + // 20910 - 20914
+                "\u0000\u0000\u0000\u0000\u0000\uE9BB\u0000\uC5D5\u0000\u0000" + // 20915 - 20919
+                "\u8EA2\uA1E0\u0000\u0000\u0000\uC6E3\u0000\u0000\u0000\u0000" + // 20920 - 20924
+                "\u8EA2\uA1E3\u0000\u0000\u0000\u0000\u0000\uC6E6\u8EA2\uA1E2" + // 20925 - 20929
+                "\u0000\uE4DA\u0000\u0000\u0000\u0000\u8EA2\uCBB1\u8EA2\uCBB2" + // 20930 - 20934
+                "\u0000\uEDC7\u0000\uEDC8\u8EA2\uD7F0\u8EA2\uD7EF\u8EA2\uE1F5" + // 20935 - 20939
+                "\u8EA2\uEFB2\u0000\uC5D1\u8EA2\uA1C0\u0000\uC6E0\u0000\u0000" + // 20940 - 20944
+                "\u0000\uCAE4\u8EA2\uA4C8\u0000\u0000\u0000\uD1F5\u0000\uE4DC" + // 20945 - 20949
+                "\u0000\uC5D2\u0000\u0000\u8EA2\uABCA\u0000\uD1F6\u8EA2\uABCB" + // 20950 - 20954
+                "\u0000\u0000\u0000\uF3FE\u0000\uC5D3\u0000\u0000\u0000\u0000" + // 20955 - 20959
+                "\u8EA2\uA7CD\u0000\u0000\u8EA2\uABCC\u0000\u0000\u8EA2\uB0A5" + // 20960 - 20964
+                "\u8EA2\uB0A4\u8EA2\uB0A2\u0000\u0000\u8EA2\uB0A1\u8EA2\uB0A6" + // 20965 - 20969
+                "\u8EA2\uB0A3\u0000\u0000\u0000\u0000\u0000\uDBC5\u0000\uDBC6" + // 20970 - 20974
+                "\u0000\u0000\u0000\u0000\u0000\uE0A7\u8EA2\uBDA8\u0000\u0000" + // 20975 - 20979
+                "\u8EA2\uBDA9\u8EA2\uBDAA\u0000\u0000\u0000\u0000\u0000\u0000" + // 20980 - 20984
+                "\u8EA2\uC4A7\u8EA2\uC4A8\u8EA2\uC4A6\u0000\u0000\u8EA2\uC4A4" + // 20985 - 20989
+                "\u8EA2\uC4A5\u0000\uE4DD\u8EA2\uCBB3\u8EA2\uD1C0\u8EA2\uA7CB" + // 20990 - 20994
+                "\u0000\u0000\u8EA2\uABC7\u0000\uD1F2\u8EA2\uABC8\u0000\u0000" + // 20995 - 20999
+                "\u0000\uD1F3\u0000\u0000\u8EA2\uAFFE\u0000\uD6B2\u0000\uD6B1" + // 21000 - 21004
+                "\u0000\u0000\u8EA2\uB6C2\u8EA2\uB6C0\u8EA2\uB6C1\u8EA2\uB6BF" + // 21005 - 21009
+                "\u0000\u0000\u8EA2\uB6BE\u0000\u0000\u0000\u0000\u8EA2\uBDA3" + // 21010 - 21014
+                "\u8EA2\uBDA6\u0000\uE0A5\u8EA2\uBDA4\u0000\uE0A4\u8EA2\uBDA5" + // 21015 - 21019
+                "\u0000\u0000\u8EA2\uC4A3\u0000\u0000\u0000\u0000\u8EA2\uCBAE" + // 21020 - 21024
+                "\u8EA2\uCBAF\u8EA2\uCBB0\u0000\u0000\u8EA2\uD1BC\u8EA2\uD1BB" + // 21025 - 21029
+                "\u0000\uEDC6\u8EA2\uD1BA\u8EA2\uD1BD\u8EA2\uD7EC\u0000\u0000" + // 21030 - 21034
+                "\u0000\u0000\u8EA2\uD7ED\u8EA2\uD7EE\u0000\u0000\u8EA2\uDDB8" + // 21035 - 21039
+                "\u0000\uF3FD\u0000\uF6D8\u8EA2\uE5E5\u0000\u0000\u0000\uFAF3" + // 21040 - 21044
+                "\u8EA2\uA1BF\u0000\u0000\u0000\uD1F4\u8EA2\uABC9\u0000\uD6B3" + // 21045 - 21049
+                "\u0000\u0000\u0000\u0000\u0000\uDBC4\u0000\u0000\u0000\uE0A6" + // 21050 - 21054
+                "\u8EA2\uBDA7\u0000\u0000\u0000\uE4DB\u8EA2\uEBE0\u0000\u0000" + // 21055 - 21059
+                "\u8EA2\uEBDC\u8EA2\uEBDE\u0000\uFAF1\u0000\u0000\u0000\u0000" + // 21060 - 21064
+                "\u0000\u0000\u8EA2\uEDD3\u8EA2\uEDD4\u0000\uFBE2\u8EA2\uEDD2" + // 21065 - 21069
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uEFB1\u0000\uFCBB" + // 21070 - 21074
+                "\u8EA2\uEFAF\u8EA2\uEFB0\u8EA2\uF0BA\u0000\u0000\u0000\u0000" + // 21075 - 21079
+                "\u0000\uFDA3\u8EA2\uF1A3\u8EA2\uF1A1\u8EA2\uF1A2\u8EA2\uF1A4" + // 21080 - 21084
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uF2AB\u0000\u0000" + // 21085 - 21089
+                "\u0000\uC5CE\u0000\uC8B9\u0000\u0000\u0000\uCEBC\u0000\u0000" + // 21090 - 21094
+                "\u8EA2\uA7CA\u0000\u0000\u0000\u0000\u8EA2\uABC6\u0000\u0000" + // 21095 - 21099
+                "\u0000\u0000\u0000\u0000\u8EA2\uAFF7\u8EA2\uAFF9\u0000\u0000" + // 21100 - 21104
+                "\u8EA2\uAFF8\u0000\u0000\u8EA2\uAFFA\u0000\uDBC3\u8EA2\uB6BB" + // 21105 - 21109
+                "\u8EA2\uAFFB\u0000\u0000\u8EA2\uB6BA\u8EA2\uB6BC\u8EA2\uB6BD" + // 21110 - 21114
+                "\u8EA2\uBCFD\u0000\uE0A2\u8EA2\uBCFE\u8EA2\uBDA2\u0000\uE0A3" + // 21115 - 21119
+                "\u0000\uE0A1\u8EA2\uBDA1\u0000\uF3F1\u8EA2\uDDA2\u0000\u0000" + // 21120 - 21124
+                "\u8EA2\uDDAD\u0000\uF3F3\u8EA2\uDDB4\u0000\u0000\u8EA2\uDDA9" + // 21125 - 21129
+                "\u0000\u0000\u8EA2\uDDA4\u0000\u0000\u0000\u0000\u8EA2\uDDB5" + // 21130 - 21134
+                "\u8EA2\uDCFE\u8EA2\uDDAB\u0000\u0000\u0000\uF3FA\u8EA2\uDDB0" + // 21135 - 21139
+                "\u8EA2\uDDB6\u8EA2\uDDAA\u0000\uF3F2\u8EA2\uDDAC\u8EA2\uDDA1" + // 21140 - 21144
+                "\u0000\uF3F9\u0000\u0000\u0000\u0000\u8EA2\uDDB3\u8EA2\uDDA6" + // 21145 - 21149
+                "\u0000\uF3F5\u0000\u0000\u8EA2\uDDA8\u8EA2\uDDA5\u0000\uF3FB" + // 21150 - 21154
+                "\u8EA2\uDDA7\u0000\uF3F4\u0000\uF3F7\u8EA2\uDDAF\u8EA2\uDDA3" + // 21155 - 21159
+                "\u8EA2\uDDB2\u0000\u0000\u8EA2\uDDAE\u0000\u0000\u0000\u0000" + // 21160 - 21164
+                "\u0000\u0000\u0000\uF6CF\u8EA2\uE1F3\u0000\uF6D4\u0000\uF6D5" + // 21165 - 21169
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF6CE\u8EA2\uE1F2" + // 21170 - 21174
+                "\u0000\u0000\u8EA2\uE1EF\u8EA2\uE1F0\u0000\uF6D2\u8EA2\uE1EA" + // 21175 - 21179
+                "\u8EA2\uE1EE\u0000\uF6D1\u0000\u0000\u8EA2\uE1EB\u0000\u0000" + // 21180 - 21184
+                "\u0000\u0000\u8EA2\uC1E3\u8EA2\uC1E1\u0000\u0000\u8EA2\uC1DD" + // 21185 - 21189
+                "\u0000\uE3AF\u8EA2\uC1DB\u0000\uE3B5\u8EA2\uC1E0\u8EA2\uC1E7" + // 21190 - 21194
+                "\u8EA2\uC1DE\u8EA2\uC1E6\u0000\u0000\u0000\u0000\u0000\uE7FC" + // 21195 - 21199
+                "\u0000\uE7F9\u0000\u0000\u0000\uE7FA\u0000\u0000\u8EA2\uC9A1" + // 21200 - 21204
+                "\u8EA2\uC8F7\u0000\uE7F8\u0000\uE7F5\u8EA2\uC8F8\u0000\u0000" + // 21205 - 21209
+                "\u0000\u0000\u0000\uE7F7\u8EA2\uC8FB\u0000\u0000\u8EA2\uC8FD" + // 21210 - 21214
+                "\u0000\u0000\u0000\u0000\u8EA2\uC9A6\u0000\u0000\u0000\u0000" + // 21215 - 21219
+                "\u8EA2\uC9A5\u8EA2\uC8FE\u0000\uE7F4\u8EA2\uC8F6\u0000\uE7F2" + // 21220 - 21224
+                "\u8EA2\uC8F9\u0000\uE7FD\u8EA2\uC8FC\u0000\u0000\u8EA2\uC9A2" + // 21225 - 21229
+                "\u0000\uE7F6\u0000\uE7F3\u8EA2\uC9A4\u8EA2\uC9A3\u0000\uE7FB" + // 21230 - 21234
+                "\u0000\u0000\u8EA2\uC8FA\u0000\u0000\u0000\uECA3\u8EA2\uCFD4" + // 21235 - 21239
+                "\u0000\u0000\u8EA2\uCFD1\u0000\uECA4\u0000\u0000\u0000\uECA2" + // 21240 - 21244
+                "\u0000\u0000\u8EA2\uCFD8\u8EA2\uCFD5\u8EA2\uCFCE\u8EA2\uD1A8" + // 21245 - 21249
+                "\u8EA2\uD7D9\u0000\u0000\u0000\u0000\u0000\uF0FA\u0000\u0000" + // 21250 - 21254
+                "\u8EA2\uD7E8\u0000\uF0FE\u0000\uF1A3\u8EA2\uD7CB\u0000\u0000" + // 21255 - 21259
+                "\u0000\uF0FD\u0000\u0000\u8EA2\uD7E6\u8EA2\uD7E7\u8EA2\uD7DD" + // 21260 - 21264
+                "\u8EA2\uD7DC\u8EA2\uD7D4\u0000\u0000\u0000\u0000\u8EA2\uD7DE" + // 21265 - 21269
+                "\u8EA2\uD7E5\u8EA2\uD7E4\u0000\u0000\u0000\uF0F8\u0000\uF0F6" + // 21270 - 21274
+                "\u8EA2\uD7D6\u8EA2\uD7D3\u0000\u0000\u8EA2\uD7D0\u8EA2\uD7E3" + // 21275 - 21279
+                "\u0000\uF1A2\u8EA2\uD7E1\u0000\uF0FC\u0000\uF0FB\u0000\u0000" + // 21280 - 21284
+                "\u8EA2\uD7DB\u0000\u0000\u8EA2\uD7CA\u8EA2\uD7CC\u8EA2\uD7CE" + // 21285 - 21289
+                "\u8EA2\uD7E0\u8EA2\uD7DA\u0000\uF0F7\u0000\u0000\u8EA2\uD7D1" + // 21290 - 21294
+                "\u0000\u0000\u8EA2\uD7DF\u0000\u0000\u0000\u0000\u0000\u0000" + // 21295 - 21299
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD7D2\u0000\u0000" + // 21300 - 21304
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21305 - 21309
+                "\u0000\u0000\u0000\uF3F8\u8EA2\uDDB1\u8EA2\uD0F1\u0000\uEDB8" + // 21310 - 21314
+                "\u0000\uEDC0\u0000\u0000\u8EA2\uD1B0\u0000\uEDC1\u8EA2\uD0F2" + // 21315 - 21319
+                "\u8EA2\uD1B6\u8EA2\uD1A9\u8EA2\uD1AF\u0000\uEDBE\u0000\u0000" + // 21320 - 21324
+                "\u0000\u0000\u8EA2\uD1AC\u0000\u0000\u8EA2\uD1B3\u0000\u0000" + // 21325 - 21329
+                "\u0000\uEDC3\u0000\u0000\u0000\uEDBD\u8EA2\uD1A5\u8EA2\uD0F6" + // 21330 - 21334
+                "\u8EA2\uD1B8\u8EA2\uD0F3\u8EA2\uD1B1\u0000\uEDBA\u0000\u0000" + // 21335 - 21339
+                "\u8EA2\uD0FD\u0000\u0000\u8EA2\uD0FE\u0000\uEDB9\u0000\uEDB6" + // 21340 - 21344
+                "\u8EA2\uD0F9\u0000\uEDBC\u0000\u0000\u0000\uEDB5\u0000\u0000" + // 21345 - 21349
+                "\u8EA2\uD1B2\u8EA2\uD1B5\u8EA2\uD1A2\u8EA2\uD7D5\u0000\u0000" + // 21350 - 21354
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21355 - 21359
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD7CD\u0000\u0000" + // 21360 - 21364
+                "\u8EA2\uD7C9\u0000\uF1A1\u0000\u0000\u0000\u0000\u0000\uF0F4" + // 21365 - 21369
+                "\u0000\uF0F9\u0000\uF0F5\u8EA2\uD7D7\u8EA2\uD7E2\u0000\uF0F3" + // 21370 - 21374
+                "\u8EA2\uD7CF\u8EA2\uD7D8\u8EA2\uC3E8\u8EA2\uC3ED\u8EA2\uC3D9" + // 21375 - 21379
+                "\u0000\u0000\u8EA2\uC3EA\u8EA2\uC3D6\u0000\u0000\u0000\u0000" + // 21380 - 21384
+                "\u8EA2\uC3DD\u8EA2\uC3DE\u0000\uE4CE\u8EA2\uC3F1\u8EA2\uC3EF" + // 21385 - 21389
+                "\u0000\u0000\u8EA2\uC3D2\u8EA2\uC3F4\u0000\u0000\u8EA2\uC3F5" + // 21390 - 21394
+                "\u8EA2\uC3F7\u0000\uE4D2\u0000\uE4CA\u0000\u0000\u8EA2\uB5FA" + // 21395 - 21399
+                "\u8EA2\uC3DA\u8EA2\uC3EC\u8EA2\uC3DB\u0000\uE4C7\u0000\uE4D7" + // 21400 - 21404
+                "\u8EA2\uC3F3\u0000\uE4D5\u0000\uE4D1\u8EA2\uC3D0\u0000\uE4C9" + // 21405 - 21409
+                "\u0000\u0000\u8EA2\uC3D3\u0000\uE4D6\u0000\u0000\u8EA2\uC3E3" + // 21410 - 21414
+                "\u8EA2\uC3CF\u0000\u0000\u0000\uE4CF\u8EA2\uC3E7\u8EA2\uC3D7" + // 21415 - 21419
+                "\u0000\uE4D0\u8EA2\uC3E0\u0000\uE4C6\u0000\uDFFD\u8EA2\uC3E9" + // 21420 - 21424
+                "\u8EA2\uBCE2\u8EA2\uC3D4\u0000\u0000\u0000\u0000\u8EA2\uC3EE" + // 21425 - 21429
+                "\u0000\uE4CB\u8EA2\uC3EB\u0000\uE4C8\u8EA2\uC3E5\u0000\uE4D3" + // 21430 - 21434
+                "\u8EA2\uC3DC\u8EA2\uC3F9\u0000\u0000\u0000\u0000\u0000\u0000" + // 21435 - 21439
+                "\u0000\u0000\u8EA2\uE6C5\u0000\u0000\u0000\uF8E5\u8EA2\uE6C6" + // 21440 - 21444
+                "\u8EA2\uEDF1\u0000\uFCE5\u8EA2\uF0C8\u0000\uC8D0\u0000\uCFAE" + // 21445 - 21449
+                "\u0000\uCFAD\u8EA2\uACF0\u0000\uD3A1\u0000\u0000\u0000\u0000" + // 21450 - 21454
+                "\u8EA2\uACEF\u8EA2\uB2A6\u0000\u0000\u0000\uD7CF\u8EA2\uB8B7" + // 21455 - 21459
+                "\u8EA2\uB2A5\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDCE1" + // 21460 - 21464
+                "\u8EA2\uB8BA\u8EA2\uB8B8\u8EA2\uB8B9\u0000\uDCE0\u0000\u0000" + // 21465 - 21469
+                "\u8EA2\uBFA7\u8EA2\uBFA8\u8EA2\uBFA6\u0000\u0000\u0000\uE5FA" + // 21470 - 21474
+                "\u8EA2\uC6B4\u8EA2\uC6B3\u8EA2\uC6B5\u0000\uE5F9\u0000\uE5F8" + // 21475 - 21479
+                "\u0000\u0000\u0000\u0000\u8EA2\uD2FA\u8EA2\uD2FC\u0000\u0000" + // 21480 - 21484
+                "\u0000\uEEC9\u8EA2\uD2FB\u8EA2\uD9CF\u0000\uF1F2\u8EA2\uE2E5" + // 21485 - 21489
+                "\u0000\u0000\u8EA2\uE2E4\u0000\uF8E6\u8EA2\uE6C7\u0000\uF8E8" + // 21490 - 21494
+                "\u0000\uF8E7\u8EA2\uE9DD\u8EA2\uEBFC\u0000\uFAFE\u0000\uC8D1" + // 21495 - 21499
+                "\u8EA2\uACF1\u0000\uD3A2\u8EA2\uB6AB\u0000\uDBAD\u0000\uDBC2" + // 21500 - 21504
+                "\u0000\uDBB8\u0000\u0000\u0000\uDBBC\u0000\uDBBB\u8EA2\uB5F3" + // 21505 - 21509
+                "\u0000\u0000\u8EA2\uB6B2\u8EA2\uB6B8\u8EA2\uB6B0\u8EA2\uB6B7" + // 21510 - 21514
+                "\u0000\u0000\u0000\u0000\u8EA2\uB6A4\u8EA2\uB5F4\u8EA2\uB6B6" + // 21515 - 21519
+                "\u8EA2\uB6A6\u0000\uDBB0\u0000\uDBBD\u0000\u0000\u8EA2\uB6AF" + // 21520 - 21524
+                "\u0000\uDBB6\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB6AE" + // 21525 - 21529
+                "\u8EA2\uB5F5\u0000\uDBBE\u0000\u0000\u0000\uDBC0\u8EA2\uB6B1" + // 21530 - 21534
+                "\u0000\uDBC1\u0000\uDBAF\u8EA2\uB5FC\u8EA2\uB6B3\u0000\u0000" + // 21535 - 21539
+                "\u0000\u0000\u0000\uDBB5\u0000\uDBBF\u8EA2\uB5FE\u8EA2\uB6AA" + // 21540 - 21544
+                "\u8EA2\uB5F9\u8EA2\uB5FD\u0000\uDBBA\u8EA2\uB5F8\u0000\uDBAE" + // 21545 - 21549
+                "\u0000\uDBB7\u0000\uDBB4\u8EA2\uB6A3\u0000\uD6A2\u8EA2\uBCE3" + // 21550 - 21554
+                "\u0000\uDBB1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21555 - 21559
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21560 - 21564
+                "\u0000\u0000\u8EA2\uA3E7\u0000\u0000\u8EA2\uA3E2\u8EA2\uA3E4" + // 21565 - 21569
+                "\u8EA2\uA3E6\u8EA2\uA3E3\u0000\uCAA6\u8EA2\uA3E0\u0000\u0000" + // 21570 - 21574
+                "\u8EA2\uA3E1\u0000\uCAA3\u0000\uCAA4\u8EA2\uA3E5\u8EA2\uA3E8" + // 21575 - 21579
+                "\u0000\uCAA5\u8EA2\uA3E9\u0000\u0000\u0000\u0000\u0000\u0000" + // 21580 - 21584
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA6C9" + // 21585 - 21589
+                "\u0000\u0000\u8EA2\uA6C3\u8EA2\uA6BE\u0000\uCDA5\u8EA2\uA6C6" + // 21590 - 21594
+                "\u8EA2\uA6C4\u8EA2\uA6BD\u8EA2\uA6CA\u8EA2\uA6CD\u8EA2\uA6C8" + // 21595 - 21599
+                "\u8EA2\uA6C1\u0000\uCDA7\u8EA2\uA6C7\u0000\uCDA8\u8EA2\uA6C2" + // 21600 - 21604
+                "\u8EA2\uA6C5\u8EA2\uA6BC\u8EA2\uA6C0\u8EA2\uA6CC\u0000\uCDA9" + // 21605 - 21609
+                "\u0000\u0000\u0000\uCDAA\u0000\u0000\u8EA2\uA6BF\u8EA2\uA6CB" + // 21610 - 21614
+                "\u0000\uCDA4\u0000\uCDA6\u0000\u0000\u0000\u0000\u0000\u0000" + // 21615 - 21619
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA1F8" + // 21620 - 21624
+                "\u0000\uA1F7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21625 - 21629
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21630 - 21634
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21635 - 21639
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21640 - 21644
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21645 - 21649
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21650 - 21654
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21655 - 21659
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21660 - 21664
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21665 - 21669
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21670 - 21674
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21675 - 21679
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCBC7\u0000\u0000" + // 21680 - 21684
+                "\u8EA2\uB9D0\u0000\u0000\u8EA2\uB9D1\u8EA2\uC7D8\u8EA2\uCEB8" + // 21685 - 21689
+                "\u8EA2\uD4CE\u0000\uF5D1\u0000\uD6A9\u0000\uD6B0\u0000\uD5FD" + // 21690 - 21694
+                "\u0000\uD6AB\u8EA2\uAFEB\u0000\uD6AD\u0000\uD5FA\u0000\u0000" + // 21695 - 21699
+                "\u0000\uD5F9\u8EA2\uAFDD\u0000\u0000\u8EA2\uAFE1\u0000\uD6A4" + // 21700 - 21704
+                "\u8EA2\uAFF3\u8EA2\uAFEA\u8EA2\uAFE2\u0000\uD6A8\u0000\uD6A5" + // 21705 - 21709
+                "\u0000\u0000\u0000\uD5FB\u0000\uD5FE\u0000\u0000\u0000\u0000" + // 21710 - 21714
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21715 - 21719
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21720 - 21724
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21725 - 21729
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 21730 - 21734
+                "\u8EA2\uB6A8\u0000\u0000\u8EA2\uB5F6\u8EA2\uB5F7\u8EA2\uB5FB" + // 21735 - 21739
+                "\u0000\u0000\u8EA2\uB6AC\u8EA2\uB6A9\u0000\u0000\u8EA2\uB6A2" + // 21740 - 21744
+                "\u8EA2\uB6A1\u0000\uDBB3\u8EA2\uB6A5\u8EA2\uB6B4\u8EA2\uB5F2" + // 21745 - 21749
+                "\u0000\u0000\u8EA2\uB6B5\u8EA2\uB6A7\u8EA2\uB6B9\u8EA2\uB6AD" + // 21750 - 21754
+                "\u0000\uDBB2\u8EA2\uABA6\u8EA2\uAAFC\u8EA2\uABB3\u8EA2\uABC3" + // 21755 - 21759
+                "\u0000\uD1E3\u8EA2\uABA8\u8EA2\uABBA\u0000\u0000\u8EA2\uAAFE" + // 21760 - 21764
+                "\u8EA2\uABC1\u8EA2\uABC2\u8EA2\uABC5\u8EA2\uABBC\u8EA2\uABAD" + // 21765 - 21769
+                "\u8EA2\uABB5\u0000\uD1E9\u0000\uD1DC\u0000\uD1E4\u0000\uD1F0" + // 21770 - 21774
+                "\u0000\uD1D9\u0000\uD1DB\u0000\u0000\u0000\u0000\u0000\u0000" + // 21775 - 21779
+                "\u8EA2\uABA5\u0000\uD1ED\u0000\uD1E6\u8EA2\uABBF\u8EA2\uABA2" + // 21780 - 21784
+                "\u0000\uD1EF\u0000\uD1EA\u8EA2\uABAB\u0000\u0000\u0000\u0000" + // 21785 - 21789
+                "\u0000\uD1EE\u8EA2\uABB2\u8EA2\uABAA\u0000\uD1E7\u8EA2\uABBE" + // 21790 - 21794
+                "\u8EA2\uABB6\u0000\u0000\u0000\uD1E1\u8EA2\uABC4\u8EA2\uABA9" + // 21795 - 21799
+                "\u0000\uD1DD\u8EA2\uABBB\u8EA2\uABB1\u0000\uD1E2\u8EA2\uABB7" + // 21800 - 21804
+                "\u0000\uD1DA\u8EA2\uAAFD\u0000\uD1EB\u0000\uD6A7\u0000\uD1E0" + // 21805 - 21809
+                "\u8EA2\uABB0\u8EA2\uABAF\u8EA2\uABA4\u0000\u0000\u8EA2\uABC0" + // 21810 - 21814
+                "\u0000\u0000\u8EA2\uABB9\u0000\u0000\u0000\u0000\u0000\uD1D8" + // 21815 - 21819
+                "\u0000\uDEB2\u8EA2\uBCCC\u0000\u0000\u0000\uE4C4\u8EA2\uCAE1" + // 21820 - 21824
+                "\u8EA2\uCAE0\u0000\u0000\u0000\u0000\u0000\uC5CC\u0000\uC8B4" + // 21825 - 21829
+                "\u8EA2\uA7B3\u0000\uCEA5\u0000\u0000\u0000\uCEA4\u0000\u0000" + // 21830 - 21834
+                "\u8EA2\uAAFA\u8EA2\uAAFB\u0000\u0000\u8EA2\uAFD9\u8EA2\uAFDA" + // 21835 - 21839
+                "\u0000\uD5F4\u0000\uD5F5\u0000\u0000\u0000\uD5F6\u8EA2\uB5F1" + // 21840 - 21844
+                "\u0000\u0000\u0000\u0000\u0000\uDBAC\u0000\u0000\u0000\uDFE7" + // 21845 - 21849
+                "\u0000\u0000\u0000\uDFE6\u8EA2\uC3CE\u8EA2\uC6C1\u8EA2\uCAE2" + // 21850 - 21854
+                "\u8EA2\uD7C8\u0000\u0000\u0000\u0000\u0000\uF6CD\u0000\uF9F2" + // 21855 - 21859
+                "\u0000\uC5CD\u0000\u0000\u0000\uC6DC\u0000\uC6DD\u0000\uC6DB" + // 21860 - 21864
+                "\u0000\uC6DE\u0000\uC6DA\u0000\u0000\u0000\u0000\u0000\uC8B7" + // 21865 - 21869
+                "\u0000\u0000\u8EA2\uA2D7\u0000\uC8B6\u0000\uC8B8\u0000\u0000" + // 21870 - 21874
+                "\u0000\u0000\u8EA2\uA2D2\u8EA2\uA2D1\u8EA2\uA2D4\u8EA2\uA2D3" + // 21875 - 21879
+                "\u8EA2\uA2D6\u0000\uC8B5\u8EA2\uA2D0\u8EA2\uA2D5\u8EA2\uD7C0" + // 21880 - 21884
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF0F0\u0000\u0000" + // 21885 - 21889
+                "\u0000\uF0ED\u0000\uF0F1\u8EA2\uD7BE\u0000\uF0EE\u8EA2\uD7C1" + // 21890 - 21894
+                "\u8EA2\uD7C2\u8EA2\uD7C7\u0000\u0000\u0000\u0000\u8EA2\uD7C3" + // 21895 - 21899
+                "\u0000\u0000\u0000\u0000\u8EA2\uDCFD\u0000\u0000\u0000\u0000" + // 21900 - 21904
+                "\u0000\u0000\u0000\uF3F0\u0000\u0000\u8EA2\uE1E8\u0000\uF3EF" + // 21905 - 21909
+                "\u8EA2\uE1E6\u8EA2\uE1E7\u0000\uF6CC\u0000\uF8BB\u8EA2\uE5D6" + // 21910 - 21914
+                "\u0000\u0000\u0000\uF8BA\u0000\u0000\u0000\u0000\u8EA2\uE8FD" + // 21915 - 21919
+                "\u8EA2\uE8FE\u0000\u0000\u0000\uF9F1\u0000\u0000\u8EA2\uE8FC" + // 21920 - 21924
+                "\u0000\uFAEF\u0000\u0000\u8EA2\uEFAE\u0000\uFCBA\u8EA2\uF0B8" + // 21925 - 21929
+                "\u8EA2\uF0B9\u0000\u0000\u0000\uC5CB\u0000\u0000\u0000\uC8B2" + // 21930 - 21934
+                "\u0000\uC8B3\u0000\uCAD5\u0000\u0000\u8EA2\uA7B2\u0000\uD1D7" + // 21935 - 21939
+                "\u0000\uD5F3\u0000\uDBAA\u0000\u0000\u0000\u0000\u0000\uD9B7" + // 21940 - 21944
+                "\u0000\u0000\u0000\uDFE4\u0000\uDFE5\u8EA2\uBCC7\u0000\u0000" + // 21945 - 21949
+                "\u0000\u0000\u0000\u0000\u0000\uE4C1\u0000\u0000\u8EA2\uC3C5" + // 21950 - 21954
+                "\u0000\uE4BE\u0000\uE4BF\u0000\uE4BD\u8EA2\uC3CA\u8EA2\uC3C9" + // 21955 - 21959
+                "\u8EA2\uC3C6\u0000\uE4C3\u0000\u0000\u0000\u0000\u8EA2\uC3C8" + // 21960 - 21964
+                "\u0000\uDFE0\u0000\u0000\u0000\u0000\u8EA2\uC3CC\u8EA2\uC3C7" + // 21965 - 21969
+                "\u0000\uE4C0\u0000\uE4BC\u0000\uE4C2\u8EA2\uC3CB\u0000\u0000" + // 21970 - 21974
+                "\u0000\u0000\u0000\u0000\u0000\uE9A5\u0000\u0000\u8EA2\uCADF" + // 21975 - 21979
+                "\u8EA2\uCADE\u8EA2\uCADD\u0000\uE9A3\u0000\u0000\u0000\u0000" + // 21980 - 21984
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE9A4\u8EA2\uD0EC" + // 21985 - 21989
+                "\u8EA2\uD0EF\u0000\uEDB2\u0000\u0000\u0000\u0000\u0000\uEDB1" + // 21990 - 21994
+                "\u8EA2\uD0F0\u8EA2\uD0EB\u0000\uEDB4\u8EA2\uD0ED\u0000\u0000" + // 21995 - 21999
+                "\u0000\uEDB3\u8EA2\uD0EA\u0000\u0000\u8EA2\uD0EE\u0000\uF0F2" + // 22000 - 22004
+                "\u0000\uF0EF\u8EA2\uD7C6\u8EA2\uD7C5\u0000\u0000\u8EA2\uD7C4" + // 22005 - 22009
+                "\u8EA2\uD7BF\u0000\u0000\u8EA2\uC0B4\u0000\uEAF7\u0000\u0000" + // 22010 - 22014
+                "\u0000\u0000\u8EA2\uD4AB\u8EA2\uD4B2\u0000\uEEEF\u0000\u0000" + // 22015 - 22019
+                "\u8EA2\uD4B6\u0000\uEEF3\u8EA2\uD4AE\u8EA2\uD4AC\u0000\u0000" + // 22020 - 22024
+                "\u8EA2\uD4B5\u0000\u0000\u0000\uEEEE\u8EA2\uD4B4\u0000\uEEF0" + // 22025 - 22029
+                "\u0000\uEEF1\u8EA2\uD4AD\u0000\uEEF2\u8EA2\uD4B3\u8EA2\uD4AF" + // 22030 - 22034
+                "\u8EA2\uD4B0\u8EA2\uD4B1\u0000\uEAFD\u0000\u0000\u0000\u0000" + // 22035 - 22039
+                "\u0000\u0000\u8EA2\uDABE\u8EA2\uDACA\u0000\u0000\u0000\uF2B4" + // 22040 - 22044
+                "\u8EA2\uDAC5\u8EA2\uDAC7\u0000\u0000\u0000\uF2B2\u8EA2\uDABF" + // 22045 - 22049
+                "\u8EA2\uDAC3\u0000\u0000\u8EA2\uDAC6\u0000\uF2B0\u0000\uF2B3" + // 22050 - 22054
+                "\u8EA2\uDAC9\u8EA2\uDAC1\u8EA2\uDAC2\u8EA2\uDAC8\u8EA2\uDAC0" + // 22055 - 22059
+                "\u8EA2\uDAC4\u0000\uF2B1\u8EA2\uDFC0\u0000\u0000\u8EA2\uDFBF" + // 22060 - 22064
+                "\u0000\uF5C2\u8EA2\uDFC5\u0000\uF5C4\u0000\u0000\u0000\u0000" + // 22065 - 22069
+                "\u0000\uF5C1\u8EA2\uDFC1\u0000\uF5C5\u8EA2\uDFC2\u0000\u0000" + // 22070 - 22074
+                "\u8EA2\uDFC3\u8EA2\uDFC6\u0000\u0000\u0000\uF5C3\u0000\u0000" + // 22075 - 22079
+                "\u8EA2\uE3C1\u0000\u0000\u0000\u0000\u8EA2\uE3C4\u0000\u0000" + // 22080 - 22084
+                "\u8EA2\uE3BE\u8EA2\uE3C0\u0000\u0000\u0000\u0000\u8EA2\uE3BF" + // 22085 - 22089
+                "\u8EA2\uE3C2\u8EA2\uE3C3\u8EA2\uDFC4\u8EA2\uE3BD\u0000\u0000" + // 22090 - 22094
+                "\u0000\u0000\u0000\uF8F8\u8EA2\uE6F7\u8EA2\uE6FA\u8EA2\uE6FC" + // 22095 - 22099
+                "\u8EA2\uE6F5\u8EA2\uE6F6\u8EA2\uE6F9\u8EA2\uE6FB\u0000\uF8F9" + // 22100 - 22104
+                "\u0000\uF8F7\u0000\uF8F6\u8EA2\uE6F8\u8EA2\uE6F4\u8EA2\uE9F6" + // 22105 - 22109
+                "\u0000\uFABB\u0000\u0000\u8EA2\uE9F7\u0000\u0000\u0000\u0000" + // 22110 - 22114
+                "\u8EA2\uECB8\u0000\uFBA8\u8EA2\uECBA\u0000\uFBA9\u8EA2\uECB7" + // 22115 - 22119
+                "\u8EA2\uECB9\u0000\uFBF2\u0000\u0000\u8EA2\uEEA1\u0000\uFBF1" + // 22120 - 22124
+                "\u8EA2\uEFCC\u8EA2\uEFCB\u0000\u0000\u8EA2\uEFCA\u0000\u0000" + // 22125 - 22129
+                "\u0000\u0000\u8EA2\uF1B7\u8EA2\uF1B8\u8EA2\uF1BA\u8EA2\uF1B9" + // 22130 - 22134
+                "\u0000\u0000\u8EA2\uA2F0\u0000\uC8E9\u0000\uCDFD\u0000\u0000" + // 22135 - 22139
+                "\u0000\uCDFB\u8EA2\uA7AB\u8EA2\uA7A7\u8EA2\uA7AE\u0000\uCDFA" + // 22140 - 22144
+                "\u0000\uCEA3\u8EA2\uA7A9\u8EA2\uA7A5\u0000\uCEA2\u8EA2\uA7AC" + // 22145 - 22149
+                "\u0000\uCDF9\u8EA2\uA7AD\u0000\uCDFC\u0000\uCDFE\u8EA2\uA7B1" + // 22150 - 22154
+                "\u8EA2\uA7B0\u8EA2\uA7A8\u0000\uCDF8\u0000\uCDF7\u0000\uCEA1" + // 22155 - 22159
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22160 - 22164
+                "\u0000\u0000\u8EA2\uAAF0\u8EA2\uAAF6\u0000\u0000\u0000\uD1D3" + // 22165 - 22169
+                "\u0000\uD1D0\u8EA2\uAAED\u8EA2\uAAF2\u0000\u0000\u0000\uD1D6" + // 22170 - 22174
+                "\u0000\uD1CE\u8EA2\uAAF1\u0000\uD1D1\u0000\uD1D4\u0000\u0000" + // 22175 - 22179
+                "\u0000\u0000\u8EA2\uAAF4\u0000\u0000\u0000\uD1CF\u8EA2\uAAF9" + // 22180 - 22184
+                "\u0000\uD1D2\u0000\u0000\u0000\uD1D5\u8EA2\uAAEE\u8EA2\uAAF3" + // 22185 - 22189
+                "\u8EA2\uAAF7\u8EA2\uAAEF\u8EA2\uAAEC\u0000\u0000\u0000\u0000" + // 22190 - 22194
+                "\u8EA2\uAAF8\u8EA2\uAAF5\u0000\u0000\u0000\u0000\u0000\u0000" + // 22195 - 22199
+                "\u0000\u0000\u0000\u0000\u8EA2\uBCCF\u0000\uDFED\u8EA2\uBCF7" + // 22200 - 22204
+                "\u8EA2\uBCDF\u8EA2\uBCE1\u0000\u0000\u8EA2\uBCEE\u8EA2\uBCED" + // 22205 - 22209
+                "\u8EA2\uBCCD\u0000\uDFF8\u0000\uDFFA\u8EA2\uBCD5\u8EA2\uBCDC" + // 22210 - 22214
+                "\u8EA2\uBCE4\u0000\uDFF9\u8EA2\uBCDB\u8EA2\uBCE7\u8EA2\uBCFA" + // 22215 - 22219
+                "\u0000\u0000\u8EA2\uBCEF\u0000\u0000\u0000\u0000\u0000\u0000" + // 22220 - 22224
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA4C9\u0000\u0000" + // 22225 - 22229
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22230 - 22234
+                "\u8EA2\uBCFB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22235 - 22239
+                "\u8EA2\uBCD1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22240 - 22244
+                "\u8EA2\uC3F8\u0000\uE4CC\u0000\u0000\u8EA2\uC3F6\u8EA2\uC3E1" + // 22245 - 22249
+                "\u8EA2\uC3E6\u8EA2\uC3DF\u0000\u0000\u8EA2\uC3F2\u8EA2\uC3D1" + // 22250 - 22254
+                "\u8EA2\uC3D8\u0000\u0000\u8EA2\uC3F0\u8EA2\uC3FA\u8EA2\uC3E2" + // 22255 - 22259
+                "\u0000\u0000\u8EA2\uC3D5\u8EA2\uDCFA\u8EA2\uDCF9\u0000\uF3ED" + // 22260 - 22264
+                "\u0000\uF3EE\u8EA2\uE5D3\u0000\u0000\u0000\u0000\u0000\uC5C6" + // 22265 - 22269
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBCBE" + // 22270 - 22274
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDFD9\u0000\uDFD8" + // 22275 - 22279
+                "\u8EA2\uC3C3\u0000\u0000\u8EA2\uE1E4\u0000\uFAEE\u8EA2\uEFAD" + // 22280 - 22284
+                "\u0000\uC5C7\u0000\u0000\u0000\uD5E8\u0000\u0000\u0000\uDAFC" + // 22285 - 22289
+                "\u0000\uDAFB\u8EA2\uBCBF\u8EA2\uBCC0\u0000\uE4BA\u8EA2\uCADC" + // 22290 - 22294
+                "\u0000\uE8FE\u8EA2\uD7BD\u0000\u0000\u0000\uC5C8\u0000\uC6D8" + // 22295 - 22299
+                "\u0000\u0000\u0000\uCDF4\u8EA2\uA7A3\u0000\u0000\u8EA2\uAAEA" + // 22300 - 22304
+                "\u0000\uD1CB\u0000\uDAFD\u0000\u0000\u8EA2\uBCC1\u0000\uDFDA" + // 22305 - 22309
+                "\u0000\uE4BB\u0000\u0000\u8EA2\uD0E8\u8EA2\uD0E9\u0000\u0000" + // 22310 - 22314
+                "\u0000\u0000\u8EA2\uDCFB\u0000\uF6CB\u8EA2\uF0FE\u0000\uC5C9" + // 22315 - 22319
+                "\u0000\u0000\u8EA2\uA7A4\u0000\uCDF5\u0000\uD1CC\u0000\u0000" + // 22320 - 22324
+                "\u8EA2\uAAEB\u0000\uF8B8\u8EA2\uE1E1\u0000\u0000\u8EA2\uE1E2" + // 22325 - 22329
+                "\u8EA2\uE1DE\u0000\u0000\u0000\uF6C7\u8EA2\uE5CD\u0000\u0000" + // 22330 - 22334
+                "\u8EA2\uE5D0\u0000\u0000\u0000\u0000\u8EA2\uE5D1\u8EA2\uE5CF" + // 22335 - 22339
+                "\u8EA2\uE5D2\u0000\uF8B9\u8EA2\uE5CE\u0000\u0000\u0000\u0000" + // 22340 - 22344
+                "\u8EA2\uE8FA\u0000\uF9EF\u8EA2\uE8F9\u8EA2\uE8F8\u8EA2\uE8F7" + // 22345 - 22349
+                "\u0000\uF9EE\u0000\uF9F0\u0000\u0000\u8EA2\uEBDB\u0000\uFAED" + // 22350 - 22354
+                "\u0000\uFAEC\u0000\u0000\u0000\u0000\u8EA2\uEDCF\u8EA2\uEDCE" + // 22355 - 22359
+                "\u8EA2\uEDD1\u0000\uFCB7\u0000\uFBE1\u8EA2\uEFAC\u8EA2\uEDD0" + // 22360 - 22364
+                "\u0000\u0000\u0000\u0000\u8EA2\uEFAB\u0000\uFCB9\u0000\uFCB8" + // 22365 - 22369
+                "\u0000\uFCDF\u8EA2\uF0B7\u8EA2\uF0FD\u0000\uC5C5\u0000\u0000" + // 22370 - 22374
+                "\u0000\u0000\u8EA2\uBCB7\u8EA2\uD7BA\u0000\uA7E1\u0000\u0000" + // 22375 - 22379
+                "\u0000\uC8AD\u8EA2\uA2CD\u0000\uCAD3\u0000\uCAD1\u0000\u0000" + // 22380 - 22384
+                "\u0000\uCAD2\u0000\u0000\u8EA2\uA7A2\u0000\uCDF3\u0000\uD1C9" + // 22385 - 22389
+                "\u8EA2\uC3B9\u8EA2\uC3B4\u0000\u0000\u8EA2\uC3A8\u0000\u0000" + // 22390 - 22394
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22395 - 22399
+                "\u0000\u0000\u8EA2\uCAD0\u0000\u0000\u8EA2\uCAC1\u8EA2\uCACC" + // 22400 - 22404
+                "\u0000\u0000\u8EA2\uCAD3\u0000\uE8F8\u0000\uDFD1\u8EA2\uCAD1" + // 22405 - 22409
+                "\u0000\uE8F3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE8F2" + // 22410 - 22414
+                "\u8EA2\uCAD8\u0000\u0000\u8EA2\uCAC2\u8EA2\uCACF\u8EA2\uCAC3" + // 22415 - 22419
+                "\u8EA2\uCACE\u0000\uE8F6\u8EA2\uCAD2\u8EA2\uBCA7\u0000\u0000" + // 22420 - 22424
+                "\u0000\u0000\u0000\u0000\u8EA2\uCAD9\u8EA2\uCACA\u0000\uE8F9" + // 22425 - 22429
+                "\u8EA2\uD0E1\u0000\uECF7\u0000\u0000\u8EA2\uCAD7\u8EA2\uCAD6" + // 22430 - 22434
+                "\u0000\uE8FB\u8EA2\uD0D4\u0000\uECF8\u8EA2\uD0D5\u0000\u0000" + // 22435 - 22439
+                "\u8EA2\uCAC6\u8EA2\uCAC7\u8EA2\uCAC4\u8EA2\uCAC9\u8EA2\uCAC5" + // 22440 - 22444
+                "\u8EA2\uCADA\u0000\uE8F5\u0000\uECF9\u0000\uE8F7\u0000\uE8FC" + // 22445 - 22449
+                "\u0000\u0000\u8EA2\uCAC8\u0000\u0000\u8EA2\uCAD4\u0000\uDFC1" + // 22450 - 22454
+                "\u0000\u0000\u8EA2\uBCAF\u8EA2\uBBFC\u8EA2\uBCAC\u8EA2\uC2FD" + // 22455 - 22459
+                "\u0000\uDFC4\u8EA2\uBCB0\u8EA2\uBCB3\u0000\uDFC3\u8EA2\uBCA1" + // 22460 - 22464
+                "\u8EA2\uBCB2\u8EA2\uBCB1\u0000\uDFC5\u8EA2\uBBF8\u0000\uDFC0" + // 22465 - 22469
+                "\u0000\uDFC8\u0000\u0000\u0000\uDFC6\u8EA2\uBCAE\u0000\u0000" + // 22470 - 22474
+                "\u8EA2\uBCA4\u0000\uDFCA\u8EA2\uBCB5\u8EA2\uBCAD\u8EA2\uBCB6" + // 22475 - 22479
+                "\u0000\uDFD2\u0000\uDFD0\u8EA2\uBCAB\u8EA2\uBCAA\u0000\u0000" + // 22480 - 22484
+                "\u8EA2\uBCA8\u8EA2\uBCA2\u0000\uDFC9\u0000\u0000\u0000\uDFC7" + // 22485 - 22489
+                "\u8EA2\uAFBB\u8EA2\uBBF9\u0000\u0000\u8EA2\uC3BD\u8EA2\uBBFA" + // 22490 - 22494
+                "\u0000\uDFC2\u0000\uDFCF\u8EA2\uC3A1\u0000\u0000\u0000\uDFCB"   // 22495 - 22499
+                ;
+
+            index2c =
+                "\u0000\uDFCC\u8EA2\uBBFB\u8EA2\uBCB4\u8EA2\uC2FE\u8EA2\uBCA5" + // 22500 - 22504
+                "\u8EA2\uBBFE\u0000\uDFCE\u8EA2\uBCA6\u8EA2\uBCA3\u0000\u0000" + // 22505 - 22509
+                "\u0000\u0000\u0000\uDFD3\u0000\u0000\u0000\u0000\u0000\u0000" + // 22510 - 22514
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB0DA\u8EA2\uB0DB" + // 22515 - 22519
+                "\u8EA2\uB0DC\u0000\uD6D3\u0000\u0000\u0000\uD6CF\u8EA2\uB0D1" + // 22520 - 22524
+                "\u0000\u0000\u8EA2\uB0D9\u8EA2\uB0DE\u0000\uD6D4\u0000\u0000" + // 22525 - 22529
+                "\u8EA2\uB0CF\u8EA2\uB0D5\u8EA2\uB0CE\u8EA2\uB0D8\u0000\u0000" + // 22530 - 22534
+                "\u0000\u0000\u8EA2\uB0D4\u0000\uD6D0\u0000\uD6D2\u8EA2\uB0DD" + // 22535 - 22539
+                "\u0000\u0000\u8EA2\uB0CD\u8EA2\uB0D0\u8EA2\uB0D6\u0000\u0000" + // 22540 - 22544
+                "\u8EA2\uB0D7\u8EA2\uB0DF\u8EA2\uB0D3\u0000\u0000\u0000\uD6D1" + // 22545 - 22549
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22550 - 22554
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22555 - 22559
+                "\u0000\uDBF2\u8EA2\uB6F1\u0000\u0000\u0000\u0000\u8EA2\uB6F3" + // 22560 - 22564
+                "\u8EA2\uB6EF\u0000\u0000\u8EA2\uB6FB\u8EA2\uB6ED\u8EA2\uB6FA" + // 22565 - 22569
+                "\u0000\uDBEE\u8EA2\uB6EB\u8EA2\uBDDF\u8EA2\uB6F5\u0000\uDBF1" + // 22570 - 22574
+                "\u0000\u0000\u8EA2\uB6F6\u0000\uDAEC\u8EA2\uB5E5\u8EA2\uB5CD" + // 22575 - 22579
+                "\u0000\uDAE1\u0000\uDAE5\u8EA2\uB5E4\u0000\u0000\u8EA2\uB5D7" + // 22580 - 22584
+                "\u0000\uDAE6\u0000\uDAE0\u8EA2\uB5CC\u0000\u0000\u0000\uDFBF" + // 22585 - 22589
+                "\u8EA2\uB5E7\u8EA2\uB5D5\u0000\uDAEB\u8EA2\uB5D8\u8EA2\uB5E6" + // 22590 - 22594
+                "\u0000\uDAEA\u0000\u0000\u8EA2\uBBF5\u0000\u0000\u0000\uDAD7" + // 22595 - 22599
+                "\u8EA2\uB5D3\u0000\uDADC\u0000\uDAE7\u0000\u0000\u0000\uDAE2" + // 22600 - 22604
+                "\u8EA2\uB5DC\u8EA2\uB5D2\u8EA2\uB5D0\u8EA2\uB5E2\u0000\uDAD4" + // 22605 - 22609
+                "\u0000\uDAE8\u0000\uDAD8\u0000\uDFBE\u8EA2\uB5E0\u0000\uDAD9" + // 22610 - 22614
+                "\u0000\u0000\u0000\uDAD5\u0000\uDAE4\u0000\uDADF\u0000\uDADD" + // 22615 - 22619
+                "\u8EA2\uB5D4\u0000\uDAE9\u8EA2\uB5D1\u8EA2\uB5DE\u8EA2\uB5DA" + // 22620 - 22624
+                "\u8EA2\uBBF7\u8EA2\uBBF6\u0000\u0000\u0000\u0000\u0000\u0000" + // 22625 - 22629
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22630 - 22634
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB5CF\u8EA2\uBCA9" + // 22635 - 22639
+                "\u0000\u0000\u8EA2\uDAAF\u0000\uEEE1\u0000\uF2AA\u8EA2\uDAB9" + // 22640 - 22644
+                "\u8EA2\uDAB5\u0000\u0000\u8EA2\uDAB3\u8EA2\uDAAE\u8EA2\uDABD" + // 22645 - 22649
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF2AE\u0000\u0000" + // 22650 - 22654
+                "\u8EA2\uDAAA\u8EA2\uDAB6\u8EA2\uDAB7\u8EA2\uDAAD\u8EA2\uDAAC" + // 22655 - 22659
+                "\u8EA2\uDABA\u0000\u0000\u8EA2\uDAB0\u8EA2\uDAAB\u8EA2\uDAB1" + // 22660 - 22664
+                "\u0000\u0000\u8EA2\uDABC\u8EA2\uDAA9\u8EA2\uDABB\u8EA2\uDAB8" + // 22665 - 22669
+                "\u0000\uF2AC\u0000\uF2AB\u0000\u0000\u0000\u0000\u0000\uF2AD" + // 22670 - 22674
+                "\u8EA2\uDAB4\u8EA2\uDAA8\u0000\u0000\u0000\u0000\u0000\u0000" + // 22675 - 22679
+                "\u0000\u0000\u0000\u0000\u8EA2\uDFA7\u0000\uF5BC\u8EA2\uDFAB" + // 22680 - 22684
+                "\u8EA2\uDFA8\u8EA2\uDFAF\u8EA2\uDFB5\u8EA2\uDFAA\u0000\u0000" + // 22685 - 22689
+                "\u8EA2\uDFBE\u0000\uF5B9\u8EA2\uDFB8\u8EA2\uDFAD\u8EA2\uDFB9" + // 22690 - 22694
+                "\u8EA2\uDFB4\u8EA2\uDFBB\u8EA2\uDFAC\u0000\uF5BE\u0000\uF5BD" + // 22695 - 22699
+                "\u8EA2\uDFAE\u8EA2\uDFBC\u8EA2\uDFA6\u8EA2\uDFBA\u8EA2\uAFCD" + // 22700 - 22704
+                "\u8EA2\uAFC1\u0000\uD5DA\u8EA2\uAFBA\u8EA2\uAFB7\u8EA2\uAFB8" + // 22705 - 22709
+                "\u0000\uD5DB\u8EA2\uAFC7\u8EA2\uAFCE\u0000\uD5DD\u8EA2\uAFBE" + // 22710 - 22714
+                "\u8EA2\uAFBD\u0000\uD5E5\u0000\uD5E4\u0000\uD5D6\u0000\uD5DC" + // 22715 - 22719
+                "\u0000\uD5DF\u8EA2\uAFCA\u0000\u0000\u0000\u0000\u8EA2\uAFC4" + // 22720 - 22724
+                "\u0000\uD5D9\u8EA2\uAFB5\u8EA2\uAFCC\u8EA2\uAFC3\u8EA2\uAFC5" + // 22725 - 22729
+                "\u8EA2\uAFC9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22730 - 22734
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22735 - 22739
+                "\u0000\u0000\u8EA2\uB5CB\u0000\u0000\u0000\uDADB\u0000\uDAEF" + // 22740 - 22744
+                "\u0000\uDAEE\u0000\u0000\u0000\uDAE3\u0000\u0000\u8EA2\uB5DD" + // 22745 - 22749
+                "\u8EA2\uB5D9\u8EA2\uB5D6\u8EA2\uB5E8\u0000\uDADE\u0000\uDAD6" + // 22750 - 22754
+                "\u0000\u0000\u0000\u0000\u8EA2\uB5DB\u0000\uDFCD\u0000\uDADA" + // 22755 - 22759
+                "\u8EA2\uB5E3\u0000\u0000\u0000\uDAF0\u0000\uDAED\u8EA2\uB5DF" + // 22760 - 22764
+                "\u8EA2\uB5CE\u0000\u0000\u0000\u0000\u8EAD\uA1D3\u8EAD\uA1D4" + // 22765 - 22769
+                "\u8EAD\uA1D5\u8EAD\uA1D6\u8EAD\uA1D7\u8EAD\uA1D8\u8EAD\uA1D9" + // 22770 - 22774
+                "\u8EAD\uA1DA\u8EAD\uA1DB\u8EAD\uA1DC\u8EAD\uA1DD\u8EAD\uA1DE" + // 22775 - 22779
+                "\u8EAD\uA1DF\u8EAD\uA1E0\u8EAD\uA1E1\u8EAD\uA1E2\u8EAD\uA1E3" + // 22780 - 22784
+                "\u8EAD\uA1E4\u8EAD\uA1E5\u8EAD\uA1E6\u8EAD\uA1E7\u8EAD\uA1E8" + // 22785 - 22789
+                "\u8EAD\uA1E9\u8EAD\uA1EA\u8EAD\uA1EB\u8EAD\uA1EC\u8EAD\uA1ED" + // 22790 - 22794
+                "\u8EAD\uA1EE\u8EAD\uA1EF\u8EAD\uA1F0\u8EAD\uA1F1\u8EAD\uA1F2" + // 22795 - 22799
+                "\u8EAD\uA1F3\u8EAD\uA1F4\u8EAD\uA1F5\u8EAD\uA1F6\u8EAD\uA1F7" + // 22800 - 22804
+                "\u8EAD\uA1F8\u8EAD\uA1F9\u8EAD\uA1FA\u8EAD\uA1FB\u8EAD\uA1FC" + // 22805 - 22809
+                "\u8EAD\uA1FD\u8EAD\uA1FE\u8EAD\uA2A1\u8EAD\uA2A2\u8EAD\uA2A3" + // 22810 - 22814
+                "\u8EAD\uA2A4\u8EAD\uA2A5\u8EAD\uA2A6\u8EAD\uA2A7\u8EAD\uA2A8" + // 22815 - 22819
+                "\u8EAD\uA2A9\u8EAD\uA2AA\u8EAD\uA2AB\u8EAD\uA2AC\u8EAD\uA2AD" + // 22820 - 22824
+                "\u8EAD\uA2AE\u8EAD\uA2AF\u8EAD\uA2B0\u8EAD\uA2B1\u8EAD\uA2B2" + // 22825 - 22829
+                "\u8EAD\uA2B3\u8EA2\uAAE1\u0000\uD1BD\u0000\uD1C8\u8EA2\uAADA" + // 22830 - 22834
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD1C0\u0000\uD5D4" + // 22835 - 22839
+                "\u0000\uD1BA\u0000\u0000\u8EA2\uAAD7\u8EA2\uAADE\u8EA2\uAAD6" + // 22840 - 22844
+                "\u8EA2\uAAD9\u8EA2\uAADD\u8EA2\uAFB4\u0000\uD1C7\u0000\u0000" + // 22845 - 22849
+                "\u8EA2\uAAE2\u8EA2\uAAE3\u8EA2\uAAE5\u0000\uD1B9\u0000\u0000" + // 22850 - 22854
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22855 - 22859
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22860 - 22864
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22865 - 22869
+                "\u0000\u0000\u0000\uD5E3\u8EA2\uAFC0\u0000\uD5E1\u0000\uD5E2" + // 22870 - 22874
+                "\u8EA2\uAFB6\u8EA2\uAFC6\u0000\u0000\u0000\uD5D8\u0000\u0000" + // 22875 - 22879
+                "\u0000\u0000\u8EA2\uB5CA\u8EA2\uAFC8\u8EA2\uAFC2\u0000\u0000" + // 22880 - 22884
+                "\u8EA2\uAFB9\u0000\u0000\u8EA2\uAFCB\u8EA2\uAFBC\u0000\uD5DE" + // 22885 - 22889
+                "\u8EA2\uB5E1\u8EA2\uAFBF\u0000\uD5E0\u0000\uD5D7\u0000\u0000" + // 22890 - 22894
+                "\u8EA2\uBFD2\u0000\u0000\u0000\uE1D7\u0000\uE1EB\u0000\u0000" + // 22895 - 22899
+                "\u8EA2\uBFE1\u0000\uE1ED\u0000\u0000\u8EA2\uBFDD\u0000\uE1E2" + // 22900 - 22904
+                "\u0000\uE1DC\u0000\uE1E4\u0000\uE1D9\u0000\uE1EA\u8EA2\uBFDE" + // 22905 - 22909
+                "\u8EA2\uBFCC\u8EA2\uBFE0\u8EA2\uBFC7\u8EA2\uBFE9\u0000\u0000" + // 22910 - 22914
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22915 - 22919
+                "\u0000\u0000\u8EA2\uBFF2\u0000\u0000\u0000\u0000\u0000\u0000" + // 22920 - 22924
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBFC4" + // 22925 - 22929
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22930 - 22934
+                "\u8EA2\uC6EC\u0000\u0000\u8EA2\uC7A4\u0000\uE5DC\u8EA2\uC6F1" + // 22935 - 22939
+                "\u0000\u0000\u8EA2\uC6EF\u8EA2\uC6DA\u0000\uE6B0\u8EA2\uC6EA" + // 22940 - 22944
+                "\u8EA2\uC6FE\u8EA2\uC6E6\u0000\uE6B8\u8EA2\uC6FD\u8EA2\uC6E4" + // 22945 - 22949
+                "\u0000\uE1E9\u8EA2\uC6F4\u8EA2\uC6E5\u8EA2\uC6FB\u0000\uE6B7" + // 22950 - 22954
+                "\u0000\uE6AF\u0000\u0000\u8EA2\uC6CF\u0000\uCAC0\u8EA2\uA4B3" + // 22955 - 22959
+                "\u0000\u0000\u8EA2\uA4A9\u0000\uCABD\u0000\u0000\u0000\uCAD0" + // 22960 - 22964
+                "\u8EA2\uA4AE\u8EA2\uA4B4\u0000\uCAC2\u0000\uCAC4\u0000\u0000" + // 22965 - 22969
+                "\u8EA2\uA4AA\u0000\u0000\u8EA2\uA4AB\u8EA2\uA4AC\u0000\u0000" + // 22970 - 22974
+                "\u0000\uCACF\u0000\uCAC9\u0000\uCACE\u8EA2\uA4AD\u0000\uCACD" + // 22975 - 22979
+                "\u0000\uCABF\u0000\uCABE\u0000\uCACB\u0000\u0000\u0000\u0000" + // 22980 - 22984
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22985 - 22989
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 22990 - 22994
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCDE3\u8EA2\uA6FD" + // 22995 - 22999
+                "\u8EA2\uA6F6\u0000\uCDDE\u0000\uCDF1\u8EA2\uA6F2\u8EA2\uA6F9" + // 23000 - 23004
+                "\u8EA2\uA6FB\u8EA2\uA6FE\u0000\uCDEC\u0000\u0000\u8EA2\uA6FA" + // 23005 - 23009
+                "\u8EA2\uA6F3\u0000\uCDEA\u8EA2\uA6F7\u0000\u0000\u8EA2\uA7A1" + // 23010 - 23014
+                "\u0000\uCDDB\u0000\u0000\u8EA2\uA6FC\u0000\uCDE5\u0000\uCDE4" + // 23015 - 23019
+                "\u8EA2\uA6F5\u0000\uCDD9\u0000\uCDD4\u0000\uD1B7\u8EA2\uAAD3" + // 23020 - 23024
+                "\u8EA2\uAAD4\u0000\u0000\u0000\u0000\u8EA2\uAFB2\u0000\uD5D2" + // 23025 - 23029
+                "\u0000\uDAD3\u0000\uDFBD\u8EA2\uBBF4\u0000\uC5C3\u0000\u0000" + // 23030 - 23034
+                "\u0000\uC4DF\u0000\uC5C4\u0000\u0000\u8EA2\uA1DE\u0000\uC6D7" + // 23035 - 23039
+                "\u0000\uC6D6\u0000\uC6D4\u0000\uC6D5\u0000\u0000\u0000\u0000" + // 23040 - 23044
+                "\u0000\u0000\u0000\uC8AC\u8EA2\uA2C9\u8EA2\uA2CB\u0000\uC8AB" + // 23045 - 23049
+                "\u8EA2\uA2C3\u0000\u0000\u8EA2\uA2C4\u0000\u0000\u8EA2\uA2CA" + // 23050 - 23054
+                "\u8EA2\uA2C6\u8EA2\uA2C8\u0000\uC8AA\u8EA2\uA2C5\u8EA2\uA2CC" + // 23055 - 23059
+                "\u8EA2\uA2C7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23060 - 23064
+                "\u0000\u0000\u0000\u0000\u0000\uCAC3\u0000\uCACC\u0000\uCACA" + // 23065 - 23069
+                "\u8EA2\uA4B2\u8EA2\uA4AF\u8EA2\uA4B7\u0000\uCAC8\u8EA2\uA4B8" + // 23070 - 23074
+                "\u0000\u0000\u0000\uCAC1\u8EA2\uA4B5\u0000\u0000\u0000\uCAC7" + // 23075 - 23079
+                "\u8EA2\uA4B1\u8EA2\uA4B0\u0000\uCAC5\u8EA2\uA4B6\u0000\uCAC6" + // 23080 - 23084
+                "\u0000\uCDD5\u0000\uFCB6\u8EA2\uEFA8\u0000\u0000\u8EA2\uEFA9" + // 23085 - 23089
+                "\u8EA2\uEFAA\u0000\u0000\u0000\u0000\u8EA2\uF2AA\u0000\uC5C1" + // 23090 - 23094
+                "\u8EA2\uA1DD\u0000\uC6D3\u0000\u0000\u0000\uC8A7\u0000\uC8A8" + // 23095 - 23099
+                "\u0000\uC8A6\u0000\u0000\u0000\uC8A9\u0000\uCABC\u0000\uCABB" + // 23100 - 23104
+                "\u0000\u0000\u8EA2\uA6F0\u0000\uCDD1\u0000\uCDD0\u0000\u0000" + // 23105 - 23109
+                "\u0000\u0000\u8EA2\uAFB1\u0000\uDAD1\u0000\uDAD2\u0000\u0000" + // 23110 - 23114
+                "\u0000\u0000\u0000\u0000\u0000\uDFBC\u8EA2\uC2F8\u0000\uE4A8" + // 23115 - 23119
+                "\u0000\uE4A9\u8EA2\uC2FA\u8EA2\uC2FC\u8EA2\uC2FB\u0000\u0000" + // 23120 - 23124
+                "\u8EA2\uCABE\u0000\u0000\u8EA2\uCABD\u0000\uE8F0\u8EA2\uCABF" + // 23125 - 23129
+                "\u0000\u0000\u8EA2\uD0D3\u0000\uECF6\u0000\u0000\u0000\uF0DD" + // 23130 - 23134
+                "\u0000\u0000\u0000\uF3E1\u0000\uF6C3\u0000\uF3E2\u0000\u0000" + // 23135 - 23139
+                "\u0000\uC5C2\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA4A8" + // 23140 - 23144
+                "\u0000\u0000\u0000\u0000\u8EA2\uA6F1\u0000\uCDD3\u0000\uCDD2" + // 23145 - 23149
+                "\u8EA2\uCAB3\u0000\u0000\u0000\uECE8\u8EA2\uD0C2\u0000\u0000" + // 23150 - 23154
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD0C7" + // 23155 - 23159
+                "\u0000\uF0D7\u8EA2\uD0C1\u8EA2\uD7AE\u8EA2\uD0D0\u0000\uECF0" + // 23160 - 23164
+                "\u0000\u0000\u0000\uECEE\u0000\uF0D5\u8EA2\uD0CD\u8EA2\uD0C9" + // 23165 - 23169
+                "\u0000\uECF4\u0000\u0000\u8EA2\uD7A5\u0000\u0000\u0000\u0000" + // 23170 - 23174
+                "\u0000\u0000\u0000\uECF2\u8EA2\uD0C8\u0000\u0000\u8EA2\uD7A3" + // 23175 - 23179
+                "\u0000\u0000\u8EA2\uD0CC\u0000\u0000\u8EA2\uD0CF\u8EA2\uD0C6" + // 23180 - 23184
+                "\u0000\u0000\u0000\uECF3\u0000\u0000\u0000\u0000\u0000\uECED" + // 23185 - 23189
+                "\u8EA2\uD7A4\u0000\uF0D6\u8EA2\uD0CE\u0000\uECEF\u0000\uECF1" + // 23190 - 23194
+                "\u8EA2\uD0CB\u0000\uECF5\u8EA2\uD0CA\u8EA2\uD0C5\u8EA2\uD0C4" + // 23195 - 23199
+                "\u0000\uF0D4\u8EA2\uD0D2\u8EA2\uD7A7\u8EA2\uDCEB\u0000\uF0D9" + // 23200 - 23204
+                "\u0000\u0000\u8EA2\uD7AD\u0000\u0000\u8EA2\uD7AB\u0000\u0000" + // 23205 - 23209
+                "\u8EA2\uDCEC\u0000\u0000\u0000\uF0DA\u8EA2\uD7AC\u8EA2\uC2F7" + // 23210 - 23214
+                "\u8EA2\uCAAB\u0000\u0000\u0000\u0000\u0000\uE3FE\u8EA2\uC2EF" + // 23215 - 23219
+                "\u8EA2\uC2F3\u0000\uE8E6\u0000\uE3F5\u8EA2\uC2EC\u8EA2\uC2ED" + // 23220 - 23224
+                "\u0000\uE8E8\u0000\uE3FD\u0000\uE4A1\u0000\uE3FC\u8EA2\uC2F5" + // 23225 - 23229
+                "\u0000\u0000\u0000\u0000\u8EA2\uCAAF\u8EA2\uCAB0\u8EA2\uCAB5" + // 23230 - 23234
+                "\u0000\uECE7\u8EA2\uCABC\u0000\u0000\u0000\uE8EE\u0000\u0000" + // 23235 - 23239
+                "\u0000\uE8ED\u8EA2\uCAB7\u0000\u0000\u0000\uECE6\u8EA2\uCAAC" + // 23240 - 23244
+                "\u0000\uE8EC\u0000\u0000\u8EA2\uCABB\u0000\uE8EA\u0000\uE8EB" + // 23245 - 23249
+                "\u0000\u0000\u8EA2\uCAB8\u8EA2\uD0D1\u0000\uECE4\u0000\uDFB5" + // 23250 - 23254
+                "\u0000\u0000\u8EA2\uCABA\u0000\uECEB\u8EA2\uCAB2\u0000\u0000" + // 23255 - 23259
+                "\u0000\uECE5\u0000\u0000\u0000\uECEA\u8EA2\uCAAD\u8EA2\uCAB1" + // 23260 - 23264
+                "\u8EA2\uCAAE\u8EA2\uCAB4\u0000\uE8EF\u0000\uECE3\u0000\uE8E9" + // 23265 - 23269
+                "\u0000\u0000\u8EA2\uD0C3\u8EA2\uCAB6\u0000\u0000\u0000\uECE9" + // 23270 - 23274
+                "\u0000\u0000\u0000\uECEC\u0000\u0000\u8EA2\uB8E6\u0000\u0000" + // 23275 - 23279
+                "\u8EA2\uB8ED\u0000\u0000\u0000\u0000\u0000\uDDA6\u8EA2\uB8FB" + // 23280 - 23284
+                "\u8EA2\uB8F6\u0000\uDDA1\u0000\uDCFD\u8EA2\uB8F2\u8EA2\uB8EE" + // 23285 - 23289
+                "\u8EA2\uB8E0\u0000\uDCF4\u8EA2\uB8E5\u8EA2\uB8DD\u0000\u0000" + // 23290 - 23294
+                "\u0000\uDCFC\u0000\uDCFE\u8EA2\uB8EA\u8EA2\uB8E7\u0000\uDCF9" + // 23295 - 23299
+                "\u8EA2\uB8F7\u0000\uDCF6\u8EA2\uB8E8\u8EA2\uBFEA\u8EA2\uB8F0" + // 23300 - 23304
+                "\u0000\u0000\u8EA2\uB8EF\u0000\uDCF5\u0000\u0000\u0000\uDDA2" + // 23305 - 23309
+                "\u0000\u0000\u0000\uDCF8\u8EA2\uB8DE\u8EA2\uB8E3\u8EA2\uB8F4" + // 23310 - 23314
+                "\u8EA2\uB8FA\u0000\uDDA7\u8EA2\uB8DF\u8EA2\uB8EB\u8EA2\uB8F1" + // 23315 - 23319
+                "\u0000\uDCFB\u0000\u0000\u0000\u0000\u8EA2\uB8FC\u8EA2\uB8F5" + // 23320 - 23324
+                "\u8EA2\uB8F8\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23325 - 23329
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23330 - 23334
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDCFA\u0000\u0000" + // 23335 - 23339
+                "\u8EA2\uBFD1\u0000\uDFBA\u0000\uE3FA\u0000\u0000\u8EA2\uBBED" + // 23340 - 23344
+                "\u8EA2\uBBF2\u8EA2\uBBE6\u0000\uE4A6\u0000\u0000\u0000\uE3FB" + // 23345 - 23349
+                "\u0000\uDFB9\u8EA2\uBBE4\u8EA2\uBBF3\u0000\u0000\u0000\uE4A5" + // 23350 - 23354
+                "\u0000\uDFB7\u0000\uE3F4\u8EA2\uBBF0\u0000\u0000\u0000\uDFBB" + // 23355 - 23359
+                "\u8EA2\uBBE8\u8EA2\uBBE2\u0000\uDFB1\u8EA2\uBBE5\u0000\u0000" + // 23360 - 23364
+                "\u8EA2\uBBEE\u0000\u0000\u0000\uE3F3\u0000\uE3F8\u0000\uDFAE" + // 23365 - 23369
+                "\u8EA2\uBBEF\u0000\u0000\u0000\uE3F6\u0000\u0000\u0000\u0000" + // 23370 - 23374
+                "\u0000\u0000\u0000\uDFAF\u0000\u0000\u0000\u0000\u0000\u0000" + // 23375 - 23379
+                "\u0000\uE4A4\u8EA2\uCAAA\u8EA2\uC2F6\u0000\u0000\u8EA2\uC2EE" + // 23380 - 23384
+                "\u8EA2\uCAA9\u0000\u0000\u8EA2\uC2F2\u8EA2\uC2F4\u0000\u0000" + // 23385 - 23389
+                "\u0000\u0000\u8EA2\uC2F1\u0000\u0000\u0000\uE4A3\u0000\u0000" + // 23390 - 23394
+                "\u8EA2\uC2F0\u0000\uE4A7\u0000\u0000\u0000\u0000\u0000\u0000" + // 23395 - 23399
+                "\u8EA2\uCAB9\u0000\u0000\u0000\u0000\u0000\uE4A2\u0000\uE8E7" + // 23400 - 23404
+                "\u8EA2\uB5C9\u8EA2\uBBEC\u0000\u0000\u8EA2\uB5C7\u8EA2\uBBE1" + // 23405 - 23409
+                "\u0000\uDAC5\u0000\uDACC\u0000\uDAD0\u8EA2\uB5C1\u8EA2\uBBDC" + // 23410 - 23414
+                "\u8EA2\uB5C5\u0000\uDAC1\u8EA2\uBBDE\u8EA2\uB5C8\u8EA2\uBBE0" + // 23415 - 23419
+                "\u8EA2\uB5BD\u0000\u0000\u0000\uDFA9\u0000\u0000\u8EA2\uB5BB" + // 23420 - 23424
+                "\u8EA2\uB5BC\u0000\uDACB\u0000\u0000\u0000\u0000\u0000\uDACA" + // 23425 - 23429
+                "\u8EA2\uB5BF\u0000\uDACF\u8EA2\uB5C3\u0000\uDAC8\u8EA2\uB5C0" + // 23430 - 23434
+                "\u0000\u0000\u0000\uDACD\u0000\uDFAD\u0000\uDFAA\u8EA2\uBBDF" + // 23435 - 23439
+                "\u0000\u0000\u8EA2\uB5BE\u0000\u0000\u0000\uDAC3\u0000\u0000" + // 23440 - 23444
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23445 - 23449
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDFB2\u0000\uDFB6" + // 23450 - 23454
+                "\u8EA2\uBBE3\u0000\uE3F7\u0000\uDFB4\u8EA2\uBBE7\u0000\uDFB8" + // 23455 - 23459
+                "\u8EA2\uC2EB\u8EA2\uBBE9\u0000\uE3F9\u0000\uDFB0\u0000\uDFB3" + // 23460 - 23464
+                "\u8EA2\uBBEA\u0000\u0000\u8EA2\uBBEB\u8EA2\uBBF1\u8EA2\uAFA6" + // 23465 - 23469
+                "\u8EA2\uAFA8\u0000\u0000\u8EA2\uAFAA\u0000\uD5CA\u0000\uD5D0" + // 23470 - 23474
+                "\u8EA2\uB5B7\u8EA2\uAFAE\u8EA2\uAFA5\u0000\uDABE\u8EA2\uB5B5" + // 23475 - 23479
+                "\u0000\u0000\u0000\uD5CF\u0000\uD5CD\u8EA2\uAFB0\u0000\u0000" + // 23480 - 23484
+                "\u8EA2\uB5B6\u0000\u0000\u8EA2\uAFA7\u0000\u0000\u0000\uD5CE" + // 23485 - 23489
+                "\u8EA2\uAFAB\u0000\uD5D1\u8EA2\uAFAD\u0000\u0000\u0000\u0000" + // 23490 - 23494
+                "\u0000\uD5CC\u8EA2\uAFAC\u8EA2\uAFAF\u8EA2\uAFA9\u0000\u0000" + // 23495 - 23499
+                "\u0000\uD5CB\u0000\uDABF\u0000\u0000\u8EA2\uAFA4\u0000\uDABD" + // 23500 - 23504
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDAC0" + // 23505 - 23509
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23510 - 23514
+                "\u0000\u0000\u0000\u0000\u8EA2\uB5B9\u8EA2\uB5C2\u0000\uDFAB" + // 23515 - 23519
+                "\u0000\u0000\u0000\uDAC2\u0000\uDAC7\u0000\uDFAC\u8EA2\uB5C4" + // 23520 - 23524
+                "\u0000\uDACE\u8EA2\uBBDD\u8EA2\uB5BA\u0000\uDAC6\u0000\uDAC9" + // 23525 - 23529
+                "\u0000\uDAC4\u8EA2\uB5B8\u8EA2\uB5C6\u8EA2\uAACB\u8EA2\uAFA3" + // 23530 - 23534
+                "\u8EA2\uAACC\u0000\uD1B2\u8EA2\uAACF\u8EA2\uAAC5\u0000\uD1B1" + // 23535 - 23539
+                "\u8EA2\uAAC7\u0000\u0000\u8EA2\uAAC8\u0000\u0000\u0000\u0000" + // 23540 - 23544
+                "\u8EA2\uAACA\u0000\uD1AD\u0000\u0000\u0000\u0000\u0000\uD5C5" + // 23545 - 23549
+                "\u0000\u0000\u0000\u0000\u8EA2\uAAC6\u8EA2\uAAC2\u0000\uD5C6" + // 23550 - 23554
+                "\u0000\u0000\u0000\u0000\u8EA2\uAAD0\u0000\uD5C2\u8EA2\uAFA1" + // 23555 - 23559
+                "\u8EA2\uAAC9\u0000\u0000\u8EA2\uAEFE\u8EA2\uAAC4\u8EA2\uAACD" + // 23560 - 23564
+                "\u0000\u0000\u0000\u0000\u0000\uD1B0\u0000\uD5C3\u0000\uD1B6" + // 23565 - 23569
+                "\u0000\uD5C4\u8EA2\uAAD1\u8EA2\uAFA2\u0000\uD1AF\u0000\uD5C8" + // 23570 - 23574
+                "\u0000\uD1B5\u0000\uD1B4\u0000\uD1B3\u0000\uD5C7\u8EA2\uAAD2" + // 23575 - 23579
+                "\u0000\uD5C9\u0000\uD1AE\u0000\u0000\u8EA2\uAAC3\u0000\u0000" + // 23580 - 23584
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23585 - 23589
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23590 - 23594
+                "\u0000\u0000\u0000\uDABC\u8EA2\uA4A6\u0000\u0000\u0000\u0000" + // 23595 - 23599
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23600 - 23604
+                "\u0000\u0000\u8EA2\uA6EE\u8EA2\uA6E1\u8EA2\uA6DF\u8EA2\uA6ED" + // 23605 - 23609
+                "\u8EA2\uA6E8\u0000\uD1AB\u0000\uCDC4\u8EA2\uA6E9\u8EA2\uA6EC" + // 23610 - 23614
+                "\u0000\uD1A7\u8EA2\uA6EB\u0000\uCDC5\u0000\uCDCA\u0000\uCDC8" + // 23615 - 23619
+                "\u8EA2\uA6E2\u0000\u0000\u8EA2\uA6DD\u8EA2\uA6E4\u0000\uCDCF" + // 23620 - 23624
+                "\u8EA2\uA6EF\u0000\uD1A8\u8EA2\uA6E5\u0000\u0000\u0000\uD1A9" + // 23625 - 23629
+                "\u0000\uCDCB\u8EA2\uA6E7\u0000\u0000\u8EA2\uAACE\u0000\uD1AA" + // 23630 - 23634
+                "\u8EA2\uA6DC\u0000\uCDCC\u0000\uD1AC\u0000\uCDCD\u0000\uCDC9" + // 23635 - 23639
+                "\u0000\uCDCE\u8EA2\uA6E6\u8EA2\uA6DB\u8EA2\uA6EA\u0000\uCDC6" + // 23640 - 23644
+                "\u0000\u0000\u0000\u0000\u8EA2\uA6DE\u8EA2\uA6E3\u8EA2\uA6E0" + // 23645 - 23649
+                "\u0000\uCDC7\u0000\u0000\u8EA2\uAAC0\u0000\u0000\u8EA2\uAAC1" + // 23650 - 23654
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23655 - 23659
+                "\u0000\u0000\u8EA2\uA4BE\u0000\uCADF\u8EA2\uA4BF\u8EA2\uA4C3" + // 23660 - 23664
+                "\u0000\uCADE\u0000\u0000\u8EA2\uA4C7\u8EA2\uA4C2\u8EA2\uA4C5" + // 23665 - 23669
+                "\u0000\uCAD7\u0000\uCAD8\u0000\uCAD9\u0000\uCADA\u0000\u0000" + // 23670 - 23674
+                "\u0000\uCAE1\u0000\u0000\u8EA2\uA4C1\u0000\uCADC\u0000\uCAE2" + // 23675 - 23679
+                "\u0000\u0000\u8EA2\uA4C0\u8EA2\uA4C6\u0000\u0000\u0000\uCADB" + // 23680 - 23684
+                "\u8EA2\uA4C4\u0000\uCADD\u0000\uCAD6\u0000\uCAE0\u0000\u0000" + // 23685 - 23689
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 23690 - 23694
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCEBA\u0000\u0000" + // 23695 - 23699
+                "\u8EA2\uA7B5\u0000\uCEA6\u0000\u0000\u0000\uCEB0\u0000\uCEB1" + // 23700 - 23704
+                "\u0000\uCEA9\u0000\uCEBB\u0000\uCEAB\u8EA2\uA7BD\u0000\uCEB6" + // 23705 - 23709
+                "\u8EA2\uA7B8\u0000\uCEAC\u8EA2\uA7C7\u8EA2\uA7C8\u8EA2\uA7C0" + // 23710 - 23714
+                "\u8EA2\uA7B9\u0000\uCEB9\u8EA2\uA7C5\u0000\uCEB4\u0000\uCEB2" + // 23715 - 23719
+                "\u8EA2\uE8F4\u8EA2\uE8F5\u0000\u0000\u0000\uC5C0\u0000\u0000" + // 23720 - 23724
+                "\u0000\uC6D2\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA1DC" + // 23725 - 23729
+                "\u0000\u0000\u0000\u0000\u0000\uCAB4\u0000\uCAB6\u0000\u0000" + // 23730 - 23734
+                "\u8EA2\uA2C2\u8EA2\uA3F8\u8EA2\uA3F7\u8EA2\uA3F6\u0000\u0000" + // 23735 - 23739
+                "\u8EA2\uA2C1\u8EA2\uA2C0\u0000\uC8A5\u0000\uCAB5\u0000\uCAB3" + // 23740 - 23744
+                "\u0000\uC8A4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCDBF" + // 23745 - 23749
+                "\u8EA2\uA6D9\u0000\u0000\u0000\uCDC0\u8EA2\uA3FD\u0000\u0000" + // 23750 - 23754
+                "\u8EA2\uA4A1\u8EA2\uA3FE\u8EA2\uA6DA\u0000\u0000\u0000\u0000" + // 23755 - 23759
+                "\u8EA2\uA3FA\u0000\u0000\u0000\uCABA\u0000\uCAB8\u0000\u0000" + // 23760 - 23764
+                "\u8EA2\uA3F9\u8EA2\uA3FB\u8EA2\uA4A3\u0000\u0000\u0000\uCAB7" + // 23765 - 23769
+                "\u0000\u0000\u8EA2\uA3FC\u8EA2\uA4A7\u0000\uCDC2\u0000\u0000" + // 23770 - 23774
+                "\u8EA2\uA4A4\u0000\uCAB9\u0000\u0000\u8EA2\uA4A2\u8EA2\uA4A5" + // 23775 - 23779
+                "\u0000\u0000\u0000\uCDC1\u0000\u0000\u0000\uCDC3\u0000\uCDBB" + // 23780 - 23784
+                "\u0000\uCDBC\u8EA2\uA6D6\u0000\u0000\u0000\u0000\u0000\uD1A1" + // 23785 - 23789
+                "\u8EA2\uAABF\u0000\uD1A4\u0000\uD0FE\u0000\uD1A6\u0000\uD1A2" + // 23790 - 23794
+                "\u0000\uD1A3\u0000\uD1A5\u0000\u0000\u0000\u0000\u0000\u0000" + // 23795 - 23799
+                "\u0000\uD5C1\u0000\uD5C0\u0000\uD5BF\u0000\u0000\u0000\u0000" + // 23800 - 23804
+                "\u0000\u0000\u8EA2\uB5B3\u0000\uDAB5\u0000\uDAB8\u0000\uDAB6" + // 23805 - 23809
+                "\u0000\u0000\u8EA2\uB5B2\u0000\uDABB\u0000\u0000\u0000\uDAB7" + // 23810 - 23814
+                "\u8EA2\uB5B4\u0000\uDABA\u0000\uDAB9\u0000\u0000\u0000\u0000" + // 23815 - 23819
+                "\u0000\u0000\u8EA2\uBBDA\u8EA2\uBBD9\u0000\u0000\u0000\uDFA8" + // 23820 - 23824
+                "\u0000\uDFA6\u0000\uDFA7\u8EA2\uBBDB\u0000\uE3F1\u8EA2\uC2EA" + // 23825 - 23829
+                "\u0000\uE3F2\u8EA2\uC2E9\u0000\u0000\u0000\u0000\u8EA2\uD0C0" + // 23830 - 23834
+                "\u0000\u0000\u0000\u0000\u0000\uECE2\u8EA2\uCAA8\u0000\uECE1" + // 23835 - 23839
+                "\u0000\u0000\u0000\uE8E5\u0000\u0000\u8EA2\uD7A2\u8EA2\uD7A1" + // 23840 - 23844
+                "\u0000\uF3DB\u8EA2\uDCE9\u8EA2\uE5CB\u8EA2\uC2E8\u0000\u0000" + // 23845 - 23849
+                "\u0000\u0000\u8EA2\uCAA6\u8EA2\uCAA5\u0000\u0000\u0000\uE8E3" + // 23850 - 23854
+                "\u0000\u0000\u0000\uECDF\u8EA2\uD0BF\u0000\uF0D3\u8EA2\uD6FE" + // 23855 - 23859
+                "\u0000\uF3DA\u0000\u0000\u0000\uFBDF\u8EA2\uEFA7\u0000\uA7D9" + // 23860 - 23864
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA6D5\u0000\u0000" + // 23865 - 23869
+                "\u8EA2\uAABE\u0000\uDAB1\u8EA2\uBBD8\u0000\uE3F0\u0000\u0000" + // 23870 - 23874
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF6C1\u0000\u0000" + // 23875 - 23879
+                "\u0000\u0000\u0000\uA7DA\u0000\uCAB0\u0000\u0000\u0000\uCAAF" + // 23880 - 23884
+                "\u0000\uD0FD\u0000\u0000\u8EA2\uAEFD\u0000\u0000\u0000\uDAB3" + // 23885 - 23889
+                "\u0000\uDDA9\u0000\uDAB4\u0000\uDAB2\u0000\uDFA5\u0000\u0000" + // 23890 - 23894
+                "\u8EA2\uCAA7\u0000\uE8E4\u0000\uECE0\u0000\u0000\u8EA2\uA1AC" + // 23895 - 23899
+                "\u8EA2\uA2BF\u0000\u0000\u8EA2\uA3F5\u0000\uCAB1\u8EA2\uA3F4" + // 23900 - 23904
+                "\u0000\uCAB2\u0000\u0000\u0000\u0000\u0000\uCDBE\u8EA2\uA6D8" + // 23905 - 23909
+                "\u8EA2\uA6D7\u0000\uCDBD\u8EA2\uA1DA\u0000\u0000\u8EA2\uA1DB" + // 23910 - 23914
+                "\u0000\u0000\u8EA2\uA2BC\u0000\u0000\u0000\u0000\u0000\uCAAA" + // 23915 - 23919
+                "\u8EA2\uA3F0\u8EA2\uA3EE\u0000\uCAAB\u8EA2\uA3ED\u8EA2\uA3EF" + // 23920 - 23924
+                "\u8EA2\uA3F1\u0000\u0000\u0000\uCAA9\u0000\u0000\u0000\u0000" + // 23925 - 23929
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCDB5\u0000\uCDB6" + // 23930 - 23934
+                "\u0000\uCDB3\u0000\u0000\u0000\u0000\u0000\uCDB2\u8EA2\uAAB9" + // 23935 - 23939
+                "\u0000\uCDB4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0F8" + // 23940 - 23944
+                "\u0000\u0000\u8EA2\uAAB8\u8EA2\uAABA\u8EA2\uAAB7\u8EA2\uAABB" + // 23945 - 23949
+                "\u0000\uD0F9\u0000\uD5BD\u8EA2\uAEF7\u0000\u0000\u8EA2\uAEF9" + // 23950 - 23954
+                "\u0000\uD5BB\u8EA2\uAEFA\u0000\uD5BC\u8EA2\uAEF8\u0000\u0000" + // 23955 - 23959
+                "\u8EA2\uAAB6\u8EA2\uB5AB\u8EA2\uB5AE\u8EA2\uB5AF\u8EA2\uB5AC" + // 23960 - 23964
+                "\u0000\uDAAD\u0000\uDAAC\u0000\uDAAA\u0000\uDAAB\u8EA2\uB5AD" + // 23965 - 23969
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDAAE" + // 23970 - 23974
+                "\u0000\u0000\u0000\uE5DB\u8EA2\uC5DA\u0000\u0000\u0000\u0000" + // 23975 - 23979
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCCC8\u0000\u0000" + // 23980 - 23984
+                "\u8EA2\uCCC1\u8EA2\uCCC2\u0000\u0000\u0000\uE9FE\u0000\uE9FC" + // 23985 - 23989
+                "\u0000\uE9FD\u8EA2\uCCCA\u0000\u0000\u8EA2\uCCC9\u8EA2\uCCC6" + // 23990 - 23994
+                "\u8EA2\uCCC5\u8EA2\uCCC4\u8EA2\uCCC3\u8EA2\uCCC7\u8EA2\uCCC0" + // 23995 - 23999
+                "\u0000\u0000\u8EA2\uD2D3\u8EA2\uD2D8\u8EA2\uD2D6\u0000\u0000" + // 24000 - 24004
+                "\u0000\u0000\u0000\u0000\u8EA2\uD2D5\u8EA2\uD2D4\u8EA2\uD2D7" + // 24005 - 24009
+                "\u0000\u0000\u8EA2\uD8F8\u0000\u0000\u0000\uF1D7\u0000\uF4D2" + // 24010 - 24014
+                "\u8EA2\uDDFB\u0000\u0000\u0000\uF4D3\u8EA2\uDDFA\u8EA2\uE2CB" + // 24015 - 24019
+                "\u8EA2\uE2CA\u0000\uF6F1\u0000\u0000\u8EA2\uE6AF\u0000\uF8D6" + // 24020 - 24024
+                "\u8EA2\uE9CE\u0000\uFBEB\u8EA2\uEDE5\u0000\u0000\u8EA2\uF0C5" + // 24025 - 24029
+                "\u8EA2\uF0C4\u8EA2\uA1E7\u0000\uD2ED\u0000\uD2EE\u8EA2\uB7E6" + // 24030 - 24034
+                "\u0000\u0000\u0000\uE5DD\u0000\uC6FD\u0000\uCBB5\u0000\uDEFB" + // 24035 - 24039
+                "\u8EA2\uBBD7\u0000\u0000\u0000\uDEFC\u8EA2\uBBD6\u0000\uDEF9" + // 24040 - 24044
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC2E0" + // 24045 - 24049
+                "\u8EA2\uC2E2\u0000\uE3EB\u8EA2\uC2E1\u8EA2\uC2DF\u8EA2\uC2DE" + // 24050 - 24054
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC9F9\u0000\uE8DF" + // 24055 - 24059
+                "\u0000\uE8DD\u0000\u0000\u0000\uE8DE\u8EA2\uC9F7\u8EA2\uC9F8" + // 24060 - 24064
+                "\u0000\u0000\u0000\uE8DB\u8EA2\uD0BA\u8EA2\uD0B8\u0000\u0000" + // 24065 - 24069
+                "\u0000\uECD7\u8EA2\uD0B9\u0000\uECD8\u0000\uECD6\u0000\uE8DC" + // 24070 - 24074
+                "\u0000\u0000\u0000\u0000\u8EA2\uD6F7\u8EA2\uD6F5\u8EA2\uD6F6" + // 24075 - 24079
+                "\u8EA2\uD0B7\u8EA2\uDCE8\u0000\uF3D9\u8EA2\uDCE7\u8EA2\uE1D1" + // 24080 - 24084
+                "\u8EA2\uE1D2\u8EA2\uD6F8\u8EA2\uE5CA\u0000\u0000\u0000\uC4DB" + // 24085 - 24089
+                "\u0000\uC6CD\u0000\uC8A1\u8EA2\uA2BB\u0000\uC7FE\u0000\u0000" + // 24090 - 24094
+                "\u0000\uCDB1\u0000\uE3EC\u0000\uA7D3\u0000\uC5BC\u0000\uC6CE" + // 24095 - 24099
+                "\u0000\uD0F7\u0000\uDEFD\u0000\uA7D4\u8EA2\uE1D0\u0000\u0000" + // 24100 - 24104
+                "\u8EA2\uE4BE\u8EA2\uE5C9\u0000\u0000\u0000\u0000\u8EA2\uE8F0" + // 24105 - 24109
+                "\u8EA2\uE8F1\u0000\u0000\u0000\uF9EB\u0000\u0000\u8EA2\uEBD7" + // 24110 - 24114
+                "\u0000\u0000\u0000\uFAE9\u0000\u0000\u8EA2\uEBD8\u0000\u0000" + // 24115 - 24119
+                "\u8EA2\uEDCC\u0000\uFBDE\u0000\u0000\u0000\uFBDD\u8EA2\uEDCB" + // 24120 - 24124
+                "\u0000\uFCB5\u0000\u0000\u8EA2\uEFA5\u0000\u0000\u0000\u0000" + // 24125 - 24129
+                "\u0000\uA7CE\u0000\u0000\u0000\uC4D5\u0000\uC7FC\u8EA2\uA2BA" + // 24130 - 24134
+                "\u8EA2\uA3EA\u0000\uCBD6\u0000\uDAA5\u0000\u0000\u0000\u0000" + // 24135 - 24139
+                "\u0000\uC4D6\u0000\uC6CA\u0000\uC6C9\u0000\uC6C8\u0000\u0000" + // 24140 - 24144
+                "\u0000\u0000\u0000\uCAA7\u0000\u0000\u0000\u0000\u0000\uD5B8" + // 24145 - 24149
+                "\u0000\u0000\u8EA2\uC2DD\u0000\uC4D7\u0000\uC4D8\u0000\uC4D9" + // 24150 - 24154
+                "\u0000\uC5BB\u0000\u0000\u0000\u0000\u0000\uD0F3\u0000\u0000" + // 24155 - 24159
+                "\u8EA2\uAAB0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDEF8" + // 24160 - 24164
+                "\u0000\uC4DA\u8EA2\uA1BD\u8EA2\uC9E9\u8EA2\uC9ED\u8EA2\uC9E8" + // 24165 - 24169
+                "\u0000\u0000\u0000\uE8D9\u0000\u0000\u8EA2\uC9EB\u0000\uE8DA" + // 24170 - 24174
+                "\u8EA2\uC9F1\u8EA2\uC9F0\u8EA2\uC9EF\u0000\u0000\u0000\u0000" + // 24175 - 24179
+                "\u8EA2\uC9F4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24180 - 24184
+                "\u8EA2\uD0AE\u8EA2\uD0B0\u0000\uECD5\u8EA2\uD0B1\u0000\u0000" + // 24185 - 24189
+                "\u8EA2\uD0AC\u0000\u0000\u8EA2\uD0AB\u8EA2\uD0B5\u0000\u0000" + // 24190 - 24194
+                "\u8EA2\uD0B3\u0000\uECD4\u8EA2\uD0B6\u8EA2\uD0AD\u8EA2\uD0B2" + // 24195 - 24199
+                "\u8EA2\uD0B4\u8EA2\uD0AF\u0000\u0000\u0000\u0000\u0000\u0000" + // 24200 - 24204
+                "\u0000\u0000\u8EA2\uD6EB\u8EA2\uD6F0\u8EA2\uD6EA\u8EA2\uD6EF" + // 24205 - 24209
+                "\u0000\u0000\u8EA2\uD6E8\u8EA2\uD6F2\u8EA2\uD6EE\u8EA2\uD6F3" + // 24210 - 24214
+                "\u8EA2\uD6ED\u8EA2\uD6E9\u8EA2\uD6F1\u0000\u0000\u8EA2\uD6F4" + // 24215 - 24219
+                "\u8EA2\uD6EC\u0000\u0000\u8EA2\uDCE6\u0000\uF3D8\u0000\u0000" + // 24220 - 24224
+                "\u0000\uF3D6\u0000\u0000\u0000\uF3D5\u0000\uF3D7\u0000\u0000" + // 24225 - 24229
+                "\u0000\u0000\u0000\uA3A4\u0000\uA3A5\u0000\uA3A6\u0000\uA3A7" + // 24230 - 24234
+                "\u0000\uA3A8\u0000\uA3A9\u0000\uA3AA\u0000\uA3AB\u0000\uA3B2" + // 24235 - 24239
+                "\u0000\uA3B1\u0000\uA3B0\u0000\uA3AF\u0000\uA3AE\u0000\uA3AD" + // 24240 - 24244
+                "\u0000\uA3AC\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24245 - 24249
+                "\u0000\uA3B8\u0000\uA3BB\u0000\u0000\u0000\u0000\u0000\u0000" + // 24250 - 24254
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24255 - 24259
+                "\u0000\u0000\u0000\u0000\u0000\uA1FC\u0000\uA1FB\u0000\u0000" + // 24260 - 24264
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24265 - 24269
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24270 - 24274
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24275 - 24279
+                "\u0000\uA1F5\u0000\uA1F4\u0000\u0000\u0000\u0000\u0000\u0000" + // 24280 - 24284
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24285 - 24289
+                "\u0000\uA1FE\u0000\uA1FD\u0000\u0000\u0000\u0000\u8EA2\uAFFD" + // 24290 - 24294
+                "\u0000\u0000\u0000\uE5FE\u0000\uE1C8\u0000\uE5FD\u0000\uEACE" + // 24295 - 24299
+                "\u0000\u0000\u0000\uC8D8\u8EA2\uA1E8\u0000\uC8D9\u0000\uC8DA" + // 24300 - 24304
+                "\u0000\u0000\u0000\u0000\u8EA2\uA8CB\u8EA2\uA4F6\u0000\u0000" + // 24305 - 24309
+                "\u8EA2\uA4F7\u0000\uCBBA\u0000\u0000\u8EA2\uA4F4\u0000\uCBB9" + // 24310 - 24314
+                "\u0000\u0000\u0000\uCBBC\u8EA2\uA4F5\u0000\uCBBE\u0000\uCBBD" + // 24315 - 24319
+                "\u8EA2\uA4F8\u0000\uCBBB\u0000\u0000\u0000\u0000\u0000\u0000" + // 24320 - 24324
+                "\u0000\uCFB4\u0000\uCFB2\u8EA2\uA8CD\u0000\u0000\u0000\uCFB1" + // 24325 - 24329
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCFB6\u0000\uCFB8" + // 24330 - 24334
+                "\u0000\uCFB5\u0000\u0000\u8EA2\uA8D0\u8EA2\uA8CC\u0000\uCFB9" + // 24335 - 24339
+                "\u0000\u0000\u0000\uCFB3\u0000\uCBBF\u0000\u0000\u0000\uCFB7" + // 24340 - 24344
+                "\u8EA2\uA8CF\u0000\u0000\u0000\u0000\u8EA2\uA8CE\u0000\u0000" + // 24345 - 24349
+                "\u0000\uCFB0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24350 - 24354
+                "\u0000\u0000\u0000\uA2EA\u0000\u0000\u0000\uA2A2\u0000\u0000" + // 24355 - 24359
+                "\u0000\u0000\u0000\u0000\u0000\uA2EB\u0000\u0000\u0000\u0000" + // 24360 - 24364
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24365 - 24369
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24370 - 24374
+                "\u8EAD\uA4C5\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24375 - 24379
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24380 - 24384
+                "\u0000\u0000\u8EAD\uA4C6\u0000\u0000\u0000\u0000\u0000\u0000" + // 24385 - 24389
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24390 - 24394
+                "\u0000\u0000\u8EAD\uA1CA\u0000\u0000\u0000\u0000\u0000\u0000" + // 24395 - 24399
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24400 - 24404
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24405 - 24409
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24410 - 24414
+                "\u0000\u0000\u0000\u0000\u8EAD\uA1AF\u0000\u0000\u0000\u0000" + // 24415 - 24419
+                "\u0000\u0000\u0000\uA1B7\u0000\u0000\u0000\u0000\u0000\u0000" + // 24420 - 24424
+                "\u0000\uA1E4\u0000\uA1E5\u0000\u0000\u0000\u0000\u0000\uA1E6" + // 24425 - 24429
+                "\u0000\uA1E7\u0000\u0000\u0000\u0000\u8EAD\uA1CF\u8EAD\uA1D0" + // 24430 - 24434
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uA1AD\u0000\uA1AC" + // 24435 - 24439
+                "\u0000\uA1A6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24440 - 24444
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EAD\uA1CB" + // 24445 - 24449
+                "\u0000\u0000\u0000\uA1EB\u8EAD\uA1B3\u0000\u0000\u0000\uA1EA" + // 24450 - 24454
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24455 - 24459
+                "\u0000\uA1EF\u0000\u0000\u0000\u0000\u0000\uA2A3\u0000\u0000" + // 24460 - 24464
+                "\u0000\uF4D1\u8EA2\uDDF1\u0000\u0000\u8EA2\uDDF9\u8EA2\uDDF6" + // 24465 - 24469
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE2C6\u0000\u0000" + // 24470 - 24474
+                "\u0000\u0000\u8EA2\uE2C3\u0000\u0000\u0000\uF6F0\u0000\u0000" + // 24475 - 24479
+                "\u8EA2\uE2C7\u8EA2\uE2C9\u8EA2\uE2C8\u8EA2\uE2C4\u8EA2\uE2C5" + // 24480 - 24484
+                "\u0000\u0000\u0000\u0000\u8EA2\uE6AD\u0000\u0000\u0000\uF8D5" + // 24485 - 24489
+                "\u0000\u0000\u8EA2\uE6AA\u8EA2\uE6AC\u8EA2\uE6A9\u8EA2\uE6AE" + // 24490 - 24494
+                "\u0000\u0000\u0000\u0000\u8EA2\uE6AB\u0000\u0000\u8EA2\uE9C9" + // 24495 - 24499
+                "\u8EA2\uE9CC\u8EA2\uE9C8\u0000\uF9FC\u8EA2\uE9CA\u8EA2\uE9CB" + // 24500 - 24504
+                "\u8EA2\uE9CD\u0000\uF9FD\u0000\uFAA1\u0000\uF9FE\u8EA2\uEBEF" + // 24505 - 24509
+                "\u0000\u0000\u8EA2\uEBF1\u0000\u0000\u8EA2\uEBF0\u0000\u0000" + // 24510 - 24514
+                "\u0000\u0000\u0000\u0000\u8EA2\uEDE4\u0000\u0000\u0000\u0000" + // 24515 - 24519
+                "\u8EA2\uF0C3\u8EA2\uF1AA\u0000\uC6FC\u0000\u0000\u0000\u0000" + // 24520 - 24524
+                "\u8EA2\uA4F2\u0000\uCFA3\u8EA2\uA8C3\u8EA2\uBBD4\u8EA2\uBBC0" + // 24525 - 24529
+                "\u8EA2\uBBCD\u8EA2\uBBBE\u0000\u0000\u8EA2\uBBD5\u0000\u0000" + // 24530 - 24534
+                "\u0000\uDEF7\u0000\u0000\u8EA2\uBBCF\u8EA2\uC2D5\u8EA2\uBBC1" + // 24535 - 24539
+                "\u0000\uDEF4\u0000\u0000\u8EA2\uBBC5\u0000\u0000\u0000\uDEF5" + // 24540 - 24544
+                "\u8EA2\uBBC4\u8EA2\uBBC9\u0000\u0000\u0000\u0000\u8EA2\uBBC6" + // 24545 - 24549
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBBCC\u0000\u0000" + // 24550 - 24554
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC2D9\u0000\u0000" + // 24555 - 24559
+                "\u0000\u0000\u0000\u0000\u8EA2\uC2DC\u8EA2\uC2D4\u0000\u0000" + // 24560 - 24564
+                "\u8EA2\uC2D6\u0000\u0000\u8EA2\uC2DB\u8EA2\uC2DA\u0000\uE3E9" + // 24565 - 24569
+                "\u0000\u0000\u8EA2\uBBBF\u8EA2\uC2D8\u0000\u0000\u0000\u0000" + // 24570 - 24574
+                "\u0000\uE3EA\u0000\u0000\u8EA2\uC2D3\u8EA2\uC2D7\u0000\u0000" + // 24575 - 24579
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC9EE\u0000\u0000" + // 24580 - 24584
+                "\u8EA2\uC9F5\u8EA2\uC9EC\u0000\u0000\u8EA2\uC9F3\u8EA2\uC9EA" + // 24585 - 24589
+                "\u8EA2\uC9F2\u8EA2\uC9F6\u8EA2\uAEF3\u0000\uD5B6\u0000\u0000" + // 24590 - 24594
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD9F7\u0000\uD9F6" + // 24595 - 24599
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB4F8\u8EA2\uB4FC" + // 24600 - 24604
+                "\u8EA2\uB4FE\u0000\uD9F8\u8EA2\uB5A3\u0000\u0000\u0000\uD9FC" + // 24605 - 24609
+                "\u8EA2\uB5A5\u0000\u0000\u0000\uD9FE\u0000\u0000\u0000\uD9FA" + // 24610 - 24614
+                "\u0000\uDAA4\u0000\u0000\u0000\uDAA1\u8EA2\uB4FA\u0000\uD9F9" + // 24615 - 24619
+                "\u0000\u0000\u8EA2\uB4F9\u8EA2\uB4F7\u8EA2\uB5A7\u8EA2\uB4FB" + // 24620 - 24624
+                "\u0000\u0000\u0000\uD9FB\u8EA2\uB5A6\u0000\uDAA2\u8EA2\uB5A2" + // 24625 - 24629
+                "\u8EA2\uB5A1\u0000\uDAA3\u8EA2\uB4FD\u0000\uD9FD\u0000\u0000" + // 24630 - 24634
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB5A8\u0000\u0000" + // 24635 - 24639
+                "\u8EA2\uB5A4\u8EA2\uBBCB\u8EA2\uBBD2\u8EA2\uBBC7\u0000\uDEF6" + // 24640 - 24644
+                "\u8EA2\uBBC3\u8EA2\uBBD3\u8EA2\uBBBD\u8EA2\uBBD0\u8EA2\uBBCE" + // 24645 - 24649
+                "\u8EA2\uBBC8\u0000\u0000\u8EA2\uBBD1\u8EA2\uBBCA\u0000\u0000" + // 24650 - 24654
+                "\u8EA2\uBBC2\u0000\uC9FD\u0000\uC9FE\u0000\u0000\u0000\u0000" + // 24655 - 24659
+                "\u8EA2\uA6BA\u0000\uCDA2\u0000\uCDA3\u8EA2\uA6BB\u0000\uCDA1" + // 24660 - 24664
+                "\u0000\u0000\u0000\u0000\u0000\uD0F0\u8EA2\uA9F9\u0000\uD0EF" + // 24665 - 24669
+                "\u0000\uD0ED\u0000\uD0EE\u0000\uD5AE\u0000\uD5AC\u0000\u0000" + // 24670 - 24674
+                "\u0000\u0000\u8EA2\uAEED\u0000\uD5AD\u8EA2\uAEEC\u0000\u0000" + // 24675 - 24679
+                "\u0000\uD5A2\u8EA2\uB4F6\u0000\u0000\u0000\u0000\u0000\uD9F4" + // 24680 - 24684
+                "\u0000\uD9F5\u0000\u0000\u0000\u0000\u0000\uD9F3\u0000\u0000" + // 24685 - 24689
+                "\u0000\uE8D8\u8EA2\uC9E7\u0000\uECD2\u0000\uECD3\u0000\u0000" + // 24690 - 24694
+                "\u8EA2\uD0AA\u0000\uF3D4\u8EA2\uE1CE\u8EA2\uE1CF\u0000\u0000" + // 24695 - 24699
+                "\u0000\uFAE8\u8EA2\uF0B6\u8EA2\uA1AB\u0000\uC5BA\u0000\u0000" + // 24700 - 24704
+                "\u0000\uC4D4\u0000\u0000\u8EA2\uA1D8\u8EA2\uA1D7\u0000\u0000" + // 24705 - 24709
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC7FB\u8EA2\uA2B7" + // 24710 - 24714
+                "\u8EA2\uA2B8\u8EA2\uA2B6\u0000\u0000\u8EA2\uA2B9\u0000\u0000" + // 24715 - 24719
+                "\u0000\uD2DC\u0000\u0000\u8EA2\uACC3\u8EA2\uACC4\u8EA2\uACC5" + // 24720 - 24724
+                "\u0000\u0000\u0000\uD2E3\u8EA2\uACC2\u0000\uD2DF\u8EA2\uACC6" + // 24725 - 24729
+                "\u0000\uD2E0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24730 - 24734
+                "\u8EA2\uB1B2\u8EA2\uB1B6\u8EA2\uB1B4\u8EA2\uB1B3\u0000\u0000" + // 24735 - 24739
+                "\u8EA2\uB1B7\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB1B8" + // 24740 - 24744
+                "\u8EA2\uB1B9\u8EA2\uB1B1\u0000\u0000\u8EA2\uB1B0\u0000\u0000" + // 24745 - 24749
+                "\u0000\uD6F8\u0000\uD6F9\u0000\u0000\u8EA2\uB1BA\u8EA2\uB1B5" + // 24750 - 24754
+                "\u0000\u0000\u8EA2\uB7D3\u0000\u0000\u8EA2\uB1BB\u0000\uD6FA" + // 24755 - 24759
+                "\u0000\uD6F7\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uB7CD" + // 24760 - 24764
+                "\u0000\u0000\u8EA2\uB7CC\u0000\u0000\u8EA2\uB7CE\u8EA2\uB7CF" + // 24765 - 24769
+                "\u8EA2\uB7D1\u8EA2\uB7D0\u8EA2\uB7D5\u0000\uDCBA\u0000\uDCB7" + // 24770 - 24774
+                "\u0000\uDCBB\u8EA2\uB7CB\u0000\uDCBC\u8EA2\uB7D4\u0000\uDCB9" + // 24775 - 24779
+                "\u8EA2\uB7D2\u0000\uDCB8\u0000\u0000\u0000\uE9F6\u0000\u0000" + // 24780 - 24784
+                "\u8EA2\uD2D0\u8EA2\uD2D1\u0000\uEDFC\u0000\u0000\u0000\u0000" + // 24785 - 24789
+                "\u8EA2\uD2CF\u8EA2\uD2D2\u0000\uEDFE\u0000\uEDFB\u8EA2\uD2CB" + // 24790 - 24794
+                "\u8EA2\uD2C8\u8EA2\uD2CD\u8EA2\uD2CA\u0000\uEEA4\u8EA2\uD2CC" + // 24795 - 24799
+                "\u0000\u0000\u0000\u0000\u8EA2\uD2CE\u0000\uEEA2\u0000\u0000" + // 24800 - 24804
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF1D4\u8EA2\uD8F2" + // 24805 - 24809
+                "\u0000\u0000\u8EA2\uD8EC\u8EA2\uD8F0\u8EA2\uD8F6\u8EA2\uD8F7" + // 24810 - 24814
+                "\u8EA2\uD8F3\u8EA2\uD8F4\u8EA2\uD8F1\u0000\u0000\u8EA2\uD8EE" + // 24815 - 24819
+                "\u0000\u0000\u0000\uF1D6\u0000\uF1D3\u8EA2\uD8ED\u8EA2\uD8EF" + // 24820 - 24824
+                "\u0000\u0000\u0000\uF1D5\u8EA2\uD8F5\u0000\u0000\u0000\uF4D0" + // 24825 - 24829
+                "\u0000\u0000\u0000\u0000\u8EA2\uDDF5\u8EA2\uDDEF\u0000\uF4CF" + // 24830 - 24834
+                "\u0000\u0000\u0000\u0000\u0000\uF4CD\u0000\u0000\u8EA2\uDDF7" + // 24835 - 24839
+                "\u0000\uF4CE\u8EA2\uDDF2\u8EA2\uDDF3\u8EA2\uDDF0\u8EA2\uDDF8" + // 24840 - 24844
+                "\u8EA2\uDDF4\u8EA2\uB4F5\u8EA2\uB4F4\u0000\uD9ED\u0000\u0000" + // 24845 - 24849
+                "\u0000\uD9EC\u0000\uD9EB\u0000\uD9EF\u0000\uD9EA\u0000\u0000" + // 24850 - 24854
+                "\u0000\u0000\u8EA2\uBBB9\u8EA2\uBBB6\u0000\uDEEE\u8EA2\uBBB5" + // 24855 - 24859
+                "\u8EA2\uBBBA\u0000\u0000\u0000\uDEF0\u8EA2\uBBB8\u0000\uDEED" + // 24860 - 24864
+                "\u0000\uDEEF\u8EA2\uBBB7\u0000\u0000\u8EA2\uC2CE\u0000\u0000" + // 24865 - 24869
+                "\u8EA2\uC2CF\u8EA2\uC2D0\u0000\u0000\u0000\u0000\u0000\u0000" + // 24870 - 24874
+                "\u0000\u0000\u0000\uE8CE\u0000\uE8D6\u8EA2\uC9E5\u0000\uE8D0" + // 24875 - 24879
+                "\u0000\uE8D4\u8EA2\uC9E6\u0000\uE8D5\u0000\uE8D1\u0000\uE8D2" + // 24880 - 24884
+                "\u0000\uE8CF\u0000\uE8D3\u0000\uECD0\u8EA2\uBBB4\u0000\uECD1" + // 24885 - 24889
+                "\u0000\uECCF\u0000\u0000\u0000\uECCE\u8EA2\uD6E7\u0000\uF0D1" + // 24890 - 24894
+                "\u8EA2\uDCE4\u8EA2\uDCE5\u0000\u0000\u0000\u0000\u0000\uF8B1" + // 24895 - 24899
+                "\u0000\uF9EA\u0000\u0000\u0000\uC4D0\u0000\u0000\u0000\uC7F9" + // 24900 - 24904
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24905 - 24909
+                "\u0000\uDBB9\u0000\u0000\u8EA2\uBCE6\u8EA2\uBCFC\u8EA2\uBCF1" + // 24910 - 24914
+                "\u0000\uDFFB\u0000\u0000\u0000\uDFF6\u8EA2\uBCE0\u0000\uDFF7" + // 24915 - 24919
+                "\u8EA2\uBCF0\u0000\u0000\u8EA2\uBCE9\u8EA2\uBCF6\u0000\uDFF3" + // 24920 - 24924
+                "\u8EA2\uBCCE\u8EA2\uBCF8\u0000\uDFE9\u8EA2\uBCD6\u0000\uDFEC" + // 24925 - 24929
+                "\u0000\uDFEB\u0000\u0000\u0000\uDFFC\u0000\u0000\u8EA2\uBCD0" + // 24930 - 24934
+                "\u8EA2\uBCF2\u8EA2\uBCF3\u0000\uDFEE\u0000\uDFEA\u8EA2\uBCDE" + // 24935 - 24939
+                "\u0000\u0000\u0000\uDFF5\u8EA2\uBCD9\u0000\u0000\u8EA2\uBCF4" + // 24940 - 24944
+                "\u0000\uDFF1\u8EA2\uBCEC\u8EA2\uBCF9\u8EA2\uBCD3\u8EA2\uBCD8" + // 24945 - 24949
+                "\u8EA2\uBCD2\u0000\u0000\u0000\uDFF0\u8EA2\uBCE5\u8EA2\uC3E4" + // 24950 - 24954
+                "\u8EA2\uBCD4\u0000\uDFF4\u8EA2\uBCDD\u8EA2\uBCF5\u0000\uDFEF" + // 24955 - 24959
+                "\u8EA2\uBCDA\u8EA2\uBCD7\u8EA2\uBCE8\u0000\uDFF2\u0000\uDFE8" + // 24960 - 24964
+                "\u0000\uDFFE\u8EA2\uBCEB\u8EA2\uBCEA\u0000\u0000\u0000\u0000" + // 24965 - 24969
+                "\u8EAD\uA3C6\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24970 - 24974
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24975 - 24979
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 24980 - 24984
+                "\u8EAD\uA3C0\u8EAD\uA3C1\u8EAD\uA3C2\u8EAD\uA3C3\u8EAD\uA3C4" + // 24985 - 24989
+                "\u8EAD\uA3C5\u8EAD\uA3C7\u8EAD\uA3C8\u8EAD\uA3C9\u8EAD\uA3CA" + // 24990 - 24994
+                "\u8EAD\uA3CB\u8EAD\uA3CC\u8EAD\uA3CD\u8EAD\uA3CE\u8EAD\uA3CF" + // 24995 - 24999
+                "\u8EAD\uA3D0\u8EAD\uA3D1\u8EAD\uA3D2\u8EAD\uA3D3\u8EAD\uA3D4" + // 25000 - 25004
+                "\u8EAD\uA3D5\u8EAD\uA3D6\u8EAD\uA3D7\u8EAD\uA3D8\u8EAD\uA3D9" + // 25005 - 25009
+                "\u8EAD\uA3DA\u8EAD\uA3DB\u8EAD\uA3DC\u8EAD\uA3DD\u8EAD\uA3DE" + // 25010 - 25014
+                "\u8EAD\uA3DF\u8EAD\uA3E0\u8EAD\uA3E1\u8EAD\uA3E2\u8EAD\uA3E3" + // 25015 - 25019
+                "\u8EAD\uA3E4\u8EAD\uA3E5\u8EAD\uA3E6\u8EAD\uA3E8\u8EAD\uA3E9" + // 25020 - 25024
+                "\u8EAD\uA3EA\u8EAD\uA3EB\u8EAD\uA3EC\u8EAD\uA3ED\u8EAD\uA3EE" + // 25025 - 25029
+                "\u8EAD\uA3EF\u8EAD\uA3F0\u8EAD\uA3F1\u0000\uA7C7\u8EA2\uA1D3" + // 25030 - 25034
+                "\u0000\u0000\u0000\uC6C6\u8EA2\uA1D4\u0000\uC7F7\u0000\u0000" + // 25035 - 25039
+                "\u0000\uC7F5\u0000\uC7F6\u0000\uC7F8\u0000\u0000\u0000\uC9FA" + // 25040 - 25044
+                "\u0000\uC9F9\u0000\u0000\u8EA2\uA3DC\u0000\uC9FB\u0000\u0000" + // 25045 - 25049
+                "\u0000\u0000\u8EA2\uA3DD\u8EA2\uA6B8\u0000\u0000\u8EA2\uA6B9" + // 25050 - 25054
+                "\u0000\u0000\u0000\uCCF8\u0000\uCCFA\u0000\uCCFC\u0000\uCCF9" + // 25055 - 25059
+                "\u0000\uCCFD\u0000\uCCFB\u0000\u0000\u0000\u0000\u0000\u0000" + // 25060 - 25064
+                "\u0000\u0000\u0000\u0000\u0000\uD0EA\u0000\uD0E7\u0000\uD0E9" + // 25065 - 25069
+                "\u0000\uD0EB\u0000\uD0E8\u8EA2\uAEE8\u8EA2\uA9F8\u0000\u0000" + // 25070 - 25074
+                "\u0000\u0000\u0000\u0000\u8EA2\uAEEA\u8EA2\uAEE9\u0000\uD5A7" + // 25075 - 25079
+                "\u0000\u0000\u0000\uD5A3\u0000\u0000\u0000\u0000\u0000\uD5A4" + // 25080 - 25084
+                "\u0000\uD5A6\u0000\uD5A8\u0000\uD5A5\u0000\u0000\u0000\uD5AA" + // 25085 - 25089
+                "\u0000\uD5A9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25090 - 25094
+                "\u0000\u0000\u0000\uD9EE\u0000\uF9E7\u0000\u0000\u0000\u0000" + // 25095 - 25099
+                "\u0000\uF9E8\u0000\u0000\u8EA2\uE8EF\u0000\u0000\u8EA2\uEBD6" + // 25100 - 25104
+                "\u8EA2\uEBD5\u0000\u0000\u0000\u0000\u8EA2\uEDC9\u8EA2\uEDCA" + // 25105 - 25109
+                "\u8EA2\uEFA4\u8EA2\uF0B5\u0000\u0000\u0000\uC4CD\u0000\uC4CE" + // 25110 - 25114
+                "\u0000\u0000\u0000\uC4CF\u0000\uC5B6\u0000\uC6C5\u8EA2\uA2B3" + // 25115 - 25119
+                "\u0000\uC7F3\u0000\uC7F4\u0000\u0000\u0000\uC9F7\u0000\uC9F8" + // 25120 - 25124
+                "\u0000\uC9F6\u0000\uC9F5\u0000\u0000\u0000\uCCF5\u0000\u0000" + // 25125 - 25129
+                "\u0000\u0000\u8EA2\uA6B6\u0000\uCCF7\u0000\uCCF6\u8EA2\uA6B7" + // 25130 - 25134
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0E6\u0000\u0000" + // 25135 - 25139
+                "\u0000\uD5A1\u8EA2\uAEE7\u0000\u0000\u8EA2\uB4F3\u0000\u0000" + // 25140 - 25144
+                "\u0000\uD9E9\u0000\uDEEC\u8EA2\uB4F2\u0000\uDEEB\u0000\u0000" + // 25145 - 25149
+                "\u0000\uE8CD\u0000\u0000\u8EA2\uC9E4\u0000\uF0D0\u0000\u0000" + // 25150 - 25154
+                "\u0000\uF3D2\u8EA2\uDCE3\u0000\u0000\u0000\uF9E9\u0000\u0000" + // 25155 - 25159
+                "\u0000\uFBDC\u8EA2\uC2C7\u0000\uE3E0\u0000\uE3E7\u0000\u0000" + // 25160 - 25164
+                "\u8EA2\uC2BB\u0000\u0000\u8EA2\uC2C5\u8EA2\uC2BA\u8EA2\uC2C3" + // 25165 - 25169
+                "\u0000\uE3E1\u8EA2\uC2C8\u8EA2\uC2BC\u0000\uE3E2\u8EA2\uC2CB" + // 25170 - 25174
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25175 - 25179
+                "\u0000\u0000\u0000\u0000\u8EA2\uC9D5\u0000\uE8CA\u0000\uE8C9" + // 25180 - 25184
+                "\u0000\uE8CB\u8EA2\uC9E1\u8EA2\uC9D7\u8EA2\uC9DD\u8EA2\uC9D2" + // 25185 - 25189
+                "\u8EA2\uC9E0\u8EA2\uC9DF\u8EA2\uC9E3\u8EA2\uC9DC\u0000\uE8C6" + // 25190 - 25194
+                "\u8EA2\uC9DB\u0000\uE8CC\u0000\u0000\u8EA2\uC9D4\u0000\uE8C7" + // 25195 - 25199
+                "\u0000\u0000\u8EA2\uC9E2\u0000\uE8C8\u8EA2\uC9D6\u8EA2\uC9D9" + // 25200 - 25204
+                "\u8EA2\uC9DE\u8EA2\uC9D8\u8EA2\uC9D3\u0000\u0000\u0000\u0000" + // 25205 - 25209
+                "\u0000\u0000\u0000\u0000\u8EA2\uC9DA\u8EA2\uCFFC\u0000\uECCB" + // 25210 - 25214
+                "\u8EA2\uD0A1\u8EA2\uCFFE\u8EA2\uD0A3\u8EA2\uD0A5\u0000\u0000" + // 25215 - 25219
+                "\u0000\uECC9\u0000\u0000\u8EA2\uCFFD\u0000\u0000\u8EA2\uCFFB" + // 25220 - 25224
+                "\u0000\uD9E3\u0000\uD9DF\u8EA2\uB4F0\u8EA2\uB4E0\u8EA2\uB4E3" + // 25225 - 25229
+                "\u0000\u0000\u0000\uD9E7\u8EA2\uB4ED\u8EA2\uB4E5\u0000\uD9E0" + // 25230 - 25234
+                "\u0000\uD9E8\u0000\u0000\u8EA2\uB4EA\u8EA2\uB4E8\u0000\u0000" + // 25235 - 25239
+                "\u0000\u0000\u8EA2\uB4D9\u8EA2\uB4EE\u8EA2\uB4E2\u8EA2\uB4DD" + // 25240 - 25244
+                "\u0000\u0000\u8EA2\uB4D3\u8EA2\uB4EF\u8EA2\uB4DF\u8EA2\uB4D2" + // 25245 - 25249
+                "\u0000\u0000\u0000\uD9E6\u8EA2\uB4E4\u8EA2\uB4F1\u8EA2\uB4E1" + // 25250 - 25254
+                "\u8EA2\uB4D5\u8EA2\uB4DA\u8EA2\uB4D1\u0000\u0000\u0000\uD9E5" + // 25255 - 25259
+                "\u0000\u0000\u8EA2\uB4DE\u8EA2\uB4DB\u0000\uD9E1\u8EA2\uB4D4" + // 25260 - 25264
+                "\u0000\u0000\u8EA2\uB4EC\u0000\uD9E2\u0000\u0000\u8EA2\uB4DC" + // 25265 - 25269
+                "\u8EA2\uB4D8\u0000\u0000\u0000\u0000\u8EA2\uB4EB\u0000\u0000" + // 25270 - 25274
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25275 - 25279
+                "\u0000\uDEE5\u8EA2\uBAFD\u0000\u0000\u8EA2\uBAFA\u8EA2\uBBAD" + // 25280 - 25284
+                "\u8EA2\uBBA1\u8EA2\uBBAE\u0000\u0000\u0000\uDEE7\u8EA2\uA9E6" + // 25285 - 25289
+                "\u0000\uD0E4\u0000\u0000\u0000\uD0DF\u0000\u0000\u0000\u0000" + // 25290 - 25294
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD4FE\u8EA2\uAEE4" + // 25295 - 25299
+                "\u0000\u0000\u0000\uD4FD\u0000\u0000\u0000\u0000\u8EA2\uAEE2" + // 25300 - 25304
+                "\u0000\u0000\u0000\uD4F2\u0000\u0000\u0000\uD4F7\u0000\u0000" + // 25305 - 25309
+                "\u8EA2\uAEE1\u8EA2\uAEDE\u8EA2\uAEE3\u0000\uD4F3\u8EA2\uAEDD" + // 25310 - 25314
+                "\u0000\u0000\u0000\uD4F6\u0000\uD4F4\u0000\u0000\u8EA2\uAEE5" + // 25315 - 25319
+                "\u0000\uD4F5\u0000\uD4F9\u0000\u0000\u0000\u0000\u0000\uD4FA" + // 25320 - 25324
+                "\u0000\u0000\u0000\uD4FC\u0000\u0000\u0000\u0000\u0000\u0000" + // 25325 - 25329
+                "\u0000\uD4FB\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uAEDF" + // 25330 - 25334
+                "\u8EA2\uAEE0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25335 - 25339
+                "\u8EA2\uAEE6\u0000\u0000\u8EA2\uB4D7\u0000\uD9DE\u8EA2\uBBA6" + // 25340 - 25344
+                "\u8EA2\uB4D6\u8EA2\uB4E9\u0000\u0000\u0000\u0000\u0000\uD9E4" + // 25345 - 25349
+                "\u0000\u0000\u8EA2\uB4E7\u0000\u0000\u8EA2\uA4F1\u0000\uCBB0" + // 25350 - 25354
+                "\u0000\u0000\u0000\uCEFB\u0000\u0000\u0000\uD2D5\u0000\uD2D6" + // 25355 - 25359
+                "\u0000\uD2D7\u8EA2\uB7C9\u8EA2\uB1AE\u0000\uD6F2\u0000\u0000" + // 25360 - 25364
+                "\u0000\u0000\u0000\uDCB3\u8EA2\uB7C8\u0000\u0000\u0000\u0000" + // 25365 - 25369
+                "\u8EA2\uBEBC\u0000\uE0F7\u0000\u0000\u8EA2\uBEBB\u0000\uE0F6" + // 25370 - 25374
+                "\u0000\u0000\u0000\u0000\u8EA2\uC5BB\u0000\uEDF3\u8EA2\uD2C3" + // 25375 - 25379
+                "\u8EA2\uD2C0\u8EA2\uD2C1\u8EA2\uD2C2\u0000\u0000\u0000\u0000" + // 25380 - 25384
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDDE4\u0000\u0000" + // 25385 - 25389
+                "\u8EA2\uE2BE\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE9C0" + // 25390 - 25394
+                "\u8EA2\uE9BF\u0000\u0000\u8EA2\uEDE3\u0000\uC6F6\u8EA2\uA8B7" + // 25395 - 25399
+                "\u0000\uD6F3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE0F8" + // 25400 - 25404
+                "\u8EA2\uC5BC\u0000\u0000\u0000\u0000\u8EA2\uCCA9\u0000\u0000" + // 25405 - 25409
+                "\u0000\uEDF4\u8EA2\uD8E0\u0000\u0000\u8EA2\uE2BF\u8EA2\uE9C1" + // 25410 - 25414
+                "\u0000\uC6F7\u8EA2\uA6B2\u8EA2\uA6AB\u0000\u0000\u8EA2\uA6AE" + // 25415 - 25419
+                "\u0000\u0000\u0000\uCCF4\u0000\uCCEB\u8EA2\uA6B5\u8EA2\uA6B3" + // 25420 - 25424
+                "\u0000\u0000\u0000\uCCF0\u0000\uCCEE\u8EA2\uA6AA\u0000\uCCED" + // 25425 - 25429
+                "\u8EA2\uA6A8\u8EA2\uA6A7\u0000\uCCEC\u0000\uCCEA\u0000\uCCF3" + // 25430 - 25434
+                "\u0000\uCCEF\u0000\uCCE7\u0000\u0000\u8EA2\uA6AF\u0000\u0000" + // 25435 - 25439
+                "\u0000\uD0DB\u0000\u0000\u0000\uD0E2\u8EA2\uA9F0\u0000\uD0DA" + // 25440 - 25444
+                "\u8EA2\uA9E8\u8EA2\uA9E4\u0000\u0000\u8EA2\uA9F4\u8EA2\uA9E3" + // 25445 - 25449
+                "\u0000\u0000\u0000\uD0DD\u8EA2\uA9ED\u0000\uD0E0\u0000\uD0E3" + // 25450 - 25454
+                "\u0000\u0000\u0000\uD0DE\u8EA2\uA9F1\u0000\uD0E1\u0000\u0000" + // 25455 - 25459
+                "\u0000\uD4F8\u8EA2\uA9F7\u8EA2\uA9E5\u0000\u0000\u0000\u0000" + // 25460 - 25464
+                "\u8EA2\uA9E7\u8EA2\uA9EE\u8EA2\uA9F2\u8EA2\uA9F6\u8EA2\uA9F3" + // 25465 - 25469
+                "\u8EA2\uA9EC\u8EA2\uA9EF\u0000\u0000\u0000\u0000\u8EA2\uA9E9" + // 25470 - 25474
+                "\u0000\uD0E5\u8EA2\uA9EB\u8EA2\uA9EA\u8EA2\uA9F5\u0000\uD0DC" + // 25475 - 25479
+                "\u8EA2\uA2AC\u0000\uC7F2\u0000\uC7F1\u0000\uC7EE\u0000\uC7EC" + // 25480 - 25484
+                "\u8EA2\uA2AE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25485 - 25489
+                "\u0000\uC9F3\u0000\u0000\u0000\u0000\u0000\uC9F0\u8EA2\uA3D6" + // 25490 - 25494
+                "\u8EA2\uA3D9\u8EA2\uA3D8\u0000\u0000\u0000\uC9EA\u0000\uC9F2" + // 25495 - 25499
+                "\u0000\u0000\u0000\u0000\u0000\uC9EF\u8EA2\uA3D5\u8EA2\uA3D3" + // 25500 - 25504
+                "\u0000\uC9EE\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC9E9" + // 25505 - 25509
+                "\u0000\uC9EC\u0000\u0000\u8EA2\uA3D4\u8EA2\uA3DB\u8EA2\uA3D7" + // 25510 - 25514
+                "\u0000\uC9ED\u0000\uC9F1\u0000\uC9F4\u8EA2\uA3D2\u8EA2\uA3DA" + // 25515 - 25519
+                "\u0000\uC9EB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25520 - 25524
+                "\u0000\u0000\u0000\uCCE9\u0000\uCCF1\u0000\u0000\u8EA2\uA6B0" + // 25525 - 25529
+                "\u8EA2\uA6A9\u0000\uCCF2\u8EA2\uA6B4\u8EA2\uA6A5\u8EA2\uA6AC" + // 25530 - 25534
+                "\u0000\u0000\u0000\u0000\u0000\uCCE8\u8EA2\uA6A6\u0000\uCCE6" + // 25535 - 25539
+                "\u8EA2\uA6AD\u8EA2\uA6B1\u0000\uCCE5\u0000\u0000\u8EA2\uABF7" + // 25540 - 25544
+                "\u8EA2\uB0E0\u0000\u0000\u8EA2\uCBEB\u0000\u0000\u0000\uF4BB" + // 25545 - 25549
+                "\u0000\uC5DA\u0000\uCEEA\u8EA2\uABF8\u8EA2\uABF9\u8EA2\uBDEA" + // 25550 - 25554
+                "\u0000\uE0D6\u0000\u0000\u0000\u0000\u8EA2\uC4E8\u0000\u0000" + // 25555 - 25559
+                "\u0000\u0000\u0000\uE5A6\u8EA2\uCBEC\u0000\u0000\u0000\u0000" + // 25560 - 25564
+                "\u0000\uEDE2\u0000\u0000\u0000\uF8C9\u0000\uC5DB\u8EA2\uBDEB" + // 25565 - 25569
+                "\u0000\uC5DC\u0000\u0000\u0000\uC8CA\u8EA2\uA2E2\u0000\uC8C9" + // 25570 - 25574
+                "\u0000\uCBA8\u0000\uCBA7\u0000\uCBA6\u8EA2\uA4E0\u0000\u0000" + // 25575 - 25579
+                "\u0000\u0000\u0000\u0000\u0000\uCEEB\u0000\u0000\u0000\uCEEC" + // 25580 - 25584
+                "\u8EA2\uA7FB\u0000\u0000\u8EA2\uABFA\u0000\u0000\u8EA2\uABFD" + // 25585 - 25589
+                "\u0000\uD2BD\u8EA2\uABFB\u0000\u0000\u0000\uD2BC\u8EA2\uABFC" + // 25590 - 25594
+                "\u0000\uD2BE\u0000\u0000\u8EA2\uB0E3\u8EA2\uB0E2\u8EA2\uB0E1" + // 25595 - 25599
+                "\u0000\uD6D6\u0000\u0000\u8EA2\uB7A2\u8EA2\uB7A3\u0000\uDBF4" + // 25600 - 25604
+                "\u8EA2\uB7A1\u8EA2\uB7A4\u8EA2\uA3D1\u0000\u0000\u0000\u0000" + // 25605 - 25609
+                "\u0000\u0000\u0000\uCCE3\u8EA2\uA6A4\u0000\u0000\u0000\uCCE1" + // 25610 - 25614
+                "\u0000\uCCE2\u0000\uCCE0\u8EA2\uAEDC\u0000\u0000\u0000\u0000" + // 25615 - 25619
+                "\u0000\u0000\u0000\uD0D8\u0000\uD0D7\u0000\uD0D9\u0000\uD0D6" + // 25620 - 25624
+                "\u0000\u0000\u8EA2\uA9E2\u0000\uCCE4\u0000\uD0D5\u0000\u0000" + // 25625 - 25629
+                "\u0000\uD4EF\u0000\uD4F0\u0000\u0000\u0000\uD4F1\u0000\u0000" + // 25630 - 25634
+                "\u8EA2\uB4D0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uDEE4" + // 25635 - 25639
+                "\u8EA2\uBAF6\u0000\uD9DD\u0000\u0000\u0000\u0000\u0000\u0000" + // 25640 - 25644
+                "\u0000\u0000\u0000\uE3DF\u0000\u0000\u0000\uE8C5\u0000\uE8C4" + // 25645 - 25649
+                "\u8EA2\uC9D1\u0000\u0000\u0000\uECC7\u0000\uF0CD\u0000\u0000" + // 25650 - 25654
+                "\u8EA2\uE1CC\u8EA2\uEDC8\u8EA2\uEFA3\u0000\uC4CC\u0000\uC6C3" + // 25655 - 25659
+                "\u0000\u0000\u0000\uC6C4\u8EA2\uA2B1\u0000\uC7ED\u0000\uC7F0" + // 25660 - 25664
+                "\u0000\u0000\u8EA2\uA2AF\u8EA2\uA2AD\u0000\uC7EF\u8EA2\uA2B0" + // 25665 - 25669
+                "\u8EA2\uA2B2\u0000\uECBF\u8EA2\uC9C2\u8EA2\uC9CB\u0000\uE8BA" + // 25670 - 25674
+                "\u0000\u0000\u0000\uE8BE\u8EA2\uC9C1\u8EA2\uC9C7\u8EA2\uC9CC" + // 25675 - 25679
+                "\u8EA2\uC9BD\u0000\uE8BC\u8EA2\uC9C5\u0000\u0000\u0000\u0000" + // 25680 - 25684
+                "\u8EA2\uC9C9\u8EA2\uC9CF\u8EA2\uC9BF\u8EA2\uC9C8\u0000\u0000" + // 25685 - 25689
+                "\u0000\uE8BB\u8EA2\uC9CE\u0000\u0000\u0000\u0000\u0000\u0000" + // 25690 - 25694
+                "\u8EA2\uC9C0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uECC3" + // 25695 - 25699
+                "\u8EA2\uCFF2\u0000\uECC1\u0000\uECC0\u8EA2\uCFF4\u8EA2\uCFF9" + // 25700 - 25704
+                "\u0000\u0000\u8EA2\uCFF5\u0000\u0000\u8EA2\uCFF8\u0000\uECC6" + // 25705 - 25709
+                "\u0000\u0000\u0000\uF0AE\u0000\uECC5\u0000\u0000\u8EA2\uCFF1" + // 25710 - 25714
+                "\u8EA2\uCFF7\u0000\u0000\u0000\uECC4\u8EA2\uCFF6\u0000\u0000" + // 25715 - 25719
+                "\u8EA2\uCFF3\u0000\u0000\u0000\uECC2\u0000\u0000\u0000\u0000" + // 25720 - 25724
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD6D7" + // 25725 - 25729
+                "\u0000\u0000\u8EA2\uD6D9\u8EA2\uD6D4\u0000\uF0CA\u8EA2\uD6D6" + // 25730 - 25734
+                "\u8EA2\uB4B6\u8EA2\uB4C9\u0000\uD9D8\u0000\u0000\u8EA2\uB4CF" + // 25735 - 25739
+                "\u0000\uD9D2\u0000\uD9D4\u8EA2\uB4BE\u8EA2\uB4B9\u0000\uD4ED" + // 25740 - 25744
+                "\u0000\uD9D3\u8EA2\uB4BB\u8EA2\uB4CA\u8EA2\uB4CE\u8EA2\uB4C5" + // 25745 - 25749
+                "\u0000\u0000\u8EA2\uB4C7\u0000\u0000\u0000\u0000\u0000\u0000" + // 25750 - 25754
+                "\u8EA2\uB4B1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25755 - 25759
+                "\u8EA2\uBAE3\u0000\u0000\u8EA2\uBAEC\u8EA2\uBAEB\u0000\uDEE0" + // 25760 - 25764
+                "\u8EA2\uBAE4\u0000\u0000\u0000\uDEE1\u0000\uDEDF\u0000\u0000" + // 25765 - 25769
+                "\u8EA2\uBAE6\u0000\uDEDC\u8EA2\uBAEA\u0000\u0000\u8EA2\uBAE5" + // 25770 - 25774
+                "\u8EA2\uBAE7\u8EA2\uBAE1\u0000\uDEDA\u0000\u0000\u8EA2\uBAF4" + // 25775 - 25779
+                "\u8EA2\uBAF3\u8EA2\uBAF0\u0000\uDED9\u0000\uDEDD\u0000\uDEDE" + // 25780 - 25784
+                "\u8EA2\uAECD\u8EA2\uBAED\u0000\uDEDB\u0000\uD9D9\u8EA2\uBAEF" + // 25785 - 25789
+                "\u8EA2\uBAE2\u8EA2\uBAF2\u8EA2\uBAF1\u0000\u0000\u8EA2\uBAF5" + // 25790 - 25794
+                "\u0000\u0000\u8EA2\uC2B6\u0000\u0000\u8EA2\uBAEE\u8EA2\uA5F9" + // 25795 - 25799
+                "\u0000\u0000\u0000\uD0CD\u0000\uCCD7\u0000\u0000\u0000\u0000" + // 25800 - 25804
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25805 - 25809
+                "\u0000\uD0CE\u8EA2\uA9D5\u0000\u0000\u0000\u0000\u8EA2\uA9DB" + // 25810 - 25814
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0D4\u8EA2\uA9D9" + // 25815 - 25819
+                "\u8EA2\uA9DF\u0000\u0000\u8EA2\uA9D6\u8EA2\uA9DA\u8EA2\uA9DC" + // 25820 - 25824
+                "\u8EA2\uA9DE\u8EA2\uA9D8\u0000\u0000\u8EA2\uA9D7\u8EA2\uA9D2" + // 25825 - 25829
+                "\u8EA2\uA9D3\u0000\uD0CF\u0000\u0000\u0000\uD0D1\u0000\uD0D0" + // 25830 - 25834
+                "\u8EA2\uA9D4\u8EA2\uA9DD\u0000\u0000\u0000\u0000\u0000\u0000" + // 25835 - 25839
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25840 - 25844
+                "\u0000\uD0D3\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25845 - 25849
+                "\u0000\u0000\u0000\u0000\u8EA2\uA9D1\u8EA2\uAED5\u0000\u0000" + // 25850 - 25854
+                "\u8EA2\uAED4\u8EA2\uAED9\u8EA2\uAED0\u0000\u0000\u8EA2\uAED3" + // 25855 - 25859
+                "\u8EA2\uAED2\u0000\u0000\u8EA2\uAED6\u0000\uC9DF\u8EA2\uA3CA" + // 25860 - 25864
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA3CB\u0000\u0000" + // 25865 - 25869
+                "\u0000\uC9E1\u0000\u0000\u8EA2\uA3CD\u0000\uC9DD\u8EA2\uA3CE" + // 25870 - 25874
+                "\u8EA2\uA3CC\u0000\uC9E0\u0000\uC9E2\u0000\uC9E5\u0000\uC9E4" + // 25875 - 25879
+                "\u0000\uC9DE\u8EA2\uA3CF\u0000\u0000\u0000\u0000\u0000\u0000" + // 25880 - 25884
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25885 - 25889
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 25890 - 25894
+                "\u0000\u0000\u0000\uCCDB\u8EA2\uA5FE\u0000\u0000\u0000\uCCDD" + // 25895 - 25899
+                "\u0000\u0000\u0000\uCCDC\u0000\u0000\u8EA2\uA6A1\u0000\uCCDA" + // 25900 - 25904
+                "\u0000\uCCD9\u8EA2\uA5F5\u0000\u0000\u8EA2\uA5F4\u0000\u0000" + // 25905 - 25909
+                "\u8EA2\uA5F2\u8EA2\uA5F7\u8EA2\uA5F6\u8EA2\uA5F3\u8EA2\uA5FC" + // 25910 - 25914
+                "\u8EA2\uA5FD\u8EA2\uA5FA\u8EA2\uA5F8\u0000\uCCD8\u0000\u0000" + // 25915 - 25919
+                "\u0000\u0000\u0000\u0000\u8EA2\uA5FB\u0000\uCCDE\u8EA2\uA6A2" + // 25920 - 25924
+                "\u0000\u0000\u0000\u0000\u0000\uFCF0\u8EA2\uF0DD\u0000\uFCF2" + // 25925 - 25929
+                "\u0000\u0000\u8EA2\uF0DC\u8EA2\uF0DE\u0000\uFCF1\u8EA2\uF1C6" + // 25930 - 25934
+                "\u0000\u0000\u8EA2\uF1FB\u0000\u0000\u0000\u0000\u0000\u0000" + // 25935 - 25939
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCFE5\u0000\u0000" + // 25940 - 25944
+                "\u0000\u0000\u0000\u0000\u0000\uE7DC\u0000\u0000\u8EA2\uCFA6" + // 25945 - 25949
+                "\u0000\u0000\u8EA2\uD5D9\u0000\uF2FA\u0000\uF2FB\u0000\u0000" + // 25950 - 25954
+                "\u0000\uCFE6\u0000\u0000\u0000\uEFEA\u0000\uF9C8\u0000\uD3F2" + // 25955 - 25959
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF2FC\u0000\u0000" + // 25960 - 25964
+                "\u0000\uFCCE\u0000\uD3F3\u8EA2\uBAB1\u0000\u0000\u8EA2\uC1CE" + // 25965 - 25969
+                "\u0000\u0000\u8EA2\uC1D0\u0000\u0000\u8EA2\uC1CF\u0000\u0000" + // 25970 - 25974
+                "\u8EA2\uC8E3\u8EA2\uC8E0\u0000\uE7DD\u0000\u0000\u0000\uE7DE" + // 25975 - 25979
+                "\u8EA2\uC8E1\u8EA2\uC8E2\u0000\u0000\u8EA2\uCFA8\u8EA2\uCFAD" + // 25980 - 25984
+                "\u0000\uEBE7\u8EA2\uCFA7\u8EA2\uCFA9\u8EA2\uCFB0\u0000\uFAE5" + // 25985 - 25989
+                "\u0000\uFAE4\u0000\uFAE6\u8EA2\uEBD2\u0000\u0000\u8EA2\uEDC6" + // 25990 - 25994
+                "\u8EA2\uEDC5\u0000\u0000\u0000\uFBD9\u0000\uFBDB\u0000\uFBDA" + // 25995 - 25999
+                "\u8EA2\uEDC7\u0000\uFCB4\u8EA2\uF0B4\u0000\u0000\u0000\u0000" + // 26000 - 26004
+                "\u0000\u0000\u0000\uFCDD\u0000\u0000\u8EA2\uF0B3\u8EA2\uF0FC" + // 26005 - 26009
+                "\u0000\u0000\u0000\u0000\u8EA2\uA1AA\u0000\u0000\u0000\u0000" + // 26010 - 26014
+                "\u0000\uC6BF\u0000\uC6BE\u0000\u0000\u0000\uC7E0\u0000\uC7DF" + // 26015 - 26019
+                "\u8EA2\uA2A7\u0000\uC7DE\u8EA2\uA2A6\u0000\u0000\u0000\u0000" + // 26020 - 26024
+                "\u0000\uC9DB\u8EA2\uA3C9\u0000\u0000\u8EA2\uA3C8\u0000\u0000" + // 26025 - 26029
+                "\u0000\u0000\u0000\uC9D9\u0000\uC9DC\u0000\u0000\u0000\u0000" + // 26030 - 26034
+                "\u8EA2\uA3C7\u0000\u0000\u0000\uC9DA\u0000\u0000\u0000\u0000" + // 26035 - 26039
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA5F0" + // 26040 - 26044
+                "\u0000\u0000\u8EA2\uA5F1\u0000\uCCD6\u0000\u0000\u0000\u0000" + // 26045 - 26049
+                "\u0000\u0000\u0000\u0000\u0000\uD0CC\u0000\uF3C6\u8EA2\uDCD5" + // 26050 - 26054
+                "\u8EA2\uDCD3\u8EA2\uDCD1\u8EA2\uDCD0\u0000\uF3C8\u8EA2\uDCCF" + // 26055 - 26059
+                "\u0000\uF3C9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26060 - 26064
+                "\u8EA2\uDCCD\u8EA2\uDCCE\u0000\uF3C5\u0000\uF3CA\u0000\uF3C7" + // 26065 - 26069
+                "\u0000\u0000\u0000\u0000\u8EA2\uDCCC\u0000\u0000\u0000\uF6BC" + // 26070 - 26074
+                "\u0000\u0000\u8EA2\uE1C8\u8EA2\uE1C6\u8EA2\uE1CB\u8EA2\uE1C9" + // 26075 - 26079
+                "\u0000\u0000\u8EA2\uE1C7\u8EA2\uE1CA\u0000\u0000\u0000\u0000" + // 26080 - 26084
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26085 - 26089
+                "\u0000\uF8AC\u8EA2\uE5BE\u8EA2\uE5BF\u0000\uF8AD\u0000\u0000" + // 26090 - 26094
+                "\u8EA2\uE5C0\u8EA2\uE5BC\u8EA2\uE5C1\u8EA2\uE5BD\u0000\uF6BD" + // 26095 - 26099
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uE8EB\u8EA2\uE8ED" + // 26100 - 26104
+                "\u0000\uF9E4\u8EA2\uE8EC\u0000\uF9E3\u0000\uF9E2\u0000\u0000" + // 26105 - 26109
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF9E5\u8EA2\uEBD3" + // 26110 - 26114
+                "\u8EA2\uEBD4\u0000\u0000\u8EA2\uC4D6\u8EA2\uC4DD\u8EA2\uC4DF" + // 26115 - 26119
+                "\u8EA2\uC4E5\u0000\u0000\u0000\uE5A2\u8EA2\uC4D1\u0000\u0000" + // 26120 - 26124
+                "\u0000\uE4F8\u0000\u0000\u8EA2\uC4E0\u0000\uE4FD\u8EA2\uC4E6" + // 26125 - 26129
+                "\u0000\uE4F4\u0000\u0000\u8EA2\uC4E3\u0000\u0000\u8EA2\uC4D3" + // 26130 - 26134
+                "\u8EA2\uC4E4\u8EA2\uC4D2\u0000\u0000\u0000\uE5A4\u0000\u0000" + // 26135 - 26139
+                "\u8EA2\uC4DE\u0000\uE4F5\u8EA2\uC4E7\u0000\u0000\u0000\uE4FA" + // 26140 - 26144
+                "\u8EA2\uC4D7\u0000\uE5A1\u8EA2\uC4E2\u8EA2\uC4D5\u8EA2\uC4DC" + // 26145 - 26149
+                "\u8EA2\uC4D8\u8EA2\uC4D4\u0000\uE4F7\u0000\uE4FE\u0000\uE4FC" + // 26150 - 26154
+                "\u0000\uE4F9\u0000\uE5A3\u0000\uE4F6\u8EA2\uC4DB\u0000\u0000" + // 26155 - 26159
+                "\u0000\uE4FB\u0000\u0000\u0000\uE0D4\u0000\u0000\u8EA2\uC4E1" + // 26160 - 26164
+                "\u0000\u0000\u8EA2\uC4D9\u0000\u0000\u0000\u0000\u0000\u0000" + // 26165 - 26169
+                "\u0000\u0000\u0000\u0000\u8EA2\uC4DA\u0000\u0000\u0000\u0000" + // 26170 - 26174
+                "\u8EA2\uCBE7\u0000\u0000\u0000\uE9DB\u0000\u0000\u0000\u0000" + // 26175 - 26179
+                "\u0000\uD4D4\u0000\u0000\u8EA2\uAEC8\u8EA2\uAEBC\u8EA2\uAEC0" + // 26180 - 26184
+                "\u0000\uD4D9\u0000\uD4E4\u8EA2\uAEBD\u0000\uD4DF\u8EA2\uAEC2" + // 26185 - 26189
+                "\u8EA2\uAEC9\u8EA2\uB4A4\u0000\u0000\u8EA2\uAEC7\u0000\uD4E6" + // 26190 - 26194
+                "\u0000\uD4D3\u8EA2\uAEBF\u8EA2\uAEB6\u0000\u0000\u0000\uD4DB" + // 26195 - 26199
+                "\u0000\u0000\u0000\u0000\u8EA2\uAEB5\u0000\u0000\u0000\u0000" + // 26200 - 26204
+                "\u8EA2\uAEBA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26205 - 26209
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26210 - 26214
+                "\u0000\u0000\u0000\u0000\u8EA2\uAEB3\u0000\uD4E3\u0000\u0000" + // 26215 - 26219
+                "\u0000\u0000\u8EA2\uB3FA\u0000\u0000\u0000\uD9C9\u8EA2\uB4AA" + // 26220 - 26224
+                "\u0000\uD9C7\u0000\uD9C4\u8EA2\uB4A1\u0000\uD9C0\u8EA2\uB4A5" + // 26225 - 26229
+                "\u0000\uD9CB\u8EA2\uB3F9\u8EA2\uB3FE\u8EA2\uB3FD\u0000\uD4D5" + // 26230 - 26234
+                "\u0000\uD9C6\u8EA2\uB4A8\u0000\u0000\u8EA2\uB4AB\u8EA2\uB3F6" + // 26235 - 26239
+                "\u0000\u0000\u0000\uDECE\u0000\u0000\u8EA2\uE2A7\u8EA2\uE5F6" + // 26240 - 26244
+                "\u8EA2\uE2AA\u0000\u0000\u8EA2\uE5F7\u0000\uF8C7\u8EA2\uE5F5" + // 26245 - 26249
+                "\u0000\u0000\u0000\u0000\u8EA2\uE5F4\u0000\u0000\u8EA2\uE5F3" + // 26250 - 26254
+                "\u0000\uF8C8\u0000\u0000\u0000\u0000\u0000\uF9F7\u0000\u0000" + // 26255 - 26259
+                "\u0000\u0000\u8EA2\uE9B9\u8EA2\uE9BA\u0000\u0000\u0000\u0000" + // 26260 - 26264
+                "\u0000\u0000\u0000\u0000\u8EA2\uEBEA\u8EA2\uEBE9\u0000\uFAF5" + // 26265 - 26269
+                "\u0000\u0000\u8EA2\uEBE8\u8EA2\uEDDA\u8EA2\uEDDB\u0000\u0000" + // 26270 - 26274
+                "\u0000\u0000\u8EA2\uEFB5\u8EA2\uF0BF\u0000\u0000\u0000\u0000" + // 26275 - 26279
+                "\u8EA2\uF1A6\u8EA2\uF2AC\u0000\uFDC6\u8EA2\uF2C0\u0000\uC5D7" + // 26280 - 26284
+                "\u0000\u0000\u0000\uCEE7\u0000\uCEE8\u0000\u0000\u0000\u0000" + // 26285 - 26289
+                "\u0000\uD2BB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26290 - 26294
+                "\u0000\uF4BA\u0000\uC5D8\u0000\u0000\u0000\uCEE9\u0000\uD6D5" + // 26295 - 26299
+                "\u0000\uE5A5\u0000\uC5D9\u0000\u0000\u0000\uDBF3\u0000\uE9DF" + // 26300 - 26304
+                "\u8EA2\uA1C2\u8EA2\uCFE8\u8EA2\uCFE2\u8EA2\uCFDF\u0000\u0000" + // 26305 - 26309
+                "\u0000\u0000\u8EA2\uBACF\u8EA2\uCFE5\u0000\u0000\u8EA2\uCFDE" + // 26310 - 26314
+                "\u8EA2\uCFE4\u8EA2\uCFE3\u0000\u0000\u8EA2\uCFE0\u0000\u0000" + // 26315 - 26319
+                "\u0000\uECB9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26320 - 26324
+                "\u0000\uECB8\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uECBA" + // 26325 - 26329
+                "\u8EA2\uCFE6\u0000\uF0BB\u8EA2\uCFE7\u0000\u0000\u0000\u0000" + // 26330 - 26334
+                "\u0000\u0000\u8EA2\uD6CF\u0000\u0000\u8EA2\uD6C8\u0000\u0000" + // 26335 - 26339
+                "\u0000\uF0C7\u8EA2\uD6CC\u0000\uF0BF\u0000\uF0C3\u8EA2\uD6CB" + // 26340 - 26344
+                "\u0000\u0000\u0000\uF0C2\u0000\uF0BE\u0000\uF0C1\u0000\uF0BC" + // 26345 - 26349
+                "\u0000\uF0C6\u8EA2\uD6CD\u8EA2\uD6C9\u0000\uF0C5\u8EA2\uD6C7" + // 26350 - 26354
+                "\u0000\uF0C4\u8EA2\uD6CE\u8EA2\uD6CA\u0000\uECBB\u0000\u0000" + // 26355 - 26359
+                "\u0000\uF0C8\u8EA2\uD6D0\u0000\uF0C0\u0000\uF0BD\u0000\u0000" + // 26360 - 26364
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDCD2\u8EA2\uDCD4" + // 26365 - 26369
+                "\u0000\uE8A7\u8EA2\uC9B5\u8EA2\uC9B7\u0000\u0000\u8EA2\uC9BA" + // 26370 - 26374
+                "\u0000\u0000\u0000\uE8AC\u0000\u0000\u0000\uE8B3\u0000\uE8AD" + // 26375 - 26379
+                "\u0000\u0000\u0000\u0000\u8EA2\uC9B0\u0000\uE8AE\u0000\uE8AF" + // 26380 - 26384
+                "\u8EA2\uC9B3\u0000\uE8B4\u0000\u0000\u8EA2\uC9B1\u8EA2\uC9B6" + // 26385 - 26389
+                "\u0000\uE8AB\u8EA2\uC9AF\u0000\uE8B1\u0000\uE8A9\u0000\u0000" + // 26390 - 26394
+                "\u0000\u0000\u0000\u0000\u0000\uE8A8\u8EA2\uC9B4\u8EA2\uC9B9" + // 26395 - 26399
+                "\u0000\u0000\u0000\uE8B2\u0000\u0000\u0000\u0000\u0000\u0000" + // 26400 - 26404
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC9AE" + // 26405 - 26409
+                "\u0000\u0000\u0000\uECB7\u8EA2\uCFEE\u0000\u0000\u8EA2\uCFEB" + // 26410 - 26414
+                "\u0000\u0000\u0000\uECB1\u0000\uECBD\u0000\uECBE\u0000\u0000" + // 26415 - 26419
+                "\u0000\uECB4\u8EA2\uCFE9\u0000\uECB6\u8EA2\uCFE1\u0000\uECBC" + // 26420 - 26424
+                "\u0000\u0000\u8EA2\uCFED\u0000\uECB3\u8EA2\uCFEF\u0000\uECB2" + // 26425 - 26429
+                "\u0000\u0000\u8EA2\uCFEA\u8EA2\uCFEC\u0000\uECB5\u8EA2\uC1F6" + // 26430 - 26434
+                "\u0000\u0000\u8EA2\uC2A7\u8EA2\uC1EF\u8EA2\uC1F8\u0000\uE3CC" + // 26435 - 26439
+                "\u0000\uE3CD\u0000\uE3C5\u8EA2\uC2A3\u0000\uE3CF\u8EA2\uC1F4" + // 26440 - 26444
+                "\u8EA2\uC1F3\u8EA2\uC1F1\u8EA2\uC2A5\u0000\uE3C3\u8EA2\uC1FD" + // 26445 - 26449
+                "\u8EA2\uC1F2\u0000\uE3C6\u8EA2\uC1FB\u0000\uE3C1\u8EA2\uC1F7" + // 26450 - 26454
+                "\u8EA2\uC1FE\u8EA2\uC2A2\u0000\u0000\u0000\u0000\u8EA2\uC2A6" + // 26455 - 26459
+                "\u0000\uE3CA\u8EA2\uC1F0\u0000\uE3C4\u8EA2\uC1F5\u0000\u0000" + // 26460 - 26464
+                "\u0000\uE3BF\u0000\u0000\u0000\uE3CB\u8EA2\uC2A1\u0000\uE3C7" + // 26465 - 26469
+                "\u0000\uE3C8\u0000\uE3CE\u0000\uE3C2\u0000\uA3A1\u0000\uE3C0" + // 26470 - 26474
+                "\u8EA2\uC1F9\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26475 - 26479
+                "\u0000\u0000\u0000\uE3C9\u0000\u0000\u0000\u0000\u8EA2\uC2A4" + // 26480 - 26484
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE8B5\u0000\uE8B0" + // 26485 - 26489
+                "\u0000\u0000\u8EA2\uC9BC\u8EA2\uC9B8\u0000\u0000\u8EA2\uC9B2" + // 26490 - 26494
+                "\u0000\uE8AA\u0000\uE8A6\u8EA2\uC9BB\u0000\uDEBE\u8EA2\uBAD5" + // 26495 - 26499
+                "\u0000\uDEC4\u0000\uDECA\u0000\uE1C3\u0000\u0000\u0000\u0000" + // 26500 - 26504
+                "\u0000\uDEC8\u8EA2\uBAD2\u0000\uDED5\u0000\uDEC1\u0000\uDEC9" + // 26505 - 26509
+                "\u8EA2\uBADA\u8EA2\uC1FC\u8EA2\uBADF\u8EA2\uBAD3\u0000\u0000" + // 26510 - 26514
+                "\u8EA2\uBACA\u8EA2\uBAD7\u8EA2\uBAD1\u0000\uDEC7\u8EA2\uBADD" + // 26515 - 26519
+                "\u0000\u0000\u0000\u0000\u0000\uDEC3\u0000\uDED7\u0000\uDED0" + // 26520 - 26524
+                "\u0000\u0000\u0000\uDEC5\u0000\uDEC2\u0000\u0000\u0000\uDECD" + // 26525 - 26529
+                "\u0000\u0000\u8EA2\uBADE\u8EA2\uBAD0\u8EA2\uBAD6\u8EA2\uBAD8" + // 26530 - 26534
+                "\u8EA2\uBACC\u8EA2\uBADB\u0000\uDEBF\u8EA2\uBACB\u0000\u0000" + // 26535 - 26539
+                "\u0000\uDEC6\u0000\uDED6\u0000\uDED2\u8EA2\uBACD\u0000\uDECC" + // 26540 - 26544
+                "\u0000\u0000\u0000\u0000\u0000\uDED3\u0000\uDECF\u0000\uDECB" + // 26545 - 26549
+                "\u0000\u0000\u8EA2\uBAD4\u0000\u0000\u0000\u0000\u0000\u0000" + // 26550 - 26554
+                "\u0000\u0000\u0000\u0000\u0000\uDED1\u0000\u0000\u0000\u0000" + // 26555 - 26559
+                "\u0000\u0000\u8EA2\uC1FA\u8EA2\uB4AC\u0000\uD9CC\u0000\u0000" + // 26560 - 26564
+                "\u0000\uD9BE\u0000\uD9BB\u8EA2\uB4A3\u0000\uD9B8\u0000\u0000" + // 26565 - 26569
+                "\u8EA2\uB4A9\u0000\u0000\u0000\uD9BF\u8EA2\uB4AD\u0000\u0000" + // 26570 - 26574
+                "\u8EA2\uB3F7\u8EA2\uB4A7\u0000\uD9C2\u8EA2\uB3F8\u8EA2\uB3FB" + // 26575 - 26579
+                "\u8EA2\uB4A2\u0000\u0000\u0000\u0000\u0000\uD9C3\u0000\uD9C1" + // 26580 - 26584
+                "\u0000\uD9CD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26585 - 26589
+                "\u0000\uD9C8\u0000\u0000\u0000\uD9BC\u0000\uDAF6\u0000\u0000" + // 26590 - 26594
+                "\u0000\uD9BD\u8EA2\uB3FC\u0000\uD9CA\u0000\uD9C5\u8EA2\uB4A6" + // 26595 - 26599
+                "\u0000\uD9BA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD9B9" + // 26600 - 26604
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26605 - 26609
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26610 - 26614
+                "\u8EA2\uB3F4\u8EA2\uB3F5\u8EA2\uBACE\u0000\u0000\u0000\u0000" + // 26615 - 26619
+                "\u0000\u0000\u0000\uDEBD\u0000\uDEC0\u8EA2\uBAD9\u0000\uDED4" + // 26620 - 26624
+                "\u8EA2\uBADC\u0000\uD0B7\u0000\uD0C2\u0000\uD0BF\u8EA2\uA9C1" + // 26625 - 26629
+                "\u0000\uD0C3\u8EA2\uA9C7\u8EA2\uA9C8\u0000\uD0BE\u0000\uD0C4" + // 26630 - 26634
+                "\u0000\uD0BA\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26635 - 26639
+                "\u0000\uD0B9\u8EA2\uA9C0\u0000\u0000\u0000\u0000\u0000\u0000" + // 26640 - 26644
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA9C5\u0000\u0000" + // 26645 - 26649
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26650 - 26654
+                "\u0000\u0000\u8EA2\uA9CF\u0000\u0000\u8EA2\uAEC6\u0000\uD4DE" + // 26655 - 26659
+                "\u8EA2\uAEB4\u0000\u0000\u8EA2\uAEB9\u0000\uD4D7\u0000\uD4E2" + // 26660 - 26664
+                "\u8EA2\uAEB7\u0000\uD4D2\u0000\uD4DC\u0000\uD4E1\u8EA2\uAEBE" + // 26665 - 26669
+                "\u0000\u0000\u0000\uD4DD\u0000\uD4E0\u0000\u0000\u0000\u0000" + // 26670 - 26674
+                "\u8EA2\uAEC1\u0000\uD4D8\u8EA2\uAEB8\u0000\u0000\u0000\u0000" + // 26675 - 26679
+                "\u0000\u0000\u8EA2\uAEC4\u8EA2\uAEC5\u0000\u0000\u0000\uD4DA" + // 26680 - 26684
+                "\u8EA2\uAEC3\u0000\uD4D6\u0000\uD4E5\u0000\u0000\u8EA2\uAEBB" + // 26685 - 26689
+                "\u0000\uCCC5\u8EA2\uA5DD\u8EA2\uA5DF\u0000\u0000\u0000\uCCC8" + // 26690 - 26694
+                "\u0000\u0000\u0000\uCCCA\u8EA2\uA5DB\u8EA2\uA5E0\u0000\u0000" + // 26695 - 26699
+                "\u0000\u0000\u0000\uCCD3\u0000\uCCCF\u8EA2\uA5E8\u0000\uCCD5" + // 26700 - 26704
+                "\u0000\u0000\u0000\uCCCC\u8EA2\uA5DE\u0000\uCCC9\u0000\u0000" + // 26705 - 26709
+                "\u0000\u0000\u0000\uCCC4\u0000\uCCC2\u0000\u0000\u8EA2\uA5EC" + // 26710 - 26714
+                "\u0000\u0000\u0000\uCCD0\u0000\u0000\u0000\u0000\u0000\u0000" + // 26715 - 26719
+                "\u0000\u0000\u0000\u0000\u8EA2\uA9C9\u8EA2\uA9BD\u8EA2\uA9CC" + // 26720 - 26724
+                "\u0000\u0000\u0000\u0000\u8EA2\uA9BF\u0000\uD0BC\u0000\uD0CA" + // 26725 - 26729
+                "\u0000\uD0B8\u0000\uD0C9\u0000\uD0C1\u0000\uD0C6\u0000\uD0B6" + // 26730 - 26734
+                "\u8EA2\uA9BE\u8EA2\uA9C4\u0000\uD0C5\u8EA2\uA9D0\u0000\uD0C7" + // 26735 - 26739
+                "\u0000\u0000\u0000\uD0BD\u0000\u0000\u0000\u0000\u8EA2\uA9C6" + // 26740 - 26744
+                "\u8EA2\uA9C3\u0000\uD0BB\u0000\u0000\u8EA2\uA9BC\u0000\uD0C8" + // 26745 - 26749
+                "\u8EA2\uA9CB\u0000\uD0C0\u8EA2\uA9CD\u0000\uD0CB\u0000\uC9D4" + // 26750 - 26754
+                "\u8EA2\uA3C3\u0000\uC9C8\u0000\uC9C5\u0000\u0000\u8EA2\uA3BC" + // 26755 - 26759
+                "\u0000\uC9C4\u8EA2\uA3C6\u0000\uC9C7\u0000\u0000\u0000\uC9CB" + // 26760 - 26764
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC9C2\u8EA2\uA3C2" + // 26765 - 26769
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA3BB" + // 26770 - 26774
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26775 - 26779
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26780 - 26784
+                "\u0000\u0000\u8EA2\uA5EB\u8EA2\uA5EA\u0000\uCCD1\u8EA2\uA5ED" + // 26785 - 26789
+                "\u8EA2\uA5EF\u8EA2\uA5E4\u8EA2\uA5E7\u8EA2\uA5EE\u0000\uCCD2" + // 26790 - 26794
+                "\u0000\u0000\u0000\u0000\u8EA2\uA5E1\u8EA2\uA5E5\u0000\u0000" + // 26795 - 26799
+                "\u0000\u0000\u8EA2\uA5E9\u8EA2\uA9CA\u0000\uCCCD\u8EA2\uA9CE" + // 26800 - 26804
+                "\u0000\uCCC0\u8EA2\uA5E6\u0000\uCCC1\u0000\uCCCE\u0000\uCCC7" + // 26805 - 26809
+                "\u0000\uCCC3\u0000\u0000\u8EA2\uA5E2\u0000\uCCC6\u0000\uCCCB" + // 26810 - 26814
+                "\u0000\uCCD4\u8EA2\uA5E3\u8EA2\uA5DC\u0000\uD9B4\u0000\uC4B2" + // 26815 - 26819
+                "\u0000\u0000\u0000\uC4C5\u0000\uA4BF\u0000\uC5AB\u0000\u0000" + // 26820 - 26824
+                "\u0000\uC5AA\u0000\uC5A9\u0000\uC6A5\u0000\uC6A4\u0000\u0000" + // 26825 - 26829
+                "\u8EA2\uA1CE\u8EA2\uA2A3\u0000\u0000\u0000\u0000\u0000\u0000" + // 26830 - 26834
+                "\u0000\uCCB8\u0000\uCCB5\u0000\uCCB7\u0000\uCCB6\u0000\u0000" + // 26835 - 26839
+                "\u0000\u0000\u0000\uD0B2\u0000\u0000\u0000\u0000\u0000\uDEBB" + // 26840 - 26844
+                "\u0000\u0000\u0000\uC4B3\u0000\u0000\u0000\uC5AC\u0000\u0000" + // 26845 - 26849
+                "\u0000\uC6A7\u0000\uC6A6\u0000\u0000\u8EA2\uA3B4\u0000\u0000" + // 26850 - 26854
+                "\u0000\u0000\u0000\uCCB9\u0000\u0000\u0000\u0000\u0000\uA7BA" + // 26855 - 26859
+                "\u0000\u0000\u0000\u0000\u8EA2\uA1B7\u0000\u0000\u0000\uC6A9" + // 26860 - 26864
+                "\u0000\uC6A8\u0000\uC7CD\u0000\uC7CE\u8EA2\uA3B5\u0000\uC9BB" + // 26865 - 26869
+                "\u0000\u0000\u0000\uC9BC\u0000\u0000\u0000\uCCBA\u0000\uCCBB" + // 26870 - 26874
+                "\u0000\uCCBC\u0000\u0000\u0000\uD0B3\u8EA2\uA9B7\u0000\u0000" + // 26875 - 26879
+                "\u0000\u0000\u0000\uD4CE\u8EA2\uA9B4\u0000\uD0B0\u8EA2\uA9B5" + // 26880 - 26884
+                "\u0000\uD0AF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD0AD" + // 26885 - 26889
+                "\u0000\u0000\u0000\uD0AE\u0000\u0000\u0000\u0000\u0000\u0000" + // 26890 - 26894
+                "\u8EA2\uAEB0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26895 - 26899
+                "\u0000\uD9AC\u8EA2\uB3F1\u0000\u0000\u0000\uD9AF\u8EA2\uB3F0" + // 26900 - 26904
+                "\u0000\uDBAB\u0000\uD9AE\u0000\uD9AD\u0000\u0000\u0000\uDEBA" + // 26905 - 26909
+                "\u0000\u0000\u0000\uDEB9\u0000\uDEB8\u0000\uE3B9\u0000\u0000" + // 26910 - 26914
+                "\u0000\u0000\u0000\uE3BC\u0000\uE3BD\u0000\uE3BB\u0000\u0000" + // 26915 - 26919
+                "\u0000\uE3BA\u0000\u0000\u0000\u0000\u8EA2\uC9AA\u0000\u0000" + // 26920 - 26924
+                "\u8EA2\uC9AB\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uCFDD" + // 26925 - 26929
+                "\u0000\uECAF\u8EA2\uCFDC\u0000\u0000\u0000\uF0BA\u8EA2\uDCCB" + // 26930 - 26934
+                "\u0000\uF3C4\u0000\u0000\u8EA2\uE5BA\u0000\uF9E1\u0000\uA7B4" + // 26935 - 26939
+                "\u0000\uC4C4\u0000\uC5A4\u8EA2\uA1B6\u0000\u0000\u0000\uC5A5" + // 26940 - 26944
+                "\u0000\uC5A6\u8EA2\uC9A8\u8EA2\uC9A9\u0000\uE8A3\u0000\uE8A2" + // 26945 - 26949
+                "\u8EA2\uCCE1\u0000\u0000\u0000\u0000\u0000\uECAA\u0000\uECAB" + // 26950 - 26954
+                "\u0000\uECAC\u0000\uECAE\u8EA2\uCFDA\u8EA2\uCFDB\u0000\uECAD" + // 26955 - 26959
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF0B8\u0000\u0000" + // 26960 - 26964
+                "\u0000\uF0B9\u0000\u0000\u0000\u0000\u8EA2\uE5B9\u8EA2\uEBD1" + // 26965 - 26969
+                "\u8EA2\uEBD0\u8EA2\uEEFE\u0000\u0000\u0000\uC4B0\u0000\u0000" + // 26970 - 26974
+                "\u0000\u0000\u0000\u0000\u0000\uC5FC\u0000\uC5FB\u0000\u0000" + // 26975 - 26979
+                "\u0000\u0000\u0000\uC7C9\u0000\u0000\u0000\u0000\u8EA2\uA1FE" + // 26980 - 26984
+                "\u0000\u0000\u0000\u0000\u0000\uC9B7\u0000\uC9B8\u0000\uC9B6" + // 26985 - 26989
+                "\u0000\uC9B9\u8EA2\uA3B1\u8EA2\uA3B2\u0000\u0000\u0000\u0000" + // 26990 - 26994
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 26995 - 26999
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27000 - 27004
+                "\u0000\uCCB4\u8EA2\uA5D5\u0000\u0000\u0000\uCCB3\u0000\u0000" + // 27005 - 27009
+                "\u8EA2\uC4A2\u8EA2\uC3FE\u8EA2\uC3FD\u0000\u0000\u8EA2\uC3FC" + // 27010 - 27014
+                "\u8EA2\uC3FB\u0000\uE4D8\u8EA2\uC4A1\u0000\uE9B9\u8EA2\uCBAB" + // 27015 - 27019
+                "\u8EA2\uCBAD\u0000\uE9BA\u8EA2\uCBAC\u0000\uEDC5\u0000\u0000" + // 27020 - 27024
+                "\u0000\uEDC4\u8EA2\uD1B9\u0000\u0000\u0000\u0000\u8EA2\uD7EA" + // 27025 - 27029
+                "\u8EA2\uD7E9\u8EA2\uD7EB\u0000\u0000\u0000\u0000\u0000\uF1A4" + // 27030 - 27034
+                "\u0000\u0000\u8EA2\uDDB7\u0000\uF3FC\u0000\u0000\u8EA2\uE1F4" + // 27035 - 27039
+                "\u0000\uF6D6\u8EA2\uE5E4\u0000\uFBE3\u0000\uC5CF\u0000\uC6DF" + // 27040 - 27044
+                "\u0000\uC8BA\u0000\uCAE3\u0000\uCEBD\u0000\uCEBE\u0000\u0000" + // 27045 - 27049
+                "\u0000\u0000\u0000\uD1F1\u0000\u0000\u0000\u0000\u8EA2\uAFFC" + // 27050 - 27054
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uE4D9" + // 27055 - 27059
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD2D9\u0000\uF1A5" + // 27060 - 27064
+                "\u0000\uF6D7\u0000\uC5D0\u0000\u0000\u0000\uC8BB\u0000\u0000" + // 27065 - 27069
+                "\u0000\u0000\u8EA2\uA7CC\u0000\uCEBF\u0000\uC4AE\u0000\uC4AF" + // 27070 - 27074
+                "\u0000\u0000\u0000\uC4C3\u0000\u0000\u0000\u0000\u0000\uC5A1" + // 27075 - 27079
+                "\u0000\uC5A2\u0000\uC5A3\u8EA2\uA1CC\u0000\uC5FA\u0000\u0000" + // 27080 - 27084
+                "\u8EA2\uA1CB\u0000\u0000\u0000\uC7C7\u0000\u0000\u8EA2\uA1FD" + // 27085 - 27089
+                "\u0000\uC7C5\u0000\uC7C6\u8EA2\uA1FC\u0000\u0000\u0000\u0000" + // 27090 - 27094
+                "\u0000\uC7C8\u0000\uC7C4\u0000\u0000\u0000\u0000\u0000\u0000" + // 27095 - 27099
+                "\u0000\u0000\u8EA2\uA3AE\u0000\uCFCF\u8EA2\uA3AF\u0000\u0000" + // 27100 - 27104
+                "\u0000\u0000\u8EA2\uA3B0\u0000\u0000\u0000\u0000\u0000\uC9B2" + // 27105 - 27109
+                "\u0000\uC9B1\u0000\u0000\u0000\u0000\u0000\uC9B5\u0000\uC9B3" + // 27110 - 27114
+                "\u0000\uC9B4\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCCB0" + // 27115 - 27119
+                "\u0000\u0000\u0000\uCCAF\u8EA2\uA5D4\u8EA2\uA5D1\u8EA2\uA5D2" + // 27120 - 27124
+                "\u0000\u0000\u8EA2\uA5D0\u0000\uCCB1\u0000\uCCAD\u0000\uCCAC" + // 27125 - 27129
+                "\u0000\u0000\u0000\uCCAE\u0000\uCCAB\u0000\u0000\u0000\u0000" + // 27130 - 27134
+                "\u0000\u0000\u0000\u0000\u0000\uDCBE\u0000\u0000\u8EA2\uB7DD" + // 27135 - 27139
+                "\u0000\u0000\u0000\u0000\u8EA2\uB7D6\u8EA2\uB7D8\u8EA2\uB7DA" + // 27140 - 27144
+                "\u0000\u0000\u8EA2\uB7DB\u8EA2\uB7D9\u0000\uDCBF\u0000\u0000" + // 27145 - 27149
+                "\u8EA2\uB7DE\u0000\u0000\u8EA2\uB7D7\u0000\u0000\u0000\u0000" + // 27150 - 27154
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27155 - 27159
+                "\u0000\u0000\u0000\u0000\u8EA2\uBECC\u0000\uE0FC\u8EA2\uBED4" + // 27160 - 27164
+                "\u0000\u0000\u8EA2\uBEC9\u0000\u0000\u8EA2\uBED5\u0000\u0000" + // 27165 - 27169
+                "\u8EA2\uBECA\u8EA2\uBECB\u0000\u0000\u0000\u0000\u8EA2\uBED3" + // 27170 - 27174
+                "\u8EA2\uBED2\u8EA2\uBECF\u0000\uDCBD\u0000\uE0FD\u8EA2\uBECD" + // 27175 - 27179
+                "\u8EA2\uBED0\u0000\uE0FE\u8EA2\uBED1\u8EA2\uBECE\u0000\u0000" + // 27180 - 27184
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27185 - 27189
+                "\u0000\u0000\u8EA2\uC5D4\u0000\u0000\u8EA2\uC5D8\u0000\uE5D5" + // 27190 - 27194
+                "\u0000\u0000\u8EA2\uCCB8\u0000\uE5D8\u0000\uF0B5\u0000\u0000" + // 27195 - 27199
+                "\u0000\uA7AD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27200 - 27204
+                "\u8EA2\uA1AE\u0000\u0000\u0000\uC5F4\u0000\uC5F5\u0000\u0000" + // 27205 - 27209
+                "\u0000\u0000\u0000\uC7C2\u0000\u0000\u8EA2\uA3AC\u0000\u0000" + // 27210 - 27214
+                "\u0000\uD0A4\u0000\uD0A3\u8EA2\uAEA3\u8EA2\uAEA2\u0000\uD9A8" + // 27215 - 27219
+                "\u0000\uA7AE\u0000\uC4FD\u8EA2\uA1B5\u0000\u0000\u0000\u0000" + // 27220 - 27224
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA5CD\u0000\u0000" + // 27225 - 27229
+                "\u0000\uD0A5\u0000\u0000\u0000\uD4C3\u0000\u0000\u0000\uD4C1" + // 27230 - 27234
+                "\u0000\uD4C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27235 - 27239
+                "\u0000\uF0B6\u0000\uA7AF\u0000\uC5F6\u0000\u0000\u0000\u0000" + // 27240 - 27244
+                "\u0000\u0000\u0000\uC7C3\u8EA2\uA1FB\u0000\u0000\u0000\u0000" + // 27245 - 27249
+                "\u0000\u0000\u0000\u0000\u0000\uC9AF\u0000\uC9B0\u0000\u0000" + // 27250 - 27254
+                "\u8EA2\uA3AD\u0000\u0000\u0000\u0000\u8EA2\uA5CE\u0000\uCCA9" + // 27255 - 27259
+                "\u8EA2\uA5CF\u0000\u0000\u0000\uE9A9\u8EA2\uCBA7\u0000\uE9B7" + // 27260 - 27264
+                "\u8EA2\uCAF5\u0000\u0000\u8EA2\uCBAA\u0000\u0000\u0000\u0000" + // 27265 - 27269
+                "\u8EA2\uCAE5\u8EA2\uCAFA\u0000\uE9AC\u0000\uE9B5\u0000\uE9B3" + // 27270 - 27274
+                "\u8EA2\uCAE7\u8EA2\uCAFC\u0000\uE9B2\u0000\u0000\u0000\u0000" + // 27275 - 27279
+                "\u0000\uE9AB\u8EA2\uCAF8\u0000\u0000\u0000\u0000\u0000\u0000" + // 27280 - 27284
+                "\u0000\u0000\u8EA2\uCBA4\u0000\u0000\u0000\u0000\u0000\u0000" + // 27285 - 27289
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27290 - 27294
+                "\u8EA2\uD0FC\u0000\u0000\u8EA2\uD0F8\u8EA2\uD0F4\u8EA2\uD1AA" + // 27295 - 27299
+                "\u8EA2\uD1A7\u0000\uEDB7\u0000\u0000\u0000\u0000\u8EA2\uD1AE" + // 27300 - 27304
+                "\u8EA2\uD0FB\u0000\uEDC2\u8EA2\uD1A4\u0000\u0000\u0000\u0000" + // 27305 - 27309
+                "\u8EA2\uD0F7\u8EA2\uD1A3\u0000\uEDBF\u8EA2\uD1B7\u0000\u0000" + // 27310 - 27314
+                "\u8EA2\uD1B4\u8EA2\uD1A6\u8EA2\uD0F5\u0000\u0000\u0000\u0000" + // 27315 - 27319
+                "\u8EA2\uD1AB\u8EA2\uD1AD\u0000\uEDBB\u8EA2\uD1A1\u8EA2\uD0FA" + // 27320 - 27324
+                "\u0000\uC4C2\u0000\uC4F8\u0000\u0000\u0000\uC4F7\u0000\uC5F3" + // 27325 - 27329
+                "\u0000\uC5F2\u0000\uC7BE\u0000\uC7BD\u0000\uC7BF\u0000\uC7BC" + // 27330 - 27334
+                "\u0000\u0000\u0000\uC9AC\u0000\uC9AB\u0000\uC9AD\u0000\u0000" + // 27335 - 27339
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCCA3\u0000\u0000" + // 27340 - 27344
+                "\u0000\uCCA2\u0000\uCCA4\u0000\u0000\u0000\uD0A2\u0000\u0000" + // 27345 - 27349
+                "\u0000\uA2F9\u8EA2\uAEA1\u0000\uA2FA\u0000\uD9A7\u0000\uA2FC" + // 27350 - 27354
+                "\u0000\uA2FB\u8EA2\uBAC4\u0000\u0000\u0000\uA2FD\u0000\uE7FE" + // 27355 - 27359
+                "\u0000\uA2FE\u0000\u0000\u0000\uC4AB\u0000\u0000\u0000\uC4F9" + // 27360 - 27364
+                "\u0000\uC7C0\u0000\uCCA5\u0000\u0000\u0000\uC4AC\u0000\uC4FC" + // 27365 - 27369
+                "\u0000\uC4FA\u0000\uC4FB\u0000\u0000\u0000\u0000\u0000\uC7C1" + // 27370 - 27374
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC9AE\u0000\uCCA7" + // 27375 - 27379
+                "\u0000\uCCA6\u0000\uCCA8\u0000\u0000\u0000\u0000\u0000\u0000" + // 27380 - 27384
+                "\u0000\uD4C0\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA1A5" + // 27385 - 27389
+                "\u0000\u0000\u0000\uC5AD\u0000\u0000\u0000\u0000\u0000\u0000" + // 27390 - 27394
+                "\u0000\u0000\u0000\u0000\u8EA2\uA2A4\u0000\u0000\u0000\u0000" + // 27395 - 27399
+                "\u0000\u0000\u8EA2\uA3B6\u8EA2\uA3B7\u0000\u0000\u0000\u0000" + // 27400 - 27404
+                "\u8EA2\uA5D9\u0000\u0000\u8EA2\uA5DA\u0000\u0000\u8EA2\uA9B9" + // 27405 - 27409
+                "\u8EA2\uA9B8\u8EA2\uA9BB\u8EA2\uA9BA\u0000\uD0B4\u0000\u0000" + // 27410 - 27414
+                "\u8EA2\uB3F3\u0000\uD4D0\u8EA2\uAEB2\u0000\uD4CF\u0000\u0000" + // 27415 - 27419
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBAC8\u0000\uDEBC" + // 27420 - 27424
+                "\u0000\u0000\u8EA2\uBAC9\u0000\u0000\u0000\u0000\u0000\u0000" + // 27425 - 27429
+                "\u0000\u0000\u8EA2\uC9AD\u0000\uE8A5\u0000\u0000\u0000\u0000" + // 27430 - 27434
+                "\u0000\u0000\u0000\u0000\u0000\uECB0\u0000\u0000\u8EA2\uE5BB" + // 27435 - 27439
+                "\u0000\u0000\u0000\uA7BC\u0000\u0000\u0000\u0000\u8EA2\uA1B8" + // 27440 - 27444
+                "\u0000\u0000\u0000\uC6AA\u0000\u0000\u0000\u0000\u0000\u0000" + // 27445 - 27449
+                "\u0000\u0000\u8EA2\uD2F1\u0000\u0000\u0000\u0000\u0000\u0000" + // 27450 - 27454
+                "\u0000\u0000\u0000\uF1EA\u0000\uF1EF\u0000\uF1E8\u8EA2\uD9C4" + // 27455 - 27459
+                "\u8EA2\uD9BB\u8EA2\uD9C7\u8EA2\uD9BF\u8EA2\uD9C5\u0000\uF1F0" + // 27460 - 27464
+                "\u0000\uF1E9\u8EA2\uD9B8\u8EA2\uD9BE\u8EA2\uD9C8\u8EA2\uD9C1" + // 27465 - 27469
+                "\u8EA2\uD9C6\u8EA2\uD9BA\u0000\u0000\u0000\u0000\u8EA2\uD9C2" + // 27470 - 27474
+                "\u0000\uF1EB\u8EA2\uD9C0\u0000\uF1EE\u0000\uF1ED\u8EA2\uD9BC" + // 27475 - 27479
+                "\u8EA2\uD9BD\u8EA2\uD9B9\u8EA2\uD9C3\u0000\uF1EC\u8EA2\uD9CA" + // 27480 - 27484
+                "\u8EA2\uD9C9\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uDEC7" + // 27485 - 27489
+                "\u8EA2\uDEC3\u0000\uF4E9\u0000\u0000\u8EA2\uDEBD\u0000\uF4E3" + // 27490 - 27494
+                "\u0000\uF4F3\u8EA2\uDEC9\u0000\uF4EB\u0000\uF4E7\u8EA2\uDEC0" + // 27495 - 27499
+                "\u0000\uF4EE\u0000\uF4F1\u8EA2\uDECB\u0000\uF4E6\u8EA2\uDEC2" + // 27500 - 27504
+                "\u0000\uF4EF\u8EA2\uDECD\u8EA2\uDECA\u8EA2\uDEBE\u0000\uF4EA" + // 27505 - 27509
+                "\u0000\uF4E4\u0000\uF4F2\u0000\uECA1\u0000\u0000\u0000\uECA5" + // 27510 - 27514
+                "\u8EA2\uCFCF\u0000\uEBFE\u0000\uECA8\u8EA2\uCFD2\u8EA2\uCFD3" + // 27515 - 27519
+                "\u0000\uECA6\u0000\uECA7\u8EA2\uCFD9\u8EA2\uCFD6\u8EA2\uCFD7" + // 27520 - 27524
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uF0B3\u8EA2\uD6C3" + // 27525 - 27529
+                "\u0000\uF0B0\u8EA2\uD6C0\u0000\uF0B2\u0000\uF0B4\u0000\u0000" + // 27530 - 27534
+                "\u8EA2\uD6C1\u0000\uF0B1\u0000\u0000\u8EA2\uD6C2\u0000\u0000" + // 27535 - 27539
+                "\u8EA2\uD6BF\u0000\u0000\u0000\u0000\u0000\uF3C1\u8EA2\uDCC9" + // 27540 - 27544
+                "\u0000\uF3C2\u8EA2\uDCC7\u0000\u0000\u8EA2\uDCC8\u8EA2\uDCC6" + // 27545 - 27549
+                "\u8EA2\uDCC5\u0000\u0000\u0000\u0000\u8EA2\uDCCA\u0000\uF3C0" + // 27550 - 27554
+                "\u0000\u0000\u0000\u0000\u8EA2\uE1C4\u8EA2\uE1C5\u0000\u0000" + // 27555 - 27559
+                "\u8EA2\uCFD0\u8EA2\uE1C3\u0000\uF3C3\u0000\uF8AB\u8EA2\uE5B7" + // 27560 - 27564
+                "\u8EA2\uE5B8\u0000\u0000\u0000\uFAE2\u0000\uFAE3\u8EA2\uEBCF" + // 27565 - 27569
+                "\u8EA2\uEBCE\u0000\uFBD8\u0000\uFBD7\u8EA2\uEEFD\u0000\u0000" + // 27570 - 27574
+                "\u0000\uC4AA\u0000\uDEAE\u0000\u0000\u8EA2\uBAC2\u8EA2\uBABB" + // 27575 - 27579
+                "\u0000\u0000\u0000\uDEAB\u0000\u0000\u8EA2\uBAC3\u0000\u0000" + // 27580 - 27584
+                "\u0000\u0000\u0000\u0000\u8EA2\uBAB9\u8EA2\uBABC\u0000\uDEAA" + // 27585 - 27589
+                "\u8EA2\uBABD\u0000\u0000\u0000\u0000\u0000\uDEAD\u8EA2\uBAC1" + // 27590 - 27594
+                "\u0000\u0000\u8EA2\uBAB7\u8EA2\uBAB6\u0000\uDEAF\u0000\u0000" + // 27595 - 27599
+                "\u0000\uDEB0\u0000\uDEAC\u0000\uDEB1\u8EA2\uBAB5\u8EA2\uBAC0" + // 27600 - 27604
+                "\u8EA2\uBABE\u8EA2\uBAB8\u0000\u0000\u0000\u0000\u0000\u0000" + // 27605 - 27609
+                "\u0000\uDEA9\u8EA2\uBABA\u0000\u0000\u0000\u0000\u0000\u0000" + // 27610 - 27614
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27615 - 27619
+                "\u0000\uE3B1\u0000\uE3AB\u8EA2\uC1DC\u0000\uE3B4\u8EA2\uC1E2" + // 27620 - 27624
+                "\u8EA2\uC1E5\u0000\uE3AD\u0000\uE3AE\u8EA2\uC1DF\u0000\uE3AC" + // 27625 - 27629
+                "\u8EA2\uC1E8\u0000\uE3B2\u8EA2\uC1E9\u0000\u0000\u8EA2\uC1E4" + // 27630 - 27634
+                "\u0000\uE3B3\u0000\u0000\u8EA2\uC1D9\u0000\uE3B0\u8EA2\uC1DA" + // 27635 - 27639
+                "\u8EA2\uB3E6\u8EA2\uB3DA\u0000\u0000\u0000\uD8F6\u0000\u0000" + // 27640 - 27644
+                "\u8EA2\uB3DF\u8EA2\uB3E5\u0000\uD8F5\u8EA2\uB3D8\u0000\uD8F9" + // 27645 - 27649
+                "\u8EA2\uB3DC\u8EA2\uB3D5\u0000\uD8F7\u8EA2\uB3D9\u0000\uD8FC" + // 27650 - 27654
+                "\u0000\uD9A3\u0000\u0000\u8EA2\uB3EA\u0000\u0000\u8EA2\uB3D4" + // 27655 - 27659
+                "\u0000\u0000\u0000\uD8FD\u0000\u0000\u8EA2\uB3E9\u0000\u0000" + // 27660 - 27664
+                "\u0000\u0000\u0000\uD8F8\u8EA2\uB3DB\u0000\uD8F4\u8EA2\uB3D6" + // 27665 - 27669
+                "\u8EA2\uB3D2\u8EA2\uB3E0\u8EA2\uB3D3\u8EA2\uB3D1\u8EA2\uB3DD" + // 27670 - 27674
+                "\u8EA2\uB3E3\u8EA2\uB3E4\u0000\uD8FA\u0000\u0000\u0000\u0000" + // 27675 - 27679
+                "\u8EA2\uBABF\u8EA2\uB3E1\u8EA2\uB3D0\u8EA2\uB3E2\u0000\u0000" + // 27680 - 27684
+                "\u0000\uD9A6\u8EA2\uB3E7\u0000\uD9A5\u8EA2\uB3CF\u0000\u0000" + // 27685 - 27689
+                "\u8EA2\uB3D7\u8EA2\uB3E8\u0000\uD9A1\u0000\uD8FE\u0000\uD8FB" + // 27690 - 27694
+                "\u0000\uD9A2\u0000\u0000\u0000\u0000\u0000\uD8F2\u0000\u0000" + // 27695 - 27699
+                "\u0000\u0000\u0000\uD8F3\u0000\u0000\u0000\u0000\u0000\uCBD2" + // 27700 - 27704
+                "\u0000\u0000\u0000\uCBD5\u0000\uCBD4\u0000\uCBD3\u0000\u0000" + // 27705 - 27709
+                "\u0000\u0000\u8EA2\uA5A5\u0000\u0000\u8EA2\uA8ED\u0000\u0000" + // 27710 - 27714
+                "\u8EA2\uA8EF\u0000\uCFD2\u0000\u0000\u0000\u0000\u0000\uCFD4" + // 27715 - 27719
+                "\u8EA2\uA8EC\u8EA2\uA8EE\u0000\uCFD3\u8EA2\uA8F1\u8EA2\uA8F0" + // 27720 - 27724
+                "\u8EA2\uA8F2\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27725 - 27729
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uADD7" + // 27730 - 27734
+                "\u8EA2\uADD5\u0000\uD3DF\u8EA2\uADD4\u0000\uD3E4\u0000\uD3E1" + // 27735 - 27739
+                "\u0000\uD3DE\u0000\u0000\u0000\uD3E5\u0000\u0000\u0000\uD3E0" + // 27740 - 27744
+                "\u0000\uD3E3\u0000\u0000\u0000\uD3E2\u8EA2\uADD6\u0000\u0000" + // 27745 - 27749
+                "\u0000\uD3DD\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD8CF" + // 27750 - 27754
+                "\u8EA2\uB3AF\u8EA2\uB3B5\u0000\uD8CC\u0000\uD8D3\u0000\u0000" + // 27755 - 27759
+                "\u0000\uD8CE\u8EA2\uB3B2\u8EA2\uB3B4\u0000\uD8D1\u8EA2\uB3AE" + // 27760 - 27764
+                "\u8EA2\uB3B1\u0000\uD4B1\u0000\u0000\u0000\u0000\u0000\u0000" + // 27765 - 27769
+                "\u0000\u0000\u8EA2\uADEA\u0000\uD4AA\u8EA2\uADEB\u0000\u0000" + // 27770 - 27774
+                "\u0000\uD4BF\u0000\u0000\u0000\uD4B6\u0000\uD4A1\u0000\uD4A2" + // 27775 - 27779
+                "\u8EA2\uADFE\u0000\uD9A4\u0000\u0000\u0000\uD4AF\u0000\uD4AE" + // 27780 - 27784
+                "\u8EA2\uADEC\u0000\uD4B2\u8EA2\uB3DE\u0000\uD4A9\u8EA2\uADF7" + // 27785 - 27789
+                "\u0000\uD4B8\u0000\uD4B7\u0000\uD4AD\u8EA2\uADEF\u8EA2\uADF8" + // 27790 - 27794
+                "\u0000\u0000\u8EA2\uADE9\u0000\uD4AC\u8EA2\uADF9\u0000\uD4B5" + // 27795 - 27799
+                "\u8EA2\uADED\u0000\uD4A3\u0000\u0000\u0000\uD4A6\u0000\uD4A5" + // 27800 - 27804
+                "\u8EA2\uADFA\u0000\uD4B3\u0000\uD4A8\u0000\uD4BC\u0000\uD4BE" + // 27805 - 27809
+                "\u8EA2\uADF4\u0000\uD4BB\u0000\u0000\u8EA2\uADFC\u8EA2\uADEE" + // 27810 - 27814
+                "\u8EA2\uADFD\u0000\u0000\u8EA2\uADF2\u0000\u0000\u8EA2\uADFB" + // 27815 - 27819
+                "\u0000\u0000\u8EA2\uADF3\u0000\u0000\u0000\u0000\u0000\u0000" + // 27820 - 27824
+                "\u0000\u0000\u0000\uD4AB\u0000\u0000\u0000\u0000\u0000\u0000" + // 27825 - 27829
+                "\u0000\uE3AA\u8EA2\uC1D6\u8EA2\uC1D7\u0000\uA7A6\u0000\uC4A7" + // 27830 - 27834
+                "\u0000\u0000\u0000\uC4E8\u0000\u0000\u0000\u0000\u0000\uCBE7" + // 27835 - 27839
+                "\u0000\uC4A8\u8EA2\uA1A9\u0000\uC4C0\u0000\u0000\u0000\u0000" + // 27840 - 27844
+                "\u0000\uC4E9\u0000\uC4EB\u8EA2\uA1B1\u0000\uC4EC\u0000\uC4EA" + // 27845 - 27849
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC7A7\u0000\u0000" + // 27850 - 27854
+                "\u0000\uCBE8\u0000\u0000\u0000\u0000\u0000\uCBE9\u0000\uCFE7" + // 27855 - 27859
+                "\u0000\uA7A8\u0000\uC4C1\u0000\uC4ED\u0000\u0000\u0000\uC7A8" + // 27860 - 27864
+                "\u0000\uC7AA\u0000\uC7A9\u0000\u0000\u0000\uC8EC\u0000\u0000" + // 27865 - 27869
+                "\u0000\u0000\u0000\uCBEA\u0000\uCBEB\u0000\uCFE8\u0000\uCFE9" + // 27870 - 27874
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uD3FE" + // 27875 - 27879
+                "\u0000\u0000\u0000\u0000\u8EA2\uC1D8\u0000\u0000\u0000\u0000" + // 27880 - 27884
+                "\u8EA2\uEDC4\u0000\uC4A9\u0000\u0000\u0000\u0000\u0000\u0000" + // 27885 - 27889
+                "\u0000\u0000\u0000\u0000\u8EA2\uAEA5\u8EA2\uAEA6\u0000\uD4C6" + // 27890 - 27894
+                "\u0000\u0000\u8EA2\uAEA7\u0000\u0000\u8EA2\uAEA4\u0000\uD4C7" + // 27895 - 27899
+                "\u0000\uD4C5\u0000\uD4C4\u8EA2\uAEA8\u0000\u0000\u8EA2\uB3EB" + // 27900 - 27904
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uBAC5\u0000\u0000" + // 27905 - 27909
+                "\u0000\u0000\u8EA2\uC1EA\u8EA2\uC9A7\u0000\u0000\u0000\u0000" + // 27910 - 27914
+                "\u0000\u0000\u0000\uECA9\u0000\uF0B7\u8EA2\uD6C4\u0000\u0000" + // 27915 - 27919
+                "\u0000\uC4AD\u0000\uC4BB\u0000\u0000\u0000\u0000\u0000\u0000" + // 27920 - 27924
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27925 - 27929
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 27930 - 27934
+                "\u0000\u0000\u0000\uD9A9\u0000\uDEB3\u0000\u0000\u0000\uE8A1" + // 27935 - 27939
+                "\u0000\u0000\u8EA2\uA1A3\u0000\uC4FE\u0000\u0000\u0000\uC5F9" + // 27940 - 27944
+                "\u0000\uC5F7\u0000\uC5F8\u0000\u0000\u0000\u0000\u0000\uCCAA" + // 27945 - 27949
+                "\u0000\u0000\u0000\u0000\u0000\uE6AD\u0000\u0000\u0000\u0000" + // 27950 - 27954
+                "\u0000\u0000\u8EA2\uC6D8\u0000\u0000\u0000\u0000\u0000\u0000" + // 27955 - 27959
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uC6D4\u8EA2\uC6FA" + // 27960 - 27964
+                "\u8EA2\uC6D3\u0000\uEAE8\u8EA2\uCDDA\u0000\u0000\u0000\u0000" + // 27965 - 27969
+                "\u8EA2\uCDC9\u0000\u0000\u0000\u0000\u8EA2\uCDB3\u8EA2\uCDD1" + // 27970 - 27974
+                "\u0000\uEAE0\u8EA2\uCDC2\u8EA2\uCDCC\u0000\uEAE3\u8EA2\uCDC5" + // 27975 - 27979
+                "\u0000\uEAE1\u8EA2\uCDB6\u8EA2\uCDD4\u8EA2\uCDB5\u8EA2\uCDC8" + // 27980 - 27984
+                "\u0000\u0000\u8EA2\uCDB4\u0000\u0000\u0000\u0000\u8EA2\uCDC6" + // 27985 - 27989
+                "\u8EA2\uCDCF\u8EA2\uCDCD\u8EA2\uCDC1\u8EA2\uCDBC\u8EA2\uCDBA" + // 27990 - 27994
+                "\u0000\u0000\u8EA2\uCDBB\u8EA2\uCDCE\u8EA2\uCDD9\u8EA2\uCDC3" + // 27995 - 27999
+                "\u0000\uEAE2\u0000\u0000\u8EA2\uCDBE\u0000\u0000\u8EA2\uCDD2" + // 28000 - 28004
+                "\u0000\u0000\u0000\uEAE5\u8EA2\uCDBD\u8EA2\uCDB7\u8EA2\uCDC7" + // 28005 - 28009
+                "\u0000\uEAE9\u0000\u0000\u0000\u0000\u0000\uEADD\u8EA2\uA9AF" + // 28010 - 28014
+                "\u8EA2\uA9A5\u0000\uCFFB\u0000\uCFF2\u0000\uCFFA\u8EA2\uA8FE" + // 28015 - 28019
+                "\u0000\u0000\u8EA2\uA9AC\u0000\u0000\u8EA2\uA9A3\u0000\uCFF6" + // 28020 - 28024
+                "\u8EA2\uA9A4\u0000\u0000\u8EA2\uA8FD\u0000\uCFFD\u0000\uCFF0" + // 28025 - 28029
+                "\u0000\uCFF9\u0000\uCFEF\u0000\u0000\u8EA2\uA9A1\u8EA2\uA9A6" + // 28030 - 28034
+                "\u0000\u0000\u8EA2\uA9AD\u0000\uCFF7\u0000\uCFF4\u8EA2\uA9A8" + // 28035 - 28039
+                "\u0000\uCFFC\u8EA2\uA9AB\u8EA2\uA9A7\u0000\uCFF1\u0000\uCFFE" + // 28040 - 28044
+                "\u0000\uCFF5\u0000\uCFEE\u0000\uCFEA\u0000\u0000\u0000\u0000" + // 28045 - 28049
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28050 - 28054
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA9B1\u0000\u0000" + // 28055 - 28059
+                "\u0000\uD4BA\u0000\uD4A4\u0000\u0000\u0000\uD4B4\u0000\u0000" + // 28060 - 28064
+                "\u0000\uD4B9\u8EA2\uADF1\u8EA2\uADF0\u8EA2\uADF5\u8EA2\uADF6" + // 28065 - 28069
+                "\u0000\uD4A7\u0000\u0000\u0000\uD4B0\u0000\u0000\u0000\u0000" + // 28070 - 28074
+                "\u0000\u0000\u0000\uD4BD\u0000\u0000\u0000\uD5F2\u0000\uD5EB" + // 28075 - 28079
+                "\u0000\uD5EE\u0000\u0000\u0000\uD5F1\u0000\u0000\u8EA2\uAFD7" + // 28080 - 28084
+                "\u0000\u0000\u0000\uD5EC\u8EA2\uAFD5\u0000\u0000\u0000\uD5F0" + // 28085 - 28089
+                "\u0000\u0000\u0000\u0000\u0000\uD5ED\u0000\u0000\u8EA2\uAFD8" + // 28090 - 28094
+                "\u0000\uD5EF\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28095 - 28099
+                "\u0000\u0000\u0000\u0000\u8EA2\uB5EE\u0000\uDBA5\u8EA2\uB5ED" + // 28100 - 28104
+                "\u8EA2\uB5EF\u0000\uDBA4\u0000\uDBA9\u8EA2\uAFD6\u0000\u0000" + // 28105 - 28109
+                "\u8EA2\uB5EC\u8EA2\uB5F0\u0000\u0000\u0000\uDBA6\u8EA2\uB5EB" + // 28110 - 28114
+                "\u0000\uDBA8\u0000\u0000\u0000\uDBA7\u0000\u0000\u8EA2\uBCCA" + // 28115 - 28119
+                "\u0000\u0000\u8EA2\uBCC5\u0000\u0000\u0000\uDFDB\u0000\uDFDF" + // 28120 - 28124
+                "\u0000\uDFDC\u8EA2\uBCC8\u8EA2\uBCCB\u0000\u0000\u0000\uDFDD" + // 28125 - 28129
+                "\u0000\u0000\u0000\uDFDE\u0000\uDFE3\u8EA2\uC3CD\u8EA2\uBCC9" + // 28130 - 28134
+                "\u0000\uDFE1\u8EA2\uBCC6\u8EA2\uBCC4\u0000\u0000\u0000\uDFE2" + // 28135 - 28139
+                "\u0000\u0000\u8EA2\uA7C6\u0000\u0000\u8EA2\uA7C4\u8EA2\uA7BC" + // 28140 - 28144
+                "\u8EA2\uA7B4\u8EA2\uA7BB\u0000\uCEAD\u0000\u0000\u0000\uCEB3" + // 28145 - 28149
+                "\u0000\u0000\u0000\uCEA7\u8EA2\uA7BF\u8EA2\uA7BE\u8EA2\uA7B6" + // 28150 - 28154
+                "\u0000\u0000\u0000\uCEB5\u8EA2\uA7C2\u8EA2\uA7B7\u0000\uCEB8" + // 28155 - 28159
+                "\u8EA2\uA7C9\u0000\uCEA8\u0000\u0000\u0000\uCEAF\u8EA2\uA7BA" + // 28160 - 28164
+                "\u8EA2\uA7C3\u0000\uCEB7\u0000\u0000\u0000\uCEAA\u0000\uCEAE" + // 28165 - 28169
+                "\u0000\u0000\u8EA2\uA7C1\u0000\u0000\u0000\u0000\u0000\u0000" + // 28170 - 28174
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28175 - 28179
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28180 - 28184
+                "\u0000\u0000\u8EA2\uABBD\u0000\uD1DF\u0000\uD1EC\u0000\u0000" + // 28185 - 28189
+                "\u8EA2\uABB8\u8EA2\uABAE\u0000\uD1E5\u8EA2\uABAC\u0000\uD1DE" + // 28190 - 28194
+                "\u8EA2\uABA7\u0000\uD1E8\u8EA2\uABB4\u8EA2\uABA1\u8EA2\uABA3" + // 28195 - 28199
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uD9CB" + // 28200 - 28204
+                "\u0000\uF4F4\u8EA2\uDECE\u0000\u0000\u0000\u0000\u0000\uF7A7" + // 28205 - 28209
+                "\u0000\u0000\u8EA2\uE6C4\u8EA2\uE6C3\u0000\uFAAD\u8EA2\uEBFB" + // 28210 - 28214
+                "\u0000\u0000\u8EA2\uEDF0\u0000\uFCE4\u8EA2\uA2E9\u0000\u0000" + // 28215 - 28219
+                "\u0000\u0000\u0000\uCFAC\u0000\uCBB8\u0000\u0000\u0000\u0000" + // 28220 - 28224
+                "\u8EA2\uACEE\u0000\u0000\u0000\u0000\u8EA2\uB2A4\u8EA2\uB1FD" + // 28225 - 28229
+                "\u8EA2\uB2A3\u8EA2\uB2A1\u0000\uD7CE\u8EA2\uB2A2\u8EA2\uB1FE" + // 28230 - 28234
+                "\u0000\u0000\u8EA2\uB8B6\u0000\u0000\u8EA2\uBFA4\u8EA2\uBFA5" + // 28235 - 28239
+                "\u8EA2\uC6B0\u8EA2\uC6B1\u0000\uE5F5\u0000\uE5F6\u8EA2\uC6AF" + // 28240 - 28244
+                "\u8EA2\uC6B2\u8EA2\uC6AE\u0000\uE5F4\u0000\u0000\u0000\uEAC8" + // 28245 - 28249
+                "\u0000\u0000\u0000\uE5F7\u8EA2\uCDA3\u0000\u0000\u0000\uEEC7" + // 28250 - 28254
+                "\u8EA2\uD2F9\u0000\uEEC8\u0000\u0000\u0000\uF1F1\u8EA2\uD9CE" + // 28255 - 28259
+                "\u8EA2\uD9CC\u8EA2\uD9CD\u8EA2\uDED1\u8EA2\uDED0\u8EA2\uDECF" + // 28260 - 28264
+                "\u8EA2\uA5B6\u8EA2\uA5C2\u8EA2\uA5C9\u0000\uCBF5\u8EA2\uA5BB" + // 28265 - 28269
+                "\u8EA2\uA5B4\u0000\uCBF4\u8EA2\uA5B7\u0000\uCBF8\u8EA2\uA5BA" + // 28270 - 28274
+                "\u0000\u0000\u0000\uCBF3\u0000\u0000\u0000\uCBEE\u0000\u0000" + // 28275 - 28279
+                "\u0000\uCBFD\u8EA2\uA5C4\u0000\uCBFE\u8EA2\uA5C8\u0000\u0000" + // 28280 - 28284
+                "\u8EA2\uA5C6\u8EA2\uA5CA\u0000\uCBFB\u8EA2\uA5BE\u8EA2\uA5B2" + // 28285 - 28289
+                "\u0000\u0000\u8EA2\uA5C0\u0000\uCBF2\u8EA2\uA5C5\u0000\uCBED" + // 28290 - 28294
+                "\u8EA2\uA5C7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28295 - 28299
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28300 - 28304
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28305 - 28309
+                "\u0000\u0000\u0000\uCFF8\u0000\uCFEC\u0000\u0000\u0000\u0000" + // 28310 - 28314
+                "\u8EA2\uA9A2\u8EA2\uA9AA\u0000\u0000\u0000\uCFEB\u0000\uCFF3" + // 28315 - 28319
+                "\u0000\uD0A1\u0000\u0000\u8EA2\uA9B0\u8EA2\uA9AE\u8EA2\uA9A9" + // 28320 - 28324
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uCFED\u8EA2\uA1F0" + // 28325 - 28329
+                "\u0000\uC7BA\u8EA2\uA1F4\u0000\u0000\u8EA2\uA1F8\u8EA2\uA1F5" + // 28330 - 28334
+                "\u0000\u0000\u0000\u0000\u8EA2\uA1F2\u0000\uC7AC\u0000\uC7AE" + // 28335 - 28339
+                "\u0000\uC7BB\u0000\u0000\u0000\uC7B0\u8EA2\uA1EA\u0000\uC7B3" + // 28340 - 28344
+                "\u0000\uC7B1\u0000\uC7B2\u8EA2\uA1FA\u8EA2\uA1F7\u8EA2\uA1EE" + // 28345 - 28349
+                "\u0000\uC7AF\u0000\u0000\u0000\u0000\u8EA2\uA1EB\u0000\uC7AD" + // 28350 - 28354
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA1F3\u0000\u0000" + // 28355 - 28359
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA1F6\u0000\u0000" + // 28360 - 28364
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28365 - 28369
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u8EA2\uA1EC\u8EA2\uA3A8" + // 28370 - 28374
+                "\u0000\u0000\u0000\uC9A4\u0000\uC8F5\u0000\u0000\u0000\u0000" + // 28375 - 28379
+                "\u8EA2\uA3A9\u0000\uC8F2\u0000\u0000\u0000\uC9A6\u0000\u0000" + // 28380 - 28384
+                "\u0000\uC8FA\u0000\u0000\u0000\uC8F9\u8EA2\uA2FB\u0000\uC8FD" + // 28385 - 28389
+                "\u0000\uC8F8\u8EA2\uA3A2\u8EA2\uA3AA\u0000\uC4EF\u0000\uC4EE" + // 28390 - 28394
+                "\u8EA2\uA1B2\u0000\uC4F0\u0000\uC4F6\u0000\u0000\u0000\uC4F1" + // 28395 - 28399
+                "\u0000\uC4F2\u8EA2\uA1B4\u8EA2\uA1B3\u0000\uC4F4\u0000\uC4F5" + // 28400 - 28404
+                "\u0000\u0000\u0000\uC4F3\u0000\u0000\u0000\u0000\u0000\u0000" + // 28405 - 28409
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\uC5EA\u0000\uC5EB" + // 28410 - 28414
+                "\u0000\uC5EC\u0000\uC5ED\u0000\uC5E9\u0000\uC5F0\u8EA2\uA1CA" + // 28415 - 28419
+                "\u0000\u0000\u8EA2\uA1C6\u8EA2\uA1C9\u0000\uC5F1\u0000\uC6A3" + // 28420 - 28424
+                "\u0000\u0000\u8EA2\uA1C8\u0000\u0000\u0000\uC5EE\u0000\uC5EF" + // 28425 - 28429
+                "\u0000\uC5E8\u0000\u0000\u0000\u0000\u8EA2\uA1C5\u8EA2\uA1C7" + // 28430 - 28434
+                "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + // 28435 - 28439
+                "\u0000\u0000\u0000\uC7B7\u8EA2\uA1EF\u0000\uC7B4\u0000\uC7B8" + // 28440 - 28444
+                "\u8EA2\uA1F9\u8EA2\uA1ED\u0000\uC7B5\u8EA2\uA1F1\u0000\u0000" + // 28445 - 28449
+                "\u0000\u0000\u0000\u0000\u0000\uC7B6\u0000\u0000\u0000\uC7B9" + // 28450 - 28454
+                "\u0000\u0000\u0000\uC7AB"
+                ;
+        }
+    }
+}
--- a/src/jdk.charsets/share/classes/sun/nio/cs/ext/SimpleEUCEncoder.java	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,276 +0,0 @@
-/*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- */
-
-package sun.nio.cs.ext;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CoderResult;
-import sun.nio.cs.Surrogate;
-
-
-public abstract class SimpleEUCEncoder
-    extends CharsetEncoder
-{
-
-    protected short  index1[];
-    protected String index2;
-    protected String index2a;
-    protected String index2b;
-    protected String index2c;
-    protected int    mask1;
-    protected int    mask2;
-    protected int    shift;
-
-    private byte[] outputByte = new byte[4];
-    private final Surrogate.Parser sgp = new Surrogate.Parser();
-
-    protected SimpleEUCEncoder(Charset cs)
-    {
-        super(cs, 3.0f, 4.0f);
-    }
-
-    /**
-     * Returns true if the given character can be converted to the
-     * target character encoding.
-     */
-
-    public boolean canEncode(char ch) {
-       int    index;
-       String theChars;
-
-       index = index1[((ch & mask1) >> shift)] + (ch & mask2);
-
-       if (index < 7500)
-         theChars = index2;
-       else
-         if (index < 15000) {
-           index = index - 7500;
-           theChars = index2a;
-         }
-         else
-           if (index < 22500){
-             index = index - 15000;
-             theChars = index2b;
-           }
-           else {
-             index = index - 22500;
-             theChars = index2c;
-           }
-
-       if (theChars.charAt(2*index) != '\u0000' ||
-                    theChars.charAt(2*index + 1) != '\u0000')
-         return (true);
-
-       // only return true if input char was unicode null - all others are
-       //     undefined
-       return( ch == '\u0000');
-
-    }
-    private CoderResult encodeArrayLoop(CharBuffer src, ByteBuffer dst) {
-        char[] sa = src.array();
-        int sp = src.arrayOffset() + src.position();
-        int sl = src.arrayOffset() + src.limit();
-        assert (sp <= sl);
-        sp = (sp <= sl ? sp : sl);
-        byte[] da = dst.array();
-        int dp = dst.arrayOffset() + dst.position();
-        int dl = dst.arrayOffset() + dst.limit();
-        assert (dp <= dl);
-        dp = (dp <= dl ? dp : dl);
-
-        int     index;
-        int     spaceNeeded;
-        int     i;
-
-        try {
-            while (sp < sl) {
-                boolean allZeroes = true;
-                char inputChar = sa[sp];
-                if (Character.isSurrogate(inputChar)) {
-                    if (sgp.parse(inputChar, sa, sp, sl) < 0)
-                        return sgp.error();
-                    return sgp.unmappableResult();
-                }
-
-                if (inputChar >= '\uFFFE')
-                    return CoderResult.unmappableForLength(1);
-
-                String theChars;
-                char   aChar;
-
-                 // We have a valid character, get the bytes for it
-                index = index1[((inputChar & mask1) >> shift)] + (inputChar & mask2);
-
-                if (index < 7500)
-                    theChars = index2;
-                else if (index < 15000) {
-                     index = index - 7500;
-                     theChars = index2a;
-                } else if (index < 22500){
-                    index = index - 15000;
-                    theChars = index2b;
-                }
-                else {
-                    index = index - 22500;
-                    theChars = index2c;
-                }
-
-                aChar = theChars.charAt(2*index);
-                outputByte[0] = (byte)((aChar & 0xff00)>>8);
-                outputByte[1] = (byte)(aChar & 0x00ff);
-                aChar = theChars.charAt(2*index + 1);
-                outputByte[2] = (byte)((aChar & 0xff00)>>8);
-                outputByte[3] = (byte)(aChar & 0x00ff);
-
-            for (i = 0; i < outputByte.length; i++) {
-                if (outputByte[i] != 0x00) {
-                allZeroes = false;
-                break;
-                }
-            }
-
-            if (allZeroes && inputChar != '\u0000') {
-                return CoderResult.unmappableForLength(1);
-            }
-
-            int oindex = 0;
-
-            for (spaceNeeded = outputByte.length;
-                 spaceNeeded > 1; spaceNeeded--){
-                if (outputByte[oindex++] != 0x00 )
-                    break;
-            }
-
-            if (dp + spaceNeeded > dl)
-                return CoderResult.OVERFLOW;
-
-            for (i = outputByte.length - spaceNeeded;
-                 i < outputByte.length; i++) {
-                    da[dp++] = outputByte[i];
-            }
-            sp++;
-        }
-        return CoderResult.UNDERFLOW;
-        } finally {
-            src.position(sp - src.arrayOffset());
-            dst.position(dp - dst.arrayOffset());
-        }
-    }
-
-    private CoderResult encodeBufferLoop(CharBuffer src, ByteBuffer dst) {
-        int     index;
-        int     spaceNeeded;
-        int     i;
-        int mark = src.position();
-        try {
-            while (src.hasRemaining()) {
-                char inputChar = src.get();
-                boolean allZeroes = true;
-                if (Character.isSurrogate(inputChar)) {
-                    if (sgp.parse(inputChar, src) < 0)
-                        return sgp.error();
-                    return sgp.unmappableResult();
-                }
-
-                if (inputChar >= '\uFFFE')
-                    return CoderResult.unmappableForLength(1);
-
-                String theChars;
-                char   aChar;
-
-                 // We have a valid character, get the bytes for it
-                index = index1[((inputChar & mask1) >> shift)] + (inputChar & mask2);
-
-                if (index < 7500)
-                    theChars = index2;
-                else if (index < 15000) {
-                     index = index - 7500;
-                     theChars = index2a;
-                } else if (index < 22500){
-                    index = index - 15000;
-                    theChars = index2b;
-                }
-                else {
-                    index = index - 22500;
-                    theChars = index2c;
-                }
-
-                aChar = theChars.charAt(2*index);
-                outputByte[0] = (byte)((aChar & 0xff00)>>8);
-                outputByte[1] = (byte)(aChar & 0x00ff);
-                aChar = theChars.charAt(2*index + 1);
-                outputByte[2] = (byte)((aChar & 0xff00)>>8);
-                outputByte[3] = (byte)(aChar & 0x00ff);
-
-            for (i = 0; i < outputByte.length; i++) {
-                if (outputByte[i] != 0x00) {
-                allZeroes = false;
-                break;
-                }
-            }
-            if (allZeroes && inputChar != '\u0000') {
-                return CoderResult.unmappableForLength(1);
-            }
-
-            int oindex = 0;
-
-            for (spaceNeeded = outputByte.length;
-                 spaceNeeded > 1; spaceNeeded--){
-                if (outputByte[oindex++] != 0x00 )
-                    break;
-            }
-            if (dst.remaining() < spaceNeeded)
-                return CoderResult.OVERFLOW;
-
-            for (i = outputByte.length - spaceNeeded;
-                 i < outputByte.length; i++) {
-                    dst.put(outputByte[i]);
-            }
-            mark++;
-            }
-            return CoderResult.UNDERFLOW;
-        } finally {
-            src.position(mark);
-        }
-    }
-
-    protected CoderResult encodeLoop(CharBuffer src, ByteBuffer dst) {
-        if (true && src.hasArray() && dst.hasArray())
-            return encodeArrayLoop(src, dst);
-        else
-            return encodeBufferLoop(src, dst);
-    }
-
-    public byte encode(char inputChar) {
-        return (byte)index2.charAt(index1[(inputChar & mask1) >> shift] +
-                (inputChar & mask2));
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.charsets/share/classes/sun/nio/cs/ext/SimpleEUCEncoder.java.template	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,276 @@
+/*
+ * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ */
+
+package $PACKAGE$;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+import sun.nio.cs.Surrogate;
+
+
+public abstract class SimpleEUCEncoder
+    extends CharsetEncoder
+{
+
+    protected short  index1[];
+    protected String index2;
+    protected String index2a;
+    protected String index2b;
+    protected String index2c;
+    protected int    mask1;
+    protected int    mask2;
+    protected int    shift;
+
+    private byte[] outputByte = new byte[4];
+    private final Surrogate.Parser sgp = new Surrogate.Parser();
+
+    protected SimpleEUCEncoder(Charset cs)
+    {
+        super(cs, 3.0f, 4.0f);
+    }
+
+    /**
+     * Returns true if the given character can be converted to the
+     * target character encoding.
+     */
+
+    public boolean canEncode(char ch) {
+       int    index;
+       String theChars;
+
+       index = index1[((ch & mask1) >> shift)] + (ch & mask2);
+
+       if (index < 7500)
+         theChars = index2;
+       else
+         if (index < 15000) {
+           index = index - 7500;
+           theChars = index2a;
+         }
+         else
+           if (index < 22500){
+             index = index - 15000;
+             theChars = index2b;
+           }
+           else {
+             index = index - 22500;
+             theChars = index2c;
+           }
+
+       if (theChars.charAt(2*index) != '\u0000' ||
+                    theChars.charAt(2*index + 1) != '\u0000')
+         return (true);
+
+       // only return true if input char was unicode null - all others are
+       //     undefined
+       return( ch == '\u0000');
+
+    }
+    private CoderResult encodeArrayLoop(CharBuffer src, ByteBuffer dst) {
+        char[] sa = src.array();
+        int sp = src.arrayOffset() + src.position();
+        int sl = src.arrayOffset() + src.limit();
+        assert (sp <= sl);
+        sp = (sp <= sl ? sp : sl);
+        byte[] da = dst.array();
+        int dp = dst.arrayOffset() + dst.position();
+        int dl = dst.arrayOffset() + dst.limit();
+        assert (dp <= dl);
+        dp = (dp <= dl ? dp : dl);
+
+        int     index;
+        int     spaceNeeded;
+        int     i;
+
+        try {
+            while (sp < sl) {
+                boolean allZeroes = true;
+                char inputChar = sa[sp];
+                if (Character.isSurrogate(inputChar)) {
+                    if (sgp.parse(inputChar, sa, sp, sl) < 0)
+                        return sgp.error();
+                    return sgp.unmappableResult();
+                }
+
+                if (inputChar >= '\uFFFE')
+                    return CoderResult.unmappableForLength(1);
+
+                String theChars;
+                char   aChar;
+
+                 // We have a valid character, get the bytes for it
+                index = index1[((inputChar & mask1) >> shift)] + (inputChar & mask2);
+
+                if (index < 7500)
+                    theChars = index2;
+                else if (index < 15000) {
+                     index = index - 7500;
+                     theChars = index2a;
+                } else if (index < 22500){
+                    index = index - 15000;
+                    theChars = index2b;
+                }
+                else {
+                    index = index - 22500;
+                    theChars = index2c;
+                }
+
+                aChar = theChars.charAt(2*index);
+                outputByte[0] = (byte)((aChar & 0xff00)>>8);
+                outputByte[1] = (byte)(aChar & 0x00ff);
+                aChar = theChars.charAt(2*index + 1);
+                outputByte[2] = (byte)((aChar & 0xff00)>>8);
+                outputByte[3] = (byte)(aChar & 0x00ff);
+
+            for (i = 0; i < outputByte.length; i++) {
+                if (outputByte[i] != 0x00) {
+                allZeroes = false;
+                break;
+                }
+            }
+
+            if (allZeroes && inputChar != '\u0000') {
+                return CoderResult.unmappableForLength(1);
+            }
+
+            int oindex = 0;
+
+            for (spaceNeeded = outputByte.length;
+                 spaceNeeded > 1; spaceNeeded--){
+                if (outputByte[oindex++] != 0x00 )
+                    break;
+            }
+
+            if (dp + spaceNeeded > dl)
+                return CoderResult.OVERFLOW;
+
+            for (i = outputByte.length - spaceNeeded;
+                 i < outputByte.length; i++) {
+                    da[dp++] = outputByte[i];
+            }
+            sp++;
+        }
+        return CoderResult.UNDERFLOW;
+        } finally {
+            src.position(sp - src.arrayOffset());
+            dst.position(dp - dst.arrayOffset());
+        }
+    }
+
+    private CoderResult encodeBufferLoop(CharBuffer src, ByteBuffer dst) {
+        int     index;
+        int     spaceNeeded;
+        int     i;
+        int mark = src.position();
+        try {
+            while (src.hasRemaining()) {
+                char inputChar = src.get();
+                boolean allZeroes = true;
+                if (Character.isSurrogate(inputChar)) {
+                    if (sgp.parse(inputChar, src) < 0)
+                        return sgp.error();
+                    return sgp.unmappableResult();
+                }
+
+                if (inputChar >= '\uFFFE')
+                    return CoderResult.unmappableForLength(1);
+
+                String theChars;
+                char   aChar;
+
+                 // We have a valid character, get the bytes for it
+                index = index1[((inputChar & mask1) >> shift)] + (inputChar & mask2);
+
+                if (index < 7500)
+                    theChars = index2;
+                else if (index < 15000) {
+                     index = index - 7500;
+                     theChars = index2a;
+                } else if (index < 22500){
+                    index = index - 15000;
+                    theChars = index2b;
+                }
+                else {
+                    index = index - 22500;
+                    theChars = index2c;
+                }
+
+                aChar = theChars.charAt(2*index);
+                outputByte[0] = (byte)((aChar & 0xff00)>>8);
+                outputByte[1] = (byte)(aChar & 0x00ff);
+                aChar = theChars.charAt(2*index + 1);
+                outputByte[2] = (byte)((aChar & 0xff00)>>8);
+                outputByte[3] = (byte)(aChar & 0x00ff);
+
+            for (i = 0; i < outputByte.length; i++) {
+                if (outputByte[i] != 0x00) {
+                allZeroes = false;
+                break;
+                }
+            }
+            if (allZeroes && inputChar != '\u0000') {
+                return CoderResult.unmappableForLength(1);
+            }
+
+            int oindex = 0;
+
+            for (spaceNeeded = outputByte.length;
+                 spaceNeeded > 1; spaceNeeded--){
+                if (outputByte[oindex++] != 0x00 )
+                    break;
+            }
+            if (dst.remaining() < spaceNeeded)
+                return CoderResult.OVERFLOW;
+
+            for (i = outputByte.length - spaceNeeded;
+                 i < outputByte.length; i++) {
+                    dst.put(outputByte[i]);
+            }
+            mark++;
+            }
+            return CoderResult.UNDERFLOW;
+        } finally {
+            src.position(mark);
+        }
+    }
+
+    protected CoderResult encodeLoop(CharBuffer src, ByteBuffer dst) {
+        if (true && src.hasArray() && dst.hasArray())
+            return encodeArrayLoop(src, dst);
+        else
+            return encodeBufferLoop(src, dst);
+    }
+
+    public byte encode(char inputChar) {
+        return (byte)index2.charAt(index1[(inputChar & mask1) >> shift] +
+                (inputChar & mask2));
+    }
+}
--- a/src/jdk.compiler/share/classes/com/sun/tools/doclint/Checker.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/doclint/Checker.java	Fri Dec 07 09:46:53 2018 -0500
@@ -884,8 +884,6 @@
         String sig = tree.getSignature();
         if (sig.contains("<") || sig.contains(">")) {
             env.messages.error(REFERENCE, tree, "dc.type.arg.not.allowed");
-        } else if (isArrayType(sig)) {
-            env.messages.error(REFERENCE, tree, "dc.array.type.not.allowed");
         } else {
             Element e = env.trees.getElement(getCurrentPath());
             if (e == null)
@@ -975,12 +973,6 @@
         return scan(tree.getDescription(), ignore);
     }
 
-    private boolean isArrayType(String signature) {
-        int brackets = signature.indexOf('[');
-        int parens = signature.indexOf('(');
-        return brackets >= 0 && (parens < 0 || brackets < parens);
-    }
-
     private boolean isThrowable(TypeMirror tm) {
         switch (tm.getKind()) {
             case DECLARED:
--- a/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint.properties	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint.properties	Fri Dec 07 09:46:53 2018 -0500
@@ -25,7 +25,6 @@
 
 dc.anchor.already.defined = anchor already defined: "{0}"
 dc.anchor.value.missing = no value given for anchor
-dc.array.type.not.allowed = array type not allowed here
 dc.attr.lacks.value = attribute lacks value
 dc.attr.not.number = attribute value is not a number
 dc.attr.not.supported.html4 = attribute not supported in HTML4: {0}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTrees.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTrees.java	Fri Dec 07 09:46:53 2018 -0500
@@ -443,11 +443,7 @@
                 // we first check if qualifierExpression identifies a type,
                 // and if not, then we check to see if it identifies a package.
                 Type t = attr.attribType(ref.qualifierExpression, env);
-
-                if (t.getKind() == TypeKind.ARRAY) {
-                    // cannot refer to an array type
-                    return null;
-                } else if (t.isErroneous()) {
+                if (t.isErroneous()) {
                     JCCompilationUnit toplevel =
                         treeMaker.TopLevel(List.nil());
                     final ModuleSymbol msym = modules.getDefaultModule();
@@ -478,7 +474,11 @@
                         }
                     }
                 } else {
-                    tsym = t.tsym;
+                    Type e = t;
+                    // If this is an array type convert to element type
+                    while (e instanceof ArrayType)
+                        e = ((ArrayType)e).elemtype;
+                    tsym = e.tsym;
                     memberName = (Name) ref.memberName;
                 }
             }
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/main/CommandLine.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/main/CommandLine.java	Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -27,6 +27,7 @@
 
 import java.io.IOException;
 import java.io.Reader;
+import java.nio.charset.Charset;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.util.ArrayList;
@@ -125,7 +126,7 @@
     }
 
     private static void loadCmdFile(String name, List<String> args) throws IOException {
-        try (Reader r = Files.newBufferedReader(Paths.get(name))) {
+        try (Reader r = Files.newBufferedReader(Paths.get(name), Charset.defaultCharset())) {
             Tokenizer t = new Tokenizer(r);
             String s;
             while ((s = t.nextToken()) != null) {
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/Pretty.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/Pretty.java	Fri Dec 07 09:46:53 2018 -0500
@@ -1525,9 +1525,11 @@
         try {
             print("@");
             printExpr(tree.annotationType);
-            print("(");
-            printExprs(tree.args);
-            print(")");
+            if (!tree.args.isEmpty()) {
+                print("(");
+                printExprs(tree.args);
+                print(")");
+            }
         } catch (IOException e) {
             throw new UncheckedIOException(e);
         }
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VMOps.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VMOps.java	Fri Dec 07 09:46:53 2018 -0500
@@ -50,13 +50,13 @@
   GenCollectForAllocation,
   ParallelGCFailedAllocation,
   ParallelGCSystemGC,
-  CGC_Operation,
   CMS_Initial_Mark,
   CMS_Final_Remark,
   G1CollectFull,
   ZOperation,
   G1CollectForAllocation,
   G1IncCollectionPause,
+  G1Concurrent,
   EnableBiasedLocking,
   RevokeBias,
   BulkRevokeBias,
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/script.js	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/script.js	Fri Dec 07 09:46:53 2018 -0500
@@ -36,45 +36,55 @@
         createElem(doc, tag, 'jquery/jszip-utils/dist/jszip-utils-ie.js');
     }
     createElem(doc, tag, 'search.js');
-    
+
     $.get(pathtoroot + "module-search-index.zip")
             .done(function() {
                 JSZipUtils.getBinaryContent(pathtoroot + "module-search-index.zip", function(e, data) {
-                    var zip = new JSZip(data);
-                    zip.load(data);
-                    moduleSearchIndex = JSON.parse(zip.file("module-search-index.json").asText());
+                    JSZip.loadAsync(data).then(function(zip){
+                        zip.file("module-search-index.json").async("text").then(function(content){
+                            moduleSearchIndex = JSON.parse(content);
+                        });
+                    });
                 });
             });
     $.get(pathtoroot + "package-search-index.zip")
             .done(function() {
                 JSZipUtils.getBinaryContent(pathtoroot + "package-search-index.zip", function(e, data) {
-                    var zip = new JSZip(data);
-                    zip.load(data);
-                    packageSearchIndex = JSON.parse(zip.file("package-search-index.json").asText());
+                    JSZip.loadAsync(data).then(function(zip){
+                        zip.file("package-search-index.json").async("text").then(function(content){
+                            packageSearchIndex = JSON.parse(content);
+                        });
+                    });
                 });
             });
     $.get(pathtoroot + "type-search-index.zip")
             .done(function() {
                 JSZipUtils.getBinaryContent(pathtoroot + "type-search-index.zip", function(e, data) {
-                    var zip = new JSZip(data);
-                    zip.load(data);
-                    typeSearchIndex = JSON.parse(zip.file("type-search-index.json").asText());
+                    JSZip.loadAsync(data).then(function(zip){
+                        zip.file("type-search-index.json").async("text").then(function(content){
+                            typeSearchIndex = JSON.parse(content);
+                        });
+                    });
                 });
             });
     $.get(pathtoroot + "member-search-index.zip")
             .done(function() {
                 JSZipUtils.getBinaryContent(pathtoroot + "member-search-index.zip", function(e, data) {
-                    var zip = new JSZip(data);
-                    zip.load(data);
-                    memberSearchIndex = JSON.parse(zip.file("member-search-index.json").asText());
+                    JSZip.loadAsync(data).then(function(zip){
+                        zip.file("member-search-index.json").async("text").then(function(content){
+                            memberSearchIndex = JSON.parse(content);
+                        });
+                    });
                 });
             });
     $.get(pathtoroot + "tag-search-index.zip")
             .done(function() {
                 JSZipUtils.getBinaryContent(pathtoroot + "tag-search-index.zip", function(e, data) {
-                    var zip = new JSZip(data);
-                    zip.load(data);
-                    tagSearchIndex = JSON.parse(zip.file("tag-search-index.json").asText());
+                    JSZip.loadAsync(data).then(function(zip){
+                        zip.file("tag-search-index.json").async("text").then(function(content){
+                            tagSearchIndex = JSON.parse(content);
+                        });
+                    });
                 });
             });
     if (!moduleSearchIndex) {
--- a/src/jdk.jfr/share/classes/jdk/jfr/internal/RequestEngine.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/RequestEngine.java	Fri Dec 07 09:46:53 2018 -0500
@@ -34,6 +34,8 @@
 import java.util.Objects;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.function.Predicate;
+import jdk.jfr.Event;
+import jdk.jfr.EventType;
 
 public final class RequestEngine {
 
@@ -60,7 +62,11 @@
         private void execute() {
             try {
                 if (accessControllerContext == null) { // native
-                    jvm.emitEvent(type.getId(), JVM.counterTime(), 0);
+                    if (type.isJDK()) {
+                        hook.run();
+                    } else {
+                        jvm.emitEvent(type.getId(), JVM.counterTime(), 0);
+                    }
                     Logger.log(LogTag.JFR_SYSTEM_EVENT, LogLevel.DEBUG, ()-> "Executed periodic hook for " + type.getLogName());
                 } else {
                     executeSecure();
@@ -91,11 +97,12 @@
     private final static List<RequestHook> entries = new CopyOnWriteArrayList<>();
     private static long lastTimeMillis;
 
-    // Insertion takes O(2*n), could be O(1) with HashMap, but
-    // thinking is that CopyOnWriteArrayList is faster
-    // to iterate over, which will happen more over time.
     public static void addHook(AccessControlContext acc, PlatformEventType type, Runnable hook) {
         Objects.requireNonNull(acc);
+        addHookInternal(acc, type, hook);
+    }
+
+    private static void addHookInternal(AccessControlContext acc, PlatformEventType type, Runnable hook) {
         RequestHook he = new RequestHook(acc, type, hook);
         for (RequestHook e : entries) {
             if (e.hook == hook) {
@@ -103,10 +110,24 @@
             }
         }
         he.type.setEventHook(true);
+        // Insertion takes O(2*n), could be O(1) with HashMap, but
+        // thinking is that CopyOnWriteArrayList is faster
+        // to iterate over, which will happen more over time.
         entries.add(he);
         logHook("Added", type);
     }
 
+    public static void addTrustedJDKHook(Class<? extends Event> eventClass, Runnable runnable) {
+        if (eventClass.getClassLoader() != null) {
+            throw new SecurityException("Hook can only be registered for event classes that are loaded by the bootstrap class loader");
+        }
+        if (runnable.getClass().getClassLoader() != null) {
+            throw new SecurityException("Runnable hook class must be loaded by the bootstrap class loader");
+        }
+        EventType eType = MetadataRepository.getInstance().getEventType(eventClass);
+        PlatformEventType pType = PrivateAccess.getInstance().getPlatformEventType(eType);
+        addHookInternal(null, pType, runnable);
+    }
 
     private static void logHook(String action, PlatformEventType type) {
         if (type.isJDK() || type.isJVM()) {
--- a/src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java	Fri Dec 07 09:46:53 2018 -0500
@@ -29,7 +29,6 @@
 import java.util.List;
 
 import jdk.jfr.Event;
-import jdk.jfr.FlightRecorder;
 import jdk.jfr.events.ActiveRecordingEvent;
 import jdk.jfr.events.ActiveSettingEvent;
 import jdk.jfr.events.ErrorThrownEvent;
@@ -50,7 +49,6 @@
 import jdk.jfr.internal.Logger;
 import jdk.jfr.internal.RequestEngine;
 import jdk.jfr.internal.SecuritySupport;
-import jdk.jfr.internal.Utils;
 
 public final class JDKEvents {
 
@@ -105,7 +103,7 @@
                     SecuritySupport.registerEvent((Class<? extends Event>) eventClass);
                 }
                 initializationTriggered = true;
-                FlightRecorder.addPeriodicEvent(ExceptionStatisticsEvent.class, emitExceptionStatistics);
+                RequestEngine.addTrustedJDKHook(ExceptionStatisticsEvent.class, emitExceptionStatistics);
             }
         } catch (Exception e) {
             Logger.log(LogTag.JFR_SYSTEM, LogLevel.WARN, "Could not initialize JDK events. " + e.getMessage());
--- a/src/jdk.jfr/share/classes/jdk/jfr/internal/tool/Main.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/tool/Main.java	Fri Dec 07 09:46:53 2018 -0500
@@ -72,7 +72,7 @@
             System.out.println();
             System.out.println(" jfr summary recording.jfr");
             System.out.println();
-            System.out.println(" jfr metadata recoding.jfr");
+            System.out.println(" jfr metadata recording.jfr");
             System.out.println();
             System.out.println("For more information about available commands, use 'jfr help'");
             System.exit(EXIT_OK);
--- a/src/utils/LogCompilation/src/main/java/com/sun/hotspot/tools/compiler/Compilation.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/utils/LogCompilation/src/main/java/com/sun/hotspot/tools/compiler/Compilation.java	Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -216,6 +216,10 @@
         } else {
             if (printID) {
                 stream.print(getId());
+                // Print the comp level next to the id as with +PrintCompilation
+                if (nmethod != null && nmethod.getLevel() != 0) {
+                    stream.print(" " + nmethod.getLevel());
+                }
             }
             int bc = isOsr() ? getBCI() : -1;
             stream.print(getMethod().decodeFlags(bc) + " " + compiler + " " + getMethod().format(bc));
--- a/src/utils/LogCompilation/src/main/java/com/sun/hotspot/tools/compiler/LogParser.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/utils/LogCompilation/src/main/java/com/sun/hotspot/tools/compiler/LogParser.java	Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1096,6 +1096,10 @@
                     id,
                     parseLong(atts.getValue("address")),
                     parseLong(atts.getValue("size")));
+            String level = atts.getValue("level");
+            if (level != null) {
+                nm.setLevel(parseLong(level));
+            }
             nmethods.put(id, nm);
             events.add(nm);
         } else if (qname.equals("parse")) {
--- a/src/utils/LogCompilation/src/main/java/com/sun/hotspot/tools/compiler/NMethod.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/utils/LogCompilation/src/main/java/com/sun/hotspot/tools/compiler/NMethod.java	Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -42,6 +42,11 @@
      */
     private long size;
 
+    /**
+     * The nmethod's compilation level.
+     */
+    private long level;
+
     NMethod(double s, String i, long a, long sz) {
         super(s, i);
         address = a;
@@ -68,4 +73,18 @@
     public void setSize(long size) {
         this.size = size;
     }
+
+    /**
+     * @return the level
+     */
+    public long getLevel() {
+        return level;
+    }
+
+    /**
+     * @param level the level to set
+     */
+    public void setLevel(long level) {
+        this.level = level;
+    }
 }
--- a/src/utils/LogCompilation/src/test/java/com/sun/hotspot/tools/compiler/TestLogCompilation.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/src/utils/LogCompilation/src/test/java/com/sun/hotspot/tools/compiler/TestLogCompilation.java	Fri Dec 07 09:46:53 2018 -0500
@@ -53,7 +53,9 @@
             // no file (just prints the help)
             {"./src/test/resources/hotspot_pid23756.log"},
             // LogCompilation output of running on above file
-            {"./src/test/resources/hotspot_pid25109.log"}
+            {"./src/test/resources/hotspot_pid25109.log"},
+            {"./src/test/resources/no_tiered_short.log"},
+            {"./src/test/resources/tiered_short.log"}
 
         };
         return Arrays.asList(data);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/utils/LogCompilation/src/test/resources/no_tiered_short.log	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,140 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<hotspot_log version='160 1' process='22365' time_ms='1544108271535'>
+<vm_version>
+<name>
+Java HotSpot(TM) 64-Bit Server VM
+</name>
+<release>
+11+28
+</release>
+<info>
+Java HotSpot(TM) 64-Bit Server VM (11+28) for linux-amd64 JRE (11+28), built on Aug 22 2018 18:51:59 by &quot;mach5one&quot; with gcc 7.3.0
+</info>
+</vm_version>
+<vm_arguments>
+<args>
+-XX:-TieredCompilation -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation </args>
+<command>
+target/LogCompilation-1.0-SNAPSHOT.jar
+</command>
+<launcher>
+SUN_STANDARD
+</launcher>
+<properties>
+java.vm.specification.name=Java Virtual Machine Specification
+java.vm.version=11+28
+java.vm.name=Java HotSpot(TM) 64-Bit Server VM
+jdk.debug=release
+sun.boot.library.path=/opt/jdk-11/lib
+java.library.path=/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
+java.home=/opt/jdk-11
+java.class.path=target/LogCompilation-1.0-SNAPSHOT.jar
+jdk.boot.class.path.append=
+java.vm.info=mixed mode, aot, sharing
+java.vm.specification.vendor=Oracle Corporation
+java.vm.specification.version=11
+java.vm.vendor=Oracle Corporation
+sun.java.command=target/LogCompilation-1.0-SNAPSHOT.jar
+sun.java.launcher=SUN_STANDARD
+</properties>
+</vm_arguments>
+<tty>
+<writer thread='22366'/>
+<blob name='MethodHandlesAdapterBlob' size='32000'>
+<sect index='1' size='32000' free='31616'/>
+</blob>
+<task_queued compile_id='1' method='java.lang.StringLatin1 hashCode ([B)I' bytes='42' count='423' backedge_count='5000' iicount='423' stamp='0.643' comment='count' hot_count='423'/>
+<writer thread='22376'/>
+<thread_logfile thread='22376' filename='/tmp/hs_c22376_pid22365.log'/>
+<nmethod compile_id='1' compiler='c2' entry='0x00007f0943c06b20' size='928' address='0x00007f0943c06990' relocation_offset='376' insts_offset='400' stub_offset='720' scopes_data_offset='752' scopes_pcs_offset='824' dependencies_offset='904' nul_chk_table_offset='912' metadata_offset='744' method='java.lang.StringLatin1 hashCode ([B)I' bytes='42' count='5000' backedge_count='5017' iicount='855' stamp='0.750'/>
+<writer thread='22366'/>
+<nmethod compile_id='2' compile_kind='c2n' compiler='' entry='0x00007f0943c10620' size='432' address='0x00007f0943c10490' relocation_offset='376' consts_offset='432' insts_offset='400' method='java.lang.invoke.MethodHandle linkToStatic (Ljava/lang/Object;Ljava/lang/Object;IILjava/lang/invoke/MemberName;)I' bytes='0' count='0' iicount='0' stamp='0.938'/>
+<nmethod compile_id='3' compile_kind='c2n' compiler='' entry='0x00007f0943c145a0' size='440' address='0x00007f0943c14410' relocation_offset='376' consts_offset='440' insts_offset='400' method='java.lang.invoke.MethodHandle linkToStatic (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/invoke/MemberName;)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='1.099'/>
+<nmethod compile_id='4' compile_kind='c2n' compiler='' entry='0x00007f0943c14ca0' size='432' address='0x00007f0943c14b10' relocation_offset='376' consts_offset='432' insts_offset='400' method='java.lang.invoke.MethodHandle linkToStatic (IILjava/lang/invoke/MemberName;)I' bytes='0' count='0' iicount='0' stamp='1.101'/>
+<nmethod compile_id='5' compile_kind='c2n' compiler='' entry='0x00007f0943c14ea0' size='448' address='0x00007f0943c14d10' relocation_offset='376' consts_offset='448' insts_offset='400' method='java.lang.invoke.MethodHandle invokeBasic (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='1.114'/>
+<nmethod compile_id='6' compile_kind='c2n' compiler='' entry='0x00007f0943c150a0' size='440' address='0x00007f0943c14f10' relocation_offset='376' consts_offset='440' insts_offset='400' method='java.lang.invoke.MethodHandle linkToSpecial (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/invoke/MemberName;)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='1.114'/>
+<nmethod compile_id='7' compile_kind='c2n' compiler='' entry='0x00007f0943c16920' size='432' address='0x00007f0943c16790' relocation_offset='376' consts_offset='432' insts_offset='400' method='java.lang.invoke.MethodHandle linkToStatic (ILjava/lang/invoke/MemberName;)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='1.159'/>
+<nmethod compile_id='8' compile_kind='c2n' compiler='' entry='0x00007f0943c16b20' size='448' address='0x00007f0943c16990' relocation_offset='376' consts_offset='448' insts_offset='400' method='java.lang.invoke.MethodHandle invokeBasic (I)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='1.160'/>
+<nmethod compile_id='9' compile_kind='c2n' compiler='' entry='0x00007f0943c16d20' size='432' address='0x00007f0943c16b90' relocation_offset='376' consts_offset='432' insts_offset='400' method='java.lang.invoke.MethodHandle linkToSpecial (Ljava/lang/Object;ILjava/lang/invoke/MemberName;)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='1.160'/>
+<tty_done stamp='1.171'/>
+</tty>
+<compilation_log thread='22376'>
+<start_compile_thread name='C2 CompilerThread0' thread='22376' process='22365' stamp='0.650'/>
+<task compile_id='1' method='java.lang.StringLatin1 hashCode ([B)I' bytes='42' count='540' backedge_count='8448' iicount='540' stamp='0.728'>
+<type id='962' name='int'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1081' name='java.lang.StringLatin1' flags='16'/>
+<method id='1082' holder='1081' name='hashCode' return='962' arguments='1073' flags='9' bytes='42' iicount='540'/>
+<parse method='1082' uses='540.000000' stamp='0.728'>
+<bc code='190' bci='5'/>
+<uncommon_trap bci='5' reason='null_check' action='maybe_recompile' debug_id='0'/>
+<bc code='162' bci='13'/>
+<branch target_bci='40' taken='375' not_taken='9914' cnt='10289.000000' prob='0.0364467'/>
+<uncommon_trap bci='13' reason='predicate' action='maybe_recompile' debug_id='0'/>
+<uncommon_trap bci='13' reason='profile_predicate' action='maybe_recompile' debug_id='0'/>
+<uncommon_trap bci='13' reason='loop_limit_check' action='maybe_recompile' debug_id='0'/>
+<bc code='51' bci='19'/>
+<uncommon_trap bci='19' reason='range_check' action='make_not_entrant' debug_id='0' comment='range_check'/>
+<bc code='162' bci='13'/>
+<branch target_bci='40' taken='375' not_taken='9914' cnt='9914.000000' prob='0.0364467'/>
+<parse_done nodes='154' live='148' memory='44576' stamp='0.739'/>
+</parse>
+<loop_tree>
+<loop idx='166' >
+<loop idx='167' >
+</loop>
+</loop>
+</loop_tree>
+<loop_tree>
+<loop idx='166' >
+<loop idx='284' inner_loop='1' main_loop='284' >
+</loop>
+</loop>
+</loop_tree>
+<loop_tree>
+<loop idx='231' inner_loop='1' pre_loop='167' >
+</loop>
+<loop idx='166' >
+<loop idx='325' inner_loop='1' main_loop='325' >
+</loop>
+</loop>
+<loop idx='204' inner_loop='1' post_loop='167' >
+</loop>
+</loop_tree>
+<loop_tree>
+<loop idx='231' inner_loop='1' pre_loop='167' >
+</loop>
+<loop idx='166' >
+<loop idx='325' inner_loop='1' main_loop='325' >
+</loop>
+</loop>
+<loop idx='204' inner_loop='1' post_loop='167' >
+</loop>
+</loop_tree>
+<loop_tree>
+<loop idx='231' inner_loop='1' pre_loop='167' >
+</loop>
+<loop idx='166' >
+<loop idx='325' inner_loop='1' main_loop='325' >
+</loop>
+</loop>
+<loop idx='204' inner_loop='1' post_loop='167' >
+</loop>
+</loop_tree>
+<loop_tree>
+<loop idx='231' inner_loop='1' pre_loop='167' >
+</loop>
+<loop idx='166' >
+<loop idx='325' inner_loop='1' main_loop='325' >
+</loop>
+</loop>
+<loop idx='204' inner_loop='1' post_loop='167' >
+</loop>
+</loop_tree>
+<regalloc attempts='2' success='1'/>
+<code_cache total_blobs='229' nmethods='1' adapters='131' free_code_cache='49931648'/>
+<task_done success='1' nmsize='344' count='5000' backedge_count='5013' stamp='0.750'/>
+</task>
+</compilation_log>
+<hotspot_log_done stamp='1.172'/>
+</hotspot_log>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/utils/LogCompilation/src/test/resources/tiered_short.log	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,4999 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<hotspot_log version='160 1' process='24128' time_ms='1544110011264'>
+<vm_version>
+<name>
+Java HotSpot(TM) 64-Bit Server VM
+</name>
+<release>
+11+28
+</release>
+<info>
+Java HotSpot(TM) 64-Bit Server VM (11+28) for linux-amd64 JRE (11+28), built on Aug 22 2018 18:51:59 by &quot;mach5one&quot; with gcc 7.3.0
+</info>
+</vm_version>
+<vm_arguments>
+<args>
+-XX:+TieredCompilation -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation </args>
+<command>
+target/LogCompilation-1.0-SNAPSHOT.jar
+</command>
+<launcher>
+SUN_STANDARD
+</launcher>
+<properties>
+java.vm.specification.name=Java Virtual Machine Specification
+java.vm.version=11+28
+java.vm.name=Java HotSpot(TM) 64-Bit Server VM
+jdk.debug=release
+sun.boot.library.path=/opt/jdk-11/lib
+java.library.path=/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
+java.home=/opt/jdk-11
+java.class.path=target/LogCompilation-1.0-SNAPSHOT.jar
+jdk.boot.class.path.append=
+java.vm.info=mixed mode, aot, sharing
+java.vm.specification.vendor=Oracle Corporation
+java.vm.specification.version=11
+java.vm.vendor=Oracle Corporation
+sun.java.command=target/LogCompilation-1.0-SNAPSHOT.jar
+sun.java.launcher=SUN_STANDARD
+</properties>
+</vm_arguments>
+<tty>
+<writer thread='24129'/>
+<blob name='MethodHandlesAdapterBlob' size='32000'>
+<sect index='1' size='32000' free='31616'/>
+</blob>
+<writer thread='24139'/>
+<thread_logfile thread='24139' filename='/tmp/hs_c24139_pid24128.log'/>
+<writer thread='24140'/>
+<thread_logfile thread='24140' filename='/tmp/hs_c24140_pid24128.log'/>
+<writer thread='24141'/>
+<sweeper state='finished' traversals='0'  total_blobs='174' nmethods='0' adapters='120' free_code_cache='250700416' stamp='0.048'/>
+<writer thread='24129'/>
+<task_queued compile_id='1' method='java.lang.Object &lt;init&gt; ()V' bytes='1' count='512' iicount='512' level='3' stamp='0.055' comment='tiered' hot_count='512'/>
+<task_queued compile_id='2' method='java.lang.StringLatin1 hashCode ([B)I' bytes='42' count='128' backedge_count='2529' iicount='128' level='3' stamp='0.055' comment='tiered' hot_count='128'/>
+<task_queued compile_id='3' method='java.lang.String isLatin1 ()Z' bytes='19' count='256' iicount='256' level='3' stamp='0.056' comment='tiered' hot_count='256'/>
+<task_queued compile_id='4' method='java.lang.String hashCode ()I' bytes='49' count='256' iicount='256' level='3' stamp='0.056' comment='tiered' hot_count='256'/>
+<task_queued compile_id='5' method='java.lang.String coder ()B' bytes='15' count='256' iicount='256' level='3' stamp='0.056' comment='tiered' hot_count='256'/>
+<task_queued compile_id='6' method='java.lang.Math floorMod (II)I' bytes='10' count='256' iicount='256' level='3' stamp='0.056' comment='tiered' hot_count='256'/>
+<task_queued compile_id='7' method='java.lang.Math floorDiv (II)I' bytes='22' count='384' iicount='384' level='3' stamp='0.057' comment='tiered' hot_count='384'/>
+<task_queued compile_id='8' method='java.util.ImmutableCollections$SetN probe (Ljava/lang/Object;)I' bytes='56' count='384' backedge_count='140' iicount='384' level='3' stamp='0.057' comment='tiered' hot_count='384'/>
+<task_queued compile_id='9' method='java.util.Collections$EmptySet hashCode ()I' bytes='2' count='128' iicount='128' level='1' stamp='0.059' comment='tiered' hot_count='128'/>
+<task_queued compile_id='10' method='java.lang.String equals (Ljava/lang/Object;)Z' bytes='65' count='384' iicount='384' level='3' stamp='0.060' comment='tiered' hot_count='384'/>
+<task_queued compile_id='11' method='java.lang.StringLatin1 equals ([B[B)Z' bytes='36' count='384' backedge_count='350' iicount='384' level='3' stamp='0.060' comment='tiered' hot_count='384'/>
+<task_queued compile_id='12' method='java.util.Collections emptySet ()Ljava/util/Set;' bytes='4' count='384' iicount='384' level='3' stamp='0.061' comment='tiered' hot_count='384'/>
+<task_queued compile_id='13' method='java.util.Objects requireNonNull (Ljava/lang/Object;)Ljava/lang/Object;' bytes='14' count='384' iicount='384' level='3' stamp='0.063' comment='tiered' hot_count='384'/>
+<task_queued compile_id='14' method='java.lang.module.ModuleDescriptor name ()Ljava/lang/String;' bytes='5' count='128' iicount='128' level='1' stamp='0.064' comment='tiered' hot_count='128'/>
+<task_queued compile_id='15' method='java.lang.module.ModuleReference descriptor ()Ljava/lang/module/ModuleDescriptor;' bytes='5' count='128' iicount='128' level='1' stamp='0.065' comment='tiered' hot_count='128'/>
+<task_queued compile_id='16' method='java.lang.String charAt (I)C' bytes='25' count='384' iicount='384' level='3' stamp='0.071' comment='tiered' hot_count='384'/>
+<task_queued compile_id='17' method='java.lang.StringLatin1 charAt ([BI)C' bytes='28' count='384' iicount='384' level='3' stamp='0.071' comment='tiered' hot_count='384'/>
+<task_queued compile_id='18' method='java.util.concurrent.ConcurrentHashMap tabAt ([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;' bytes='22' count='384' iicount='384' level='3' stamp='0.072' comment='tiered' hot_count='384'/>
+<task_queued compile_id='19' method='jdk.internal.misc.Unsafe getObjectAcquire (Ljava/lang/Object;J)Ljava/lang/Object;' bytes='7' count='384' iicount='384' level='3' stamp='0.072' comment='tiered' hot_count='384'/>
+<task_queued compile_id='20' method='java.util.ImmutableCollections$SetN$SetNIterator hasNext ()Z' bytes='13' count='512' iicount='512' level='3' stamp='0.072' comment='tiered' hot_count='512'/>
+<task_queued compile_id='21' method='java.util.ImmutableCollections$SetN$SetNIterator nextIndex ()I' bytes='56' count='512' iicount='512' level='3' stamp='0.072' comment='tiered' hot_count='512'/>
+<task_queued compile_id='22' method='java.util.KeyValueHolder getKey ()Ljava/lang/Object;' bytes='5' count='128' iicount='128' level='1' stamp='0.074' comment='tiered' hot_count='128'/>
+<task_queued compile_id='23' method='java.util.KeyValueHolder getValue ()Ljava/lang/Object;' bytes='5' count='128' iicount='128' level='1' stamp='0.074' comment='tiered' hot_count='128'/>
+<task_queued compile_id='24' method='java.util.ImmutableCollections$MapN probe (Ljava/lang/Object;)I' bytes='60' count='512' backedge_count='137' iicount='512' level='3' stamp='0.075' comment='tiered' hot_count='512'/>
+<task_queued compile_id='25' method='java.util.Objects equals (Ljava/lang/Object;Ljava/lang/Object;)Z' bytes='23' count='512' iicount='512' level='3' stamp='0.075' comment='tiered' hot_count='512'/>
+<task_queued compile_id='26' method='java.lang.module.ResolvedModule reference ()Ljava/lang/module/ModuleReference;' bytes='5' count='128' iicount='128' level='1' stamp='0.076' comment='tiered' hot_count='128'/>
+<task_queued compile_id='27' method='java.util.ImmutableCollections$SetN$SetNIterator next ()Ljava/lang/Object;' bytes='47' count='512' backedge_count='485' iicount='512' level='3' stamp='0.076' comment='tiered' hot_count='512'/>
+<nmethod compile_id='28' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787e61c0' size='1072' address='0x00007fae787e6010' relocation_offset='376' consts_offset='1072' insts_offset='432' method='jdk.internal.misc.Unsafe getObjectVolatile (Ljava/lang/Object;J)Ljava/lang/Object;' bytes='0' count='512' iicount='512' stamp='0.076'/>
+<task_queued compile_id='29' method='java.util.concurrent.ConcurrentHashMap spread (I)I' bytes='10' count='512' iicount='512' level='3' stamp='0.077' comment='tiered' hot_count='512'/>
+<task_queued compile_id='30' method='java.util.concurrent.ConcurrentHashMap putVal (Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;' bytes='432' count='512' backedge_count='8' iicount='512' level='3' stamp='0.077' comment='tiered' hot_count='512'/>
+<task_queued compile_id='31' method='java.util.concurrent.ConcurrentHashMap addCount (JI)V' bytes='289' count='512' iicount='512' level='3' stamp='0.077' comment='tiered' hot_count='512'/>
+<nmethod compile_id='32' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787e6640' size='960' address='0x00007fae787e6490' relocation_offset='376' consts_offset='960' insts_offset='432' method='jdk.internal.misc.Unsafe compareAndSetLong (Ljava/lang/Object;JJJ)Z' bytes='0' count='512' iicount='512' stamp='0.077'/>
+<task_queued compile_id='33' method='java.util.concurrent.ConcurrentHashMap$Node &lt;init&gt; (ILjava/lang/Object;Ljava/lang/Object;)V' bytes='20' count='512' iicount='512' level='3' stamp='0.077' comment='tiered' hot_count='512'/>
+<task_queued compile_id='34' method='java.util.concurrent.ConcurrentHashMap putIfAbsent (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='8' count='512' iicount='512' level='3' stamp='0.078' comment='tiered' hot_count='512'/>
+<nmethod compile_id='35' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787e6a40' size='1000' address='0x00007fae787e6890' relocation_offset='376' consts_offset='1000' insts_offset='432' method='jdk.internal.misc.Unsafe compareAndSetObject (Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z' bytes='0' count='640' iicount='640' stamp='0.078'/>
+<task_queued compile_id='36' method='java.util.concurrent.ConcurrentHashMap casTabAt ([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z' bytes='21' count='640' iicount='640' level='3' stamp='0.078' comment='tiered' hot_count='640'/>
+<writer thread='24143'/>
+<thread_logfile thread='24143' filename='/tmp/hs_c24143_pid24128.log'/>
+<writer thread='24142'/>
+<thread_logfile thread='24142' filename='/tmp/hs_c24142_pid24128.log'/>
+<writer thread='24144'/>
+<thread_logfile thread='24144' filename='/tmp/hs_c24144_pid24128.log'/>
+<writer thread='24129'/>
+<task_queued compile_id='37' method='java.util.ImmutableCollections$SetN size ()I' bytes='5' count='128' iicount='128' level='1' stamp='0.081' comment='tiered' hot_count='128'/>
+<task_queued compile_id='38' method='java.util.HashMap hash (Ljava/lang/Object;)I' bytes='20' count='640' iicount='640' level='3' stamp='0.083' comment='tiered' hot_count='640'/>
+<task_queued compile_id='39' method='java.util.AbstractCollection &lt;init&gt; ()V' bytes='5' count='512' iicount='512' level='3' stamp='0.084' comment='tiered' hot_count='512'/>
+<task_queued compile_id='40' method='java.lang.module.ModuleDescriptor$Exports source ()Ljava/lang/String;' bytes='5' count='128' iicount='128' level='1' stamp='0.085' comment='tiered' hot_count='128'/>
+<task_queued compile_id='41' method='java.util.HashMap put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='13' count='640' iicount='640' level='3' stamp='0.085' comment='tiered' hot_count='640'/>
+<task_queued compile_id='42' method='java.util.HashMap putVal (ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object;' bytes='300' count='640' backedge_count='23' iicount='640' level='3' stamp='0.085' comment='tiered' hot_count='640'/>
+<task_queued compile_id='43' method='java.util.HashMap$Node &lt;init&gt; (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V' bytes='26' count='640' iicount='640' level='3' stamp='0.085' comment='tiered' hot_count='640'/>
+<task_queued compile_id='44' method='java.util.HashMap newNode (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;' bytes='13' count='640' iicount='640' level='3' stamp='0.085' comment='tiered' hot_count='640'/>
+<task_queued compile_id='45' method='java.util.HashMap afterNodeInsertion (Z)V' bytes='1' count='640' iicount='640' level='3' stamp='0.085' comment='tiered' hot_count='640'/>
+<task_queued compile_id='46' method='java.util.HashMap getNode (ILjava/lang/Object;)Ljava/util/HashMap$Node;' bytes='148' count='640' backedge_count='18' iicount='640' level='3' stamp='0.086' comment='tiered' hot_count='640'/>
+<task_queued compile_id='47' method='java.util.Collections$EmptySet isEmpty ()Z' bytes='2' count='128' iicount='128' level='1' stamp='0.086' comment='tiered' hot_count='128'/>
+<task_queued compile_id='48' method='java.util.HashMap get (Ljava/lang/Object;)Ljava/lang/Object;' bytes='23' count='640' iicount='640' level='3' stamp='0.087' comment='tiered' hot_count='640'/>
+<task_queued compile_id='49' method='java.lang.module.ModuleDescriptor isAutomatic ()Z' bytes='5' count='128' iicount='128' level='1' stamp='0.087' comment='tiered' hot_count='128'/>
+<nmethod compile_id='50' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787e6e40' size='960' address='0x00007fae787e6c90' relocation_offset='376' consts_offset='960' insts_offset='432' method='java.lang.Object hashCode ()I' bytes='0' count='640' iicount='640' stamp='0.087'/>
+<task_queued compile_id='51' method='java.lang.module.ResolvedModule configuration ()Ljava/lang/module/Configuration;' bytes='5' count='128' iicount='128' level='1' stamp='0.088' comment='tiered' hot_count='128'/>
+<task_queued compile_id='52' method='java.util.ImmutableCollections$Set12$1 hasNext ()Z' bytes='13' count='640' iicount='640' level='3' stamp='0.089' comment='tiered' hot_count='640'/>
+<task_queued compile_id='53' method='java.lang.module.ModuleDescriptor isOpen ()Z' bytes='5' count='128' iicount='128' level='1' stamp='0.091' comment='tiered' hot_count='128'/>
+<writer thread='24140'/>
+<nmethod compile_id='2' compiler='c1' level='2' entry='0x00007fae713851c0' size='1056' address='0x00007fae71385010' relocation_offset='376' insts_offset='432' stub_offset='720' scopes_data_offset='872' scopes_pcs_offset='936' dependencies_offset='1032' nul_chk_table_offset='1040' metadata_offset='864' method='java.lang.StringLatin1 hashCode ([B)I' bytes='42' count='1122' backedge_count='28066' iicount='1122' stamp='0.091'/>
+<writer thread='24143'/>
+<nmethod compile_id='27' compiler='c1' level='3' entry='0x00007fae71385680' size='1856' address='0x00007fae71385490' relocation_offset='376' insts_offset='496' stub_offset='1328' scopes_data_offset='1528' scopes_pcs_offset='1616' dependencies_offset='1824' nul_chk_table_offset='1832' metadata_offset='1512' method='java.util.ImmutableCollections$SetN$SetNIterator next ()Ljava/lang/Object;' bytes='47' count='2475' backedge_count='2327' iicount='2475' stamp='0.091'/>
+<writer thread='24142'/>
+<nmethod compile_id='8' compiler='c1' level='3' entry='0x00007fae71385e20' size='2584' address='0x00007fae71385c10' relocation_offset='376' insts_offset='528' stub_offset='1904' scopes_data_offset='2112' scopes_pcs_offset='2288' dependencies_offset='2528' nul_chk_table_offset='2536' metadata_offset='2088' method='java.util.ImmutableCollections$SetN probe (Ljava/lang/Object;)I' bytes='56' count='2142' backedge_count='836' iicount='2142' stamp='0.092'/>
+<writer thread='24140'/>
+<nmethod compile_id='11' compiler='c1' level='3' entry='0x00007fae71386860' size='1376' address='0x00007fae71386690' relocation_offset='376' insts_offset='464' stub_offset='1008' scopes_data_offset='1160' scopes_pcs_offset='1216' dependencies_offset='1344' nul_chk_table_offset='1352' metadata_offset='1152' method='java.lang.StringLatin1 equals ([B[B)Z' bytes='36' count='1378' backedge_count='890' iicount='1378' stamp='0.092'/>
+<nmethod compile_id='1' compiler='c1' level='2' entry='0x00007fae71386dc0' size='856' address='0x00007fae71386c10' relocation_offset='376' insts_offset='432' stub_offset='624' scopes_data_offset='784' scopes_pcs_offset='800' dependencies_offset='848' metadata_offset='768' method='java.lang.Object &lt;init&gt; ()V' bytes='1' count='6668' iicount='6668' stamp='0.092'/>
+<writer thread='24143'/>
+<nmethod compile_id='24' compiler='c1' level='3' entry='0x00007fae713871a0' size='2616' address='0x00007fae71386f90' relocation_offset='376' insts_offset='528' stub_offset='1936' scopes_data_offset='2144' scopes_pcs_offset='2320' dependencies_offset='2560' nul_chk_table_offset='2568' metadata_offset='2120' method='java.util.ImmutableCollections$MapN probe (Ljava/lang/Object;)I' bytes='60' count='769' backedge_count='355' iicount='770' stamp='0.092'/>
+<writer thread='24144'/>
+<nmethod compile_id='30' compiler='c1' level='3' entry='0x00007fae71387da0' size='12424' address='0x00007fae71387a10' relocation_offset='376' insts_offset='912' stub_offset='9520' scopes_data_offset='9904' scopes_pcs_offset='11336' dependencies_offset='12056' handler_table_offset='12064' nul_chk_table_offset='12376' oops_offset='9832' metadata_offset='9840' method='java.util.concurrent.ConcurrentHashMap putVal (Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;' bytes='432' count='918' backedge_count='27' iicount='918' stamp='0.092'/>
+<writer thread='24140'/>
+<nmethod compile_id='20' compiler='c1' level='2' entry='0x00007fae7138acc0' size='880' address='0x00007fae7138ab10' relocation_offset='376' insts_offset='432' stub_offset='656' scopes_data_offset='808' scopes_pcs_offset='824' dependencies_offset='872' metadata_offset='800' method='java.util.ImmutableCollections$SetN$SetNIterator hasNext ()Z' bytes='13' count='5951' iicount='5951' stamp='0.092'/>
+<writer thread='24143'/>
+<nmethod compile_id='21' compiler='c1' level='3' entry='0x00007fae7138b040' size='1048' address='0x00007fae7138ae90' relocation_offset='376' insts_offset='432' stub_offset='752' scopes_data_offset='904' scopes_pcs_offset='936' dependencies_offset='1016' nul_chk_table_offset='1024' metadata_offset='896' method='java.util.ImmutableCollections$SetN$SetNIterator nextIndex ()I' bytes='56' count='5286' iicount='5286' stamp='0.093'/>
+<writer thread='24144'/>
+<nmethod compile_id='4' compiler='c1' level='2' entry='0x00007fae7138b4e0' size='1136' address='0x00007fae7138b310' relocation_offset='376' insts_offset='464' stub_offset='784' scopes_data_offset='976' scopes_pcs_offset='1016' dependencies_offset='1112' nul_chk_table_offset='1120' metadata_offset='968' method='java.lang.String hashCode ()I' bytes='49' count='5972' iicount='5972' stamp='0.093'/>
+<writer thread='24142'/>
+<nmethod compile_id='42' compiler='c1' level='3' entry='0x00007fae7138ba60' size='6696' address='0x00007fae7138b790' relocation_offset='376' insts_offset='720' stub_offset='5232' scopes_data_offset='5552' scopes_pcs_offset='6088' dependencies_offset='6584' nul_chk_table_offset='6592' metadata_offset='5544' method='java.util.HashMap putVal (ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object;' bytes='300' count='1577' backedge_count='76' iicount='1577' stamp='0.093'/>
+<writer thread='24143'/>
+<nmethod compile_id='38' compiler='c1' level='3' entry='0x00007fae7138d3e0' size='1216' address='0x00007fae7138d210' relocation_offset='376' insts_offset='464' stub_offset='912' scopes_data_offset='1088' scopes_pcs_offset='1112' dependencies_offset='1192' nul_chk_table_offset='1200' metadata_offset='1080' method='java.util.HashMap hash (Ljava/lang/Object;)I' bytes='20' count='2510' iicount='2510' stamp='0.093'/>
+<writer thread='24129'/>
+<task_queued compile_id='54' method='java.lang.Module getDescriptor ()Ljava/lang/module/ModuleDescriptor;' bytes='5' count='128' iicount='128' level='1' stamp='0.093' comment='tiered' hot_count='128'/>
+<writer thread='24140'/>
+<nmethod compile_id='46' compiler='c1' level='3' entry='0x00007fae7138d940' size='3664' address='0x00007fae7138d710' relocation_offset='376' insts_offset='560' stub_offset='2960' scopes_data_offset='3168' scopes_pcs_offset='3344' dependencies_offset='3600' nul_chk_table_offset='3608' metadata_offset='3160' method='java.util.HashMap getNode (ILjava/lang/Object;)Ljava/util/HashMap$Node;' bytes='148' count='927' backedge_count='21' iicount='927' stamp='0.093'/>
+<writer thread='24143'/>
+<nmethod compile_id='45' compiler='c1' level='3' entry='0x00007fae7138e740' size='848' address='0x00007fae7138e590' relocation_offset='376' insts_offset='432' stub_offset='624' scopes_data_offset='776' scopes_pcs_offset='792' dependencies_offset='840' metadata_offset='768' method='java.util.HashMap afterNodeInsertion (Z)V' bytes='1' count='1607' iicount='1607' stamp='0.093'/>
+<writer thread='24144'/>
+<nmethod compile_id='43' compiler='c1' level='3' entry='0x00007fae7138eae0' size='1352' address='0x00007fae7138e910' relocation_offset='376' insts_offset='464' stub_offset='1072' scopes_data_offset='1240' scopes_pcs_offset='1280' dependencies_offset='1344' metadata_offset='1216' method='java.util.HashMap$Node &lt;init&gt; (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V' bytes='26' count='1630' iicount='1630' stamp='0.093'/>
+<writer thread='24142'/>
+<nmethod compile_id='44' compiler='c1' level='3' entry='0x00007fae7138f060' size='1640' address='0x00007fae7138ee90' relocation_offset='376' insts_offset='464' stub_offset='1264' scopes_data_offset='1432' scopes_pcs_offset='1536' dependencies_offset='1632' metadata_offset='1408' method='java.util.HashMap newNode (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;' bytes='13' count='1689' iicount='1690' stamp='0.094'/>
+<writer thread='24140'/>
+<nmethod compile_id='5' compiler='c1' level='3' entry='0x00007fae7138f6c0' size='912' address='0x00007fae7138f510' relocation_offset='376' insts_offset='432' stub_offset='688' scopes_data_offset='840' scopes_pcs_offset='856' dependencies_offset='904' metadata_offset='832' method='java.lang.String coder ()B' bytes='15' count='3726' iicount='3726' stamp='0.094'/>
+<writer thread='24129'/>
+<task_queued compile_id='55' method='java.util.ImmutableCollections$SetN$SetNIterator nextIndex ()I' bytes='56' count='5632' iicount='5632' stamp='0.094' comment='tiered' hot_count='5632'/>
+<writer thread='24143'/>
+<nmethod compile_id='3' compiler='c1' level='3' entry='0x00007fae7138fac0' size='976' address='0x00007fae7138f910' relocation_offset='376' insts_offset='432' stub_offset='752' scopes_data_offset='904' scopes_pcs_offset='920' dependencies_offset='968' metadata_offset='896' method='java.lang.String isLatin1 ()Z' bytes='19' count='3229' iicount='3229' stamp='0.094'/>
+<writer thread='24129'/>
+<task_queued compile_id='56' method='jdk.internal.module.ModuleBootstrap$2 next ()Ljava/lang/Object;' bytes='52' count='512' iicount='512' level='3' stamp='0.094' comment='tiered' hot_count='512'/>
+<writer thread='24144'/>
+<nmethod compile_id='6' compiler='c1' level='3' entry='0x00007fae7138fec0' size='1208' address='0x00007fae7138fd10' relocation_offset='376' insts_offset='432' stub_offset='880' scopes_data_offset='1040' scopes_pcs_offset='1104' dependencies_offset='1184' nul_chk_table_offset='1192' metadata_offset='1024' method='java.lang.Math floorMod (II)I' bytes='10' count='3200' iicount='3200' stamp='0.094'/>
+<writer thread='24129'/>
+<task_queued compile_id='57' method='java.util.HashMap putIfAbsent (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='13' count='512' iicount='512' level='3' stamp='0.094' comment='tiered' hot_count='512'/>
+<nmethod compile_id='58' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787e7240' size='944' address='0x00007fae787e7090' relocation_offset='376' consts_offset='944' insts_offset='432' method='java.lang.Module addExportsToAllUnnamed0 (Ljava/lang/Module;Ljava/lang/String;)V' bytes='0' count='512' iicount='512' stamp='0.094'/>
+<writer thread='24142'/>
+<nmethod compile_id='7' compiler='c1' level='3' entry='0x00007fae713903c0' size='1024' address='0x00007fae71390210' relocation_offset='376' insts_offset='432' stub_offset='752' scopes_data_offset='904' scopes_pcs_offset='936' dependencies_offset='1000' nul_chk_table_offset='1008' metadata_offset='896' method='java.lang.Math floorDiv (II)I' bytes='22' count='3200' iicount='3200' stamp='0.094'/>
+<writer thread='24143'/>
+<nmethod compile_id='52' compiler='c1' level='3' entry='0x00007fae71390840' size='944' address='0x00007fae71390690' relocation_offset='376' insts_offset='432' stub_offset='720' scopes_data_offset='872' scopes_pcs_offset='888' dependencies_offset='936' metadata_offset='864' method='java.util.ImmutableCollections$Set12$1 hasNext ()Z' bytes='13' count='823' iicount='823' stamp='0.094'/>
+<writer thread='24129'/>
+<task_queued compile_id='59' method='jdk.internal.module.ModuleBootstrap$2 hasNext ()Z' bytes='30' count='640' iicount='640' level='3' stamp='0.094' comment='tiered' hot_count='640'/>
+<writer thread='24142'/>
+<nmethod compile_id='15' compiler='c1' level='1' entry='0x00007fae787e7640' size='752' address='0x00007fae787e7490' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.module.ModuleReference descriptor ()Ljava/lang/module/ModuleDescriptor;' bytes='5' count='1130' iicount='1130' stamp='0.094'/>
+<writer thread='24144'/>
+<nmethod compile_id='41' compiler='c1' level='3' entry='0x00007fae71390c60' size='1584' address='0x00007fae71390a90' relocation_offset='376' insts_offset='464' stub_offset='1136' scopes_data_offset='1336' scopes_pcs_offset='1448' dependencies_offset='1560' nul_chk_table_offset='1568' metadata_offset='1320' method='java.util.HashMap put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='13' count='1202' iicount='1202' stamp='0.094'/>
+<writer thread='24143'/>
+<nmethod compile_id='13' compiler='c1' level='3' entry='0x00007fae713912e0' size='1192' address='0x00007fae71391110' relocation_offset='376' insts_offset='464' stub_offset='880' scopes_data_offset='1056' scopes_pcs_offset='1088' dependencies_offset='1184' metadata_offset='1048' method='java.util.Objects requireNonNull (Ljava/lang/Object;)Ljava/lang/Object;' bytes='14' count='2512' iicount='2512' stamp='0.094'/>
+<writer thread='24140'/>
+<nmethod compile_id='10' compiler='c1' level='3' entry='0x00007fae71391820' size='2560' address='0x00007fae71391610' relocation_offset='376' insts_offset='528' stub_offset='2064' scopes_data_offset='2272' scopes_pcs_offset='2376' dependencies_offset='2536' nul_chk_table_offset='2544' metadata_offset='2248' method='java.lang.String equals (Ljava/lang/Object;)Z' bytes='65' count='2050' iicount='2050' stamp='0.094'/>
+<writer thread='24144'/>
+<nmethod compile_id='14' compiler='c1' level='1' entry='0x00007fae787e7940' size='752' address='0x00007fae787e7790' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.module.ModuleDescriptor name ()Ljava/lang/String;' bytes='5' count='839' iicount='839' stamp='0.095'/>
+<writer thread='24142'/>
+<nmethod compile_id='48' compiler='c1' level='3' entry='0x00007fae71392280' size='1696' address='0x00007fae71392090' relocation_offset='376' insts_offset='496' stub_offset='1232' scopes_data_offset='1432' scopes_pcs_offset='1536' dependencies_offset='1664' nul_chk_table_offset='1672' metadata_offset='1416' method='java.util.HashMap get (Ljava/lang/Object;)Ljava/lang/Object;' bytes='23' count='823' iicount='823' stamp='0.095'/>
+<writer thread='24144'/>
+<nmethod compile_id='26' compiler='c1' level='1' entry='0x00007fae787e7c40' size='752' address='0x00007fae787e7a90' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.module.ResolvedModule reference ()Ljava/lang/module/ModuleReference;' bytes='5' count='625' iicount='625' stamp='0.095'/>
+<writer thread='24143'/>
+<nmethod compile_id='56' compiler='c1' level='3' entry='0x00007fae713929a0' size='2328' address='0x00007fae71392790' relocation_offset='376' insts_offset='528' stub_offset='1744' scopes_data_offset='1984' scopes_pcs_offset='2056' dependencies_offset='2280' nul_chk_table_offset='2288' metadata_offset='1976' method='jdk.internal.module.ModuleBootstrap$2 next ()Ljava/lang/Object;' bytes='52' count='582' iicount='582' stamp='0.095'/>
+<writer thread='24140'/>
+<nmethod compile_id='57' compiler='c1' level='3' entry='0x00007fae713932e0' size='1584' address='0x00007fae71393110' relocation_offset='376' insts_offset='464' stub_offset='1136' scopes_data_offset='1336' scopes_pcs_offset='1448' dependencies_offset='1560' nul_chk_table_offset='1568' metadata_offset='1320' method='java.util.HashMap putIfAbsent (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='13' count='582' iicount='582' stamp='0.095'/>
+<writer thread='24139'/>
+<nmethod compile_id='55' compiler='c2' level='4' entry='0x00007fae787e7f20' size='680' address='0x00007fae787e7d90' relocation_offset='376' insts_offset='400' stub_offset='528' scopes_data_offset='560' scopes_pcs_offset='584' dependencies_offset='648' nul_chk_table_offset='656' metadata_offset='552' method='java.util.ImmutableCollections$SetN$SetNIterator nextIndex ()I' bytes='56' count='5774' iicount='5774' stamp='0.095'/>
+<make_not_entrant thread='24139' compile_id='21' compiler='c1' level='3' stamp='0.095'/>
+<writer thread='24143'/>
+<nmethod compile_id='40' compiler='c1' level='1' entry='0x00007fae787e8240' size='752' address='0x00007fae787e8090' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.module.ModuleDescriptor$Exports source ()Ljava/lang/String;' bytes='5' count='354' iicount='354' stamp='0.095'/>
+<writer thread='24144'/>
+<nmethod compile_id='25' compiler='c1' level='3' entry='0x00007fae71393960' size='1344' address='0x00007fae71393790' relocation_offset='376' insts_offset='464' stub_offset='1040' scopes_data_offset='1216' scopes_pcs_offset='1240' dependencies_offset='1320' nul_chk_table_offset='1328' metadata_offset='1208' method='java.util.Objects equals (Ljava/lang/Object;Ljava/lang/Object;)Z' bytes='23' count='874' iicount='874' stamp='0.095'/>
+<writer thread='24140'/>
+<nmethod compile_id='12' compiler='c1' level='3' entry='0x00007fae71393ec0' size='840' address='0x00007fae71393d10' relocation_offset='376' insts_offset='432' stub_offset='624' scopes_data_offset='776' scopes_pcs_offset='784' dependencies_offset='832' metadata_offset='768' method='java.util.Collections emptySet ()Ljava/util/Set;' bytes='4' count='592' iicount='592' stamp='0.095'/>
+<writer thread='24143'/>
+<nmethod compile_id='37' compiler='c1' level='1' entry='0x00007fae787e8540' size='752' address='0x00007fae787e8390' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.util.ImmutableCollections$SetN size ()I' bytes='5' count='431' iicount='431' stamp='0.096'/>
+<writer thread='24144'/>
+<nmethod compile_id='47' compiler='c1' level='1' entry='0x00007fae787e8840' size='752' address='0x00007fae787e8690' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.util.Collections$EmptySet isEmpty ()Z' bytes='2' count='229' iicount='229' stamp='0.096'/>
+<writer thread='24140'/>
+<nmethod compile_id='33' compiler='c1' level='3' entry='0x00007fae71394240' size='1224' address='0x00007fae71394090' relocation_offset='376' insts_offset='432' stub_offset='944' scopes_data_offset='1112' scopes_pcs_offset='1152' dependencies_offset='1216' metadata_offset='1088' method='java.util.concurrent.ConcurrentHashMap$Node &lt;init&gt; (ILjava/lang/Object;Ljava/lang/Object;)V' bytes='20' count='921' iicount='921' stamp='0.096'/>
+<writer thread='24143'/>
+<nmethod compile_id='34' compiler='c1' level='3' entry='0x00007fae71394740' size='944' address='0x00007fae71394590' relocation_offset='376' insts_offset='432' stub_offset='656' scopes_data_offset='840' scopes_pcs_offset='872' dependencies_offset='936' metadata_offset='824' method='java.util.concurrent.ConcurrentHashMap putIfAbsent (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='8' count='858' iicount='858' stamp='0.096'/>
+<writer thread='24144'/>
+<nmethod compile_id='36' compiler='c1' level='3' entry='0x00007fae71394b40' size='984' address='0x00007fae71394990' relocation_offset='376' insts_offset='432' stub_offset='752' scopes_data_offset='904' scopes_pcs_offset='928' dependencies_offset='976' metadata_offset='896' method='java.util.concurrent.ConcurrentHashMap casTabAt ([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z' bytes='21' count='776' iicount='776' stamp='0.096'/>
+<writer thread='24140'/>
+<nmethod compile_id='22' compiler='c1' level='1' entry='0x00007fae787e8b40' size='752' address='0x00007fae787e8990' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.util.KeyValueHolder getKey ()Ljava/lang/Object;' bytes='5' count='372' iicount='372' stamp='0.096'/>
+<writer thread='24144'/>
+<nmethod compile_id='19' compiler='c1' level='3' entry='0x00007fae71394f40' size='952' address='0x00007fae71394d90' relocation_offset='376' insts_offset='432' stub_offset='720' scopes_data_offset='872' scopes_pcs_offset='896' dependencies_offset='944' metadata_offset='864' method='jdk.internal.misc.Unsafe getObjectAcquire (Ljava/lang/Object;J)Ljava/lang/Object;' bytes='7' count='1499' iicount='1499' stamp='0.096'/>
+<writer thread='24143'/>
+<nmethod compile_id='18' compiler='c1' level='3' entry='0x00007fae71395360' size='1440' address='0x00007fae71395190' relocation_offset='376' insts_offset='464' stub_offset='1136' scopes_data_offset='1304' scopes_pcs_offset='1352' dependencies_offset='1432' oops_offset='1280' metadata_offset='1288' method='java.util.concurrent.ConcurrentHashMap tabAt ([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;' bytes='22' count='1499' iicount='1499' stamp='0.096'/>
+<writer thread='24140'/>
+<nmethod compile_id='23' compiler='c1' level='1' entry='0x00007fae787e8e40' size='752' address='0x00007fae787e8c90' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.util.KeyValueHolder getValue ()Ljava/lang/Object;' bytes='5' count='312' iicount='312' stamp='0.096'/>
+<writer thread='24142'/>
+<nmethod compile_id='31' compiler='c1' level='3' entry='0x00007fae713959e0' size='3792' address='0x00007fae71395790' relocation_offset='376' insts_offset='592' stub_offset='2864' scopes_data_offset='3152' scopes_pcs_offset='3480' dependencies_offset='3752' nul_chk_table_offset='3760' metadata_offset='3128' method='java.util.concurrent.ConcurrentHashMap addCount (JI)V' bytes='289' count='914' backedge_count='4' iicount='914' stamp='0.097'/>
+<writer thread='24143'/>
+<nmethod compile_id='29' compiler='c1' level='3' entry='0x00007fae71396840' size='848' address='0x00007fae71396690' relocation_offset='376' insts_offset='432' stub_offset='624' scopes_data_offset='776' scopes_pcs_offset='792' dependencies_offset='840' metadata_offset='768' method='java.util.concurrent.ConcurrentHashMap spread (I)I' bytes='10' count='1037' iicount='1037' stamp='0.097'/>
+<writer thread='24144'/>
+<nmethod compile_id='49' compiler='c1' level='1' entry='0x00007fae787e9140' size='752' address='0x00007fae787e8f90' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.module.ModuleDescriptor isAutomatic ()Z' bytes='5' count='180' iicount='180' stamp='0.097'/>
+<writer thread='24140'/>
+<nmethod compile_id='59' compiler='c1' level='3' entry='0x00007fae71396be0' size='1576' address='0x00007fae71396a10' relocation_offset='376' insts_offset='464' stub_offset='1200' scopes_data_offset='1392' scopes_pcs_offset='1432' dependencies_offset='1544' nul_chk_table_offset='1552' metadata_offset='1384' method='jdk.internal.module.ModuleBootstrap$2 hasNext ()Z' bytes='30' count='642' iicount='642' stamp='0.097'/>
+<writer thread='24144'/>
+<nmethod compile_id='54' compiler='c1' level='1' entry='0x00007fae787e9440' size='752' address='0x00007fae787e9290' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.Module getDescriptor ()Ljava/lang/module/ModuleDescriptor;' bytes='5' count='142' iicount='142' stamp='0.097'/>
+<writer thread='24143'/>
+<nmethod compile_id='53' compiler='c1' level='1' entry='0x00007fae787e9740' size='752' address='0x00007fae787e9590' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.module.ModuleDescriptor isOpen ()Z' bytes='5' count='180' iicount='180' stamp='0.097'/>
+<writer thread='24142'/>
+<nmethod compile_id='39' compiler='c1' level='3' entry='0x00007fae71397240' size='992' address='0x00007fae71397090' relocation_offset='376' insts_offset='432' stub_offset='720' scopes_data_offset='888' scopes_pcs_offset='920' dependencies_offset='984' metadata_offset='864' method='java.util.AbstractCollection &lt;init&gt; ()V' bytes='5' count='753' iicount='753' stamp='0.097'/>
+<writer thread='24140'/>
+<nmethod compile_id='9' compiler='c1' level='1' entry='0x00007fae787e9a40' size='752' address='0x00007fae787e9890' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.util.Collections$EmptySet hashCode ()I' bytes='2' count='202' iicount='202' stamp='0.097'/>
+<writer thread='24144'/>
+<nmethod compile_id='51' compiler='c1' level='1' entry='0x00007fae787e9d40' size='752' address='0x00007fae787e9b90' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.module.ResolvedModule configuration ()Ljava/lang/module/Configuration;' bytes='5' count='145' iicount='145' stamp='0.097'/>
+<writer thread='24143'/>
+<nmethod compile_id='17' compiler='c1' level='3' entry='0x00007fae71397660' size='1240' address='0x00007fae71397490' relocation_offset='376' insts_offset='464' stub_offset='880' scopes_data_offset='1056' scopes_pcs_offset='1104' dependencies_offset='1216' nul_chk_table_offset='1224' metadata_offset='1048' method='java.lang.StringLatin1 charAt ([BI)C' bytes='28' count='408' iicount='408' stamp='0.097'/>
+<writer thread='24129'/>
+<task_queued compile_id='60' method='java.lang.String length ()I' bytes='11' count='384' iicount='384' level='3' stamp='0.097' comment='tiered' hot_count='384'/>
+<writer thread='24142'/>
+<nmethod compile_id='16' compiler='c1' level='3' entry='0x00007fae71397b80' size='1840' address='0x00007fae71397990' relocation_offset='376' insts_offset='496' stub_offset='1360' scopes_data_offset='1568' scopes_pcs_offset='1656' dependencies_offset='1816' nul_chk_table_offset='1824' metadata_offset='1544' method='java.lang.String charAt (I)C' bytes='25' count='430' iicount='430' stamp='0.098'/>
+<writer thread='24143'/>
+<nmethod compile_id='60' compiler='c1' level='3' entry='0x00007fae713982c0' size='1088' address='0x00007fae71398110' relocation_offset='376' insts_offset='432' stub_offset='784' scopes_data_offset='944' scopes_pcs_offset='984' dependencies_offset='1064' nul_chk_table_offset='1072' metadata_offset='928' method='java.lang.String length ()I' bytes='11' count='422' iicount='422' stamp='0.098'/>
+<writer thread='24129'/>
+<task_queued compile_id='61' method='java.lang.StringLatin1 indexOf ([BII)I' bytes='61' count='186' backedge_count='2048' iicount='186' level='3' stamp='0.098' comment='tiered' hot_count='186'/>
+<writer thread='24143'/>
+<nmethod compile_id='61' compiler='c1' level='3' entry='0x00007fae71398760' size='1760' address='0x00007fae71398590' relocation_offset='376' insts_offset='464' stub_offset='1360' scopes_data_offset='1520' scopes_pcs_offset='1608' dependencies_offset='1736' nul_chk_table_offset='1744' metadata_offset='1504' method='java.lang.StringLatin1 indexOf ([BII)I' bytes='61' count='186' backedge_count='2065' iicount='186' stamp='0.098'/>
+<writer thread='24129'/>
+<task_queued compile_id='62' method='java.util.zip.ZipUtils SH ([BI)I' bytes='21' count='256' iicount='256' level='3' stamp='0.120' comment='tiered' hot_count='256'/>
+<writer thread='24140'/>
+<nmethod compile_id='62' compiler='c1' level='3' entry='0x00007fae71398e40' size='1016' address='0x00007fae71398c90' relocation_offset='376' insts_offset='432' stub_offset='688' scopes_data_offset='840' scopes_pcs_offset='872' dependencies_offset='984' nul_chk_table_offset='992' metadata_offset='832' method='java.util.zip.ZipUtils SH ([BI)I' bytes='21' count='257' iicount='257' stamp='0.120'/>
+<writer thread='24129'/>
+<task_queued compile_id='63' method='java.util.HashSet add (Ljava/lang/Object;)Z' bytes='20' count='512' iicount='512' level='3' stamp='0.121' comment='tiered' hot_count='512'/>
+<writer thread='24144'/>
+<nmethod compile_id='63' compiler='c1' level='3' entry='0x00007fae71399300' size='2032' address='0x00007fae71399110' relocation_offset='376' insts_offset='496' stub_offset='1520' scopes_data_offset='1736' scopes_pcs_offset='1856' dependencies_offset='2000' nul_chk_table_offset='2008' oops_offset='1704' metadata_offset='1712' method='java.util.HashSet add (Ljava/lang/Object;)Z' bytes='20' count='512' iicount='512' stamp='0.121'/>
+<writer thread='24129'/>
+<nmethod compile_id='64' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787ea040' size='960' address='0x00007fae787e9e90' relocation_offset='376' consts_offset='960' insts_offset='432' method='java.lang.System arraycopy (Ljava/lang/Object;ILjava/lang/Object;II)V' bytes='0' count='512' iicount='512' stamp='0.123'/>
+<nmethod compile_id='65' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787ea420' size='432' address='0x00007fae787ea290' relocation_offset='376' consts_offset='432' insts_offset='400' method='java.lang.invoke.MethodHandle linkToStatic (Ljava/lang/Object;Ljava/lang/Object;IILjava/lang/invoke/MemberName;)I' bytes='0' count='0' iicount='0' stamp='0.124'/>
+<task_queued compile_id='66' method='java.lang.AbstractStringBuilder ensureCapacityInternal (I)V' bytes='39' count='256' iicount='256' level='3' stamp='0.125' comment='tiered' hot_count='256'/>
+<task_queued compile_id='67' method='java.lang.Math min (II)I' bytes='11' count='384' iicount='384' level='3' stamp='0.125' comment='tiered' hot_count='384'/>
+<writer thread='24142'/>
+<nmethod compile_id='67' compiler='c1' level='3' entry='0x00007fae71399ac0' size='912' address='0x00007fae71399910' relocation_offset='376' insts_offset='432' stub_offset='688' scopes_data_offset='840' scopes_pcs_offset='856' dependencies_offset='904' metadata_offset='832' method='java.lang.Math min (II)I' bytes='11' count='384' iicount='384' stamp='0.125'/>
+<writer thread='24143'/>
+<nmethod compile_id='66' compiler='c1' level='3' entry='0x00007fae71399f00' size='2072' address='0x00007fae71399d10' relocation_offset='376' insts_offset='496' stub_offset='1552' scopes_data_offset='1760' scopes_pcs_offset='1904' dependencies_offset='2048' nul_chk_table_offset='2056' metadata_offset='1736' method='java.lang.AbstractStringBuilder ensureCapacityInternal (I)V' bytes='39' count='256' iicount='256' stamp='0.126'/>
+<writer thread='24129'/>
+<task_queued compile_id='68' method='java.util.AbstractMap &lt;init&gt; ()V' bytes='5' count='384' iicount='384' level='3' stamp='0.127' comment='tiered' hot_count='384'/>
+<writer thread='24140'/>
+<nmethod compile_id='68' compiler='c1' level='3' entry='0x00007fae7139a740' size='992' address='0x00007fae7139a590' relocation_offset='376' insts_offset='432' stub_offset='720' scopes_data_offset='888' scopes_pcs_offset='920' dependencies_offset='984' metadata_offset='864' method='java.util.AbstractMap &lt;init&gt; ()V' bytes='5' count='384' iicount='384' stamp='0.127'/>
+<writer thread='24129'/>
+<task_queued compile_id='69' method='java.lang.StringLatin1 canEncode (I)Z' bytes='13' count='446' iicount='446' level='3' stamp='0.128' comment='tiered' hot_count='446'/>
+<writer thread='24144'/>
+<nmethod compile_id='69' compiler='c1' level='3' entry='0x00007fae7139ab40' size='912' address='0x00007fae7139a990' relocation_offset='376' insts_offset='432' stub_offset='688' scopes_data_offset='840' scopes_pcs_offset='856' dependencies_offset='904' metadata_offset='832' method='java.lang.StringLatin1 canEncode (I)Z' bytes='13' count='469' iicount='470' stamp='0.128'/>
+<writer thread='24129'/>
+<task_queued compile_id='70' method='java.lang.CharacterData of (I)Ljava/lang/CharacterData;' bytes='120' count='256' iicount='256' level='3' stamp='0.128' comment='tiered' hot_count='256'/>
+<writer thread='24142'/>
+<nmethod compile_id='70' compiler='c1' level='3' entry='0x00007fae7139afa0' size='2928' address='0x00007fae7139ad90' relocation_offset='376' insts_offset='528' stub_offset='2320' scopes_data_offset='2472' scopes_pcs_offset='2528' dependencies_offset='2864' nul_chk_table_offset='2872' metadata_offset='2464' method='java.lang.CharacterData of (I)Ljava/lang/CharacterData;' bytes='120' count='267' iicount='267' stamp='0.128'/>
+<writer thread='24129'/>
+<task_queued compile_id='71' method='sun.nio.fs.UnixPath checkNotNul (Ljava/lang/String;C)V' bytes='16' count='256' iicount='256' level='3' stamp='0.130' comment='tiered' hot_count='256'/>
+<writer thread='24143'/>
+<nmethod compile_id='71' compiler='c1' level='3' entry='0x00007fae7139bae0' size='1136' address='0x00007fae7139b910' relocation_offset='376' insts_offset='464' stub_offset='816' scopes_data_offset='992' scopes_pcs_offset='1032' dependencies_offset='1128' metadata_offset='984' method='sun.nio.fs.UnixPath checkNotNul (Ljava/lang/String;C)V' bytes='16' count='338' iicount='338' stamp='0.130'/>
+<writer thread='24129'/>
+<task_queued compile_id='72' method='java.lang.String indexOf (II)I' bytes='29' count='256' iicount='256' level='3' stamp='0.132' comment='tiered' hot_count='256'/>
+<writer thread='24140'/>
+<nmethod compile_id='72' compiler='c1' level='3' entry='0x00007fae7139bf60' size='1368' address='0x00007fae7139bd90' relocation_offset='376' insts_offset='464' stub_offset='1008' scopes_data_offset='1208' scopes_pcs_offset='1264' dependencies_offset='1360' metadata_offset='1192' method='java.lang.String indexOf (II)I' bytes='29' count='265' iicount='265' stamp='0.133'/>
+<writer thread='24129'/>
+<task_queued compile_id='73' method='java.lang.String indexOf (I)I' bytes='7' count='256' iicount='256' level='3' stamp='0.133' comment='tiered' hot_count='256'/>
+<task_queued compile_id='74' method='java.lang.CharacterDataLatin1 getProperties (I)I' bytes='11' count='256' iicount='256' level='3' stamp='0.133' comment='tiered' hot_count='256'/>
+<writer thread='24144'/>
+<nmethod compile_id='73' compiler='c1' level='3' entry='0x00007fae7139c500' size='1544' address='0x00007fae7139c310' relocation_offset='376' insts_offset='496' stub_offset='1136' scopes_data_offset='1344' scopes_pcs_offset='1424' dependencies_offset='1536' metadata_offset='1320' method='java.lang.String indexOf (I)I' bytes='7' count='263' iicount='263' stamp='0.133'/>
+<writer thread='24142'/>
+<nmethod compile_id='74' compiler='c1' level='3' entry='0x00007fae7139cb40' size='1000' address='0x00007fae7139c990' relocation_offset='376' insts_offset='432' stub_offset='688' scopes_data_offset='840' scopes_pcs_offset='872' dependencies_offset='968' nul_chk_table_offset='976' metadata_offset='832' method='java.lang.CharacterDataLatin1 getProperties (I)I' bytes='11' count='261' iicount='261' stamp='0.133'/>
+<writer thread='24129'/>
+<task_queued compile_id='75' method='java.lang.System getSecurityManager ()Ljava/lang/SecurityManager;' bytes='4' count='256' iicount='256' level='3' stamp='0.134' comment='tiered' hot_count='256'/>
+<writer thread='24143'/>
+<nmethod compile_id='75' compiler='c1' level='3' entry='0x00007fae7139cf40' size='840' address='0x00007fae7139cd90' relocation_offset='376' insts_offset='432' stub_offset='624' scopes_data_offset='776' scopes_pcs_offset='784' dependencies_offset='832' metadata_offset='768' method='java.lang.System getSecurityManager ()Ljava/lang/SecurityManager;' bytes='4' count='257' iicount='257' stamp='0.135'/>
+<writer thread='24129'/>
+<task_queued compile_id='76' method='java.lang.StringLatin1 lastIndexOf ([BII)I' bytes='40' count='113' backedge_count='2048' iicount='113' level='3' stamp='0.135' comment='tiered' hot_count='113'/>
+<writer thread='24140'/>
+<nmethod compile_id='76' compiler='c1' level='3' entry='0x00007fae7139d2e0' size='1792' address='0x00007fae7139d110' relocation_offset='376' insts_offset='464' stub_offset='1360' scopes_data_offset='1528' scopes_pcs_offset='1624' dependencies_offset='1768' nul_chk_table_offset='1776' metadata_offset='1504' method='java.lang.StringLatin1 lastIndexOf ([BII)I' bytes='40' count='118' backedge_count='2314' iicount='118' stamp='0.136'/>
+<writer thread='24129'/>
+<task_queued compile_id='77' method='java.lang.Object &lt;init&gt; ()V' bytes='1' count='8585' iicount='8585' level='1' stamp='0.137' comment='tiered' hot_count='8585'/>
+<writer thread='24144'/>
+<nmethod compile_id='77' compiler='c1' level='1' entry='0x00007fae787ea640' size='760' address='0x00007fae787ea490' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='712' scopes_pcs_offset='720' dependencies_offset='752' metadata_offset='704' method='java.lang.Object &lt;init&gt; ()V' bytes='1' count='8586' iicount='8586' stamp='0.137'/>
+<make_not_entrant thread='24144' compile_id='1' compiler='c1' level='2' stamp='0.137'/>
+<writer thread='24129'/>
+<nmethod compile_id='78' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787ea9a0' size='440' address='0x00007fae787ea810' relocation_offset='376' consts_offset='440' insts_offset='400' method='java.lang.invoke.MethodHandle linkToStatic (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/invoke/MemberName;)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='0.139'/>
+<task_queued compile_id='79' method='java.lang.Enum ordinal ()I' bytes='5' count='128' iicount='128' level='1' stamp='0.141' comment='tiered' hot_count='128'/>
+<writer thread='24142'/>
+<nmethod compile_id='79' compiler='c1' level='1' entry='0x00007fae787eabc0' size='752' address='0x00007fae787eaa10' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.Enum ordinal ()I' bytes='5' count='135' iicount='135' stamp='0.142'/>
+<writer thread='24129'/>
+<nmethod compile_id='80' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787eaea0' size='432' address='0x00007fae787ead10' relocation_offset='376' consts_offset='432' insts_offset='400' method='java.lang.invoke.MethodHandle linkToStatic (IILjava/lang/invoke/MemberName;)I' bytes='0' count='0' iicount='0' stamp='0.142'/>
+<task_queued compile_id='81' method='java.util.concurrent.ConcurrentHashMap get (Ljava/lang/Object;)Ljava/lang/Object;' bytes='162' count='256' backedge_count='5' iicount='256' level='3' stamp='0.143' comment='tiered' hot_count='256'/>
+<nmethod compile_id='82' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787eb0a0' size='448' address='0x00007fae787eaf10' relocation_offset='376' consts_offset='448' insts_offset='400' method='java.lang.invoke.MethodHandle invokeBasic (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='0.143'/>
+<nmethod compile_id='83' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787eb2a0' size='440' address='0x00007fae787eb110' relocation_offset='376' consts_offset='440' insts_offset='400' method='java.lang.invoke.MethodHandle linkToSpecial (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/invoke/MemberName;)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='0.143'/>
+<writer thread='24143'/>
+<nmethod compile_id='81' compiler='c1' level='3' entry='0x00007fae7139db00' size='4944' address='0x00007fae7139d890' relocation_offset='376' insts_offset='624' stub_offset='3888' scopes_data_offset='4144' scopes_pcs_offset='4512' dependencies_offset='4880' nul_chk_table_offset='4888' oops_offset='4104' metadata_offset='4112' method='java.util.concurrent.ConcurrentHashMap get (Ljava/lang/Object;)Ljava/lang/Object;' bytes='162' count='265' backedge_count='5' iicount='265' stamp='0.144'/>
+<writer thread='24129'/>
+<task_queued compile_id='84' method='java.lang.String &lt;init&gt; ([BB)V' bytes='15' count='256' iicount='256' level='3' stamp='0.147' comment='tiered' hot_count='256'/>
+<writer thread='24140'/>
+<nmethod compile_id='84' compiler='c1' level='3' entry='0x00007fae7139edc0' size='1080' address='0x00007fae7139ec10' relocation_offset='376' insts_offset='432' stub_offset='816' scopes_data_offset='976' scopes_pcs_offset='1008' dependencies_offset='1072' metadata_offset='960' method='java.lang.String &lt;init&gt; ([BB)V' bytes='15' count='257' iicount='257' stamp='0.147'/>
+<writer thread='24129'/>
+<task_queued compile_id='85' method='java.lang.Class getClassLoader0 ()Ljava/lang/ClassLoader;' bytes='5' count='128' iicount='128' level='1' stamp='0.148' comment='tiered' hot_count='128'/>
+<nmethod compile_id='86' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787eb4a0' size='432' address='0x00007fae787eb310' relocation_offset='376' consts_offset='432' insts_offset='400' method='java.lang.invoke.MethodHandle linkToStatic (ILjava/lang/invoke/MemberName;)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='0.148'/>
+<writer thread='24144'/>
+<nmethod compile_id='85' compiler='c1' level='1' entry='0x00007fae787eb6c0' size='752' address='0x00007fae787eb510' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.Class getClassLoader0 ()Ljava/lang/ClassLoader;' bytes='5' count='132' iicount='132' stamp='0.148'/>
+<writer thread='24129'/>
+<nmethod compile_id='87' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787eb9a0' size='448' address='0x00007fae787eb810' relocation_offset='376' consts_offset='448' insts_offset='400' method='java.lang.invoke.MethodHandle invokeBasic (I)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='0.148'/>
+<task_queued compile_id='88' method='java.lang.invoke.MethodType$ConcurrentWeakInternSet$WeakEntry hashCode ()I' bytes='5' count='128' iicount='128' level='1' stamp='0.148' comment='tiered' hot_count='128'/>
+<nmethod compile_id='89' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787ebba0' size='432' address='0x00007fae787eba10' relocation_offset='376' consts_offset='432' insts_offset='400' method='java.lang.invoke.MethodHandle linkToSpecial (Ljava/lang/Object;ILjava/lang/invoke/MemberName;)Ljava/lang/Object;' bytes='0' count='0' iicount='0' stamp='0.148'/>
+<nmethod compile_id='90' compile_kind='c2n' compiler='' level='0' entry='0x00007fae787ebdc0' size='928' address='0x00007fae787ebc10' relocation_offset='376' consts_offset='928' insts_offset='432' method='java.lang.Class isPrimitive ()Z' bytes='0' count='256' iicount='256' stamp='0.148'/>
+<writer thread='24142'/>
+<nmethod compile_id='88' compiler='c1' level='1' entry='0x00007fae787ec1c0' size='752' address='0x00007fae787ec010' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.lang.invoke.MethodType$ConcurrentWeakInternSet$WeakEntry hashCode ()I' bytes='5' count='137' iicount='137' stamp='0.148'/>
+<writer thread='24129'/>
+<task_queued compile_id='91' method='java.lang.StringBuilder append (Ljava/lang/String;)Ljava/lang/StringBuilder;' bytes='8' count='256' iicount='256' level='3' stamp='0.150' comment='tiered' hot_count='256'/>
+<task_queued compile_id='92' method='java.lang.AbstractStringBuilder append (Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;' bytes='45' count='256' iicount='256' level='3' stamp='0.150' comment='tiered' hot_count='256'/>
+<task_queued compile_id='93' method='java.lang.AbstractStringBuilder putStringAt (ILjava/lang/String;)V' bytes='29' count='256' iicount='256' level='3' stamp='0.150' comment='tiered' hot_count='256'/>
+<task_queued compile_id='94' method='java.lang.AbstractStringBuilder getCoder ()B' bytes='15' count='256' iicount='256' level='3' stamp='0.150' comment='tiered' hot_count='256'/>
+<task_queued compile_id='95' method='java.lang.String getBytes ([BIB)V' bytes='44' count='256' iicount='256' level='3' stamp='0.150' comment='tiered' hot_count='256'/>
+<writer thread='24143'/>
+<nmethod compile_id='91' compiler='c1' level='3' entry='0x00007fae7139f240' size='968' address='0x00007fae7139f090' relocation_offset='376' insts_offset='432' stub_offset='688' scopes_data_offset='864' scopes_pcs_offset='896' dependencies_offset='960' metadata_offset='856' method='java.lang.StringBuilder append (Ljava/lang/String;)Ljava/lang/StringBuilder;' bytes='8' count='256' iicount='256' stamp='0.150'/>
+<writer thread='24142'/>
+<nmethod compile_id='94' compiler='c1' level='3' entry='0x00007fae7139f640' size='912' address='0x00007fae7139f490' relocation_offset='376' insts_offset='432' stub_offset='688' scopes_data_offset='840' scopes_pcs_offset='856' dependencies_offset='904' metadata_offset='832' method='java.lang.AbstractStringBuilder getCoder ()B' bytes='15' count='256' iicount='256' stamp='0.151'/>
+<writer thread='24144'/>
+<nmethod compile_id='93' compiler='c1' level='3' entry='0x00007fae7139fa80' size='1616' address='0x00007fae7139f890' relocation_offset='376' insts_offset='496' stub_offset='1168' scopes_data_offset='1376' scopes_pcs_offset='1464' dependencies_offset='1592' nul_chk_table_offset='1600' metadata_offset='1352' method='java.lang.AbstractStringBuilder putStringAt (ILjava/lang/String;)V' bytes='29' count='256' iicount='256' stamp='0.151'/>
+<writer thread='24143'/>
+<nmethod compile_id='95' compiler='c1' level='3' entry='0x00007fae713a0100' size='1696' address='0x00007fae7139ff10' relocation_offset='376' insts_offset='496' stub_offset='1200' scopes_data_offset='1408' scopes_pcs_offset='1520' dependencies_offset='1664' nul_chk_table_offset='1672' metadata_offset='1384' method='java.lang.String getBytes ([BIB)V' bytes='44' count='256' iicount='256' stamp='0.151'/>
+<writer thread='24129'/>
+<task_queued compile_id='96' method='java.nio.Buffer position ()I' bytes='5' count='128' iicount='128' level='1' stamp='0.151' comment='tiered' hot_count='128'/>
+<writer thread='24140'/>
+<nmethod compile_id='92' compiler='c1' level='3' entry='0x00007fae713a0840' size='2456' address='0x00007fae713a0610' relocation_offset='376' insts_offset='560' stub_offset='1744' scopes_data_offset='2000' scopes_pcs_offset='2200' dependencies_offset='2424' nul_chk_table_offset='2432' metadata_offset='1960' method='java.lang.AbstractStringBuilder append (Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;' bytes='45' count='256' iicount='256' stamp='0.151'/>
+<writer thread='24143'/>
+<nmethod compile_id='96' compiler='c1' level='1' entry='0x00007fae787ec4c0' size='752' address='0x00007fae787ec310' relocation_offset='376' insts_offset='432' stub_offset='560' scopes_data_offset='704' scopes_pcs_offset='712' dependencies_offset='744' method='java.nio.Buffer position ()I' bytes='5' count='139' iicount='139' stamp='0.151'/>
+<tty_done stamp='0.153'/>
+</tty>
+<compilation_log thread='24144'>
+<start_compile_thread name='C1 CompilerThread3' thread='24144' process='24128' stamp='0.080'/>
+<task compile_id='30' method='java.util.concurrent.ConcurrentHashMap putVal (Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;' bytes='432' count='886' backedge_count='21' iicount='886' level='3' stamp='0.080'>
+<phase name='setup' stamp='0.081'>
+<phase_done name='setup' stamp='0.081'/>
+</phase>
+<phase name='buildIR' stamp='0.081'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<type id='956' name='boolean'/>
+<klass id='1081' name='java.util.concurrent.ConcurrentHashMap' flags='1'/>
+<method id='1082' holder='1081' name='putVal' return='969' arguments='969 969 956' flags='16' bytes='432' iicount='886'/>
+<parse method='1082'  stamp='0.081'>
+<phase name='parse_hir' stamp='0.081'>
+<bc code='182' bci='17'/>
+<type id='962' name='int'/>
+<method id='1084' holder='969' name='hashCode' return='962' flags='257' bytes='0' iicount='289'/>
+<call method='1084' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='184' bci='20'/>
+<method id='1085' holder='1081' name='spread' return='962' arguments='962' flags='24' bytes='10' iicount='945'/>
+<call method='1085' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1085'>
+<parse_done stamp='0.081'/>
+</parse>
+<bc code='184' bci='69'/>
+<klass id='1087' name='java.util.concurrent.ConcurrentHashMap$Node' flags='8'/>
+<klass id='1088' name='[Ljava.util.concurrent.ConcurrentHashMap$Node;' flags='1040'/>
+<method id='1089' holder='1081' name='tabAt' return='1087' arguments='1088 962' flags='24' bytes='22' iicount='1361'/>
+<call method='1089' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1089'>
+<bc code='182' bci='15'/>
+<type id='963' name='long'/>
+<klass id='1040' name='jdk.internal.misc.Unsafe' flags='17'/>
+<method id='1094' holder='1040' name='getObjectAcquire' return='969' arguments='969 963' flags='17' bytes='7' iicount='1361'/>
+<call method='1094' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1094'>
+<bc code='182' bci='3'/>
+<method id='1096' holder='1040' name='getObjectVolatile' return='969' arguments='969 963' flags='257' bytes='0' compile_id='28' compile_kind='c2n' compiler='' level='0' iicount='512'/>
+<call method='1096' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<parse_done stamp='0.081'/>
+</parse>
+<parse_done stamp='0.081'/>
+</parse>
+<bc code='183' bci='91'/>
+<type id='964' name='void'/>
+<method id='1097' holder='1087' name='&lt;init&gt;' return='964' arguments='962 969 969' flags='0' bytes='20' iicount='886'/>
+<call method='1097' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1097'>
+<bc code='183' bci='1'/>
+<method id='1099' holder='969' name='&lt;init&gt;' return='964' flags='1' bytes='1' iicount='4064'/>
+<call method='1099' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1099'>
+<parse_done stamp='0.081'/>
+</parse>
+<parse_done stamp='0.081'/>
+</parse>
+<bc code='184' bci='94'/>
+<method id='1101' holder='1081' name='casTabAt' return='956' arguments='1088 962 1087 1087' flags='24' bytes='21' iicount='746'/>
+<call method='1101' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1101'>
+<bc code='182' bci='17'/>
+<method id='1103' holder='1040' name='compareAndSetObject' return='956' arguments='969 963 969 969' flags='273' bytes='0' compile_id='35' compile_kind='c2n' compiler='' level='0' iicount='640'/>
+<call method='1103' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<parse_done stamp='0.081'/>
+</parse>
+<bc code='182' bci='120'/>
+<method id='1104' holder='1081' name='helpTransfer' return='1088' arguments='1088 1087' flags='16' bytes='130' iicount='1'/>
+<call method='1104' instr='invokevirtual'/>
+<dependency type='leaf_type' ctxk='1081'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='159'/>
+<method id='1106' holder='969' name='equals' return='956' arguments='969' flags='1' bytes='11' iicount='1'/>
+<call method='1106' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='184' bci='192'/>
+<call method='1089' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1089'>
+<bc code='182' bci='15'/>
+<call method='1094' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1094'>
+<bc code='182' bci='3'/>
+<call method='1096' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<parse_done stamp='0.081'/>
+</parse>
+<parse_done stamp='0.081'/>
+</parse>
+<bc code='182' bci='242'/>
+<call method='1106' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='183' bci='293'/>
+<call method='1097' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1097'>
+<bc code='183' bci='1'/>
+<call method='1099' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1099'>
+<parse_done stamp='0.082'/>
+</parse>
+<parse_done stamp='0.082'/>
+</parse>
+<bc code='182' bci='331'/>
+<klass id='1108' name='java.util.concurrent.ConcurrentHashMap$TreeNode' unloaded='1'/>
+<klass id='1107' name='java.util.concurrent.ConcurrentHashMap$TreeBin' unloaded='1'/>
+<method id='1109' holder='1107' name='putTreeVal' return='1108' arguments='962 969 969' unloaded='1'/>
+<call method='1109' instr='invokevirtual'/>
+<inline_fail reason='not inlineable'/>
+<bc code='183' bci='374'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<klass id='1111' name='java.lang.IllegalStateException' unloaded='1'/>
+<method id='1113' holder='1111' name='&lt;init&gt;' return='964' arguments='970' unloaded='1'/>
+<call method='1113' instr='invokespecial'/>
+<inline_fail reason='not inlineable'/>
+<bc code='182' bci='409'/>
+<method id='1114' holder='1081' name='treeifyBin' return='964' arguments='1088 962' flags='18' bytes='164' iicount='1'/>
+<call method='1114' instr='invokevirtual'/>
+<dependency type='leaf_type' ctxk='1081'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='427'/>
+<method id='1116' holder='1081' name='addCount' return='964' arguments='963 962' flags='18' bytes='289' iicount='882'/>
+<call method='1116' instr='invokevirtual'/>
+<dependency type='leaf_type' ctxk='1081'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='49'/>
+<method id='1118' holder='1081' name='initTable' return='1088' flags='18' bytes='112' iicount='5'/>
+<call method='1118' instr='invokevirtual'/>
+<dependency type='leaf_type' ctxk='1081'/>
+<inline_fail reason='callee is too large'/>
+<bc code='183' bci='12'/>
+<klass id='1077' name='java.lang.NullPointerException' flags='1'/>
+<method id='1120' holder='1077' name='&lt;init&gt;' return='964' flags='1' bytes='5' iicount='1'/>
+<call method='1120' instr='invokespecial'/>
+<inline_fail reason='don&apos;t inline Throwable constructors'/>
+<phase_done name='parse_hir' stamp='0.082'/>
+</phase>
+<parse_done stamp='0.082'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.082'>
+<phase_done name='optimize_blocks' stamp='0.082'/>
+</phase>
+<phase name='gvn' stamp='0.082'>
+<phase_done name='gvn' stamp='0.082'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.082'>
+<phase_done name='rangeCheckElimination' stamp='0.082'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.082'>
+<phase_done name='optimize_null_checks' stamp='0.082'/>
+</phase>
+<phase_done name='buildIR' stamp='0.082'/>
+</phase>
+<phase name='emit_lir' stamp='0.082'>
+<phase name='lirGeneration' stamp='0.082'>
+<phase_done name='lirGeneration' stamp='0.088'/>
+</phase>
+<phase name='linearScan' stamp='0.088'>
+<phase_done name='linearScan' stamp='0.092'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.092'/>
+</phase>
+<phase name='codeemit' stamp='0.092'>
+<phase_done name='codeemit' stamp='0.092'/>
+</phase>
+<phase name='codeinstall' stamp='0.092'>
+<dependency type='leaf_type' ctxk='1081'/>
+<phase_done name='codeinstall' stamp='0.092'/>
+</phase>
+<code_cache total_blobs='285' nmethods='11' adapters='140' free_code_cache='248900352'/>
+<task_done success='1' nmsize='8920' count='918' backedge_count='27' inlined_bytes='131' stamp='0.092'/>
+</task>
+<task compile_id='4' method='java.lang.String hashCode ()I' bytes='49' count='5821' iicount='5822' level='2' stamp='0.093'>
+<phase name='setup' stamp='0.093'>
+<phase_done name='setup' stamp='0.093'/>
+</phase>
+<phase name='buildIR' stamp='0.093'>
+<type id='962' name='int'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='970' name='hashCode' return='962' flags='1' bytes='49' iicount='5825'/>
+<parse method='1081'  stamp='0.093'>
+<phase name='parse_hir' stamp='0.093'>
+<bc code='182' bci='19'/>
+<type id='956' name='boolean'/>
+<method id='1083' holder='970' name='isLatin1' return='956' flags='2' bytes='19' iicount='3173'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1083'>
+<parse_done stamp='0.093'/>
+</parse>
+<bc code='184' bci='29'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1086' name='java.lang.StringLatin1' flags='16'/>
+<method id='1087' holder='1086' name='hashCode' return='962' arguments='1073' flags='9' bytes='42' compile_id='2' compiler='c1' level='2' iicount='1122'/>
+<call method='1087' instr='invokestatic'/>
+<inline_fail reason='callee is too large'/>
+<bc code='184' bci='39'/>
+<klass id='1089' name='java.lang.StringUTF16' unloaded='1'/>
+<method id='1090' holder='1089' name='hashCode' return='962' arguments='1073' unloaded='1'/>
+<call method='1090' instr='invokestatic'/>
+<inline_fail reason='not inlineable'/>
+<phase_done name='parse_hir' stamp='0.093'/>
+</phase>
+<parse_done stamp='0.093'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.093'>
+<phase_done name='optimize_blocks' stamp='0.093'/>
+</phase>
+<phase name='gvn' stamp='0.093'>
+<phase_done name='gvn' stamp='0.093'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.093'>
+<phase_done name='rangeCheckElimination' stamp='0.093'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.093'>
+<phase_done name='optimize_null_checks' stamp='0.093'/>
+</phase>
+<phase_done name='buildIR' stamp='0.093'/>
+</phase>
+<phase name='emit_lir' stamp='0.093'>
+<phase name='lirGeneration' stamp='0.093'>
+<phase_done name='lirGeneration' stamp='0.093'/>
+</phase>
+<phase name='linearScan' stamp='0.093'>
+<phase_done name='linearScan' stamp='0.093'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.093'/>
+</phase>
+<phase name='codeemit' stamp='0.093'>
+<phase_done name='codeemit' stamp='0.093'/>
+</phase>
+<phase name='codeinstall' stamp='0.093'>
+<phase_done name='codeinstall' stamp='0.093'/>
+</phase>
+<code_cache total_blobs='288' nmethods='14' adapters='140' free_code_cache='248897152'/>
+<task_done success='1' nmsize='504' count='5976' inlined_bytes='19' stamp='0.093'/>
+</task>
+<task compile_id='43' method='java.util.HashMap$Node &lt;init&gt; (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V' bytes='26' count='1565' iicount='1565' level='3' stamp='0.093'>
+<phase name='setup' stamp='0.093'>
+<phase_done name='setup' stamp='0.093'/>
+</phase>
+<phase name='buildIR' stamp='0.093'>
+<type id='964' name='void'/>
+<type id='962' name='int'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.HashMap$Node' flags='8'/>
+<method id='1082' holder='1081' name='&lt;init&gt;' return='964' arguments='962 969 969 1081' flags='0' bytes='26' iicount='1565'/>
+<parse method='1082'  stamp='0.093'>
+<phase name='parse_hir' stamp='0.093'>
+<bc code='183' bci='1'/>
+<method id='1084' holder='969' name='&lt;init&gt;' return='964' flags='1' bytes='1' compile_id='1' compiler='c1' level='2' iicount='7093'/>
+<call method='1084' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<bc code='177' bci='0'/>
+<dependency type='no_finalizable_subclasses' ctxk='1081'/>
+<parse_done stamp='0.093'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.093'/>
+</phase>
+<parse_done stamp='0.093'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.093'>
+<phase_done name='optimize_blocks' stamp='0.093'/>
+</phase>
+<phase name='gvn' stamp='0.093'>
+<phase_done name='gvn' stamp='0.093'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.093'>
+<phase_done name='rangeCheckElimination' stamp='0.093'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.093'>
+<phase_done name='optimize_null_checks' stamp='0.093'/>
+</phase>
+<phase_done name='buildIR' stamp='0.093'/>
+</phase>
+<phase name='emit_lir' stamp='0.093'>
+<phase name='lirGeneration' stamp='0.093'>
+<phase_done name='lirGeneration' stamp='0.093'/>
+</phase>
+<phase name='linearScan' stamp='0.093'>
+<phase_done name='linearScan' stamp='0.093'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.093'/>
+</phase>
+<phase name='codeemit' stamp='0.093'>
+<phase_done name='codeemit' stamp='0.093'/>
+</phase>
+<phase name='codeinstall' stamp='0.093'>
+<dependency type='no_finalizable_subclasses' ctxk='1081'/>
+<phase_done name='codeinstall' stamp='0.093'/>
+</phase>
+<code_cache total_blobs='294' nmethods='19' adapters='140' free_code_cache='248880768'/>
+<task_done success='1' nmsize='752' count='1638' inlined_bytes='1' stamp='0.093'/>
+</task>
+<task compile_id='6' method='java.lang.Math floorMod (II)I' bytes='10' count='3187' iicount='3187' level='3' stamp='0.093'>
+<phase name='setup' stamp='0.093'>
+<phase_done name='setup' stamp='0.093'/>
+</phase>
+<phase name='buildIR' stamp='0.094'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.lang.Math' flags='17'/>
+<method id='1082' holder='1081' name='floorMod' return='962' arguments='962 962' flags='9' bytes='10' iicount='3190'/>
+<parse method='1082'  stamp='0.094'>
+<phase name='parse_hir' stamp='0.094'>
+<bc code='184' bci='3'/>
+<method id='1084' holder='1081' name='floorDiv' return='962' arguments='962 962' flags='9' bytes='22' iicount='3200'/>
+<call method='1084' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<parse_done stamp='0.094'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.094'/>
+</phase>
+<parse_done stamp='0.094'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.094'>
+<phase_done name='optimize_blocks' stamp='0.094'/>
+</phase>
+<phase name='gvn' stamp='0.094'>
+<phase_done name='gvn' stamp='0.094'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.094'>
+<phase_done name='rangeCheckElimination' stamp='0.094'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.094'>
+<phase_done name='optimize_null_checks' stamp='0.094'/>
+</phase>
+<phase_done name='buildIR' stamp='0.094'/>
+</phase>
+<phase name='emit_lir' stamp='0.094'>
+<phase name='lirGeneration' stamp='0.094'>
+<phase_done name='lirGeneration' stamp='0.094'/>
+</phase>
+<phase name='linearScan' stamp='0.094'>
+<phase_done name='linearScan' stamp='0.094'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.094'/>
+</phase>
+<phase name='codeemit' stamp='0.094'>
+<phase_done name='codeemit' stamp='0.094'/>
+</phase>
+<phase name='codeinstall' stamp='0.094'>
+<phase_done name='codeinstall' stamp='0.094'/>
+</phase>
+<code_cache total_blobs='298' nmethods='23' adapters='140' free_code_cache='248875776'/>
+<task_done success='1' nmsize='592' count='3200' inlined_bytes='22' stamp='0.094'/>
+</task>
+<task compile_id='41' method='java.util.HashMap put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='13' count='1200' iicount='1200' level='3' stamp='0.094'>
+<phase name='setup' stamp='0.094'>
+<phase_done name='setup' stamp='0.094'/>
+</phase>
+<phase name='buildIR' stamp='0.094'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.HashMap' flags='1'/>
+<method id='1082' holder='1081' name='put' return='969' arguments='969 969' flags='1' bytes='13' iicount='1200'/>
+<parse method='1082'  stamp='0.094'>
+<phase name='parse_hir' stamp='0.094'>
+<bc code='184' bci='2'/>
+<type id='962' name='int'/>
+<method id='1084' holder='1081' name='hash' return='962' arguments='969' flags='24' bytes='20' compile_id='38' compiler='c1' level='3' iicount='2657'/>
+<call method='1084' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<bc code='182' bci='9'/>
+<method id='1086' holder='969' name='hashCode' return='962' flags='257' bytes='0' compile_id='50' compile_kind='c2n' compiler='' level='0' iicount='640'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<parse_done stamp='0.094'/>
+</parse>
+<bc code='182' bci='9'/>
+<type id='956' name='boolean'/>
+<method id='1087' holder='1081' name='putVal' return='969' arguments='962 969 969 956 956' flags='16' bytes='300' compile_id='42' compiler='c1' level='3' iicount='1747'/>
+<call method='1087' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<phase_done name='parse_hir' stamp='0.094'/>
+</phase>
+<parse_done stamp='0.094'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.094'>
+<phase_done name='optimize_blocks' stamp='0.094'/>
+</phase>
+<phase name='gvn' stamp='0.094'>
+<phase_done name='gvn' stamp='0.094'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.094'>
+<phase_done name='rangeCheckElimination' stamp='0.094'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.094'>
+<phase_done name='optimize_null_checks' stamp='0.094'/>
+</phase>
+<phase_done name='buildIR' stamp='0.094'/>
+</phase>
+<phase name='emit_lir' stamp='0.094'>
+<phase name='lirGeneration' stamp='0.094'>
+<phase_done name='lirGeneration' stamp='0.094'/>
+</phase>
+<phase name='linearScan' stamp='0.094'>
+<phase_done name='linearScan' stamp='0.094'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.094'/>
+</phase>
+<phase name='codeemit' stamp='0.094'>
+<phase_done name='codeemit' stamp='0.094'/>
+</phase>
+<phase name='codeinstall' stamp='0.094'>
+<phase_done name='codeinstall' stamp='0.094'/>
+</phase>
+<code_cache total_blobs='303' nmethods='28' adapters='140' free_code_cache='248870144'/>
+<task_done success='1' nmsize='856' count='1202' inlined_bytes='20' stamp='0.094'/>
+</task>
+<task compile_id='14' method='java.lang.module.ModuleDescriptor name ()Ljava/lang/String;' bytes='5' count='839' iicount='839' level='1' stamp='0.094'>
+<phase name='setup' stamp='0.094'>
+<phase_done name='setup' stamp='0.094'/>
+</phase>
+<phase name='buildIR' stamp='0.094'>
+<klass id='970' name='java.lang.String' flags='17'/>
+<klass id='1081' name='java.lang.module.ModuleDescriptor' flags='1'/>
+<method id='1082' holder='1081' name='name' return='970' flags='1' bytes='5' iicount='839'/>
+<parse method='1082'  stamp='0.094'>
+<phase name='parse_hir' stamp='0.094'>
+<phase_done name='parse_hir' stamp='0.094'/>
+</phase>
+<parse_done stamp='0.094'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.094'>
+<phase_done name='optimize_blocks' stamp='0.094'/>
+</phase>
+<phase name='gvn' stamp='0.094'>
+<phase_done name='gvn' stamp='0.094'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.094'>
+<phase_done name='rangeCheckElimination' stamp='0.094'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.094'>
+<phase_done name='optimize_null_checks' stamp='0.094'/>
+</phase>
+<phase_done name='buildIR' stamp='0.094'/>
+</phase>
+<phase name='emit_lir' stamp='0.094'>
+<phase name='lirGeneration' stamp='0.094'>
+<phase_done name='lirGeneration' stamp='0.094'/>
+</phase>
+<phase name='linearScan' stamp='0.094'>
+<phase_done name='linearScan' stamp='0.095'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.095'/>
+</phase>
+<phase name='codeemit' stamp='0.095'>
+<phase_done name='codeemit' stamp='0.095'/>
+</phase>
+<phase name='codeinstall' stamp='0.095'>
+<phase_done name='codeinstall' stamp='0.095'/>
+</phase>
+<code_cache total_blobs='306' nmethods='31' adapters='140' free_code_cache='248865408'/>
+<task_done success='1' nmsize='272' count='839' stamp='0.095'/>
+</task>
+<task compile_id='26' method='java.lang.module.ResolvedModule reference ()Ljava/lang/module/ModuleReference;' bytes='5' count='625' iicount='625' level='1' stamp='0.095'>
+<phase name='setup' stamp='0.095'>
+<phase_done name='setup' stamp='0.095'/>
+</phase>
+<phase name='buildIR' stamp='0.095'>
+<klass id='1082' name='java.lang.module.ModuleReference' flags='1025'/>
+<klass id='1081' name='java.lang.module.ResolvedModule' flags='17'/>
+<method id='1083' holder='1081' name='reference' return='1082' flags='1' bytes='5' iicount='625'/>
+<parse method='1083'  stamp='0.095'>
+<phase name='parse_hir' stamp='0.095'>
+<phase_done name='parse_hir' stamp='0.095'/>
+</phase>
+<parse_done stamp='0.095'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.095'>
+<phase_done name='optimize_blocks' stamp='0.095'/>
+</phase>
+<phase name='gvn' stamp='0.095'>
+<phase_done name='gvn' stamp='0.095'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.095'>
+<phase_done name='rangeCheckElimination' stamp='0.095'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.095'>
+<phase_done name='optimize_null_checks' stamp='0.095'/>
+</phase>
+<phase_done name='buildIR' stamp='0.095'/>
+</phase>
+<phase name='emit_lir' stamp='0.095'>
+<phase name='lirGeneration' stamp='0.095'>
+<phase_done name='lirGeneration' stamp='0.095'/>
+</phase>
+<phase name='linearScan' stamp='0.095'>
+<phase_done name='linearScan' stamp='0.095'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.095'/>
+</phase>
+<phase name='codeemit' stamp='0.095'>
+<phase_done name='codeemit' stamp='0.095'/>
+</phase>
+<phase name='codeinstall' stamp='0.095'>
+<phase_done name='codeinstall' stamp='0.095'/>
+</phase>
+<code_cache total_blobs='308' nmethods='33' adapters='140' free_code_cache='248862848'/>
+<task_done success='1' nmsize='272' count='625' stamp='0.095'/>
+</task>
+<task compile_id='25' method='java.util.Objects equals (Ljava/lang/Object;Ljava/lang/Object;)Z' bytes='23' count='874' iicount='874' level='3' stamp='0.095'>
+<phase name='setup' stamp='0.095'>
+<phase_done name='setup' stamp='0.095'/>
+</phase>
+<phase name='buildIR' stamp='0.095'>
+<type id='956' name='boolean'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.Objects' flags='17'/>
+<method id='1082' holder='1081' name='equals' return='956' arguments='969 969' flags='9' bytes='23' iicount='874'/>
+<parse method='1082'  stamp='0.095'>
+<phase name='parse_hir' stamp='0.095'>
+<bc code='182' bci='11'/>
+<method id='1086' holder='969' name='equals' return='956' arguments='969' flags='1' bytes='11' iicount='2'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<phase_done name='parse_hir' stamp='0.095'/>
+</phase>
+<parse_done stamp='0.095'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.095'>
+<phase_done name='optimize_blocks' stamp='0.095'/>
+</phase>
+<phase name='gvn' stamp='0.095'>
+<phase_done name='gvn' stamp='0.095'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.095'>
+<phase_done name='rangeCheckElimination' stamp='0.095'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.095'>
+<phase_done name='optimize_null_checks' stamp='0.095'/>
+</phase>
+<phase_done name='buildIR' stamp='0.095'/>
+</phase>
+<phase name='emit_lir' stamp='0.095'>
+<phase name='lirGeneration' stamp='0.095'>
+<phase_done name='lirGeneration' stamp='0.095'/>
+</phase>
+<phase name='linearScan' stamp='0.095'>
+<phase_done name='linearScan' stamp='0.095'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.095'/>
+</phase>
+<phase name='codeemit' stamp='0.095'>
+<phase_done name='codeemit' stamp='0.095'/>
+</phase>
+<phase name='codeinstall' stamp='0.095'>
+<phase_done name='codeinstall' stamp='0.095'/>
+</phase>
+<code_cache total_blobs='315' nmethods='38' adapters='140' free_code_cache='248855808'/>
+<task_done success='1' nmsize='744' count='874' stamp='0.095'/>
+</task>
+<task compile_id='47' method='java.util.Collections$EmptySet isEmpty ()Z' bytes='2' count='229' iicount='229' level='1' stamp='0.095'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<type id='956' name='boolean'/>
+<klass id='1081' name='java.util.Collections$EmptySet' flags='10'/>
+<method id='1082' holder='1081' name='isEmpty' return='956' flags='1' bytes='2' iicount='229'/>
+<parse method='1082'  stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.096'/>
+</phase>
+<phase name='linearScan' stamp='0.096'>
+<phase_done name='linearScan' stamp='0.096'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.096'/>
+</phase>
+<phase name='codeemit' stamp='0.096'>
+<phase_done name='codeemit' stamp='0.096'/>
+</phase>
+<phase name='codeinstall' stamp='0.096'>
+<phase_done name='codeinstall' stamp='0.096'/>
+</phase>
+<code_cache total_blobs='318' nmethods='41' adapters='140' free_code_cache='248853376'/>
+<task_done success='1' nmsize='272' count='229' stamp='0.096'/>
+</task>
+<task compile_id='36' method='java.util.concurrent.ConcurrentHashMap casTabAt ([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z' bytes='21' count='776' iicount='776' level='3' stamp='0.096'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<type id='956' name='boolean'/>
+<klass id='1083' name='[Ljava.util.concurrent.ConcurrentHashMap$Node;' flags='1040'/>
+<type id='962' name='int'/>
+<klass id='1082' name='java.util.concurrent.ConcurrentHashMap$Node' flags='8'/>
+<klass id='1081' name='java.util.concurrent.ConcurrentHashMap' flags='1'/>
+<method id='1084' holder='1081' name='casTabAt' return='956' arguments='1083 962 1082 1082' flags='24' bytes='21' iicount='776'/>
+<parse method='1084'  stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<bc code='182' bci='17'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<type id='963' name='long'/>
+<klass id='1040' name='jdk.internal.misc.Unsafe' flags='17'/>
+<method id='1088' holder='1040' name='compareAndSetObject' return='956' arguments='969 963 969 969' flags='273' bytes='0' compile_id='35' compile_kind='c2n' compiler='' level='0' iicount='640'/>
+<call method='1088' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.096'/>
+</phase>
+<phase name='linearScan' stamp='0.096'>
+<phase_done name='linearScan' stamp='0.096'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.096'/>
+</phase>
+<phase name='codeemit' stamp='0.096'>
+<phase_done name='codeemit' stamp='0.096'/>
+</phase>
+<phase name='codeinstall' stamp='0.096'>
+<phase_done name='codeinstall' stamp='0.096'/>
+</phase>
+<code_cache total_blobs='321' nmethods='44' adapters='140' free_code_cache='248850048'/>
+<task_done success='1' nmsize='464' count='776' stamp='0.096'/>
+</task>
+<task compile_id='19' method='jdk.internal.misc.Unsafe getObjectAcquire (Ljava/lang/Object;J)Ljava/lang/Object;' bytes='7' count='1499' iicount='1499' level='3' stamp='0.096'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<type id='963' name='long'/>
+<klass id='1040' name='jdk.internal.misc.Unsafe' flags='17'/>
+<method id='1081' holder='1040' name='getObjectAcquire' return='969' arguments='969 963' flags='17' bytes='7' iicount='1499'/>
+<parse method='1081'  stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<bc code='182' bci='3'/>
+<method id='1085' holder='1040' name='getObjectVolatile' return='969' arguments='969 963' flags='257' bytes='0' compile_id='28' compile_kind='c2n' compiler='' level='0' iicount='512'/>
+<call method='1085' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.096'/>
+</phase>
+<phase name='linearScan' stamp='0.096'>
+<phase_done name='linearScan' stamp='0.096'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.096'/>
+</phase>
+<phase name='codeemit' stamp='0.096'>
+<phase_done name='codeemit' stamp='0.096'/>
+</phase>
+<phase name='codeinstall' stamp='0.096'>
+<phase_done name='codeinstall' stamp='0.096'/>
+</phase>
+<code_cache total_blobs='324' nmethods='46' adapters='140' free_code_cache='248846720'/>
+<task_done success='1' nmsize='432' count='1499' stamp='0.096'/>
+</task>
+<task compile_id='49' method='java.lang.module.ModuleDescriptor isAutomatic ()Z' bytes='5' count='180' iicount='180' level='1' stamp='0.096'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<type id='956' name='boolean'/>
+<klass id='1081' name='java.lang.module.ModuleDescriptor' flags='1'/>
+<method id='1082' holder='1081' name='isAutomatic' return='956' flags='1' bytes='5' iicount='180'/>
+<parse method='1082'  stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.097'>
+<phase_done name='lirGeneration' stamp='0.097'/>
+</phase>
+<phase name='linearScan' stamp='0.097'>
+<phase_done name='linearScan' stamp='0.097'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.097'/>
+</phase>
+<phase name='codeemit' stamp='0.097'>
+<phase_done name='codeemit' stamp='0.097'/>
+</phase>
+<phase name='codeinstall' stamp='0.097'>
+<phase_done name='codeinstall' stamp='0.097'/>
+</phase>
+<code_cache total_blobs='328' nmethods='51' adapters='140' free_code_cache='248840448'/>
+<task_done success='1' nmsize='272' count='180' stamp='0.097'/>
+</task>
+<task compile_id='54' method='java.lang.Module getDescriptor ()Ljava/lang/module/ModuleDescriptor;' bytes='5' count='142' iicount='142' level='1' stamp='0.097'>
+<phase name='setup' stamp='0.097'>
+<phase_done name='setup' stamp='0.097'/>
+</phase>
+<phase name='buildIR' stamp='0.097'>
+<klass id='1081' name='java.lang.module.ModuleDescriptor' flags='1'/>
+<klass id='1006' name='java.lang.Module' flags='17'/>
+<method id='1082' holder='1006' name='getDescriptor' return='1081' flags='1' bytes='5' iicount='142'/>
+<parse method='1082'  stamp='0.097'>
+<phase name='parse_hir' stamp='0.097'>
+<phase_done name='parse_hir' stamp='0.097'/>
+</phase>
+<parse_done stamp='0.097'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.097'>
+<phase_done name='optimize_blocks' stamp='0.097'/>
+</phase>
+<phase name='gvn' stamp='0.097'>
+<phase_done name='gvn' stamp='0.097'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.097'>
+<phase_done name='rangeCheckElimination' stamp='0.097'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.097'>
+<phase_done name='optimize_null_checks' stamp='0.097'/>
+</phase>
+<phase_done name='buildIR' stamp='0.097'/>
+</phase>
+<phase name='emit_lir' stamp='0.097'>
+<phase name='lirGeneration' stamp='0.097'>
+<phase_done name='lirGeneration' stamp='0.097'/>
+</phase>
+<phase name='linearScan' stamp='0.097'>
+<phase_done name='linearScan' stamp='0.097'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.097'/>
+</phase>
+<phase name='codeemit' stamp='0.097'>
+<phase_done name='codeemit' stamp='0.097'/>
+</phase>
+<phase name='codeinstall' stamp='0.097'>
+<phase_done name='codeinstall' stamp='0.097'/>
+</phase>
+<code_cache total_blobs='330' nmethods='53' adapters='140' free_code_cache='248838016'/>
+<task_done success='1' nmsize='272' count='142' stamp='0.097'/>
+</task>
+<task compile_id='51' method='java.lang.module.ResolvedModule configuration ()Ljava/lang/module/Configuration;' bytes='5' count='145' iicount='145' level='1' stamp='0.097'>
+<phase name='setup' stamp='0.097'>
+<phase_done name='setup' stamp='0.097'/>
+</phase>
+<phase name='buildIR' stamp='0.097'>
+<klass id='1082' name='java.lang.module.Configuration' flags='17'/>
+<klass id='1081' name='java.lang.module.ResolvedModule' flags='17'/>
+<method id='1083' holder='1081' name='configuration' return='1082' flags='1' bytes='5' iicount='145'/>
+<parse method='1083'  stamp='0.097'>
+<phase name='parse_hir' stamp='0.097'>
+<phase_done name='parse_hir' stamp='0.097'/>
+</phase>
+<parse_done stamp='0.097'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.097'>
+<phase_done name='optimize_blocks' stamp='0.097'/>
+</phase>
+<phase name='gvn' stamp='0.097'>
+<phase_done name='gvn' stamp='0.097'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.097'>
+<phase_done name='rangeCheckElimination' stamp='0.097'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.097'>
+<phase_done name='optimize_null_checks' stamp='0.097'/>
+</phase>
+<phase_done name='buildIR' stamp='0.097'/>
+</phase>
+<phase name='emit_lir' stamp='0.097'>
+<phase name='lirGeneration' stamp='0.097'>
+<phase_done name='lirGeneration' stamp='0.097'/>
+</phase>
+<phase name='linearScan' stamp='0.097'>
+<phase_done name='linearScan' stamp='0.097'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.097'/>
+</phase>
+<phase name='codeemit' stamp='0.097'>
+<phase_done name='codeemit' stamp='0.097'/>
+</phase>
+<phase name='codeinstall' stamp='0.097'>
+<phase_done name='codeinstall' stamp='0.097'/>
+</phase>
+<code_cache total_blobs='334' nmethods='57' adapters='140' free_code_cache='248834688'/>
+<task_done success='1' nmsize='272' count='145' stamp='0.097'/>
+</task>
+<task compile_id='63' method='java.util.HashSet add (Ljava/lang/Object;)Z' bytes='20' count='512' iicount='512' level='3' stamp='0.121'>
+<phase name='setup' stamp='0.121'>
+<phase_done name='setup' stamp='0.121'/>
+</phase>
+<phase name='buildIR' stamp='0.121'>
+<type id='956' name='boolean'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.HashSet' flags='1'/>
+<method id='1082' holder='1081' name='add' return='956' arguments='969' flags='1' bytes='20' iicount='512'/>
+<parse method='1082'  stamp='0.121'>
+<phase name='parse_hir' stamp='0.121'>
+<bc code='182' bci='8'/>
+<klass id='1084' name='java.util.HashMap' flags='1'/>
+<method id='1087' holder='1084' name='put' return='969' arguments='969 969' flags='1' bytes='13' compile_id='41' compiler='c1' level='3' iicount='1248'/>
+<call method='1087' instr='invokevirtual'/>
+<dependency type='unique_concrete_method' ctxk='1084' x='1087'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1087'>
+<bc code='184' bci='2'/>
+<type id='962' name='int'/>
+<method id='1089' holder='1084' name='hash' return='962' arguments='969' flags='24' bytes='20' compile_id='38' compiler='c1' level='3' iicount='2809'/>
+<call method='1089' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1089'>
+<bc code='182' bci='9'/>
+<method id='1091' holder='969' name='hashCode' return='962' flags='257' bytes='0' compile_id='50' compile_kind='c2n' compiler='' level='0' iicount='640'/>
+<call method='1091' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<parse_done stamp='0.121'/>
+</parse>
+<bc code='182' bci='9'/>
+<method id='1092' holder='1084' name='putVal' return='969' arguments='962 969 969 956 956' flags='16' bytes='300' compile_id='42' compiler='c1' level='3' iicount='1834'/>
+<call method='1092' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<parse_done stamp='0.121'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.121'/>
+</phase>
+<parse_done stamp='0.121'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.121'>
+<phase_done name='optimize_blocks' stamp='0.121'/>
+</phase>
+<phase name='gvn' stamp='0.121'>
+<phase_done name='gvn' stamp='0.121'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.121'>
+<phase_done name='rangeCheckElimination' stamp='0.121'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.121'>
+<phase_done name='optimize_null_checks' stamp='0.121'/>
+</phase>
+<phase_done name='buildIR' stamp='0.121'/>
+</phase>
+<phase name='emit_lir' stamp='0.121'>
+<phase name='lirGeneration' stamp='0.121'>
+<phase_done name='lirGeneration' stamp='0.121'/>
+</phase>
+<phase name='linearScan' stamp='0.121'>
+<phase_done name='linearScan' stamp='0.121'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.121'/>
+</phase>
+<phase name='codeemit' stamp='0.121'>
+<phase_done name='codeemit' stamp='0.121'/>
+</phase>
+<phase name='codeinstall' stamp='0.121'>
+<dependency type='unique_concrete_method' ctxk='1084' x='1087'/>
+<phase_done name='codeinstall' stamp='0.121'/>
+</phase>
+<code_cache total_blobs='397' nmethods='63' adapters='197' free_code_cache='248790656'/>
+<task_done success='1' nmsize='1208' count='512' inlined_bytes='33' stamp='0.121'/>
+</task>
+<task compile_id='69' method='java.lang.StringLatin1 canEncode (I)Z' bytes='13' count='451' iicount='451' level='3' stamp='0.128'>
+<phase name='setup' stamp='0.128'>
+<phase_done name='setup' stamp='0.128'/>
+</phase>
+<phase name='buildIR' stamp='0.128'>
+<type id='956' name='boolean'/>
+<type id='962' name='int'/>
+<klass id='1081' name='java.lang.StringLatin1' flags='16'/>
+<method id='1082' holder='1081' name='canEncode' return='956' arguments='962' flags='9' bytes='13' iicount='451'/>
+<parse method='1082'  stamp='0.128'>
+<phase name='parse_hir' stamp='0.128'>
+<phase_done name='parse_hir' stamp='0.128'/>
+</phase>
+<parse_done stamp='0.128'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.128'>
+<phase_done name='optimize_blocks' stamp='0.128'/>
+</phase>
+<phase name='gvn' stamp='0.128'>
+<phase_done name='gvn' stamp='0.128'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.128'>
+<phase_done name='rangeCheckElimination' stamp='0.128'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.128'>
+<phase_done name='optimize_null_checks' stamp='0.128'/>
+</phase>
+<phase_done name='buildIR' stamp='0.128'/>
+</phase>
+<phase name='emit_lir' stamp='0.128'>
+<phase name='lirGeneration' stamp='0.128'>
+<phase_done name='lirGeneration' stamp='0.128'/>
+</phase>
+<phase name='linearScan' stamp='0.128'>
+<phase_done name='linearScan' stamp='0.128'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.128'/>
+</phase>
+<phase name='codeemit' stamp='0.128'>
+<phase_done name='codeemit' stamp='0.128'/>
+</phase>
+<phase name='codeinstall' stamp='0.128'>
+<phase_done name='codeinstall' stamp='0.128'/>
+</phase>
+<code_cache total_blobs='404' nmethods='69' adapters='198' free_code_cache='248783232'/>
+<task_done success='1' nmsize='400' count='474' stamp='0.128'/>
+</task>
+<task compile_id='73' method='java.lang.String indexOf (I)I' bytes='7' count='260' iicount='260' level='3' stamp='0.133'>
+<phase name='setup' stamp='0.133'>
+<phase_done name='setup' stamp='0.133'/>
+</phase>
+<phase name='buildIR' stamp='0.133'>
+<type id='962' name='int'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='970' name='indexOf' return='962' arguments='962' flags='1' bytes='7' iicount='260'/>
+<parse method='1081'  stamp='0.133'>
+<phase name='parse_hir' stamp='0.133'>
+<bc code='182' bci='3'/>
+<method id='1083' holder='970' name='indexOf' return='962' arguments='962 962' flags='1' bytes='29' compile_id='72' compiler='c1' level='3' iicount='271'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1083'>
+<bc code='182' bci='1'/>
+<type id='956' name='boolean'/>
+<method id='1085' holder='970' name='isLatin1' return='956' flags='2' bytes='19' compile_id='3' compiler='c1' level='3' iicount='5748'/>
+<call method='1085' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1085'>
+<parse_done stamp='0.133'/>
+</parse>
+<bc code='184' bci='13'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1088' name='java.lang.StringLatin1' flags='16'/>
+<method id='1089' holder='1088' name='indexOf' return='962' arguments='1073 962 962' flags='9' bytes='61' compile_id='61' compiler='c1' level='3' iicount='271'/>
+<call method='1089' instr='invokestatic'/>
+<inline_fail reason='callee is too large'/>
+<bc code='184' bci='25'/>
+<klass id='1091' name='java.lang.StringUTF16' unloaded='1'/>
+<method id='1092' holder='1091' name='indexOf' return='962' arguments='1073 962 962' unloaded='1'/>
+<call method='1092' instr='invokestatic'/>
+<inline_fail reason='not inlineable'/>
+<parse_done stamp='0.133'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.133'/>
+</phase>
+<parse_done stamp='0.133'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.133'>
+<phase_done name='optimize_blocks' stamp='0.133'/>
+</phase>
+<phase name='gvn' stamp='0.133'>
+<phase_done name='gvn' stamp='0.133'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.133'>
+<phase_done name='rangeCheckElimination' stamp='0.133'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.133'>
+<phase_done name='optimize_null_checks' stamp='0.133'/>
+</phase>
+<phase_done name='buildIR' stamp='0.133'/>
+</phase>
+<phase name='emit_lir' stamp='0.133'>
+<phase name='lirGeneration' stamp='0.133'>
+<phase_done name='lirGeneration' stamp='0.133'/>
+</phase>
+<phase name='linearScan' stamp='0.133'>
+<phase_done name='linearScan' stamp='0.133'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.133'/>
+</phase>
+<phase name='codeemit' stamp='0.133'>
+<phase_done name='codeemit' stamp='0.133'/>
+</phase>
+<phase name='codeinstall' stamp='0.133'>
+<phase_done name='codeinstall' stamp='0.133'/>
+</phase>
+<code_cache total_blobs='409' nmethods='73' adapters='199' free_code_cache='248775424'/>
+<task_done success='1' nmsize='824' count='263' inlined_bytes='48' stamp='0.133'/>
+</task>
+<task compile_id='77' method='java.lang.Object &lt;init&gt; ()V' bytes='1' count='8586' iicount='8586' level='1' stamp='0.137'>
+<phase name='setup' stamp='0.137'>
+<phase_done name='setup' stamp='0.137'/>
+</phase>
+<phase name='buildIR' stamp='0.137'>
+<type id='964' name='void'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<method id='1081' holder='969' name='&lt;init&gt;' return='964' flags='1' bytes='1' compile_id='1' compiler='c1' level='2' iicount='8586'/>
+<parse method='1081'  stamp='0.137'>
+<phase name='parse_hir' stamp='0.137'>
+<bc code='177' bci='0'/>
+<dependency type='no_finalizable_subclasses' ctxk='969'/>
+<phase_done name='parse_hir' stamp='0.137'/>
+</phase>
+<parse_done stamp='0.137'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.137'>
+<phase_done name='optimize_blocks' stamp='0.137'/>
+</phase>
+<phase name='gvn' stamp='0.137'>
+<phase_done name='gvn' stamp='0.137'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.137'>
+<phase_done name='rangeCheckElimination' stamp='0.137'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.137'>
+<phase_done name='optimize_null_checks' stamp='0.137'/>
+</phase>
+<phase_done name='buildIR' stamp='0.137'/>
+</phase>
+<phase name='emit_lir' stamp='0.137'>
+<phase name='lirGeneration' stamp='0.137'>
+<phase_done name='lirGeneration' stamp='0.137'/>
+</phase>
+<phase name='linearScan' stamp='0.137'>
+<phase_done name='linearScan' stamp='0.137'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.137'/>
+</phase>
+<phase name='codeemit' stamp='0.137'>
+<phase_done name='codeemit' stamp='0.137'/>
+</phase>
+<phase name='codeinstall' stamp='0.137'>
+<dependency type='no_finalizable_subclasses' ctxk='969'/>
+<phase_done name='codeinstall' stamp='0.137'/>
+</phase>
+<code_cache total_blobs='413' nmethods='77' adapters='199' free_code_cache='248770688'/>
+<task_done success='1' nmsize='272' count='8586' stamp='0.137'/>
+</task>
+<task compile_id='85' method='java.lang.Class getClassLoader0 ()Ljava/lang/ClassLoader;' bytes='5' count='130' iicount='130' level='1' stamp='0.148'>
+<phase name='setup' stamp='0.148'>
+<phase_done name='setup' stamp='0.148'/>
+</phase>
+<phase name='buildIR' stamp='0.148'>
+<klass id='973' name='java.lang.ClassLoader' flags='1025'/>
+<klass id='971' name='java.lang.Class' flags='17'/>
+<method id='1081' holder='971' name='getClassLoader0' return='973' flags='0' bytes='5' iicount='130'/>
+<parse method='1081'  stamp='0.148'>
+<phase name='parse_hir' stamp='0.148'>
+<phase_done name='parse_hir' stamp='0.148'/>
+</phase>
+<parse_done stamp='0.148'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.148'>
+<phase_done name='optimize_blocks' stamp='0.148'/>
+</phase>
+<phase name='gvn' stamp='0.148'>
+<phase_done name='gvn' stamp='0.148'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.148'>
+<phase_done name='rangeCheckElimination' stamp='0.148'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.148'>
+<phase_done name='optimize_null_checks' stamp='0.148'/>
+</phase>
+<phase_done name='buildIR' stamp='0.148'/>
+</phase>
+<phase name='emit_lir' stamp='0.148'>
+<phase name='lirGeneration' stamp='0.148'>
+<phase_done name='lirGeneration' stamp='0.148'/>
+</phase>
+<phase name='linearScan' stamp='0.148'>
+<phase_done name='linearScan' stamp='0.148'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.148'/>
+</phase>
+<phase name='codeemit' stamp='0.148'>
+<phase_done name='codeemit' stamp='0.148'/>
+</phase>
+<phase name='codeinstall' stamp='0.148'>
+<phase_done name='codeinstall' stamp='0.148'/>
+</phase>
+<code_cache total_blobs='455' nmethods='86' adapters='232' free_code_cache='248738304'/>
+<task_done success='1' nmsize='272' count='132' stamp='0.148'/>
+</task>
+<task compile_id='93' method='java.lang.AbstractStringBuilder putStringAt (ILjava/lang/String;)V' bytes='29' count='256' iicount='256' level='3' stamp='0.150'>
+<phase name='setup' stamp='0.150'>
+<phase_done name='setup' stamp='0.150'/>
+</phase>
+<phase name='buildIR' stamp='0.150'>
+<type id='964' name='void'/>
+<type id='962' name='int'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<klass id='1037' name='java.lang.AbstractStringBuilder' flags='1024'/>
+<method id='1081' holder='1037' name='putStringAt' return='964' arguments='962 970' flags='18' bytes='29' iicount='256'/>
+<parse method='1081'  stamp='0.150'>
+<phase name='parse_hir' stamp='0.150'>
+<bc code='182' bci='1'/>
+<type id='960' name='byte'/>
+<method id='1083' holder='1037' name='getCoder' return='960' flags='16' bytes='15' iicount='256'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1083'>
+<parse_done stamp='0.150'/>
+</parse>
+<bc code='182' bci='5'/>
+<method id='1086' holder='970' name='coder' return='960' flags='0' bytes='15' compile_id='5' compiler='c1' level='3' iicount='5364'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1086'>
+<parse_done stamp='0.150'/>
+</parse>
+<bc code='182' bci='12'/>
+<method id='1088' holder='1037' name='inflate' return='964' flags='2' bytes='42' iicount='1'/>
+<call method='1088' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='25'/>
+<klass id='1073' name='[B' flags='1041'/>
+<method id='1090' holder='970' name='getBytes' return='964' arguments='1073 962 960' flags='0' bytes='44' iicount='256'/>
+<call method='1090' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<phase_done name='parse_hir' stamp='0.151'/>
+</phase>
+<parse_done stamp='0.151'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.151'>
+<phase_done name='optimize_blocks' stamp='0.151'/>
+</phase>
+<phase name='gvn' stamp='0.151'>
+<phase_done name='gvn' stamp='0.151'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.151'>
+<phase_done name='rangeCheckElimination' stamp='0.151'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.151'>
+<phase_done name='optimize_null_checks' stamp='0.151'/>
+</phase>
+<phase_done name='buildIR' stamp='0.151'/>
+</phase>
+<phase name='emit_lir' stamp='0.151'>
+<phase name='lirGeneration' stamp='0.151'>
+<phase_done name='lirGeneration' stamp='0.151'/>
+</phase>
+<phase name='linearScan' stamp='0.151'>
+<phase_done name='linearScan' stamp='0.151'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.151'/>
+</phase>
+<phase name='codeemit' stamp='0.151'>
+<phase_done name='codeemit' stamp='0.151'/>
+</phase>
+<phase name='codeinstall' stamp='0.151'>
+<phase_done name='codeinstall' stamp='0.151'/>
+</phase>
+<code_cache total_blobs='462' nmethods='93' adapters='232' free_code_cache='248731776'/>
+<task_done success='1' nmsize='856' count='256' inlined_bytes='30' stamp='0.151'/>
+</task>
+</compilation_log>
+<compilation_log thread='24142'>
+<start_compile_thread name='C1 CompilerThread1' thread='24142' process='24128' stamp='0.080'/>
+<task compile_id='8' method='java.util.ImmutableCollections$SetN probe (Ljava/lang/Object;)I' bytes='56' count='1614' backedge_count='639' iicount='1614' level='3' stamp='0.080'>
+<phase name='setup' stamp='0.080'>
+<phase_done name='setup' stamp='0.080'/>
+</phase>
+<phase name='buildIR' stamp='0.080'>
+<type id='962' name='int'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.ImmutableCollections$SetN' flags='24'/>
+<method id='1082' holder='1081' name='probe' return='962' arguments='969' flags='2' bytes='56' iicount='1614'/>
+<parse method='1082'  stamp='0.080'>
+<phase name='parse_hir' stamp='0.080'>
+<bc code='182' bci='1'/>
+<method id='1086' holder='969' name='hashCode' return='962' flags='257' bytes='0' iicount='289'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='184' bci='9'/>
+<klass id='1088' name='java.lang.Math' flags='17'/>
+<method id='1089' holder='1088' name='floorMod' return='962' arguments='962 962' flags='9' bytes='10' iicount='2242'/>
+<call method='1089' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1089'>
+<bc code='184' bci='3'/>
+<method id='1091' holder='1088' name='floorDiv' return='962' arguments='962 962' flags='9' bytes='22' iicount='2243'/>
+<call method='1091' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1091'>
+<parse_done stamp='0.081'/>
+</parse>
+<parse_done stamp='0.081'/>
+</parse>
+<bc code='182' bci='31'/>
+<type id='956' name='boolean'/>
+<method id='1093' holder='969' name='equals' return='956' arguments='969' flags='1' bytes='11' iicount='1'/>
+<call method='1093' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<phase_done name='parse_hir' stamp='0.081'/>
+</phase>
+<parse_done stamp='0.081'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.081'>
+<phase_done name='optimize_blocks' stamp='0.081'/>
+</phase>
+<phase name='gvn' stamp='0.081'>
+<phase_done name='gvn' stamp='0.081'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.081'>
+<phase_done name='rangeCheckElimination' stamp='0.081'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.081'>
+<phase_done name='optimize_null_checks' stamp='0.081'/>
+</phase>
+<phase_done name='buildIR' stamp='0.081'/>
+</phase>
+<phase name='emit_lir' stamp='0.081'>
+<phase name='lirGeneration' stamp='0.081'>
+<phase_done name='lirGeneration' stamp='0.088'/>
+</phase>
+<phase name='linearScan' stamp='0.088'>
+<phase_done name='linearScan' stamp='0.091'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.091'/>
+</phase>
+<phase name='codeemit' stamp='0.091'>
+<phase_done name='codeemit' stamp='0.091'/>
+</phase>
+<phase name='codeinstall' stamp='0.091'>
+<phase_done name='codeinstall' stamp='0.092'/>
+</phase>
+<code_cache total_blobs='281' nmethods='7' adapters='140' free_code_cache='248917888'/>
+<task_done success='1' nmsize='1560' count='2142' backedge_count='836' inlined_bytes='32' stamp='0.092'/>
+</task>
+<task compile_id='42' method='java.util.HashMap putVal (ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object;' bytes='300' count='1189' backedge_count='43' iicount='1189' level='3' stamp='0.092'>
+<phase name='setup' stamp='0.092'>
+<phase_done name='setup' stamp='0.092'/>
+</phase>
+<phase name='buildIR' stamp='0.092'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<type id='962' name='int'/>
+<type id='956' name='boolean'/>
+<klass id='1081' name='java.util.HashMap' flags='1'/>
+<method id='1082' holder='1081' name='putVal' return='969' arguments='962 969 969 956 956' flags='16' bytes='300' iicount='1196'/>
+<parse method='1082'  stamp='0.092'>
+<phase name='parse_hir' stamp='0.092'>
+<bc code='182' bci='20'/>
+<klass id='1085' name='[Ljava.util.HashMap$Node;' flags='1040'/>
+<method id='1086' holder='1081' name='resize' return='1085' flags='16' bytes='356' iicount='288'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='56'/>
+<klass id='1084' name='java.util.HashMap$Node' flags='8'/>
+<method id='1088' holder='1081' name='newNode' return='1084' arguments='962 969 969 1084' flags='0' bytes='13' iicount='1229'/>
+<call method='1088' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='182' bci='91'/>
+<method id='1089' holder='969' name='equals' return='956' arguments='969' flags='1' bytes='11' iicount='2'/>
+<call method='1089' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='182' bci='123'/>
+<klass id='1090' name='java.util.HashMap$TreeNode' flags='24'/>
+<method id='1091' holder='1090' name='putTreeVal' return='1090' arguments='1081 1085 962 969 969' flags='16' bytes='314' iicount='1'/>
+<call method='1091' instr='invokevirtual'/>
+<inline_fail reason='not inlineable'/>
+<bc code='182' bci='152'/>
+<call method='1088' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='182' bci='169'/>
+<type id='964' name='void'/>
+<method id='1092' holder='1081' name='treeifyBin' return='964' arguments='1085 962' flags='16' bytes='110' iicount='1'/>
+<call method='1092' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='203'/>
+<call method='1089' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='182' bci='253'/>
+<method id='1094' holder='1081' name='afterNodeAccess' return='964' arguments='1084' flags='0' bytes='1' iicount='17'/>
+<call method='1094' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='182' bci='288'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='295'/>
+<method id='1095' holder='1081' name='afterNodeInsertion' return='964' arguments='956' flags='0' bytes='1' iicount='1289'/>
+<call method='1095' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<phase_done name='parse_hir' stamp='0.092'/>
+</phase>
+<parse_done stamp='0.092'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.092'>
+<phase_done name='optimize_blocks' stamp='0.092'/>
+</phase>
+<phase name='gvn' stamp='0.092'>
+<phase_done name='gvn' stamp='0.092'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.092'>
+<phase_done name='rangeCheckElimination' stamp='0.092'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.092'>
+<phase_done name='optimize_null_checks' stamp='0.092'/>
+</phase>
+<phase_done name='buildIR' stamp='0.092'/>
+</phase>
+<phase name='emit_lir' stamp='0.092'>
+<phase name='lirGeneration' stamp='0.092'>
+<phase_done name='lirGeneration' stamp='0.092'/>
+</phase>
+<phase name='linearScan' stamp='0.092'>
+<phase_done name='linearScan' stamp='0.093'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.093'/>
+</phase>
+<phase name='codeemit' stamp='0.093'>
+<phase_done name='codeemit' stamp='0.093'/>
+</phase>
+<phase name='codeinstall' stamp='0.093'>
+<phase_done name='codeinstall' stamp='0.093'/>
+</phase>
+<code_cache total_blobs='289' nmethods='15' adapters='140' free_code_cache='248890368'/>
+<task_done success='1' nmsize='4824' count='1580' backedge_count='76' stamp='0.093'/>
+</task>
+<task compile_id='44' method='java.util.HashMap newNode (ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;' bytes='13' count='1566' iicount='1566' level='3' stamp='0.093'>
+<phase name='setup' stamp='0.093'>
+<phase_done name='setup' stamp='0.093'/>
+</phase>
+<phase name='buildIR' stamp='0.093'>
+<klass id='1082' name='java.util.HashMap$Node' flags='8'/>
+<type id='962' name='int'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.HashMap' flags='1'/>
+<method id='1083' holder='1081' name='newNode' return='1082' arguments='962 969 969 1082' flags='0' bytes='13' iicount='1572'/>
+<parse method='1083'  stamp='0.093'>
+<phase name='parse_hir' stamp='0.093'>
+<bc code='183' bci='9'/>
+<type id='964' name='void'/>
+<method id='1085' holder='1082' name='&lt;init&gt;' return='964' arguments='962 969 969 1082' flags='0' bytes='26' iicount='1580'/>
+<call method='1085' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1085'>
+<bc code='183' bci='1'/>
+<method id='1087' holder='969' name='&lt;init&gt;' return='964' flags='1' bytes='1' compile_id='1' compiler='c1' level='2' iicount='7128'/>
+<call method='1087' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1087'>
+<parse_done stamp='0.093'/>
+</parse>
+<parse_done stamp='0.093'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.093'/>
+</phase>
+<parse_done stamp='0.093'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.093'>
+<phase_done name='optimize_blocks' stamp='0.093'/>
+</phase>
+<phase name='gvn' stamp='0.093'>
+<phase_done name='gvn' stamp='0.093'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.093'>
+<phase_done name='rangeCheckElimination' stamp='0.093'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.093'>
+<phase_done name='optimize_null_checks' stamp='0.093'/>
+</phase>
+<phase_done name='buildIR' stamp='0.093'/>
+</phase>
+<phase name='emit_lir' stamp='0.093'>
+<phase name='lirGeneration' stamp='0.093'>
+<phase_done name='lirGeneration' stamp='0.093'/>
+</phase>
+<phase name='linearScan' stamp='0.093'>
+<phase_done name='linearScan' stamp='0.093'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.093'/>
+</phase>
+<phase name='codeemit' stamp='0.093'>
+<phase_done name='codeemit' stamp='0.094'/>
+</phase>
+<phase name='codeinstall' stamp='0.094'>
+<phase_done name='codeinstall' stamp='0.094'/>
+</phase>
+<code_cache total_blobs='295' nmethods='20' adapters='140' free_code_cache='248879104'/>
+<task_done success='1' nmsize='944' count='1690' inlined_bytes='27' stamp='0.094'/>
+</task>
+<task compile_id='7' method='java.lang.Math floorDiv (II)I' bytes='22' count='3200' iicount='3200' level='3' stamp='0.094'>
+<phase name='setup' stamp='0.094'>
+<phase_done name='setup' stamp='0.094'/>
+</phase>
+<phase name='buildIR' stamp='0.094'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.lang.Math' flags='17'/>
+<method id='1082' holder='1081' name='floorDiv' return='962' arguments='962 962' flags='9' bytes='22' iicount='3200'/>
+<parse method='1082'  stamp='0.094'>
+<phase name='parse_hir' stamp='0.094'>
+<phase_done name='parse_hir' stamp='0.094'/>
+</phase>
+<parse_done stamp='0.094'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.094'>
+<phase_done name='optimize_blocks' stamp='0.094'/>
+</phase>
+<phase name='gvn' stamp='0.094'>
+<phase_done name='gvn' stamp='0.094'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.094'>
+<phase_done name='rangeCheckElimination' stamp='0.094'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.094'>
+<phase_done name='optimize_null_checks' stamp='0.094'/>
+</phase>
+<phase_done name='buildIR' stamp='0.094'/>
+</phase>
+<phase name='emit_lir' stamp='0.094'>
+<phase name='lirGeneration' stamp='0.094'>
+<phase_done name='lirGeneration' stamp='0.094'/>
+</phase>
+<phase name='linearScan' stamp='0.094'>
+<phase_done name='linearScan' stamp='0.094'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.094'/>
+</phase>
+<phase name='codeemit' stamp='0.094'>
+<phase_done name='codeemit' stamp='0.094'/>
+</phase>
+<phase name='codeinstall' stamp='0.094'>
+<phase_done name='codeinstall' stamp='0.094'/>
+</phase>
+<code_cache total_blobs='300' nmethods='25' adapters='140' free_code_cache='248873600'/>
+<task_done success='1' nmsize='464' count='3200' stamp='0.094'/>
+</task>
+<task compile_id='15' method='java.lang.module.ModuleReference descriptor ()Ljava/lang/module/ModuleDescriptor;' bytes='5' count='1130' iicount='1130' level='1' stamp='0.094'>
+<phase name='setup' stamp='0.094'>
+<phase_done name='setup' stamp='0.094'/>
+</phase>
+<phase name='buildIR' stamp='0.094'>
+<klass id='1082' name='java.lang.module.ModuleDescriptor' flags='1'/>
+<klass id='1081' name='java.lang.module.ModuleReference' flags='1025'/>
+<method id='1083' holder='1081' name='descriptor' return='1082' flags='17' bytes='5' iicount='1130'/>
+<parse method='1083'  stamp='0.094'>
+<phase name='parse_hir' stamp='0.094'>
+<phase_done name='parse_hir' stamp='0.094'/>
+</phase>
+<parse_done stamp='0.094'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.094'>
+<phase_done name='optimize_blocks' stamp='0.094'/>
+</phase>
+<phase name='gvn' stamp='0.094'>
+<phase_done name='gvn' stamp='0.094'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.094'>
+<phase_done name='rangeCheckElimination' stamp='0.094'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.094'>
+<phase_done name='optimize_null_checks' stamp='0.094'/>
+</phase>
+<phase_done name='buildIR' stamp='0.094'/>
+</phase>
+<phase name='emit_lir' stamp='0.094'>
+<phase name='lirGeneration' stamp='0.094'>
+<phase_done name='lirGeneration' stamp='0.094'/>
+</phase>
+<phase name='linearScan' stamp='0.094'>
+<phase_done name='linearScan' stamp='0.094'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.094'/>
+</phase>
+<phase name='codeemit' stamp='0.094'>
+<phase_done name='codeemit' stamp='0.094'/>
+</phase>
+<phase name='codeinstall' stamp='0.094'>
+<phase_done name='codeinstall' stamp='0.094'/>
+</phase>
+<code_cache total_blobs='302' nmethods='27' adapters='140' free_code_cache='248871808'/>
+<task_done success='1' nmsize='272' count='1130' stamp='0.094'/>
+</task>
+<task compile_id='48' method='java.util.HashMap get (Ljava/lang/Object;)Ljava/lang/Object;' bytes='23' count='823' iicount='823' level='3' stamp='0.094'>
+<phase name='setup' stamp='0.094'>
+<phase_done name='setup' stamp='0.094'/>
+</phase>
+<phase name='buildIR' stamp='0.094'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.HashMap' flags='1'/>
+<method id='1082' holder='1081' name='get' return='969' arguments='969' flags='1' bytes='23' iicount='823'/>
+<parse method='1082'  stamp='0.094'>
+<phase name='parse_hir' stamp='0.094'>
+<bc code='184' bci='2'/>
+<type id='962' name='int'/>
+<method id='1084' holder='1081' name='hash' return='962' arguments='969' flags='24' bytes='20' compile_id='38' compiler='c1' level='3' iicount='2715'/>
+<call method='1084' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<bc code='182' bci='9'/>
+<method id='1086' holder='969' name='hashCode' return='962' flags='257' bytes='0' compile_id='50' compile_kind='c2n' compiler='' level='0' iicount='640'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<parse_done stamp='0.094'/>
+</parse>
+<bc code='182' bci='6'/>
+<klass id='1087' name='java.util.HashMap$Node' flags='8'/>
+<method id='1088' holder='1081' name='getNode' return='1087' arguments='962 969' flags='16' bytes='148' compile_id='46' compiler='c1' level='3' iicount='927'/>
+<call method='1088' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<phase_done name='parse_hir' stamp='0.095'/>
+</phase>
+<parse_done stamp='0.095'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.095'>
+<phase_done name='optimize_blocks' stamp='0.095'/>
+</phase>
+<phase name='gvn' stamp='0.095'>
+<phase_done name='gvn' stamp='0.095'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.095'>
+<phase_done name='rangeCheckElimination' stamp='0.095'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.095'>
+<phase_done name='optimize_null_checks' stamp='0.095'/>
+</phase>
+<phase_done name='buildIR' stamp='0.095'/>
+</phase>
+<phase name='emit_lir' stamp='0.095'>
+<phase name='lirGeneration' stamp='0.095'>
+<phase_done name='lirGeneration' stamp='0.095'/>
+</phase>
+<phase name='linearScan' stamp='0.095'>
+<phase_done name='linearScan' stamp='0.095'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.095'/>
+</phase>
+<phase name='codeemit' stamp='0.095'>
+<phase_done name='codeemit' stamp='0.095'/>
+</phase>
+<phase name='codeinstall' stamp='0.095'>
+<phase_done name='codeinstall' stamp='0.095'/>
+</phase>
+<code_cache total_blobs='307' nmethods='32' adapters='140' free_code_cache='248863616'/>
+<task_done success='1' nmsize='920' count='823' inlined_bytes='20' stamp='0.095'/>
+</task>
+<task compile_id='31' method='java.util.concurrent.ConcurrentHashMap addCount (JI)V' bytes='289' count='914' backedge_count='4' iicount='914' level='3' stamp='0.095'>
+<phase name='setup' stamp='0.095'>
+<phase_done name='setup' stamp='0.095'/>
+</phase>
+<phase name='buildIR' stamp='0.095'>
+<type id='964' name='void'/>
+<type id='963' name='long'/>
+<type id='962' name='int'/>
+<klass id='1081' name='java.util.concurrent.ConcurrentHashMap' flags='1'/>
+<method id='1082' holder='1081' name='addCount' return='964' arguments='963 962' flags='18' bytes='289' iicount='914'/>
+<parse method='1082'  stamp='0.095'>
+<phase name='parse_hir' stamp='0.095'>
+<bc code='182' bci='31'/>
+<type id='956' name='boolean'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1040' name='jdk.internal.misc.Unsafe' flags='17'/>
+<method id='1088' holder='1040' name='compareAndSetLong' return='956' arguments='969 963 963 963' flags='273' bytes='0' compile_id='32' compile_kind='c2n' compiler='' level='0' iicount='512'/>
+<call method='1088' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<bc code='184' bci='58'/>
+<klass id='1089' name='java.util.concurrent.ThreadLocalRandom' unloaded='1'/>
+<method id='1090' holder='1089' name='getProbe' return='962' unloaded='1'/>
+<call method='1090' instr='invokestatic'/>
+<inline_fail reason='not inlineable'/>
+<bc code='182' bci='91'/>
+<call method='1088' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<bc code='182' bci='115'/>
+<method id='1091' holder='1081' name='sumCount' return='963' flags='16' bytes='60' iicount='7'/>
+<call method='1091' instr='invokevirtual'/>
+<dependency type='leaf_type' ctxk='1081'/>
+<inline_fail reason='callee is too large'/>
+<bc code='184' bci='161'/>
+<method id='1095' holder='1081' name='resizeStamp' return='962' arguments='962' flags='24' bytes='8' iicount='8'/>
+<call method='1095' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1095'>
+<bc code='184' bci='1'/>
+<klass id='1065' name='java.lang.Integer' flags='17'/>
+<method id='1097' holder='1065' name='numberOfLeadingZeros' return='962' arguments='962' flags='9' bytes='78' iicount='23'/>
+<call method='1097' instr='invokestatic'/>
+<inline_fail reason='callee is too large'/>
+<parse_done stamp='0.095'/>
+</parse>
+<bc code='182' bci='233'/>
+<method id='1099' holder='1040' name='compareAndSetInt' return='956' arguments='969 963 962 962' flags='273' bytes='0' iicount='23'/>
+<call method='1099' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<bc code='182' bci='244'/>
+<klass id='1094' name='[Ljava.util.concurrent.ConcurrentHashMap$Node;' flags='1040'/>
+<method id='1100' holder='1081' name='transfer' return='964' arguments='1094 1094' flags='18' bytes='828' iicount='4'/>
+<call method='1100' instr='invokevirtual'/>
+<dependency type='leaf_type' ctxk='1081'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='266'/>
+<call method='1099' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<bc code='182' bci='276'/>
+<call method='1100' instr='invokevirtual'/>
+<dependency type='leaf_type' ctxk='1081'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='280'/>
+<call method='1091' instr='invokevirtual'/>
+<dependency type='leaf_type' ctxk='1081'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='104'/>
+<method id='1102' holder='1081' name='fullAddCount' return='964' arguments='963 956' flags='18' bytes='462' iicount='1'/>
+<call method='1102' instr='invokevirtual'/>
+<dependency type='leaf_type' ctxk='1081'/>
+<inline_fail reason='callee is too large'/>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.096'/>
+</phase>
+<phase name='linearScan' stamp='0.096'>
+<phase_done name='linearScan' stamp='0.096'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.096'/>
+</phase>
+<phase name='codeemit' stamp='0.096'>
+<phase_done name='codeemit' stamp='0.097'/>
+</phase>
+<phase name='codeinstall' stamp='0.097'>
+<dependency type='leaf_type' ctxk='1081'/>
+<phase_done name='codeinstall' stamp='0.097'/>
+</phase>
+<code_cache total_blobs='326' nmethods='49' adapters='140' free_code_cache='248842112'/>
+<task_done success='1' nmsize='2536' count='914' backedge_count='4' inlined_bytes='8' stamp='0.097'/>
+</task>
+<task compile_id='39' method='java.util.AbstractCollection &lt;init&gt; ()V' bytes='5' count='753' iicount='753' level='3' stamp='0.097'>
+<phase name='setup' stamp='0.097'>
+<phase_done name='setup' stamp='0.097'/>
+</phase>
+<phase name='buildIR' stamp='0.097'>
+<type id='964' name='void'/>
+<klass id='1081' name='java.util.AbstractCollection' flags='1025'/>
+<method id='1082' holder='1081' name='&lt;init&gt;' return='964' flags='4' bytes='5' iicount='753'/>
+<parse method='1082'  stamp='0.097'>
+<phase name='parse_hir' stamp='0.097'>
+<bc code='183' bci='1'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<method id='1084' holder='969' name='&lt;init&gt;' return='964' flags='1' bytes='1' compile_id='1' compiler='c1' level='2' iicount='7449'/>
+<call method='1084' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<bc code='177' bci='0'/>
+<dependency type='no_finalizable_subclasses' ctxk='1081'/>
+<parse_done stamp='0.097'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.097'/>
+</phase>
+<parse_done stamp='0.097'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.097'>
+<phase_done name='optimize_blocks' stamp='0.097'/>
+</phase>
+<phase name='gvn' stamp='0.097'>
+<phase_done name='gvn' stamp='0.097'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.097'>
+<phase_done name='rangeCheckElimination' stamp='0.097'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.097'>
+<phase_done name='optimize_null_checks' stamp='0.097'/>
+</phase>
+<phase_done name='buildIR' stamp='0.097'/>
+</phase>
+<phase name='emit_lir' stamp='0.097'>
+<phase name='lirGeneration' stamp='0.097'>
+<phase_done name='lirGeneration' stamp='0.097'/>
+</phase>
+<phase name='linearScan' stamp='0.097'>
+<phase_done name='linearScan' stamp='0.097'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.097'/>
+</phase>
+<phase name='codeemit' stamp='0.097'>
+<phase_done name='codeemit' stamp='0.097'/>
+</phase>
+<phase name='codeinstall' stamp='0.097'>
+<dependency type='no_finalizable_subclasses' ctxk='1081'/>
+<phase_done name='codeinstall' stamp='0.097'/>
+</phase>
+<code_cache total_blobs='332' nmethods='55' adapters='140' free_code_cache='248836224'/>
+<task_done success='1' nmsize='432' count='753' inlined_bytes='1' stamp='0.097'/>
+</task>
+<task compile_id='16' method='java.lang.String charAt (I)C' bytes='25' count='407' iicount='407' level='3' stamp='0.097'>
+<phase name='setup' stamp='0.097'>
+<phase_done name='setup' stamp='0.097'/>
+</phase>
+<phase name='buildIR' stamp='0.097'>
+<type id='957' name='char'/>
+<type id='962' name='int'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='970' name='charAt' return='957' arguments='962' flags='1' bytes='25' iicount='407'/>
+<parse method='1081'  stamp='0.097'>
+<phase name='parse_hir' stamp='0.097'>
+<bc code='182' bci='1'/>
+<type id='956' name='boolean'/>
+<method id='1083' holder='970' name='isLatin1' return='956' flags='2' bytes='19' compile_id='3' compiler='c1' level='3' iicount='3285'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1083'>
+<parse_done stamp='0.097'/>
+</parse>
+<bc code='184' bci='12'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1086' name='java.lang.StringLatin1' flags='16'/>
+<method id='1087' holder='1086' name='charAt' return='957' arguments='1073 962' flags='9' bytes='28' iicount='407'/>
+<call method='1087' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1087'>
+<bc code='183' bci='15'/>
+<type id='964' name='void'/>
+<klass id='1089' name='java.lang.StringIndexOutOfBoundsException' unloaded='1'/>
+<method id='1090' holder='1089' name='&lt;init&gt;' return='964' arguments='962' unloaded='1'/>
+<call method='1090' instr='invokespecial'/>
+<inline_fail reason='not inlineable'/>
+<parse_done stamp='0.097'/>
+</parse>
+<bc code='184' bci='21'/>
+<klass id='1091' name='java.lang.StringUTF16' unloaded='1'/>
+<method id='1092' holder='1091' name='charAt' return='957' arguments='1073 962' unloaded='1'/>
+<call method='1092' instr='invokestatic'/>
+<inline_fail reason='not inlineable'/>
+<phase_done name='parse_hir' stamp='0.097'/>
+</phase>
+<parse_done stamp='0.097'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.097'>
+<phase_done name='optimize_blocks' stamp='0.097'/>
+</phase>
+<phase name='gvn' stamp='0.097'>
+<phase_done name='gvn' stamp='0.097'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.097'>
+<phase_done name='rangeCheckElimination' stamp='0.097'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.097'>
+<phase_done name='optimize_null_checks' stamp='0.097'/>
+</phase>
+<phase_done name='buildIR' stamp='0.097'/>
+</phase>
+<phase name='emit_lir' stamp='0.097'>
+<phase name='lirGeneration' stamp='0.097'>
+<phase_done name='lirGeneration' stamp='0.097'/>
+</phase>
+<phase name='linearScan' stamp='0.097'>
+<phase_done name='linearScan' stamp='0.097'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.097'/>
+</phase>
+<phase name='codeemit' stamp='0.097'>
+<phase_done name='codeemit' stamp='0.098'/>
+</phase>
+<phase name='codeinstall' stamp='0.098'>
+<phase_done name='codeinstall' stamp='0.098'/>
+</phase>
+<code_cache total_blobs='336' nmethods='59' adapters='140' free_code_cache='248831488'/>
+<task_done success='1' nmsize='1048' count='430' inlined_bytes='47' stamp='0.098'/>
+</task>
+<task compile_id='67' method='java.lang.Math min (II)I' bytes='11' count='384' iicount='384' level='3' stamp='0.125'>
+<phase name='setup' stamp='0.125'>
+<phase_done name='setup' stamp='0.125'/>
+</phase>
+<phase name='buildIR' stamp='0.125'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.lang.Math' flags='17'/>
+<method id='1082' holder='1081' name='min' return='962' arguments='962 962' flags='9' bytes='11' iicount='384'/>
+<parse method='1082'  stamp='0.125'>
+<phase name='parse_hir' stamp='0.125'>
+<phase_done name='parse_hir' stamp='0.125'/>
+</phase>
+<parse_done stamp='0.125'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.125'>
+<phase_done name='optimize_blocks' stamp='0.125'/>
+</phase>
+<phase name='gvn' stamp='0.125'>
+<phase_done name='gvn' stamp='0.125'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.125'>
+<phase_done name='rangeCheckElimination' stamp='0.125'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.125'>
+<phase_done name='optimize_null_checks' stamp='0.125'/>
+</phase>
+<phase_done name='buildIR' stamp='0.125'/>
+</phase>
+<phase name='emit_lir' stamp='0.125'>
+<phase name='lirGeneration' stamp='0.125'>
+<phase_done name='lirGeneration' stamp='0.125'/>
+</phase>
+<phase name='linearScan' stamp='0.125'>
+<phase_done name='linearScan' stamp='0.125'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.125'/>
+</phase>
+<phase name='codeemit' stamp='0.125'>
+<phase_done name='codeemit' stamp='0.125'/>
+</phase>
+<phase name='codeinstall' stamp='0.125'>
+<phase_done name='codeinstall' stamp='0.125'/>
+</phase>
+<code_cache total_blobs='401' nmethods='66' adapters='198' free_code_cache='248787456'/>
+<task_done success='1' nmsize='400' count='384' stamp='0.126'/>
+</task>
+<task compile_id='70' method='java.lang.CharacterData of (I)Ljava/lang/CharacterData;' bytes='120' count='263' iicount='263' level='3' stamp='0.128'>
+<phase name='setup' stamp='0.128'>
+<phase_done name='setup' stamp='0.128'/>
+</phase>
+<phase name='buildIR' stamp='0.128'>
+<klass id='1081' name='java.lang.CharacterData' flags='1024'/>
+<type id='962' name='int'/>
+<method id='1082' holder='1081' name='of' return='1081' arguments='962' flags='24' bytes='120' iicount='263'/>
+<parse method='1082'  stamp='0.128'>
+<phase name='parse_hir' stamp='0.128'>
+<phase_done name='parse_hir' stamp='0.128'/>
+</phase>
+<parse_done stamp='0.128'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.128'>
+<phase_done name='optimize_blocks' stamp='0.128'/>
+</phase>
+<phase name='gvn' stamp='0.128'>
+<phase_done name='gvn' stamp='0.128'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.128'>
+<phase_done name='rangeCheckElimination' stamp='0.128'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.128'>
+<phase_done name='optimize_null_checks' stamp='0.128'/>
+</phase>
+<phase_done name='buildIR' stamp='0.128'/>
+</phase>
+<phase name='emit_lir' stamp='0.128'>
+<phase name='lirGeneration' stamp='0.128'>
+<phase_done name='lirGeneration' stamp='0.128'/>
+</phase>
+<phase name='linearScan' stamp='0.128'>
+<phase_done name='linearScan' stamp='0.128'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.128'/>
+</phase>
+<phase name='codeemit' stamp='0.128'>
+<phase_done name='codeemit' stamp='0.128'/>
+</phase>
+<phase name='codeinstall' stamp='0.128'>
+<phase_done name='codeinstall' stamp='0.128'/>
+</phase>
+<code_cache total_blobs='405' nmethods='70' adapters='198' free_code_cache='248780288'/>
+<task_done success='1' nmsize='1936' count='267' stamp='0.128'/>
+</task>
+<task compile_id='74' method='java.lang.CharacterDataLatin1 getProperties (I)I' bytes='11' count='261' iicount='261' level='3' stamp='0.133'>
+<phase name='setup' stamp='0.133'>
+<phase_done name='setup' stamp='0.133'/>
+</phase>
+<phase name='buildIR' stamp='0.133'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.lang.CharacterDataLatin1' flags='0'/>
+<method id='1082' holder='1081' name='getProperties' return='962' arguments='962' flags='0' bytes='11' iicount='261'/>
+<parse method='1082'  stamp='0.133'>
+<phase name='parse_hir' stamp='0.133'>
+<phase_done name='parse_hir' stamp='0.133'/>
+</phase>
+<parse_done stamp='0.133'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.133'>
+<phase_done name='optimize_blocks' stamp='0.133'/>
+</phase>
+<phase name='gvn' stamp='0.133'>
+<phase_done name='gvn' stamp='0.133'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.133'>
+<phase_done name='rangeCheckElimination' stamp='0.133'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.133'>
+<phase_done name='optimize_null_checks' stamp='0.133'/>
+</phase>
+<phase_done name='buildIR' stamp='0.133'/>
+</phase>
+<phase name='emit_lir' stamp='0.133'>
+<phase name='lirGeneration' stamp='0.133'>
+<phase_done name='lirGeneration' stamp='0.133'/>
+</phase>
+<phase name='linearScan' stamp='0.133'>
+<phase_done name='linearScan' stamp='0.133'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.133'/>
+</phase>
+<phase name='codeemit' stamp='0.133'>
+<phase_done name='codeemit' stamp='0.133'/>
+</phase>
+<phase name='codeinstall' stamp='0.133'>
+<phase_done name='codeinstall' stamp='0.133'/>
+</phase>
+<code_cache total_blobs='410' nmethods='74' adapters='199' free_code_cache='248774400'/>
+<task_done success='1' nmsize='400' count='261' stamp='0.133'/>
+</task>
+<task compile_id='79' method='java.lang.Enum ordinal ()I' bytes='5' count='135' iicount='135' level='1' stamp='0.141'>
+<phase name='setup' stamp='0.141'>
+<phase_done name='setup' stamp='0.141'/>
+</phase>
+<phase name='buildIR' stamp='0.141'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.lang.Enum' flags='1025'/>
+<method id='1082' holder='1081' name='ordinal' return='962' flags='17' bytes='5' iicount='135'/>
+<parse method='1082'  stamp='0.141'>
+<phase name='parse_hir' stamp='0.141'>
+<phase_done name='parse_hir' stamp='0.141'/>
+</phase>
+<parse_done stamp='0.141'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.141'>
+<phase_done name='optimize_blocks' stamp='0.141'/>
+</phase>
+<phase name='gvn' stamp='0.141'>
+<phase_done name='gvn' stamp='0.141'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.141'>
+<phase_done name='rangeCheckElimination' stamp='0.141'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.141'>
+<phase_done name='optimize_null_checks' stamp='0.141'/>
+</phase>
+<phase_done name='buildIR' stamp='0.141'/>
+</phase>
+<phase name='emit_lir' stamp='0.141'>
+<phase name='lirGeneration' stamp='0.141'>
+<phase_done name='lirGeneration' stamp='0.141'/>
+</phase>
+<phase name='linearScan' stamp='0.141'>
+<phase_done name='linearScan' stamp='0.141'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.141'/>
+</phase>
+<phase name='codeemit' stamp='0.141'>
+<phase_done name='codeemit' stamp='0.142'/>
+</phase>
+<phase name='codeinstall' stamp='0.142'>
+<phase_done name='codeinstall' stamp='0.142'/>
+</phase>
+<code_cache total_blobs='439' nmethods='79' adapters='223' free_code_cache='248753024'/>
+<task_done success='1' nmsize='272' count='135' stamp='0.142'/>
+</task>
+<task compile_id='88' method='java.lang.invoke.MethodType$ConcurrentWeakInternSet$WeakEntry hashCode ()I' bytes='5' count='132' iicount='132' level='1' stamp='0.148'>
+<phase name='setup' stamp='0.148'>
+<phase_done name='setup' stamp='0.148'/>
+</phase>
+<phase name='buildIR' stamp='0.148'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.lang.invoke.MethodType$ConcurrentWeakInternSet$WeakEntry' flags='10'/>
+<method id='1082' holder='1081' name='hashCode' return='962' flags='1' bytes='5' iicount='132'/>
+<parse method='1082'  stamp='0.148'>
+<phase name='parse_hir' stamp='0.148'>
+<phase_done name='parse_hir' stamp='0.148'/>
+</phase>
+<parse_done stamp='0.148'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.148'>
+<phase_done name='optimize_blocks' stamp='0.148'/>
+</phase>
+<phase name='gvn' stamp='0.148'>
+<phase_done name='gvn' stamp='0.148'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.148'>
+<phase_done name='rangeCheckElimination' stamp='0.148'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.148'>
+<phase_done name='optimize_null_checks' stamp='0.148'/>
+</phase>
+<phase_done name='buildIR' stamp='0.148'/>
+</phase>
+<phase name='emit_lir' stamp='0.148'>
+<phase name='lirGeneration' stamp='0.148'>
+<phase_done name='lirGeneration' stamp='0.148'/>
+</phase>
+<phase name='linearScan' stamp='0.148'>
+<phase_done name='linearScan' stamp='0.148'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.148'/>
+</phase>
+<phase name='codeemit' stamp='0.148'>
+<phase_done name='codeemit' stamp='0.148'/>
+</phase>
+<phase name='codeinstall' stamp='0.148'>
+<phase_done name='codeinstall' stamp='0.148'/>
+</phase>
+<code_cache total_blobs='459' nmethods='90' adapters='232' free_code_cache='248735488'/>
+<task_done success='1' nmsize='272' count='137' stamp='0.148'/>
+</task>
+<task compile_id='94' method='java.lang.AbstractStringBuilder getCoder ()B' bytes='15' count='256' iicount='256' level='3' stamp='0.150'>
+<phase name='setup' stamp='0.150'>
+<phase_done name='setup' stamp='0.150'/>
+</phase>
+<phase name='buildIR' stamp='0.150'>
+<type id='960' name='byte'/>
+<klass id='1037' name='java.lang.AbstractStringBuilder' flags='1024'/>
+<method id='1081' holder='1037' name='getCoder' return='960' flags='16' bytes='15' iicount='256'/>
+<parse method='1081'  stamp='0.150'>
+<phase name='parse_hir' stamp='0.150'>
+<phase_done name='parse_hir' stamp='0.150'/>
+</phase>
+<parse_done stamp='0.150'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.150'>
+<phase_done name='optimize_blocks' stamp='0.150'/>
+</phase>
+<phase name='gvn' stamp='0.150'>
+<phase_done name='gvn' stamp='0.150'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.150'>
+<phase_done name='rangeCheckElimination' stamp='0.150'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.150'>
+<phase_done name='optimize_null_checks' stamp='0.150'/>
+</phase>
+<phase_done name='buildIR' stamp='0.150'/>
+</phase>
+<phase name='emit_lir' stamp='0.150'>
+<phase name='lirGeneration' stamp='0.150'>
+<phase_done name='lirGeneration' stamp='0.150'/>
+</phase>
+<phase name='linearScan' stamp='0.150'>
+<phase_done name='linearScan' stamp='0.151'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.151'/>
+</phase>
+<phase name='codeemit' stamp='0.151'>
+<phase_done name='codeemit' stamp='0.151'/>
+</phase>
+<phase name='codeinstall' stamp='0.151'>
+<phase_done name='codeinstall' stamp='0.151'/>
+</phase>
+<code_cache total_blobs='461' nmethods='92' adapters='232' free_code_cache='248733440'/>
+<task_done success='1' nmsize='400' count='256' stamp='0.151'/>
+</task>
+</compilation_log>
+<compilation_log thread='24143'>
+<start_compile_thread name='C1 CompilerThread2' thread='24143' process='24128' stamp='0.080'/>
+<task compile_id='27' method='java.util.ImmutableCollections$SetN$SetNIterator next ()Ljava/lang/Object;' bytes='47' count='1227' backedge_count='1163' iicount='1227' level='3' stamp='0.080'>
+<phase name='setup' stamp='0.080'>
+<phase_done name='setup' stamp='0.080'/>
+</phase>
+<phase name='buildIR' stamp='0.080'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.ImmutableCollections$SetN$SetNIterator' flags='18'/>
+<method id='1082' holder='1081' name='next' return='969' flags='1' bytes='47' iicount='1246'/>
+<parse method='1082'  stamp='0.080'>
+<phase name='parse_hir' stamp='0.080'>
+<bc code='182' bci='1'/>
+<type id='956' name='boolean'/>
+<method id='1084' holder='1081' name='hasNext' return='956' flags='1' bytes='13' iicount='2563'/>
+<call method='1084' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<parse_done stamp='0.081'/>
+</parse>
+<bc code='182' bci='15'/>
+<type id='962' name='int'/>
+<method id='1088' holder='1081' name='nextIndex' return='962' flags='2' bytes='56' iicount='2453'/>
+<call method='1088' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<bc code='183' bci='43'/>
+<type id='964' name='void'/>
+<klass id='1090' name='java.util.NoSuchElementException' unloaded='1'/>
+<method id='1091' holder='1090' name='&lt;init&gt;' return='964' unloaded='1'/>
+<call method='1091' instr='invokespecial'/>
+<inline_fail reason='not inlineable'/>
+<phase_done name='parse_hir' stamp='0.081'/>
+</phase>
+<parse_done stamp='0.081'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.081'>
+<phase_done name='optimize_blocks' stamp='0.081'/>
+</phase>
+<phase name='gvn' stamp='0.081'>
+<phase_done name='gvn' stamp='0.081'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.081'>
+<phase_done name='rangeCheckElimination' stamp='0.081'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.081'>
+<phase_done name='optimize_null_checks' stamp='0.081'/>
+</phase>
+<phase_done name='buildIR' stamp='0.081'/>
+</phase>
+<phase name='emit_lir' stamp='0.081'>
+<phase name='lirGeneration' stamp='0.081'>
+<phase_done name='lirGeneration' stamp='0.088'/>
+</phase>
+<phase name='linearScan' stamp='0.088'>
+<phase_done name='linearScan' stamp='0.091'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.091'/>
+</phase>
+<phase name='codeemit' stamp='0.091'>
+<phase_done name='codeemit' stamp='0.091'/>
+</phase>
+<phase name='codeinstall' stamp='0.091'>
+<phase_done name='codeinstall' stamp='0.091'/>
+</phase>
+<code_cache total_blobs='280' nmethods='6' adapters='140' free_code_cache='248920576'/>
+<task_done success='1' nmsize='1016' count='2475' backedge_count='2327' inlined_bytes='13' stamp='0.091'/>
+</task>
+<task compile_id='24' method='java.util.ImmutableCollections$MapN probe (Ljava/lang/Object;)I' bytes='60' count='743' backedge_count='353' iicount='743' level='3' stamp='0.092'>
+<phase name='setup' stamp='0.092'>
+<phase_done name='setup' stamp='0.092'/>
+</phase>
+<phase name='buildIR' stamp='0.092'>
+<type id='962' name='int'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.ImmutableCollections$MapN' flags='24'/>
+<method id='1082' holder='1081' name='probe' return='962' arguments='969' flags='2' bytes='60' iicount='743'/>
+<parse method='1082'  stamp='0.092'>
+<phase name='parse_hir' stamp='0.092'>
+<bc code='182' bci='1'/>
+<method id='1085' holder='969' name='hashCode' return='962' flags='257' bytes='0' compile_id='50' compile_kind='c2n' compiler='' level='0' iicount='640'/>
+<call method='1085' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='184' bci='11'/>
+<klass id='1087' name='java.lang.Math' flags='17'/>
+<method id='1088' holder='1087' name='floorMod' return='962' arguments='962 962' flags='9' bytes='10' iicount='3065'/>
+<call method='1088' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1088'>
+<bc code='184' bci='3'/>
+<method id='1090' holder='1087' name='floorDiv' return='962' arguments='962 962' flags='9' bytes='22' iicount='3065'/>
+<call method='1090' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1090'>
+<parse_done stamp='0.092'/>
+</parse>
+<parse_done stamp='0.092'/>
+</parse>
+<bc code='182' bci='35'/>
+<type id='956' name='boolean'/>
+<method id='1092' holder='969' name='equals' return='956' arguments='969' flags='1' bytes='11' iicount='2'/>
+<call method='1092' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<phase_done name='parse_hir' stamp='0.092'/>
+</phase>
+<parse_done stamp='0.092'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.092'>
+<phase_done name='optimize_blocks' stamp='0.092'/>
+</phase>
+<phase name='gvn' stamp='0.092'>
+<phase_done name='gvn' stamp='0.092'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.092'>
+<phase_done name='rangeCheckElimination' stamp='0.092'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.092'>
+<phase_done name='optimize_null_checks' stamp='0.092'/>
+</phase>
+<phase_done name='buildIR' stamp='0.092'/>
+</phase>
+<phase name='emit_lir' stamp='0.092'>
+<phase name='lirGeneration' stamp='0.092'>
+<phase_done name='lirGeneration' stamp='0.092'/>
+</phase>
+<phase name='linearScan' stamp='0.092'>
+<phase_done name='linearScan' stamp='0.092'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.092'/>
+</phase>
+<phase name='codeemit' stamp='0.092'>
+<phase_done name='codeemit' stamp='0.092'/>
+</phase>
+<phase name='codeinstall' stamp='0.092'>
+<phase_done name='codeinstall' stamp='0.092'/>
+</phase>
+<code_cache total_blobs='284' nmethods='10' adapters='140' free_code_cache='248912896'/>
+<task_done success='1' nmsize='1592' count='771' backedge_count='355' inlined_bytes='32' stamp='0.092'/>
+</task>
+<task compile_id='21' method='java.util.ImmutableCollections$SetN$SetNIterator nextIndex ()I' bytes='56' count='5126' iicount='5126' level='3' stamp='0.092'>
+<phase name='setup' stamp='0.092'>
+<phase_done name='setup' stamp='0.092'/>
+</phase>
+<phase name='buildIR' stamp='0.092'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.util.ImmutableCollections$SetN$SetNIterator' flags='18'/>
+<method id='1082' holder='1081' name='nextIndex' return='962' flags='2' bytes='56' iicount='5175'/>
+<parse method='1082'  stamp='0.092'>
+<phase name='parse_hir' stamp='0.092'>
+<phase_done name='parse_hir' stamp='0.093'/>
+</phase>
+<parse_done stamp='0.093'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.093'>
+<phase_done name='optimize_blocks' stamp='0.093'/>
+</phase>
+<phase name='gvn' stamp='0.093'>
+<phase_done name='gvn' stamp='0.093'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.093'>
+<phase_done name='rangeCheckElimination' stamp='0.093'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.093'>
+<phase_done name='optimize_null_checks' stamp='0.093'/>
+</phase>
+<phase_done name='buildIR' stamp='0.093'/>
+</phase>
+<phase name='emit_lir' stamp='0.093'>
+<phase name='lirGeneration' stamp='0.093'>
+<phase_done name='lirGeneration' stamp='0.093'/>
+</phase>
+<phase name='linearScan' stamp='0.093'>
+<phase_done name='linearScan' stamp='0.093'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.093'/>
+</phase>
+<phase name='codeemit' stamp='0.093'>
+<phase_done name='codeemit' stamp='0.093'/>
+</phase>
+<phase name='codeinstall' stamp='0.093'>
+<phase_done name='codeinstall' stamp='0.093'/>
+</phase>
+<code_cache total_blobs='287' nmethods='13' adapters='140' free_code_cache='248898304'/>
+<task_done success='1' nmsize='464' count='5297' stamp='0.093'/>
+</task>
+<task compile_id='38' method='java.util.HashMap hash (Ljava/lang/Object;)I' bytes='20' count='2423' iicount='2423' level='3' stamp='0.093'>
+<phase name='setup' stamp='0.093'>
+<phase_done name='setup' stamp='0.093'/>
+</phase>
+<phase name='buildIR' stamp='0.093'>
+<type id='962' name='int'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.HashMap' flags='1'/>
+<method id='1082' holder='1081' name='hash' return='962' arguments='969' flags='24' bytes='20' iicount='2432'/>
+<parse method='1082'  stamp='0.093'>
+<phase name='parse_hir' stamp='0.093'>
+<bc code='182' bci='9'/>
+<method id='1084' holder='969' name='hashCode' return='962' flags='257' bytes='0' compile_id='50' compile_kind='c2n' compiler='' level='0' iicount='640'/>
+<call method='1084' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<phase_done name='parse_hir' stamp='0.093'/>
+</phase>
+<parse_done stamp='0.093'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.093'>
+<phase_done name='optimize_blocks' stamp='0.093'/>
+</phase>
+<phase name='gvn' stamp='0.093'>
+<phase_done name='gvn' stamp='0.093'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.093'>
+<phase_done name='rangeCheckElimination' stamp='0.093'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.093'>
+<phase_done name='optimize_null_checks' stamp='0.093'/>
+</phase>
+<phase_done name='buildIR' stamp='0.093'/>
+</phase>
+<phase name='emit_lir' stamp='0.093'>
+<phase name='lirGeneration' stamp='0.093'>
+<phase_done name='lirGeneration' stamp='0.093'/>
+</phase>
+<phase name='linearScan' stamp='0.093'>
+<phase_done name='linearScan' stamp='0.093'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.093'/>
+</phase>
+<phase name='codeemit' stamp='0.093'>
+<phase_done name='codeemit' stamp='0.093'/>
+</phase>
+<phase name='codeinstall' stamp='0.093'>
+<phase_done name='codeinstall' stamp='0.093'/>
+</phase>
+<code_cache total_blobs='290' nmethods='16' adapters='140' free_code_cache='248889088'/>
+<task_done success='1' nmsize='616' count='2510' stamp='0.093'/>
+</task>
+<task compile_id='45' method='java.util.HashMap afterNodeInsertion (Z)V' bytes='1' count='1566' iicount='1566' level='3' stamp='0.093'>
+<phase name='setup' stamp='0.093'>
+<phase_done name='setup' stamp='0.093'/>
+</phase>
+<phase name='buildIR' stamp='0.093'>
+<type id='964' name='void'/>
+<type id='956' name='boolean'/>
+<klass id='1081' name='java.util.HashMap' flags='1'/>
+<method id='1082' holder='1081' name='afterNodeInsertion' return='964' arguments='956' flags='0' bytes='1' iicount='1568'/>
+<parse method='1082'  stamp='0.093'>
+<phase name='parse_hir' stamp='0.093'>
+<phase_done name='parse_hir' stamp='0.093'/>
+</phase>
+<parse_done stamp='0.093'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.093'>
+<phase_done name='optimize_blocks' stamp='0.093'/>
+</phase>
+<phase name='gvn' stamp='0.093'>
+<phase_done name='gvn' stamp='0.093'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.093'>
+<phase_done name='rangeCheckElimination' stamp='0.093'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.093'>
+<phase_done name='optimize_null_checks' stamp='0.093'/>
+</phase>
+<phase_done name='buildIR' stamp='0.093'/>
+</phase>
+<phase name='emit_lir' stamp='0.093'>
+<phase name='lirGeneration' stamp='0.093'>
+<phase_done name='lirGeneration' stamp='0.093'/>
+</phase>
+<phase name='linearScan' stamp='0.093'>
+<phase_done name='linearScan' stamp='0.093'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.093'/>
+</phase>
+<phase name='codeemit' stamp='0.093'>
+<phase_done name='codeemit' stamp='0.093'/>
+</phase>
+<phase name='codeinstall' stamp='0.093'>
+<phase_done name='codeinstall' stamp='0.093'/>
+</phase>
+<code_cache total_blobs='293' nmethods='18' adapters='140' free_code_cache='248882176'/>
+<task_done success='1' nmsize='336' count='1612' stamp='0.093'/>
+</task>
+<task compile_id='3' method='java.lang.String isLatin1 ()Z' bytes='19' count='3221' iicount='3221' level='3' stamp='0.093'>
+<phase name='setup' stamp='0.093'>
+<phase_done name='setup' stamp='0.093'/>
+</phase>
+<phase name='buildIR' stamp='0.093'>
+<type id='956' name='boolean'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='970' name='isLatin1' return='956' flags='2' bytes='19' iicount='3226'/>
+<parse method='1081'  stamp='0.093'>
+<phase name='parse_hir' stamp='0.093'>
+<phase_done name='parse_hir' stamp='0.094'/>
+</phase>
+<parse_done stamp='0.094'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.094'>
+<phase_done name='optimize_blocks' stamp='0.094'/>
+</phase>
+<phase name='gvn' stamp='0.094'>
+<phase_done name='gvn' stamp='0.094'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.094'>
+<phase_done name='rangeCheckElimination' stamp='0.094'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.094'>
+<phase_done name='optimize_null_checks' stamp='0.094'/>
+</phase>
+<phase_done name='buildIR' stamp='0.094'/>
+</phase>
+<phase name='emit_lir' stamp='0.094'>
+<phase name='lirGeneration' stamp='0.094'>
+<phase_done name='lirGeneration' stamp='0.094'/>
+</phase>
+<phase name='linearScan' stamp='0.094'>
+<phase_done name='linearScan' stamp='0.094'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.094'/>
+</phase>
+<phase name='codeemit' stamp='0.094'>
+<phase_done name='codeemit' stamp='0.094'/>
+</phase>
+<phase name='codeinstall' stamp='0.094'>
+<phase_done name='codeinstall' stamp='0.094'/>
+</phase>
+<code_cache total_blobs='297' nmethods='22' adapters='140' free_code_cache='248877056'/>
+<task_done success='1' nmsize='464' count='3229' stamp='0.094'/>
+</task>
+<task compile_id='52' method='java.util.ImmutableCollections$Set12$1 hasNext ()Z' bytes='13' count='823' iicount='823' level='3' stamp='0.094'>
+<phase name='setup' stamp='0.094'>
+<phase_done name='setup' stamp='0.094'/>
+</phase>
+<phase name='buildIR' stamp='0.094'>
+<type id='956' name='boolean'/>
+<klass id='1081' name='java.util.ImmutableCollections$Set12$1' flags='0'/>
+<method id='1082' holder='1081' name='hasNext' return='956' flags='1' bytes='13' iicount='823'/>
+<parse method='1082'  stamp='0.094'>
+<phase name='parse_hir' stamp='0.094'>
+<phase_done name='parse_hir' stamp='0.094'/>
+</phase>
+<parse_done stamp='0.094'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.094'>
+<phase_done name='optimize_blocks' stamp='0.094'/>
+</phase>
+<phase name='gvn' stamp='0.094'>
+<phase_done name='gvn' stamp='0.094'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.094'>
+<phase_done name='rangeCheckElimination' stamp='0.094'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.094'>
+<phase_done name='optimize_null_checks' stamp='0.094'/>
+</phase>
+<phase_done name='buildIR' stamp='0.094'/>
+</phase>
+<phase name='emit_lir' stamp='0.094'>
+<phase name='lirGeneration' stamp='0.094'>
+<phase_done name='lirGeneration' stamp='0.094'/>
+</phase>
+<phase name='linearScan' stamp='0.094'>
+<phase_done name='linearScan' stamp='0.094'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.094'/>
+</phase>
+<phase name='codeemit' stamp='0.094'>
+<phase_done name='codeemit' stamp='0.094'/>
+</phase>
+<phase name='codeinstall' stamp='0.094'>
+<phase_done name='codeinstall' stamp='0.094'/>
+</phase>
+<code_cache total_blobs='301' nmethods='26' adapters='140' free_code_cache='248872576'/>
+<task_done success='1' nmsize='432' count='823' stamp='0.094'/>
+</task>
+<task compile_id='13' method='java.util.Objects requireNonNull (Ljava/lang/Object;)Ljava/lang/Object;' bytes='14' count='2512' iicount='2512' level='3' stamp='0.094'>
+<phase name='setup' stamp='0.094'>
+<phase_done name='setup' stamp='0.094'/>
+</phase>
+<phase name='buildIR' stamp='0.094'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.Objects' flags='17'/>
+<method id='1082' holder='1081' name='requireNonNull' return='969' arguments='969' flags='9' bytes='14' iicount='2512'/>
+<parse method='1082'  stamp='0.094'>
+<phase name='parse_hir' stamp='0.094'>
+<bc code='183' bci='8'/>
+<type id='964' name='void'/>
+<klass id='1077' name='java.lang.NullPointerException' flags='1'/>
+<method id='1084' holder='1077' name='&lt;init&gt;' return='964' flags='1' bytes='5' iicount='1'/>
+<call method='1084' instr='invokespecial'/>
+<inline_fail reason='don&apos;t inline Throwable constructors'/>
+<phase_done name='parse_hir' stamp='0.094'/>
+</phase>
+<parse_done stamp='0.094'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.094'>
+<phase_done name='optimize_blocks' stamp='0.094'/>
+</phase>
+<phase name='gvn' stamp='0.094'>
+<phase_done name='gvn' stamp='0.094'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.094'>
+<phase_done name='rangeCheckElimination' stamp='0.094'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.094'>
+<phase_done name='optimize_null_checks' stamp='0.094'/>
+</phase>
+<phase_done name='buildIR' stamp='0.094'/>
+</phase>
+<phase name='emit_lir' stamp='0.094'>
+<phase name='lirGeneration' stamp='0.094'>
+<phase_done name='lirGeneration' stamp='0.094'/>
+</phase>
+<phase name='linearScan' stamp='0.094'>
+<phase_done name='linearScan' stamp='0.094'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.094'/>
+</phase>
+<phase name='codeemit' stamp='0.094'>
+<phase_done name='codeemit' stamp='0.094'/>
+</phase>
+<phase name='codeinstall' stamp='0.094'>
+<phase_done name='codeinstall' stamp='0.094'/>
+</phase>
+<code_cache total_blobs='304' nmethods='29' adapters='140' free_code_cache='248868864'/>
+<task_done success='1' nmsize='584' count='2512' stamp='0.094'/>
+</task>
+<task compile_id='56' method='jdk.internal.module.ModuleBootstrap$2 next ()Ljava/lang/Object;' bytes='52' count='582' iicount='582' level='3' stamp='0.094'>
+<phase name='setup' stamp='0.094'>
+<phase_done name='setup' stamp='0.094'/>
+</phase>
+<phase name='buildIR' stamp='0.094'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='jdk.internal.module.ModuleBootstrap$2' flags='0'/>
+<method id='1082' holder='1081' name='next' return='969' flags='1' bytes='52' iicount='582'/>
+<parse method='1082'  stamp='0.094'>
+<phase name='parse_hir' stamp='0.094'>
+<bc code='185' bci='4'/>
+<type id='956' name='boolean'/>
+<klass id='1086' name='java.util.Iterator' flags='1537'/>
+<method id='1087' holder='1086' name='hasNext' return='956' flags='1025' bytes='0' iicount='1'/>
+<call method='1087' instr='invokeinterface'/>
+<inline_fail reason='no static binding'/>
+<bc code='185' bci='16'/>
+<method id='1088' holder='1086' name='next' return='969' flags='1025' bytes='0' iicount='1'/>
+<call method='1088' instr='invokeinterface'/>
+<inline_fail reason='no static binding'/>
+<bc code='185' bci='26'/>
+<call method='1087' instr='invokeinterface'/>
+<inline_fail reason='no static binding'/>
+<bc code='185' bci='38'/>
+<call method='1088' instr='invokeinterface'/>
+<inline_fail reason='no static binding'/>
+<bc code='183' bci='48'/>
+<type id='964' name='void'/>
+<klass id='1089' name='java.util.NoSuchElementException' unloaded='1'/>
+<method id='1090' holder='1089' name='&lt;init&gt;' return='964' unloaded='1'/>
+<call method='1090' instr='invokespecial'/>
+<inline_fail reason='not inlineable'/>
+<phase_done name='parse_hir' stamp='0.095'/>
+</phase>
+<parse_done stamp='0.095'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.095'>
+<phase_done name='optimize_blocks' stamp='0.095'/>
+</phase>
+<phase name='gvn' stamp='0.095'>
+<phase_done name='gvn' stamp='0.095'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.095'>
+<phase_done name='rangeCheckElimination' stamp='0.095'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.095'>
+<phase_done name='optimize_null_checks' stamp='0.095'/>
+</phase>
+<phase_done name='buildIR' stamp='0.095'/>
+</phase>
+<phase name='emit_lir' stamp='0.095'>
+<phase name='lirGeneration' stamp='0.095'>
+<phase_done name='lirGeneration' stamp='0.095'/>
+</phase>
+<phase name='linearScan' stamp='0.095'>
+<phase_done name='linearScan' stamp='0.095'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.095'/>
+</phase>
+<phase name='codeemit' stamp='0.095'>
+<phase_done name='codeemit' stamp='0.095'/>
+</phase>
+<phase name='codeinstall' stamp='0.095'>
+<phase_done name='codeinstall' stamp='0.095'/>
+</phase>
+<code_cache total_blobs='309' nmethods='34' adapters='140' free_code_cache='248860416'/>
+<task_done success='1' nmsize='1448' count='582' stamp='0.095'/>
+</task>
+<task compile_id='40' method='java.lang.module.ModuleDescriptor$Exports source ()Ljava/lang/String;' bytes='5' count='354' iicount='354' level='1' stamp='0.095'>
+<phase name='setup' stamp='0.095'>
+<phase_done name='setup' stamp='0.095'/>
+</phase>
+<phase name='buildIR' stamp='0.095'>
+<klass id='970' name='java.lang.String' flags='17'/>
+<klass id='1081' name='java.lang.module.ModuleDescriptor$Exports' flags='25'/>
+<method id='1082' holder='1081' name='source' return='970' flags='1' bytes='5' iicount='354'/>
+<parse method='1082'  stamp='0.095'>
+<phase name='parse_hir' stamp='0.095'>
+<phase_done name='parse_hir' stamp='0.095'/>
+</phase>
+<parse_done stamp='0.095'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.095'>
+<phase_done name='optimize_blocks' stamp='0.095'/>
+</phase>
+<phase name='gvn' stamp='0.095'>
+<phase_done name='gvn' stamp='0.095'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.095'>
+<phase_done name='rangeCheckElimination' stamp='0.095'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.095'>
+<phase_done name='optimize_null_checks' stamp='0.095'/>
+</phase>
+<phase_done name='buildIR' stamp='0.095'/>
+</phase>
+<phase name='emit_lir' stamp='0.095'>
+<phase name='lirGeneration' stamp='0.095'>
+<phase_done name='lirGeneration' stamp='0.095'/>
+</phase>
+<phase name='linearScan' stamp='0.095'>
+<phase_done name='linearScan' stamp='0.095'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.095'/>
+</phase>
+<phase name='codeemit' stamp='0.095'>
+<phase_done name='codeemit' stamp='0.095'/>
+</phase>
+<phase name='codeinstall' stamp='0.095'>
+<phase_done name='codeinstall' stamp='0.095'/>
+</phase>
+<code_cache total_blobs='314' nmethods='37' adapters='140' free_code_cache='248857216'/>
+<task_done success='1' nmsize='272' count='354' stamp='0.095'/>
+</task>
+<task compile_id='37' method='java.util.ImmutableCollections$SetN size ()I' bytes='5' count='431' iicount='431' level='1' stamp='0.095'>
+<phase name='setup' stamp='0.095'>
+<phase_done name='setup' stamp='0.095'/>
+</phase>
+<phase name='buildIR' stamp='0.095'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.util.ImmutableCollections$SetN' flags='24'/>
+<method id='1082' holder='1081' name='size' return='962' flags='1' bytes='5' iicount='431'/>
+<parse method='1082'  stamp='0.095'>
+<phase name='parse_hir' stamp='0.095'>
+<phase_done name='parse_hir' stamp='0.095'/>
+</phase>
+<parse_done stamp='0.095'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.095'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.096'/>
+</phase>
+<phase name='linearScan' stamp='0.096'>
+<phase_done name='linearScan' stamp='0.096'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.096'/>
+</phase>
+<phase name='codeemit' stamp='0.096'>
+<phase_done name='codeemit' stamp='0.096'/>
+</phase>
+<phase name='codeinstall' stamp='0.096'>
+<phase_done name='codeinstall' stamp='0.096'/>
+</phase>
+<code_cache total_blobs='317' nmethods='40' adapters='140' free_code_cache='248854144'/>
+<task_done success='1' nmsize='272' count='431' stamp='0.096'/>
+</task>
+<task compile_id='34' method='java.util.concurrent.ConcurrentHashMap putIfAbsent (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='8' count='858' iicount='858' level='3' stamp='0.096'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.concurrent.ConcurrentHashMap' flags='1'/>
+<method id='1082' holder='1081' name='putIfAbsent' return='969' arguments='969 969' flags='1' bytes='8' iicount='858'/>
+<parse method='1082'  stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<bc code='182' bci='4'/>
+<type id='956' name='boolean'/>
+<method id='1084' holder='1081' name='putVal' return='969' arguments='969 969 956' flags='16' bytes='432' compile_id='30' compiler='c1' level='3' iicount='918'/>
+<call method='1084' instr='invokevirtual'/>
+<dependency type='leaf_type' ctxk='1081'/>
+<inline_fail reason='callee is too large'/>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.096'/>
+</phase>
+<phase name='linearScan' stamp='0.096'>
+<phase_done name='linearScan' stamp='0.096'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.096'/>
+</phase>
+<phase name='codeemit' stamp='0.096'>
+<phase_done name='codeemit' stamp='0.096'/>
+</phase>
+<phase name='codeinstall' stamp='0.096'>
+<dependency type='leaf_type' ctxk='1081'/>
+<phase_done name='codeinstall' stamp='0.096'/>
+</phase>
+<code_cache total_blobs='320' nmethods='43' adapters='140' free_code_cache='248851072'/>
+<task_done success='1' nmsize='392' count='858' stamp='0.096'/>
+</task>
+<task compile_id='18' method='java.util.concurrent.ConcurrentHashMap tabAt ([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;' bytes='22' count='1499' iicount='1499' level='3' stamp='0.096'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<klass id='1082' name='java.util.concurrent.ConcurrentHashMap$Node' flags='8'/>
+<klass id='1083' name='[Ljava.util.concurrent.ConcurrentHashMap$Node;' flags='1040'/>
+<type id='962' name='int'/>
+<klass id='1081' name='java.util.concurrent.ConcurrentHashMap' flags='1'/>
+<method id='1084' holder='1081' name='tabAt' return='1082' arguments='1083 962' flags='24' bytes='22' iicount='1499'/>
+<parse method='1084'  stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<bc code='182' bci='15'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<type id='963' name='long'/>
+<klass id='1040' name='jdk.internal.misc.Unsafe' flags='17'/>
+<method id='1089' holder='1040' name='getObjectAcquire' return='969' arguments='969 963' flags='17' bytes='7' iicount='1499'/>
+<call method='1089' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1089'>
+<bc code='182' bci='3'/>
+<method id='1091' holder='1040' name='getObjectVolatile' return='969' arguments='969 963' flags='257' bytes='0' compile_id='28' compile_kind='c2n' compiler='' level='0' iicount='512'/>
+<call method='1091' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<parse_done stamp='0.096'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.096'/>
+</phase>
+<phase name='linearScan' stamp='0.096'>
+<phase_done name='linearScan' stamp='0.096'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.096'/>
+</phase>
+<phase name='codeemit' stamp='0.096'>
+<phase_done name='codeemit' stamp='0.096'/>
+</phase>
+<phase name='codeinstall' stamp='0.096'>
+<phase_done name='codeinstall' stamp='0.096'/>
+</phase>
+<code_cache total_blobs='324' nmethods='47' adapters='140' free_code_cache='248846720'/>
+<task_done success='1' nmsize='816' count='1499' inlined_bytes='7' stamp='0.096'/>
+</task>
+<task compile_id='29' method='java.util.concurrent.ConcurrentHashMap spread (I)I' bytes='10' count='1037' iicount='1037' level='3' stamp='0.096'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.util.concurrent.ConcurrentHashMap' flags='1'/>
+<method id='1082' holder='1081' name='spread' return='962' arguments='962' flags='24' bytes='10' iicount='1037'/>
+<parse method='1082'  stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.097'/>
+</phase>
+<phase name='linearScan' stamp='0.097'>
+<phase_done name='linearScan' stamp='0.097'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.097'/>
+</phase>
+<phase name='codeemit' stamp='0.097'>
+<phase_done name='codeemit' stamp='0.097'/>
+</phase>
+<phase name='codeinstall' stamp='0.097'>
+<phase_done name='codeinstall' stamp='0.097'/>
+</phase>
+<code_cache total_blobs='327' nmethods='50' adapters='140' free_code_cache='248841216'/>
+<task_done success='1' nmsize='336' count='1037' stamp='0.097'/>
+</task>
+<task compile_id='53' method='java.lang.module.ModuleDescriptor isOpen ()Z' bytes='5' count='180' iicount='180' level='1' stamp='0.097'>
+<phase name='setup' stamp='0.097'>
+<phase_done name='setup' stamp='0.097'/>
+</phase>
+<phase name='buildIR' stamp='0.097'>
+<type id='956' name='boolean'/>
+<klass id='1081' name='java.lang.module.ModuleDescriptor' flags='1'/>
+<method id='1082' holder='1081' name='isOpen' return='956' flags='1' bytes='5' iicount='180'/>
+<parse method='1082'  stamp='0.097'>
+<phase name='parse_hir' stamp='0.097'>
+<phase_done name='parse_hir' stamp='0.097'/>
+</phase>
+<parse_done stamp='0.097'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.097'>
+<phase_done name='optimize_blocks' stamp='0.097'/>
+</phase>
+<phase name='gvn' stamp='0.097'>
+<phase_done name='gvn' stamp='0.097'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.097'>
+<phase_done name='rangeCheckElimination' stamp='0.097'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.097'>
+<phase_done name='optimize_null_checks' stamp='0.097'/>
+</phase>
+<phase_done name='buildIR' stamp='0.097'/>
+</phase>
+<phase name='emit_lir' stamp='0.097'>
+<phase name='lirGeneration' stamp='0.097'>
+<phase_done name='lirGeneration' stamp='0.097'/>
+</phase>
+<phase name='linearScan' stamp='0.097'>
+<phase_done name='linearScan' stamp='0.097'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.097'/>
+</phase>
+<phase name='codeemit' stamp='0.097'>
+<phase_done name='codeemit' stamp='0.097'/>
+</phase>
+<phase name='codeinstall' stamp='0.097'>
+<phase_done name='codeinstall' stamp='0.097'/>
+</phase>
+<code_cache total_blobs='331' nmethods='54' adapters='140' free_code_cache='248837248'/>
+<task_done success='1' nmsize='272' count='180' stamp='0.097'/>
+</task>
+<task compile_id='17' method='java.lang.StringLatin1 charAt ([BI)C' bytes='28' count='407' iicount='407' level='3' stamp='0.097'>
+<phase name='setup' stamp='0.097'>
+<phase_done name='setup' stamp='0.097'/>
+</phase>
+<phase name='buildIR' stamp='0.097'>
+<type id='957' name='char'/>
+<klass id='1073' name='[B' flags='1041'/>
+<type id='962' name='int'/>
+<klass id='1081' name='java.lang.StringLatin1' flags='16'/>
+<method id='1082' holder='1081' name='charAt' return='957' arguments='1073 962' flags='9' bytes='28' iicount='407'/>
+<parse method='1082'  stamp='0.097'>
+<phase name='parse_hir' stamp='0.097'>
+<bc code='183' bci='15'/>
+<type id='964' name='void'/>
+<klass id='1084' name='java.lang.StringIndexOutOfBoundsException' unloaded='1'/>
+<method id='1085' holder='1084' name='&lt;init&gt;' return='964' arguments='962' unloaded='1'/>
+<call method='1085' instr='invokespecial'/>
+<inline_fail reason='not inlineable'/>
+<phase_done name='parse_hir' stamp='0.097'/>
+</phase>
+<parse_done stamp='0.097'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.097'>
+<phase_done name='optimize_blocks' stamp='0.097'/>
+</phase>
+<phase name='gvn' stamp='0.097'>
+<phase_done name='gvn' stamp='0.097'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.097'>
+<phase_done name='rangeCheckElimination' stamp='0.097'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.097'>
+<phase_done name='optimize_null_checks' stamp='0.097'/>
+</phase>
+<phase_done name='buildIR' stamp='0.097'/>
+</phase>
+<phase name='emit_lir' stamp='0.097'>
+<phase name='lirGeneration' stamp='0.097'>
+<phase_done name='lirGeneration' stamp='0.097'/>
+</phase>
+<phase name='linearScan' stamp='0.097'>
+<phase_done name='linearScan' stamp='0.097'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.097'/>
+</phase>
+<phase name='codeemit' stamp='0.097'>
+<phase_done name='codeemit' stamp='0.097'/>
+</phase>
+<phase name='codeinstall' stamp='0.097'>
+<phase_done name='codeinstall' stamp='0.097'/>
+</phase>
+<code_cache total_blobs='335' nmethods='58' adapters='140' free_code_cache='248833408'/>
+<task_done success='1' nmsize='584' count='408' stamp='0.097'/>
+</task>
+<task compile_id='60' method='java.lang.String length ()I' bytes='11' count='386' iicount='386' level='3' stamp='0.097'>
+<phase name='setup' stamp='0.097'>
+<phase_done name='setup' stamp='0.097'/>
+</phase>
+<phase name='buildIR' stamp='0.097'>
+<type id='962' name='int'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='970' name='length' return='962' flags='1' bytes='11' iicount='393'/>
+<parse method='1081'  stamp='0.097'>
+<phase name='parse_hir' stamp='0.097'>
+<bc code='182' bci='6'/>
+<type id='960' name='byte'/>
+<method id='1083' holder='970' name='coder' return='960' flags='0' bytes='15' compile_id='5' compiler='c1' level='3' iicount='3824'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1083'>
+<parse_done stamp='0.098'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.098'/>
+</phase>
+<parse_done stamp='0.098'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.098'>
+<phase_done name='optimize_blocks' stamp='0.098'/>
+</phase>
+<phase name='gvn' stamp='0.098'>
+<phase_done name='gvn' stamp='0.098'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.098'>
+<phase_done name='rangeCheckElimination' stamp='0.098'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.098'>
+<phase_done name='optimize_null_checks' stamp='0.098'/>
+</phase>
+<phase_done name='buildIR' stamp='0.098'/>
+</phase>
+<phase name='emit_lir' stamp='0.098'>
+<phase name='lirGeneration' stamp='0.098'>
+<phase_done name='lirGeneration' stamp='0.098'/>
+</phase>
+<phase name='linearScan' stamp='0.098'>
+<phase_done name='linearScan' stamp='0.098'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.098'/>
+</phase>
+<phase name='codeemit' stamp='0.098'>
+<phase_done name='codeemit' stamp='0.098'/>
+</phase>
+<phase name='codeinstall' stamp='0.098'>
+<phase_done name='codeinstall' stamp='0.098'/>
+</phase>
+<code_cache total_blobs='337' nmethods='60' adapters='140' free_code_cache='248830336'/>
+<task_done success='1' nmsize='496' count='422' inlined_bytes='15' stamp='0.098'/>
+</task>
+<task compile_id='61' method='java.lang.StringLatin1 indexOf ([BII)I' bytes='61' count='186' backedge_count='2065' iicount='186' level='3' stamp='0.098'>
+<phase name='setup' stamp='0.098'>
+<phase_done name='setup' stamp='0.098'/>
+</phase>
+<phase name='buildIR' stamp='0.098'>
+<type id='962' name='int'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1081' name='java.lang.StringLatin1' flags='16'/>
+<method id='1082' holder='1081' name='indexOf' return='962' arguments='1073 962 962' flags='9' bytes='61' iicount='186'/>
+<parse method='1082'  stamp='0.098'>
+<phase name='parse_hir' stamp='0.098'>
+<bc code='184' bci='1'/>
+<type id='956' name='boolean'/>
+<method id='1084' holder='1081' name='canEncode' return='956' arguments='962' flags='9' bytes='13' iicount='318'/>
+<call method='1084' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<parse_done stamp='0.098'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.098'/>
+</phase>
+<parse_done stamp='0.098'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.098'>
+<phase_done name='optimize_blocks' stamp='0.098'/>
+</phase>
+<phase name='gvn' stamp='0.098'>
+<phase_done name='gvn' stamp='0.098'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.098'>
+<phase_done name='rangeCheckElimination' stamp='0.098'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.098'>
+<phase_done name='optimize_null_checks' stamp='0.098'/>
+</phase>
+<phase_done name='buildIR' stamp='0.098'/>
+</phase>
+<phase name='emit_lir' stamp='0.098'>
+<phase name='lirGeneration' stamp='0.098'>
+<phase_done name='lirGeneration' stamp='0.098'/>
+</phase>
+<phase name='linearScan' stamp='0.098'>
+<phase_done name='linearScan' stamp='0.098'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.098'/>
+</phase>
+<phase name='codeemit' stamp='0.098'>
+<phase_done name='codeemit' stamp='0.098'/>
+</phase>
+<phase name='codeinstall' stamp='0.098'>
+<phase_done name='codeinstall' stamp='0.098'/>
+</phase>
+<code_cache total_blobs='338' nmethods='61' adapters='140' free_code_cache='248828544'/>
+<task_done success='1' nmsize='1040' count='186' backedge_count='2065' inlined_bytes='13' stamp='0.098'/>
+</task>
+<task compile_id='66' method='java.lang.AbstractStringBuilder ensureCapacityInternal (I)V' bytes='39' count='256' iicount='256' level='3' stamp='0.125'>
+<phase name='setup' stamp='0.125'>
+<phase_done name='setup' stamp='0.125'/>
+</phase>
+<phase name='buildIR' stamp='0.125'>
+<type id='964' name='void'/>
+<type id='962' name='int'/>
+<klass id='1037' name='java.lang.AbstractStringBuilder' flags='1024'/>
+<method id='1081' holder='1037' name='ensureCapacityInternal' return='964' arguments='962' flags='2' bytes='39' iicount='256'/>
+<parse method='1081'  stamp='0.125'>
+<phase name='parse_hir' stamp='0.125'>
+<bc code='182' bci='24'/>
+<method id='1083' holder='1037' name='newCapacity' return='962' arguments='962' flags='2' bytes='55' iicount='60'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<bc code='184' bci='32'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1085' name='java.util.Arrays' flags='1'/>
+<method id='1086' holder='1085' name='copyOf' return='1073' arguments='1073 962' flags='9' bytes='19' iicount='128'/>
+<call method='1086' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1086'>
+<bc code='184' bci='11'/>
+<klass id='1088' name='java.lang.Math' flags='17'/>
+<method id='1089' holder='1088' name='min' return='962' arguments='962 962' flags='9' bytes='11' iicount='384'/>
+<call method='1089' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1089'>
+<parse_done stamp='0.125'/>
+</parse>
+<bc code='184' bci='14'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='975' name='java.lang.System' flags='17'/>
+<method id='1091' holder='975' name='arraycopy' return='964' arguments='969 962 969 962 962' flags='265' bytes='0' compile_id='64' compile_kind='c2n' compiler='' level='0' iicount='512'/>
+<call method='1091' instr='invokestatic'/>
+<inline_success reason='intrinsic'/>
+<parse_done stamp='0.126'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.126'/>
+</phase>
+<parse_done stamp='0.126'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.126'>
+<phase_done name='optimize_blocks' stamp='0.126'/>
+</phase>
+<phase name='gvn' stamp='0.126'>
+<phase_done name='gvn' stamp='0.126'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.126'>
+<phase_done name='rangeCheckElimination' stamp='0.126'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.126'>
+<phase_done name='optimize_null_checks' stamp='0.126'/>
+</phase>
+<phase_done name='buildIR' stamp='0.126'/>
+</phase>
+<phase name='emit_lir' stamp='0.126'>
+<phase name='lirGeneration' stamp='0.126'>
+<phase_done name='lirGeneration' stamp='0.126'/>
+</phase>
+<phase name='linearScan' stamp='0.126'>
+<phase_done name='linearScan' stamp='0.126'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.126'/>
+</phase>
+<phase name='codeemit' stamp='0.126'>
+<phase_done name='codeemit' stamp='0.126'/>
+</phase>
+<phase name='codeinstall' stamp='0.126'>
+<phase_done name='codeinstall' stamp='0.126'/>
+</phase>
+<code_cache total_blobs='402' nmethods='67' adapters='198' free_code_cache='248785280'/>
+<task_done success='1' nmsize='1240' count='256' inlined_bytes='30' stamp='0.126'/>
+</task>
+<task compile_id='71' method='sun.nio.fs.UnixPath checkNotNul (Ljava/lang/String;C)V' bytes='16' count='272' iicount='274' level='3' stamp='0.130'>
+<phase name='setup' stamp='0.130'>
+<phase_done name='setup' stamp='0.130'/>
+</phase>
+<phase name='buildIR' stamp='0.130'>
+<type id='964' name='void'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<type id='957' name='char'/>
+<klass id='1081' name='sun.nio.fs.UnixPath' flags='0'/>
+<method id='1082' holder='1081' name='checkNotNul' return='964' arguments='970 957' flags='10' bytes='16' iicount='335'/>
+<parse method='1082'  stamp='0.130'>
+<phase name='parse_hir' stamp='0.130'>
+<bc code='183' bci='11'/>
+<klass id='1084' name='java.nio.file.InvalidPathException' unloaded='1'/>
+<method id='1086' holder='1084' name='&lt;init&gt;' return='964' arguments='970 970' unloaded='1'/>
+<call method='1086' instr='invokespecial'/>
+<inline_fail reason='not inlineable'/>
+<phase_done name='parse_hir' stamp='0.130'/>
+</phase>
+<parse_done stamp='0.130'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.130'>
+<phase_done name='optimize_blocks' stamp='0.130'/>
+</phase>
+<phase name='gvn' stamp='0.130'>
+<phase_done name='gvn' stamp='0.130'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.130'>
+<phase_done name='rangeCheckElimination' stamp='0.130'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.130'>
+<phase_done name='optimize_null_checks' stamp='0.130'/>
+</phase>
+<phase_done name='buildIR' stamp='0.130'/>
+</phase>
+<phase name='emit_lir' stamp='0.130'>
+<phase name='lirGeneration' stamp='0.130'>
+<phase_done name='lirGeneration' stamp='0.130'/>
+</phase>
+<phase name='linearScan' stamp='0.130'>
+<phase_done name='linearScan' stamp='0.130'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.130'/>
+</phase>
+<phase name='codeemit' stamp='0.130'>
+<phase_done name='codeemit' stamp='0.130'/>
+</phase>
+<phase name='codeinstall' stamp='0.130'>
+<phase_done name='codeinstall' stamp='0.130'/>
+</phase>
+<code_cache total_blobs='407' nmethods='71' adapters='199' free_code_cache='248778496'/>
+<task_done success='1' nmsize='520' count='394' stamp='0.130'/>
+</task>
+<task compile_id='75' method='java.lang.System getSecurityManager ()Ljava/lang/SecurityManager;' bytes='4' count='257' iicount='257' level='3' stamp='0.134'>
+<phase name='setup' stamp='0.134'>
+<phase_done name='setup' stamp='0.134'/>
+</phase>
+<phase name='buildIR' stamp='0.134'>
+<klass id='981' name='java.lang.SecurityManager' flags='1'/>
+<klass id='975' name='java.lang.System' flags='17'/>
+<method id='1081' holder='975' name='getSecurityManager' return='981' flags='9' bytes='4' iicount='257'/>
+<parse method='1081'  stamp='0.134'>
+<phase name='parse_hir' stamp='0.134'>
+<phase_done name='parse_hir' stamp='0.134'/>
+</phase>
+<parse_done stamp='0.135'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.135'>
+<phase_done name='optimize_blocks' stamp='0.135'/>
+</phase>
+<phase name='gvn' stamp='0.135'>
+<phase_done name='gvn' stamp='0.135'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.135'>
+<phase_done name='rangeCheckElimination' stamp='0.135'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.135'>
+<phase_done name='optimize_null_checks' stamp='0.135'/>
+</phase>
+<phase_done name='buildIR' stamp='0.135'/>
+</phase>
+<phase name='emit_lir' stamp='0.135'>
+<phase name='lirGeneration' stamp='0.135'>
+<phase_done name='lirGeneration' stamp='0.135'/>
+</phase>
+<phase name='linearScan' stamp='0.135'>
+<phase_done name='linearScan' stamp='0.135'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.135'/>
+</phase>
+<phase name='codeemit' stamp='0.135'>
+<phase_done name='codeemit' stamp='0.135'/>
+</phase>
+<phase name='codeinstall' stamp='0.135'>
+<phase_done name='codeinstall' stamp='0.135'/>
+</phase>
+<code_cache total_blobs='411' nmethods='75' adapters='199' free_code_cache='248773504'/>
+<task_done success='1' nmsize='336' count='258' stamp='0.135'/>
+</task>
+<task compile_id='81' method='java.util.concurrent.ConcurrentHashMap get (Ljava/lang/Object;)Ljava/lang/Object;' bytes='162' count='257' backedge_count='5' iicount='257' level='3' stamp='0.143'>
+<phase name='setup' stamp='0.143'>
+<phase_done name='setup' stamp='0.143'/>
+</phase>
+<phase name='buildIR' stamp='0.143'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.concurrent.ConcurrentHashMap' flags='1'/>
+<method id='1082' holder='1081' name='get' return='969' arguments='969' flags='1' bytes='162' iicount='257'/>
+<parse method='1082'  stamp='0.143'>
+<phase name='parse_hir' stamp='0.143'>
+<bc code='182' bci='1'/>
+<type id='962' name='int'/>
+<method id='1084' holder='969' name='hashCode' return='962' flags='257' bytes='0' compile_id='50' compile_kind='c2n' compiler='' level='0' iicount='640'/>
+<call method='1084' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='184' bci='4'/>
+<method id='1085' holder='1081' name='spread' return='962' arguments='962' flags='24' bytes='10' compile_id='29' compiler='c1' level='3' iicount='1318'/>
+<call method='1085' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1085'>
+<parse_done stamp='0.143'/>
+</parse>
+<bc code='184' bci='34'/>
+<klass id='1087' name='java.util.concurrent.ConcurrentHashMap$Node' flags='8'/>
+<klass id='1088' name='[Ljava.util.concurrent.ConcurrentHashMap$Node;' flags='1040'/>
+<method id='1089' holder='1081' name='tabAt' return='1087' arguments='1088 962' flags='24' bytes='22' compile_id='18' compiler='c1' level='3' iicount='2064'/>
+<call method='1089' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1089'>
+<bc code='182' bci='15'/>
+<type id='963' name='long'/>
+<klass id='1040' name='jdk.internal.misc.Unsafe' flags='17'/>
+<method id='1094' holder='1040' name='getObjectAcquire' return='969' arguments='969 963' flags='17' bytes='7' compile_id='19' compiler='c1' level='3' iicount='2067'/>
+<call method='1094' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1094'>
+<bc code='182' bci='3'/>
+<method id='1096' holder='1040' name='getObjectVolatile' return='969' arguments='969 963' flags='257' bytes='0' compile_id='28' compile_kind='c2n' compiler='' level='0' iicount='512'/>
+<call method='1096' instr='invokevirtual'/>
+<inline_success reason='intrinsic'/>
+<parse_done stamp='0.143'/>
+</parse>
+<parse_done stamp='0.143'/>
+</parse>
+<bc code='182' bci='73'/>
+<type id='956' name='boolean'/>
+<method id='1097' holder='969' name='equals' return='956' arguments='969' flags='1' bytes='11' iicount='5'/>
+<call method='1097' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='182' bci='93'/>
+<method id='1098' holder='1087' name='find' return='1087' arguments='962 969' flags='0' bytes='52' iicount='1'/>
+<call method='1098' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='182' bci='149'/>
+<call method='1097' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<phase_done name='parse_hir' stamp='0.143'/>
+</phase>
+<parse_done stamp='0.143'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.143'>
+<phase_done name='optimize_blocks' stamp='0.143'/>
+</phase>
+<phase name='gvn' stamp='0.143'>
+<phase_done name='gvn' stamp='0.143'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.143'>
+<phase_done name='rangeCheckElimination' stamp='0.143'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.143'>
+<phase_done name='optimize_null_checks' stamp='0.143'/>
+</phase>
+<phase_done name='buildIR' stamp='0.143'/>
+</phase>
+<phase name='emit_lir' stamp='0.143'>
+<phase name='lirGeneration' stamp='0.143'>
+<phase_done name='lirGeneration' stamp='0.143'/>
+</phase>
+<phase name='linearScan' stamp='0.143'>
+<phase_done name='linearScan' stamp='0.144'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.144'/>
+</phase>
+<phase name='codeemit' stamp='0.144'>
+<phase_done name='codeemit' stamp='0.144'/>
+</phase>
+<phase name='codeinstall' stamp='0.144'>
+<phase_done name='codeinstall' stamp='0.144'/>
+</phase>
+<code_cache total_blobs='444' nmethods='83' adapters='224' free_code_cache='248745856'/>
+<task_done success='1' nmsize='3480' count='265' backedge_count='5' inlined_bytes='39' stamp='0.144'/>
+</task>
+<task compile_id='91' method='java.lang.StringBuilder append (Ljava/lang/String;)Ljava/lang/StringBuilder;' bytes='8' count='256' iicount='256' level='3' stamp='0.150'>
+<phase name='setup' stamp='0.150'>
+<phase_done name='setup' stamp='0.150'/>
+</phase>
+<phase name='buildIR' stamp='0.150'>
+<klass id='1039' name='java.lang.StringBuilder' flags='17'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='1039' name='append' return='1039' arguments='970' flags='1' bytes='8' iicount='256'/>
+<parse method='1081'  stamp='0.150'>
+<phase name='parse_hir' stamp='0.150'>
+<bc code='183' bci='2'/>
+<klass id='1037' name='java.lang.AbstractStringBuilder' flags='1024'/>
+<method id='1083' holder='1037' name='append' return='1037' arguments='970' flags='1' bytes='45' iicount='256'/>
+<call method='1083' instr='invokespecial'/>
+<inline_fail reason='callee is too large'/>
+<phase_done name='parse_hir' stamp='0.150'/>
+</phase>
+<parse_done stamp='0.150'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.150'>
+<phase_done name='optimize_blocks' stamp='0.150'/>
+</phase>
+<phase name='gvn' stamp='0.150'>
+<phase_done name='gvn' stamp='0.150'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.150'>
+<phase_done name='rangeCheckElimination' stamp='0.150'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.150'>
+<phase_done name='optimize_null_checks' stamp='0.150'/>
+</phase>
+<phase_done name='buildIR' stamp='0.150'/>
+</phase>
+<phase name='emit_lir' stamp='0.150'>
+<phase name='lirGeneration' stamp='0.150'>
+<phase_done name='lirGeneration' stamp='0.150'/>
+</phase>
+<phase name='linearScan' stamp='0.150'>
+<phase_done name='linearScan' stamp='0.150'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.150'/>
+</phase>
+<phase name='codeemit' stamp='0.150'>
+<phase_done name='codeemit' stamp='0.150'/>
+</phase>
+<phase name='codeinstall' stamp='0.150'>
+<phase_done name='codeinstall' stamp='0.150'/>
+</phase>
+<code_cache total_blobs='460' nmethods='91' adapters='232' free_code_cache='248734464'/>
+<task_done success='1' nmsize='424' count='256' stamp='0.150'/>
+</task>
+<task compile_id='95' method='java.lang.String getBytes ([BIB)V' bytes='44' count='256' iicount='256' level='3' stamp='0.150'>
+<phase name='setup' stamp='0.151'>
+<phase_done name='setup' stamp='0.151'/>
+</phase>
+<phase name='buildIR' stamp='0.151'>
+<type id='964' name='void'/>
+<klass id='1073' name='[B' flags='1041'/>
+<type id='962' name='int'/>
+<type id='960' name='byte'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='970' name='getBytes' return='964' arguments='1073 962 960' flags='0' bytes='44' iicount='256'/>
+<parse method='1081'  stamp='0.151'>
+<phase name='parse_hir' stamp='0.151'>
+<bc code='182' bci='1'/>
+<method id='1083' holder='970' name='coder' return='960' flags='0' bytes='15' compile_id='5' compiler='c1' level='3' iicount='5374'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1083'>
+<parse_done stamp='0.151'/>
+</parse>
+<bc code='184' bci='22'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='975' name='java.lang.System' flags='17'/>
+<method id='1086' holder='975' name='arraycopy' return='964' arguments='969 962 969 962 962' flags='265' bytes='0' compile_id='64' compile_kind='c2n' compiler='' level='0' iicount='512'/>
+<call method='1086' instr='invokestatic'/>
+<inline_success reason='intrinsic'/>
+<bc code='184' bci='40'/>
+<klass id='1088' name='java.lang.StringLatin1' flags='16'/>
+<method id='1089' holder='1088' name='inflate' return='964' arguments='1073 962 1073 962 962' flags='9' bytes='10' iicount='1'/>
+<call method='1089' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1089'>
+<bc code='184' bci='6'/>
+<klass id='1091' name='java.lang.StringUTF16' unloaded='1'/>
+<method id='1092' holder='1091' name='inflate' return='964' arguments='1073 962 1073 962 962' unloaded='1'/>
+<call method='1092' instr='invokestatic'/>
+<inline_fail reason='not inlineable'/>
+<parse_done stamp='0.151'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.151'/>
+</phase>
+<parse_done stamp='0.151'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.151'>
+<phase_done name='optimize_blocks' stamp='0.151'/>
+</phase>
+<phase name='gvn' stamp='0.151'>
+<phase_done name='gvn' stamp='0.151'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.151'>
+<phase_done name='rangeCheckElimination' stamp='0.151'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.151'>
+<phase_done name='optimize_null_checks' stamp='0.151'/>
+</phase>
+<phase_done name='buildIR' stamp='0.151'/>
+</phase>
+<phase name='emit_lir' stamp='0.151'>
+<phase name='lirGeneration' stamp='0.151'>
+<phase_done name='lirGeneration' stamp='0.151'/>
+</phase>
+<phase name='linearScan' stamp='0.151'>
+<phase_done name='linearScan' stamp='0.151'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.151'/>
+</phase>
+<phase name='codeemit' stamp='0.151'>
+<phase_done name='codeemit' stamp='0.151'/>
+</phase>
+<phase name='codeinstall' stamp='0.151'>
+<phase_done name='codeinstall' stamp='0.151'/>
+</phase>
+<code_cache total_blobs='463' nmethods='94' adapters='232' free_code_cache='248729984'/>
+<task_done success='1' nmsize='888' count='256' inlined_bytes='25' stamp='0.151'/>
+</task>
+<task compile_id='96' method='java.nio.Buffer position ()I' bytes='5' count='131' iicount='131' level='1' stamp='0.151'>
+<phase name='setup' stamp='0.151'>
+<phase_done name='setup' stamp='0.151'/>
+</phase>
+<phase name='buildIR' stamp='0.151'>
+<type id='962' name='int'/>
+<klass id='1052' name='java.nio.Buffer' flags='1025'/>
+<method id='1081' holder='1052' name='position' return='962' flags='17' bytes='5' iicount='135'/>
+<parse method='1081'  stamp='0.151'>
+<phase name='parse_hir' stamp='0.151'>
+<phase_done name='parse_hir' stamp='0.151'/>
+</phase>
+<parse_done stamp='0.151'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.151'>
+<phase_done name='optimize_blocks' stamp='0.151'/>
+</phase>
+<phase name='gvn' stamp='0.151'>
+<phase_done name='gvn' stamp='0.151'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.151'>
+<phase_done name='rangeCheckElimination' stamp='0.151'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.151'>
+<phase_done name='optimize_null_checks' stamp='0.151'/>
+</phase>
+<phase_done name='buildIR' stamp='0.151'/>
+</phase>
+<phase name='emit_lir' stamp='0.151'>
+<phase name='lirGeneration' stamp='0.151'>
+<phase_done name='lirGeneration' stamp='0.151'/>
+</phase>
+<phase name='linearScan' stamp='0.151'>
+<phase_done name='linearScan' stamp='0.151'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.151'/>
+</phase>
+<phase name='codeemit' stamp='0.151'>
+<phase_done name='codeemit' stamp='0.151'/>
+</phase>
+<phase name='codeinstall' stamp='0.151'>
+<phase_done name='codeinstall' stamp='0.151'/>
+</phase>
+<code_cache total_blobs='465' nmethods='96' adapters='232' free_code_cache='248726656'/>
+<task_done success='1' nmsize='272' count='139' stamp='0.151'/>
+</task>
+</compilation_log>
+<compilation_log thread='24140'>
+<start_compile_thread name='C1 CompilerThread0' thread='24140' process='24128' stamp='0.048'/>
+<task compile_id='2' method='java.lang.StringLatin1 hashCode ([B)I' bytes='42' count='1115' backedge_count='27858' iicount='1115' level='2' stamp='0.080'>
+<phase name='setup' stamp='0.080'>
+<phase_done name='setup' stamp='0.080'/>
+</phase>
+<phase name='buildIR' stamp='0.080'>
+<type id='962' name='int'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1081' name='java.lang.StringLatin1' flags='16'/>
+<method id='1082' holder='1081' name='hashCode' return='962' arguments='1073' flags='9' bytes='42' iicount='1115'/>
+<parse method='1082'  stamp='0.080'>
+<phase name='parse_hir' stamp='0.080'>
+<phase_done name='parse_hir' stamp='0.080'/>
+</phase>
+<parse_done stamp='0.080'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.080'>
+<phase_done name='optimize_blocks' stamp='0.081'/>
+</phase>
+<phase name='gvn' stamp='0.081'>
+<phase_done name='gvn' stamp='0.081'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.081'>
+<phase_done name='rangeCheckElimination' stamp='0.081'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.081'>
+<phase_done name='optimize_null_checks' stamp='0.081'/>
+</phase>
+<phase_done name='buildIR' stamp='0.081'/>
+</phase>
+<phase name='emit_lir' stamp='0.081'>
+<phase name='lirGeneration' stamp='0.081'>
+<phase_done name='lirGeneration' stamp='0.088'/>
+</phase>
+<phase name='linearScan' stamp='0.088'>
+<phase_done name='linearScan' stamp='0.091'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.091'/>
+</phase>
+<phase name='codeemit' stamp='0.091'>
+<phase_done name='codeemit' stamp='0.091'/>
+</phase>
+<phase name='codeinstall' stamp='0.091'>
+<phase_done name='codeinstall' stamp='0.091'/>
+</phase>
+<code_cache total_blobs='279' nmethods='5' adapters='140' free_code_cache='248922496'/>
+<task_done success='1' nmsize='432' count='1122' backedge_count='28066' stamp='0.091'/>
+</task>
+<task compile_id='11' method='java.lang.StringLatin1 equals ([B[B)Z' bytes='36' count='1378' backedge_count='890' iicount='1378' level='3' stamp='0.091'>
+<phase name='setup' stamp='0.091'>
+<phase_done name='setup' stamp='0.091'/>
+</phase>
+<phase name='buildIR' stamp='0.091'>
+<type id='956' name='boolean'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1081' name='java.lang.StringLatin1' flags='16'/>
+<method id='1082' holder='1081' name='equals' return='956' arguments='1073 1073' flags='9' bytes='36' iicount='1378'/>
+<parse method='1082'  stamp='0.091'>
+<phase name='parse_hir' stamp='0.091'>
+<phase_done name='parse_hir' stamp='0.092'/>
+</phase>
+<parse_done stamp='0.092'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.092'>
+<phase_done name='optimize_blocks' stamp='0.092'/>
+</phase>
+<phase name='gvn' stamp='0.092'>
+<phase_done name='gvn' stamp='0.092'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.092'>
+<phase_done name='rangeCheckElimination' stamp='0.092'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.092'>
+<phase_done name='optimize_null_checks' stamp='0.092'/>
+</phase>
+<phase_done name='buildIR' stamp='0.092'/>
+</phase>
+<phase name='emit_lir' stamp='0.092'>
+<phase name='lirGeneration' stamp='0.092'>
+<phase_done name='lirGeneration' stamp='0.092'/>
+</phase>
+<phase name='linearScan' stamp='0.092'>
+<phase_done name='linearScan' stamp='0.092'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.092'/>
+</phase>
+<phase name='codeemit' stamp='0.092'>
+<phase_done name='codeemit' stamp='0.092'/>
+</phase>
+<phase name='codeinstall' stamp='0.092'>
+<phase_done name='codeinstall' stamp='0.092'/>
+</phase>
+<code_cache total_blobs='282' nmethods='8' adapters='140' free_code_cache='248916480'/>
+<task_done success='1' nmsize='688' count='1378' backedge_count='890' stamp='0.092'/>
+</task>
+<task compile_id='1' method='java.lang.Object &lt;init&gt; ()V' bytes='1' count='6599' iicount='6599' level='2' stamp='0.092'>
+<phase name='setup' stamp='0.092'>
+<phase_done name='setup' stamp='0.092'/>
+</phase>
+<phase name='buildIR' stamp='0.092'>
+<type id='964' name='void'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<method id='1081' holder='969' name='&lt;init&gt;' return='964' flags='1' bytes='1' iicount='6602'/>
+<parse method='1081'  stamp='0.092'>
+<phase name='parse_hir' stamp='0.092'>
+<bc code='177' bci='0'/>
+<dependency type='no_finalizable_subclasses' ctxk='969'/>
+<phase_done name='parse_hir' stamp='0.092'/>
+</phase>
+<parse_done stamp='0.092'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.092'>
+<phase_done name='optimize_blocks' stamp='0.092'/>
+</phase>
+<phase name='gvn' stamp='0.092'>
+<phase_done name='gvn' stamp='0.092'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.092'>
+<phase_done name='rangeCheckElimination' stamp='0.092'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.092'>
+<phase_done name='optimize_null_checks' stamp='0.092'/>
+</phase>
+<phase_done name='buildIR' stamp='0.092'/>
+</phase>
+<phase name='emit_lir' stamp='0.092'>
+<phase name='lirGeneration' stamp='0.092'>
+<phase_done name='lirGeneration' stamp='0.092'/>
+</phase>
+<phase name='linearScan' stamp='0.092'>
+<phase_done name='linearScan' stamp='0.092'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.092'/>
+</phase>
+<phase name='codeemit' stamp='0.092'>
+<phase_done name='codeemit' stamp='0.092'/>
+</phase>
+<phase name='codeinstall' stamp='0.092'>
+<dependency type='no_finalizable_subclasses' ctxk='969'/>
+<phase_done name='codeinstall' stamp='0.092'/>
+</phase>
+<code_cache total_blobs='283' nmethods='9' adapters='140' free_code_cache='248915584'/>
+<task_done success='1' nmsize='336' count='6679' stamp='0.092'/>
+</task>
+<task compile_id='20' method='java.util.ImmutableCollections$SetN$SetNIterator hasNext ()Z' bytes='13' count='5760' iicount='5760' level='2' stamp='0.092'>
+<phase name='setup' stamp='0.092'>
+<phase_done name='setup' stamp='0.092'/>
+</phase>
+<phase name='buildIR' stamp='0.092'>
+<type id='956' name='boolean'/>
+<klass id='1081' name='java.util.ImmutableCollections$SetN$SetNIterator' flags='18'/>
+<method id='1082' holder='1081' name='hasNext' return='956' flags='1' bytes='13' iicount='5763'/>
+<parse method='1082'  stamp='0.092'>
+<phase name='parse_hir' stamp='0.092'>
+<phase_done name='parse_hir' stamp='0.092'/>
+</phase>
+<parse_done stamp='0.092'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.092'>
+<phase_done name='optimize_blocks' stamp='0.092'/>
+</phase>
+<phase name='gvn' stamp='0.092'>
+<phase_done name='gvn' stamp='0.092'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.092'>
+<phase_done name='rangeCheckElimination' stamp='0.092'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.092'>
+<phase_done name='optimize_null_checks' stamp='0.092'/>
+</phase>
+<phase_done name='buildIR' stamp='0.092'/>
+</phase>
+<phase name='emit_lir' stamp='0.092'>
+<phase name='lirGeneration' stamp='0.092'>
+<phase_done name='lirGeneration' stamp='0.092'/>
+</phase>
+<phase name='linearScan' stamp='0.092'>
+<phase_done name='linearScan' stamp='0.092'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.092'/>
+</phase>
+<phase name='codeemit' stamp='0.092'>
+<phase_done name='codeemit' stamp='0.092'/>
+</phase>
+<phase name='codeinstall' stamp='0.092'>
+<phase_done name='codeinstall' stamp='0.092'/>
+</phase>
+<code_cache total_blobs='286' nmethods='12' adapters='140' free_code_cache='248899456'/>
+<task_done success='1' nmsize='368' count='5951' stamp='0.092'/>
+</task>
+<task compile_id='46' method='java.util.HashMap getNode (ILjava/lang/Object;)Ljava/util/HashMap$Node;' bytes='148' count='927' backedge_count='21' iicount='927' level='3' stamp='0.093'>
+<phase name='setup' stamp='0.093'>
+<phase_done name='setup' stamp='0.093'/>
+</phase>
+<phase name='buildIR' stamp='0.093'>
+<klass id='1082' name='java.util.HashMap$Node' flags='8'/>
+<type id='962' name='int'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.HashMap' flags='1'/>
+<method id='1083' holder='1081' name='getNode' return='1082' arguments='962 969' flags='16' bytes='148' iicount='927'/>
+<parse method='1083'  stamp='0.093'>
+<phase name='parse_hir' stamp='0.093'>
+<bc code='182' bci='59'/>
+<type id='956' name='boolean'/>
+<method id='1086' holder='969' name='equals' return='956' arguments='969' flags='1' bytes='11' iicount='2'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<bc code='182' bci='94'/>
+<klass id='1087' name='java.util.HashMap$TreeNode' flags='24'/>
+<method id='1088' holder='1087' name='getTreeNode' return='1087' arguments='962 969' flags='16' bytes='22' iicount='1'/>
+<call method='1088' instr='invokevirtual'/>
+<inline_fail reason='not inlineable'/>
+<bc code='182' bci='126'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<phase_done name='parse_hir' stamp='0.093'/>
+</phase>
+<parse_done stamp='0.093'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.093'>
+<phase_done name='optimize_blocks' stamp='0.093'/>
+</phase>
+<phase name='gvn' stamp='0.093'>
+<phase_done name='gvn' stamp='0.093'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.093'>
+<phase_done name='rangeCheckElimination' stamp='0.093'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.093'>
+<phase_done name='optimize_null_checks' stamp='0.093'/>
+</phase>
+<phase_done name='buildIR' stamp='0.093'/>
+</phase>
+<phase name='emit_lir' stamp='0.093'>
+<phase name='lirGeneration' stamp='0.093'>
+<phase_done name='lirGeneration' stamp='0.093'/>
+</phase>
+<phase name='linearScan' stamp='0.093'>
+<phase_done name='linearScan' stamp='0.093'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.093'/>
+</phase>
+<phase name='codeemit' stamp='0.093'>
+<phase_done name='codeemit' stamp='0.093'/>
+</phase>
+<phase name='codeinstall' stamp='0.093'>
+<phase_done name='codeinstall' stamp='0.093'/>
+</phase>
+<code_cache total_blobs='292' nmethods='17' adapters='140' free_code_cache='248883072'/>
+<task_done success='1' nmsize='2600' count='927' backedge_count='21' stamp='0.093'/>
+</task>
+<task compile_id='5' method='java.lang.String coder ()B' bytes='15' count='3710' iicount='3710' level='3' stamp='0.093'>
+<phase name='setup' stamp='0.093'>
+<phase_done name='setup' stamp='0.093'/>
+</phase>
+<phase name='buildIR' stamp='0.093'>
+<type id='960' name='byte'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='970' name='coder' return='960' flags='0' bytes='15' iicount='3710'/>
+<parse method='1081'  stamp='0.093'>
+<phase name='parse_hir' stamp='0.093'>
+<phase_done name='parse_hir' stamp='0.093'/>
+</phase>
+<parse_done stamp='0.093'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.093'>
+<phase_done name='optimize_blocks' stamp='0.093'/>
+</phase>
+<phase name='gvn' stamp='0.093'>
+<phase_done name='gvn' stamp='0.093'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.093'>
+<phase_done name='rangeCheckElimination' stamp='0.093'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.093'>
+<phase_done name='optimize_null_checks' stamp='0.093'/>
+</phase>
+<phase_done name='buildIR' stamp='0.094'/>
+</phase>
+<phase name='emit_lir' stamp='0.094'>
+<phase name='lirGeneration' stamp='0.094'>
+<phase_done name='lirGeneration' stamp='0.094'/>
+</phase>
+<phase name='linearScan' stamp='0.094'>
+<phase_done name='linearScan' stamp='0.094'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.094'/>
+</phase>
+<phase name='codeemit' stamp='0.094'>
+<phase_done name='codeemit' stamp='0.094'/>
+</phase>
+<phase name='codeinstall' stamp='0.094'>
+<phase_done name='codeinstall' stamp='0.094'/>
+</phase>
+<code_cache total_blobs='296' nmethods='21' adapters='140' free_code_cache='248878080'/>
+<task_done success='1' nmsize='400' count='3726' stamp='0.094'/>
+</task>
+<task compile_id='10' method='java.lang.String equals (Ljava/lang/Object;)Z' bytes='65' count='2047' iicount='2047' level='3' stamp='0.094'>
+<phase name='setup' stamp='0.094'>
+<phase_done name='setup' stamp='0.094'/>
+</phase>
+<phase name='buildIR' stamp='0.094'>
+<type id='956' name='boolean'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='970' name='equals' return='956' arguments='969' flags='1' bytes='65' iicount='2047'/>
+<parse method='1081'  stamp='0.094'>
+<phase name='parse_hir' stamp='0.094'>
+<bc code='182' bci='20'/>
+<type id='960' name='byte'/>
+<method id='1083' holder='970' name='coder' return='960' flags='0' bytes='15' compile_id='5' compiler='c1' level='3' iicount='3726'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1083'>
+<parse_done stamp='0.094'/>
+</parse>
+<bc code='182' bci='24'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1083'>
+<parse_done stamp='0.094'/>
+</parse>
+<bc code='182' bci='31'/>
+<method id='1086' holder='970' name='isLatin1' return='956' flags='2' bytes='19' compile_id='3' compiler='c1' level='3' iicount='3229'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1086'>
+<parse_done stamp='0.094'/>
+</parse>
+<bc code='184' bci='45'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1088' name='java.lang.StringLatin1' flags='16'/>
+<method id='1089' holder='1088' name='equals' return='956' arguments='1073 1073' flags='9' bytes='36' compile_id='11' compiler='c1' level='3' iicount='1468'/>
+<call method='1089' instr='invokestatic'/>
+<inline_fail reason='callee is too large'/>
+<bc code='184' bci='59'/>
+<klass id='1091' name='java.lang.StringUTF16' unloaded='1'/>
+<method id='1092' holder='1091' name='equals' return='956' arguments='1073 1073' unloaded='1'/>
+<call method='1092' instr='invokestatic'/>
+<inline_fail reason='not inlineable'/>
+<phase_done name='parse_hir' stamp='0.094'/>
+</phase>
+<parse_done stamp='0.094'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.094'>
+<phase_done name='optimize_blocks' stamp='0.094'/>
+</phase>
+<phase name='gvn' stamp='0.094'>
+<phase_done name='gvn' stamp='0.094'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.094'>
+<phase_done name='rangeCheckElimination' stamp='0.094'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.094'>
+<phase_done name='optimize_null_checks' stamp='0.094'/>
+</phase>
+<phase_done name='buildIR' stamp='0.094'/>
+</phase>
+<phase name='emit_lir' stamp='0.094'>
+<phase name='lirGeneration' stamp='0.094'>
+<phase_done name='lirGeneration' stamp='0.094'/>
+</phase>
+<phase name='linearScan' stamp='0.094'>
+<phase_done name='linearScan' stamp='0.094'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.094'/>
+</phase>
+<phase name='codeemit' stamp='0.094'>
+<phase_done name='codeemit' stamp='0.094'/>
+</phase>
+<phase name='codeinstall' stamp='0.094'>
+<phase_done name='codeinstall' stamp='0.094'/>
+</phase>
+<code_cache total_blobs='305' nmethods='30' adapters='140' free_code_cache='248866176'/>
+<task_done success='1' nmsize='1720' count='2050' inlined_bytes='49' stamp='0.094'/>
+</task>
+<task compile_id='57' method='java.util.HashMap putIfAbsent (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' bytes='13' count='582' iicount='582' level='3' stamp='0.094'>
+<phase name='setup' stamp='0.094'>
+<phase_done name='setup' stamp='0.095'/>
+</phase>
+<phase name='buildIR' stamp='0.095'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.HashMap' flags='1'/>
+<method id='1082' holder='1081' name='putIfAbsent' return='969' arguments='969 969' flags='1' bytes='13' iicount='582'/>
+<parse method='1082'  stamp='0.095'>
+<phase name='parse_hir' stamp='0.095'>
+<bc code='184' bci='2'/>
+<type id='962' name='int'/>
+<method id='1084' holder='1081' name='hash' return='962' arguments='969' flags='24' bytes='20' compile_id='38' compiler='c1' level='3' iicount='2715'/>
+<call method='1084' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<bc code='182' bci='9'/>
+<method id='1086' holder='969' name='hashCode' return='962' flags='257' bytes='0' compile_id='50' compile_kind='c2n' compiler='' level='0' iicount='640'/>
+<call method='1086' instr='invokevirtual'/>
+<inline_fail reason='no static binding'/>
+<parse_done stamp='0.095'/>
+</parse>
+<bc code='182' bci='9'/>
+<type id='956' name='boolean'/>
+<method id='1087' holder='1081' name='putVal' return='969' arguments='962 969 969 956 956' flags='16' bytes='300' compile_id='42' compiler='c1' level='3' iicount='1788'/>
+<call method='1087' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<phase_done name='parse_hir' stamp='0.095'/>
+</phase>
+<parse_done stamp='0.095'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.095'>
+<phase_done name='optimize_blocks' stamp='0.095'/>
+</phase>
+<phase name='gvn' stamp='0.095'>
+<phase_done name='gvn' stamp='0.095'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.095'>
+<phase_done name='rangeCheckElimination' stamp='0.095'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.095'>
+<phase_done name='optimize_null_checks' stamp='0.095'/>
+</phase>
+<phase_done name='buildIR' stamp='0.095'/>
+</phase>
+<phase name='emit_lir' stamp='0.095'>
+<phase name='lirGeneration' stamp='0.095'>
+<phase_done name='lirGeneration' stamp='0.095'/>
+</phase>
+<phase name='linearScan' stamp='0.095'>
+<phase_done name='linearScan' stamp='0.095'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.095'/>
+</phase>
+<phase name='codeemit' stamp='0.095'>
+<phase_done name='codeemit' stamp='0.095'/>
+</phase>
+<phase name='codeinstall' stamp='0.095'>
+<phase_done name='codeinstall' stamp='0.095'/>
+</phase>
+<code_cache total_blobs='310' nmethods='35' adapters='140' free_code_cache='248858752'/>
+<task_done success='1' nmsize='856' count='582' inlined_bytes='20' stamp='0.095'/>
+</task>
+<task compile_id='12' method='java.util.Collections emptySet ()Ljava/util/Set;' bytes='4' count='592' iicount='592' level='3' stamp='0.095'>
+<phase name='setup' stamp='0.095'>
+<phase_done name='setup' stamp='0.095'/>
+</phase>
+<phase name='buildIR' stamp='0.095'>
+<klass id='1082' name='java.util.Set' flags='1537'/>
+<klass id='1081' name='java.util.Collections' flags='1'/>
+<method id='1083' holder='1081' name='emptySet' return='1082' flags='25' bytes='4' iicount='592'/>
+<parse method='1083'  stamp='0.095'>
+<phase name='parse_hir' stamp='0.095'>
+<phase_done name='parse_hir' stamp='0.095'/>
+</phase>
+<parse_done stamp='0.095'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.095'>
+<phase_done name='optimize_blocks' stamp='0.095'/>
+</phase>
+<phase name='gvn' stamp='0.095'>
+<phase_done name='gvn' stamp='0.095'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.095'>
+<phase_done name='rangeCheckElimination' stamp='0.095'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.095'>
+<phase_done name='optimize_null_checks' stamp='0.095'/>
+</phase>
+<phase_done name='buildIR' stamp='0.095'/>
+</phase>
+<phase name='emit_lir' stamp='0.095'>
+<phase name='lirGeneration' stamp='0.095'>
+<phase_done name='lirGeneration' stamp='0.095'/>
+</phase>
+<phase name='linearScan' stamp='0.095'>
+<phase_done name='linearScan' stamp='0.095'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.095'/>
+</phase>
+<phase name='codeemit' stamp='0.095'>
+<phase_done name='codeemit' stamp='0.095'/>
+</phase>
+<phase name='codeinstall' stamp='0.095'>
+<phase_done name='codeinstall' stamp='0.095'/>
+</phase>
+<code_cache total_blobs='316' nmethods='39' adapters='140' free_code_cache='248854912'/>
+<task_done success='1' nmsize='336' count='592' stamp='0.095'/>
+</task>
+<task compile_id='33' method='java.util.concurrent.ConcurrentHashMap$Node &lt;init&gt; (ILjava/lang/Object;Ljava/lang/Object;)V' bytes='20' count='921' iicount='921' level='3' stamp='0.096'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<type id='964' name='void'/>
+<type id='962' name='int'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.concurrent.ConcurrentHashMap$Node' flags='8'/>
+<method id='1082' holder='1081' name='&lt;init&gt;' return='964' arguments='962 969 969' flags='0' bytes='20' iicount='921'/>
+<parse method='1082'  stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<bc code='183' bci='1'/>
+<method id='1084' holder='969' name='&lt;init&gt;' return='964' flags='1' bytes='1' compile_id='1' compiler='c1' level='2' iicount='7390'/>
+<call method='1084' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<bc code='177' bci='0'/>
+<dependency type='no_finalizable_subclasses' ctxk='1081'/>
+<parse_done stamp='0.096'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.096'/>
+</phase>
+<phase name='linearScan' stamp='0.096'>
+<phase_done name='linearScan' stamp='0.096'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.096'/>
+</phase>
+<phase name='codeemit' stamp='0.096'>
+<phase_done name='codeemit' stamp='0.096'/>
+</phase>
+<phase name='codeinstall' stamp='0.096'>
+<dependency type='no_finalizable_subclasses' ctxk='1081'/>
+<phase_done name='codeinstall' stamp='0.096'/>
+</phase>
+<code_cache total_blobs='319' nmethods='42' adapters='140' free_code_cache='248852096'/>
+<task_done success='1' nmsize='656' count='921' inlined_bytes='1' stamp='0.096'/>
+</task>
+<task compile_id='22' method='java.util.KeyValueHolder getKey ()Ljava/lang/Object;' bytes='5' count='372' iicount='372' level='1' stamp='0.096'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.KeyValueHolder' flags='16'/>
+<method id='1082' holder='1081' name='getKey' return='969' flags='1' bytes='5' iicount='372'/>
+<parse method='1082'  stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.096'/>
+</phase>
+<phase name='linearScan' stamp='0.096'>
+<phase_done name='linearScan' stamp='0.096'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.096'/>
+</phase>
+<phase name='codeemit' stamp='0.096'>
+<phase_done name='codeemit' stamp='0.096'/>
+</phase>
+<phase name='codeinstall' stamp='0.096'>
+<phase_done name='codeinstall' stamp='0.096'/>
+</phase>
+<code_cache total_blobs='322' nmethods='45' adapters='140' free_code_cache='248849280'/>
+<task_done success='1' nmsize='272' count='372' stamp='0.096'/>
+</task>
+<task compile_id='23' method='java.util.KeyValueHolder getValue ()Ljava/lang/Object;' bytes='5' count='312' iicount='312' level='1' stamp='0.096'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<klass id='1081' name='java.util.KeyValueHolder' flags='16'/>
+<method id='1082' holder='1081' name='getValue' return='969' flags='1' bytes='5' iicount='312'/>
+<parse method='1082'  stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<phase_done name='parse_hir' stamp='0.096'/>
+</phase>
+<parse_done stamp='0.096'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.096'>
+<phase_done name='optimize_blocks' stamp='0.096'/>
+</phase>
+<phase name='gvn' stamp='0.096'>
+<phase_done name='gvn' stamp='0.096'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.096'>
+<phase_done name='rangeCheckElimination' stamp='0.096'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.096'>
+<phase_done name='optimize_null_checks' stamp='0.096'/>
+</phase>
+<phase_done name='buildIR' stamp='0.096'/>
+</phase>
+<phase name='emit_lir' stamp='0.096'>
+<phase name='lirGeneration' stamp='0.096'>
+<phase_done name='lirGeneration' stamp='0.096'/>
+</phase>
+<phase name='linearScan' stamp='0.096'>
+<phase_done name='linearScan' stamp='0.096'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.096'/>
+</phase>
+<phase name='codeemit' stamp='0.096'>
+<phase_done name='codeemit' stamp='0.096'/>
+</phase>
+<phase name='codeinstall' stamp='0.096'>
+<phase_done name='codeinstall' stamp='0.096'/>
+</phase>
+<code_cache total_blobs='325' nmethods='48' adapters='140' free_code_cache='248845952'/>
+<task_done success='1' nmsize='272' count='312' stamp='0.096'/>
+</task>
+<task compile_id='59' method='jdk.internal.module.ModuleBootstrap$2 hasNext ()Z' bytes='30' count='642' iicount='642' level='3' stamp='0.096'>
+<phase name='setup' stamp='0.096'>
+<phase_done name='setup' stamp='0.096'/>
+</phase>
+<phase name='buildIR' stamp='0.096'>
+<type id='956' name='boolean'/>
+<klass id='1081' name='jdk.internal.module.ModuleBootstrap$2' flags='0'/>
+<method id='1082' holder='1081' name='hasNext' return='956' flags='1' bytes='30' iicount='642'/>
+<parse method='1082'  stamp='0.096'>
+<phase name='parse_hir' stamp='0.096'>
+<bc code='185' bci='4'/>
+<klass id='1086' name='java.util.Iterator' flags='1537'/>
+<method id='1087' holder='1086' name='hasNext' return='956' flags='1025' bytes='0' iicount='1'/>
+<call method='1087' instr='invokeinterface'/>
+<inline_fail reason='no static binding'/>
+<bc code='185' bci='16'/>
+<call method='1087' instr='invokeinterface'/>
+<inline_fail reason='no static binding'/>
+<phase_done name='parse_hir' stamp='0.097'/>
+</phase>
+<parse_done stamp='0.097'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.097'>
+<phase_done name='optimize_blocks' stamp='0.097'/>
+</phase>
+<phase name='gvn' stamp='0.097'>
+<phase_done name='gvn' stamp='0.097'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.097'>
+<phase_done name='rangeCheckElimination' stamp='0.097'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.097'>
+<phase_done name='optimize_null_checks' stamp='0.097'/>
+</phase>
+<phase_done name='buildIR' stamp='0.097'/>
+</phase>
+<phase name='emit_lir' stamp='0.097'>
+<phase name='lirGeneration' stamp='0.097'>
+<phase_done name='lirGeneration' stamp='0.097'/>
+</phase>
+<phase name='linearScan' stamp='0.097'>
+<phase_done name='linearScan' stamp='0.097'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.097'/>
+</phase>
+<phase name='codeemit' stamp='0.097'>
+<phase_done name='codeemit' stamp='0.097'/>
+</phase>
+<phase name='codeinstall' stamp='0.097'>
+<phase_done name='codeinstall' stamp='0.097'/>
+</phase>
+<code_cache total_blobs='329' nmethods='52' adapters='140' free_code_cache='248838784'/>
+<task_done success='1' nmsize='920' count='642' stamp='0.097'/>
+</task>
+<task compile_id='9' method='java.util.Collections$EmptySet hashCode ()I' bytes='2' count='202' iicount='202' level='1' stamp='0.097'>
+<phase name='setup' stamp='0.097'>
+<phase_done name='setup' stamp='0.097'/>
+</phase>
+<phase name='buildIR' stamp='0.097'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.util.Collections$EmptySet' flags='10'/>
+<method id='1082' holder='1081' name='hashCode' return='962' flags='1' bytes='2' iicount='202'/>
+<parse method='1082'  stamp='0.097'>
+<phase name='parse_hir' stamp='0.097'>
+<phase_done name='parse_hir' stamp='0.097'/>
+</phase>
+<parse_done stamp='0.097'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.097'>
+<phase_done name='optimize_blocks' stamp='0.097'/>
+</phase>
+<phase name='gvn' stamp='0.097'>
+<phase_done name='gvn' stamp='0.097'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.097'>
+<phase_done name='rangeCheckElimination' stamp='0.097'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.097'>
+<phase_done name='optimize_null_checks' stamp='0.097'/>
+</phase>
+<phase_done name='buildIR' stamp='0.097'/>
+</phase>
+<phase name='emit_lir' stamp='0.097'>
+<phase name='lirGeneration' stamp='0.097'>
+<phase_done name='lirGeneration' stamp='0.097'/>
+</phase>
+<phase name='linearScan' stamp='0.097'>
+<phase_done name='linearScan' stamp='0.097'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.097'/>
+</phase>
+<phase name='codeemit' stamp='0.097'>
+<phase_done name='codeemit' stamp='0.097'/>
+</phase>
+<phase name='codeinstall' stamp='0.097'>
+<phase_done name='codeinstall' stamp='0.097'/>
+</phase>
+<code_cache total_blobs='333' nmethods='56' adapters='140' free_code_cache='248835456'/>
+<task_done success='1' nmsize='272' count='202' stamp='0.097'/>
+</task>
+<task compile_id='62' method='java.util.zip.ZipUtils SH ([BI)I' bytes='21' count='257' iicount='257' level='3' stamp='0.120'>
+<phase name='setup' stamp='0.120'>
+<phase_done name='setup' stamp='0.120'/>
+</phase>
+<phase name='buildIR' stamp='0.120'>
+<type id='962' name='int'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1081' name='java.util.zip.ZipUtils' flags='0'/>
+<method id='1082' holder='1081' name='SH' return='962' arguments='1073 962' flags='24' bytes='21' iicount='257'/>
+<parse method='1082'  stamp='0.120'>
+<phase name='parse_hir' stamp='0.120'>
+<phase_done name='parse_hir' stamp='0.120'/>
+</phase>
+<parse_done stamp='0.120'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.120'>
+<phase_done name='optimize_blocks' stamp='0.120'/>
+</phase>
+<phase name='gvn' stamp='0.120'>
+<phase_done name='gvn' stamp='0.120'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.120'>
+<phase_done name='rangeCheckElimination' stamp='0.120'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.120'>
+<phase_done name='optimize_null_checks' stamp='0.120'/>
+</phase>
+<phase_done name='buildIR' stamp='0.120'/>
+</phase>
+<phase name='emit_lir' stamp='0.120'>
+<phase name='lirGeneration' stamp='0.120'>
+<phase_done name='lirGeneration' stamp='0.120'/>
+</phase>
+<phase name='linearScan' stamp='0.120'>
+<phase_done name='linearScan' stamp='0.120'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.120'/>
+</phase>
+<phase name='codeemit' stamp='0.120'>
+<phase_done name='codeemit' stamp='0.120'/>
+</phase>
+<phase name='codeinstall' stamp='0.120'>
+<phase_done name='codeinstall' stamp='0.120'/>
+</phase>
+<code_cache total_blobs='391' nmethods='62' adapters='192' free_code_cache='248795776'/>
+<task_done success='1' nmsize='400' count='257' stamp='0.120'/>
+</task>
+<task compile_id='68' method='java.util.AbstractMap &lt;init&gt; ()V' bytes='5' count='384' iicount='384' level='3' stamp='0.127'>
+<phase name='setup' stamp='0.127'>
+<phase_done name='setup' stamp='0.127'/>
+</phase>
+<phase name='buildIR' stamp='0.127'>
+<type id='964' name='void'/>
+<klass id='1081' name='java.util.AbstractMap' flags='1025'/>
+<method id='1082' holder='1081' name='&lt;init&gt;' return='964' flags='4' bytes='5' iicount='384'/>
+<parse method='1082'  stamp='0.127'>
+<phase name='parse_hir' stamp='0.127'>
+<bc code='183' bci='1'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<method id='1084' holder='969' name='&lt;init&gt;' return='964' flags='1' bytes='1' compile_id='1' compiler='c1' level='2' iicount='8305'/>
+<call method='1084' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<bc code='177' bci='0'/>
+<dependency type='no_finalizable_subclasses' ctxk='1081'/>
+<parse_done stamp='0.127'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.127'/>
+</phase>
+<parse_done stamp='0.127'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.127'>
+<phase_done name='optimize_blocks' stamp='0.127'/>
+</phase>
+<phase name='gvn' stamp='0.127'>
+<phase_done name='gvn' stamp='0.127'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.127'>
+<phase_done name='rangeCheckElimination' stamp='0.127'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.127'>
+<phase_done name='optimize_null_checks' stamp='0.127'/>
+</phase>
+<phase_done name='buildIR' stamp='0.127'/>
+</phase>
+<phase name='emit_lir' stamp='0.127'>
+<phase name='lirGeneration' stamp='0.127'>
+<phase_done name='lirGeneration' stamp='0.127'/>
+</phase>
+<phase name='linearScan' stamp='0.127'>
+<phase_done name='linearScan' stamp='0.127'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.127'/>
+</phase>
+<phase name='codeemit' stamp='0.127'>
+<phase_done name='codeemit' stamp='0.127'/>
+</phase>
+<phase name='codeinstall' stamp='0.127'>
+<dependency type='no_finalizable_subclasses' ctxk='1081'/>
+<phase_done name='codeinstall' stamp='0.127'/>
+</phase>
+<code_cache total_blobs='403' nmethods='68' adapters='198' free_code_cache='248784256'/>
+<task_done success='1' nmsize='432' count='384' inlined_bytes='1' stamp='0.127'/>
+</task>
+<task compile_id='72' method='java.lang.String indexOf (II)I' bytes='29' count='261' iicount='261' level='3' stamp='0.132'>
+<phase name='setup' stamp='0.132'>
+<phase_done name='setup' stamp='0.132'/>
+</phase>
+<phase name='buildIR' stamp='0.132'>
+<type id='962' name='int'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='970' name='indexOf' return='962' arguments='962 962' flags='1' bytes='29' iicount='261'/>
+<parse method='1081'  stamp='0.132'>
+<phase name='parse_hir' stamp='0.132'>
+<bc code='182' bci='1'/>
+<type id='956' name='boolean'/>
+<method id='1083' holder='970' name='isLatin1' return='956' flags='2' bytes='19' compile_id='3' compiler='c1' level='3' iicount='5713'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1083'>
+<parse_done stamp='0.132'/>
+</parse>
+<bc code='184' bci='13'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1086' name='java.lang.StringLatin1' flags='16'/>
+<method id='1087' holder='1086' name='indexOf' return='962' arguments='1073 962 962' flags='9' bytes='61' compile_id='61' compiler='c1' level='3' iicount='263'/>
+<call method='1087' instr='invokestatic'/>
+<inline_fail reason='callee is too large'/>
+<bc code='184' bci='25'/>
+<klass id='1089' name='java.lang.StringUTF16' unloaded='1'/>
+<method id='1090' holder='1089' name='indexOf' return='962' arguments='1073 962 962' unloaded='1'/>
+<call method='1090' instr='invokestatic'/>
+<inline_fail reason='not inlineable'/>
+<phase_done name='parse_hir' stamp='0.132'/>
+</phase>
+<parse_done stamp='0.132'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.132'>
+<phase_done name='optimize_blocks' stamp='0.132'/>
+</phase>
+<phase name='gvn' stamp='0.132'>
+<phase_done name='gvn' stamp='0.132'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.132'>
+<phase_done name='rangeCheckElimination' stamp='0.132'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.132'>
+<phase_done name='optimize_null_checks' stamp='0.132'/>
+</phase>
+<phase_done name='buildIR' stamp='0.132'/>
+</phase>
+<phase name='emit_lir' stamp='0.132'>
+<phase name='lirGeneration' stamp='0.132'>
+<phase_done name='lirGeneration' stamp='0.132'/>
+</phase>
+<phase name='linearScan' stamp='0.132'>
+<phase_done name='linearScan' stamp='0.132'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.132'/>
+</phase>
+<phase name='codeemit' stamp='0.132'>
+<phase_done name='codeemit' stamp='0.132'/>
+</phase>
+<phase name='codeinstall' stamp='0.132'>
+<phase_done name='codeinstall' stamp='0.133'/>
+</phase>
+<code_cache total_blobs='408' nmethods='72' adapters='199' free_code_cache='248777088'/>
+<task_done success='1' nmsize='728' count='265' inlined_bytes='19' stamp='0.133'/>
+</task>
+<task compile_id='76' method='java.lang.StringLatin1 lastIndexOf ([BII)I' bytes='40' count='115' backedge_count='2272' iicount='115' level='3' stamp='0.135'>
+<phase name='setup' stamp='0.135'>
+<phase_done name='setup' stamp='0.135'/>
+</phase>
+<phase name='buildIR' stamp='0.135'>
+<type id='962' name='int'/>
+<klass id='1073' name='[B' flags='1041'/>
+<klass id='1081' name='java.lang.StringLatin1' flags='16'/>
+<method id='1082' holder='1081' name='lastIndexOf' return='962' arguments='1073 962 962' flags='9' bytes='40' iicount='115'/>
+<parse method='1082'  stamp='0.135'>
+<phase name='parse_hir' stamp='0.135'>
+<bc code='184' bci='1'/>
+<type id='956' name='boolean'/>
+<method id='1084' holder='1081' name='canEncode' return='956' arguments='962' flags='9' bytes='13' compile_id='69' compiler='c1' level='3' iicount='656'/>
+<call method='1084' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1084'>
+<parse_done stamp='0.135'/>
+</parse>
+<bc code='184' bci='14'/>
+<klass id='1086' name='java.lang.Math' flags='17'/>
+<method id='1087' holder='1086' name='min' return='962' arguments='962 962' flags='9' bytes='11' compile_id='67' compiler='c1' level='3' iicount='581'/>
+<call method='1087' instr='invokestatic'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1087'>
+<parse_done stamp='0.135'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.135'/>
+</phase>
+<parse_done stamp='0.135'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.135'>
+<phase_done name='optimize_blocks' stamp='0.135'/>
+</phase>
+<phase name='gvn' stamp='0.135'>
+<phase_done name='gvn' stamp='0.135'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.135'>
+<phase_done name='rangeCheckElimination' stamp='0.135'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.135'>
+<phase_done name='optimize_null_checks' stamp='0.135'/>
+</phase>
+<phase_done name='buildIR' stamp='0.135'/>
+</phase>
+<phase name='emit_lir' stamp='0.135'>
+<phase name='lirGeneration' stamp='0.135'>
+<phase_done name='lirGeneration' stamp='0.135'/>
+</phase>
+<phase name='linearScan' stamp='0.135'>
+<phase_done name='linearScan' stamp='0.136'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.136'/>
+</phase>
+<phase name='codeemit' stamp='0.136'>
+<phase_done name='codeemit' stamp='0.136'/>
+</phase>
+<phase name='codeinstall' stamp='0.136'>
+<phase_done name='codeinstall' stamp='0.136'/>
+</phase>
+<code_cache total_blobs='412' nmethods='76' adapters='199' free_code_cache='248771584'/>
+<task_done success='1' nmsize='1040' count='118' backedge_count='2314' inlined_bytes='24' stamp='0.136'/>
+</task>
+<task compile_id='84' method='java.lang.String &lt;init&gt; ([BB)V' bytes='15' count='257' iicount='257' level='3' stamp='0.147'>
+<phase name='setup' stamp='0.147'>
+<phase_done name='setup' stamp='0.147'/>
+</phase>
+<phase name='buildIR' stamp='0.147'>
+<type id='964' name='void'/>
+<klass id='1073' name='[B' flags='1041'/>
+<type id='960' name='byte'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='970' name='&lt;init&gt;' return='964' arguments='1073 960' flags='0' bytes='15' iicount='257'/>
+<parse method='1081'  stamp='0.147'>
+<phase name='parse_hir' stamp='0.147'>
+<bc code='183' bci='1'/>
+<klass id='969' name='java.lang.Object' flags='1'/>
+<method id='1083' holder='969' name='&lt;init&gt;' return='964' flags='1' bytes='1' compile_id='77' compiler='c1' level='1' iicount='8612'/>
+<call method='1083' instr='invokespecial'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1083'>
+<parse_done stamp='0.147'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.147'/>
+</phase>
+<parse_done stamp='0.147'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.147'>
+<phase_done name='optimize_blocks' stamp='0.147'/>
+</phase>
+<phase name='gvn' stamp='0.147'>
+<phase_done name='gvn' stamp='0.147'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.147'>
+<phase_done name='rangeCheckElimination' stamp='0.147'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.147'>
+<phase_done name='optimize_null_checks' stamp='0.147'/>
+</phase>
+<phase_done name='buildIR' stamp='0.147'/>
+</phase>
+<phase name='emit_lir' stamp='0.147'>
+<phase name='lirGeneration' stamp='0.147'>
+<phase_done name='lirGeneration' stamp='0.147'/>
+</phase>
+<phase name='linearScan' stamp='0.147'>
+<phase_done name='linearScan' stamp='0.147'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.147'/>
+</phase>
+<phase name='codeemit' stamp='0.147'>
+<phase_done name='codeemit' stamp='0.147'/>
+</phase>
+<phase name='codeinstall' stamp='0.147'>
+<phase_done name='codeinstall' stamp='0.147'/>
+</phase>
+<code_cache total_blobs='453' nmethods='84' adapters='232' free_code_cache='248739584'/>
+<task_done success='1' nmsize='528' count='257' inlined_bytes='1' stamp='0.147'/>
+</task>
+<task compile_id='92' method='java.lang.AbstractStringBuilder append (Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;' bytes='45' count='256' iicount='256' level='3' stamp='0.150'>
+<phase name='setup' stamp='0.150'>
+<phase_done name='setup' stamp='0.150'/>
+</phase>
+<phase name='buildIR' stamp='0.150'>
+<klass id='1037' name='java.lang.AbstractStringBuilder' flags='1024'/>
+<klass id='970' name='java.lang.String' flags='17'/>
+<method id='1081' holder='1037' name='append' return='1037' arguments='970' flags='1' bytes='45' iicount='256'/>
+<parse method='1081'  stamp='0.150'>
+<phase name='parse_hir' stamp='0.150'>
+<bc code='182' bci='5'/>
+<method id='1083' holder='1037' name='appendNull' return='1037' flags='2' bytes='83' iicount='1'/>
+<call method='1083' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='10'/>
+<type id='962' name='int'/>
+<method id='1085' holder='970' name='length' return='962' flags='1' bytes='11' compile_id='60' compiler='c1' level='3' iicount='1240'/>
+<call method='1085' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1085'>
+<bc code='182' bci='6'/>
+<type id='960' name='byte'/>
+<method id='1087' holder='970' name='coder' return='960' flags='0' bytes='15' compile_id='5' compiler='c1' level='3' iicount='5364'/>
+<call method='1087' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1087'>
+<parse_done stamp='0.150'/>
+</parse>
+<parse_done stamp='0.150'/>
+</parse>
+<bc code='182' bci='21'/>
+<type id='964' name='void'/>
+<method id='1090' holder='1037' name='ensureCapacityInternal' return='964' arguments='962' flags='2' bytes='39' compile_id='66' compiler='c1' level='3' iicount='367'/>
+<call method='1090' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='30'/>
+<method id='1092' holder='1037' name='putStringAt' return='964' arguments='962 970' flags='18' bytes='29' iicount='256'/>
+<call method='1092' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1092'>
+<bc code='182' bci='1'/>
+<method id='1094' holder='1037' name='getCoder' return='960' flags='16' bytes='15' iicount='256'/>
+<call method='1094' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1094'>
+<parse_done stamp='0.150'/>
+</parse>
+<bc code='182' bci='5'/>
+<call method='1087' instr='invokevirtual'/>
+<inline_success reason='receiver is statically known'/>
+<parse method='1087'>
+<parse_done stamp='0.151'/>
+</parse>
+<bc code='182' bci='12'/>
+<method id='1096' holder='1037' name='inflate' return='964' flags='2' bytes='42' iicount='1'/>
+<call method='1096' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<bc code='182' bci='25'/>
+<klass id='1073' name='[B' flags='1041'/>
+<method id='1098' holder='970' name='getBytes' return='964' arguments='1073 962 960' flags='0' bytes='44' iicount='256'/>
+<call method='1098' instr='invokevirtual'/>
+<inline_fail reason='callee is too large'/>
+<parse_done stamp='0.151'/>
+</parse>
+<phase_done name='parse_hir' stamp='0.151'/>
+</phase>
+<parse_done stamp='0.151'/>
+</parse>
+<phase name='optimize_blocks' stamp='0.151'>
+<phase_done name='optimize_blocks' stamp='0.151'/>
+</phase>
+<phase name='gvn' stamp='0.151'>
+<phase_done name='gvn' stamp='0.151'/>
+</phase>
+<phase name='rangeCheckElimination' stamp='0.151'>
+<phase_done name='rangeCheckElimination' stamp='0.151'/>
+</phase>
+<phase name='optimize_null_checks' stamp='0.151'>
+<phase_done name='optimize_null_checks' stamp='0.151'/>
+</phase>
+<phase_done name='buildIR' stamp='0.151'/>
+</phase>
+<phase name='emit_lir' stamp='0.151'>
+<phase name='lirGeneration' stamp='0.151'>
+<phase_done name='lirGeneration' stamp='0.151'/>
+</phase>
+<phase name='linearScan' stamp='0.151'>
+<phase_done name='linearScan' stamp='0.151'/>
+</phase>
+<phase_done name='emit_lir' stamp='0.151'/>
+</phase>
+<phase name='codeemit' stamp='0.151'>
+<phase_done name='codeemit' stamp='0.151'/>
+</phase>
+<phase name='codeinstall' stamp='0.151'>
+<phase_done name='codeinstall' stamp='0.151'/>
+</phase>
+<code_cache total_blobs='464' nmethods='95' adapters='232' free_code_cache='248727424'/>
+<task_done success='1' nmsize='1400' count='256' inlined_bytes='85' stamp='0.151'/>
+</task>
+</compilation_log>
+<compilation_log thread='24139'>
+<start_compile_thread name='C2 CompilerThread0' thread='24139' process='24128' stamp='0.048'/>
+<task compile_id='55' method='java.util.ImmutableCollections$SetN$SetNIterator nextIndex ()I' bytes='56' count='5642' iicount='5642' stamp='0.094'>
+<type id='962' name='int'/>
+<klass id='1081' name='java.util.ImmutableCollections$SetN$SetNIterator' flags='18'/>
+<method id='1082' holder='1081' name='nextIndex' return='962' flags='2' bytes='56' compile_id='21' compiler='c1' level='3' iicount='5644'/>
+<parse method='1082' uses='5644.000000' stamp='0.094'>
+<bc code='155' bci='8'/>
+<branch target_bci='31' taken='0' not_taken='5644' cnt='5644.000000' prob='never'/>
+<bc code='180' bci='19'/>
+<uncommon_trap bci='19' reason='null_check' action='maybe_recompile' debug_id='0'/>
+<bc code='190' bci='22'/>
+<uncommon_trap bci='22' reason='null_check' action='maybe_recompile' debug_id='0'/>
+<bc code='161' bci='23'/>
+<branch target_bci='49' taken='5458' not_taken='186' cnt='5644.000000' prob='0.967045'/>
+<parse_done nodes='87' live='84' memory='30880' stamp='0.094'/>
+</parse>
+<regalloc attempts='0' success='1'/>
+<code_cache total_blobs='313' nmethods='36' adapters='140' free_code_cache='248852608'/>
+<task_done success='1' nmsize='152' count='5774' stamp='0.095'/>
+</task>
+</compilation_log>
+<hotspot_log_done stamp='0.154'/>
+</hotspot_log>
--- a/test/hotspot/gtest/gc/g1/test_heapRegion.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/hotspot/gtest/gc/g1/test_heapRegion.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -28,7 +28,7 @@
 #include "gc/g1/heapRegion.inline.hpp"
 #include "gc/shared/referenceProcessor.hpp"
 #include "runtime/interfaceSupport.inline.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "runtime/vmThread.hpp"
 #include "unittest.hpp"
 
--- a/test/hotspot/gtest/gc/shared/test_oopStorage.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/hotspot/gtest/gc/shared/test_oopStorage.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -34,7 +34,7 @@
 #include "runtime/mutex.hpp"
 #include "runtime/mutexLocker.hpp"
 #include "runtime/thread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "runtime/vmThread.hpp"
 #include "utilities/align.hpp"
 #include "utilities/ostream.hpp"
--- a/test/hotspot/gtest/gc/shared/test_oopStorage_parperf.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/hotspot/gtest/gc/shared/test_oopStorage_parperf.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -32,7 +32,7 @@
 #include "runtime/interfaceSupport.inline.hpp"
 #include "runtime/os.hpp"
 #include "runtime/thread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "runtime/vmThread.hpp"
 #include "utilities/debug.hpp"
 #include "utilities/ostream.hpp"
--- a/test/hotspot/gtest/threadHelper.inline.hpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/hotspot/gtest/threadHelper.inline.hpp	Fri Dec 07 09:46:53 2018 -0500
@@ -28,7 +28,7 @@
 #include "runtime/semaphore.hpp"
 #include "runtime/thread.hpp"
 #include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "unittest.hpp"
 
 class VM_StopSafepoint : public VM_Operation {
--- a/test/hotspot/gtest/utilities/test_concurrentHashtable.cpp	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/hotspot/gtest/utilities/test_concurrentHashtable.cpp	Fri Dec 07 09:46:53 2018 -0500
@@ -26,7 +26,7 @@
 #include "runtime/semaphore.hpp"
 #include "runtime/thread.hpp"
 #include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
+#include "runtime/vmOperations.hpp"
 #include "utilities/concurrentHashTable.inline.hpp"
 #include "utilities/concurrentHashTableTasks.inline.hpp"
 #include "threadHelper.inline.hpp"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/applications/ctw/modules/jdk_jfr.java	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @summary run CTW for all classes from jdk.jfr module
+ *
+ * @library /test/lib / /testlibrary/ctw/src
+ * @modules java.base/jdk.internal.access
+ *          java.base/jdk.internal.jimage
+ *          java.base/jdk.internal.misc
+ *          java.base/jdk.internal.reflect
+ * @modules jdk.jfr
+ *
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ *                                sun.hotspot.WhiteBox$WhiteBoxPermission
+ * @run main/timeout=7200 sun.hotspot.tools.ctw.CtwRunner modules:jdk.jfr
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/applications/ctw/modules/jdk_management_jfr.java	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @summary run CTW for all classes from jdk.management.jfr module
+ *
+ * @library /test/lib / /testlibrary/ctw/src
+ * @modules java.base/jdk.internal.access
+ *          java.base/jdk.internal.jimage
+ *          java.base/jdk.internal.misc
+ *          java.base/jdk.internal.reflect
+ * @modules jdk.management.jfr
+ *
+ * @build sun.hotspot.WhiteBox
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ *                                sun.hotspot.WhiteBox$WhiteBoxPermission
+ * @run main/timeout=7200 sun.hotspot.tools.ctw.CtwRunner modules:jdk.management.jfr
+ */
--- a/test/hotspot/jtreg/runtime/NMT/MallocStressTest.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/hotspot/jtreg/runtime/NMT/MallocStressTest.java	Fri Dec 07 09:46:53 2018 -0500
@@ -57,21 +57,19 @@
         release
     };
 
-    static TestPhase phase = TestPhase.alloc;
+    static volatile TestPhase phase = TestPhase.alloc;
 
     // malloc'd memory
-    static ArrayList<MallocMemory>  mallocd_memory = new ArrayList<MallocMemory>();
+    static final ArrayList<MallocMemory>  mallocd_memory = new ArrayList<MallocMemory>();
     static long                     mallocd_total  = 0;
     static WhiteBox                 whiteBox;
     static AtomicInteger            pause_count = new AtomicInteger();
 
-    static boolean                  is_64_bit_system;
+    static final boolean            is_64_bit_system = Platform.is64bit();
 
     private static boolean is_64_bit_system() { return is_64_bit_system; }
 
     public static void main(String args[]) throws Exception {
-        is_64_bit_system = (Platform.is64bit());
-
         OutputAnalyzer output;
         whiteBox = WhiteBox.getWhiteBox();
 
--- a/test/hotspot/jtreg/serviceability/jvmti/HeapMonitor/MyPackage/HeapMonitorEventOnOffTest.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/hotspot/jtreg/serviceability/jvmti/HeapMonitor/MyPackage/HeapMonitorEventOnOffTest.java	Fri Dec 07 09:46:53 2018 -0500
@@ -35,7 +35,6 @@
  */
 public class HeapMonitorEventOnOffTest {
   public static void main(String[] args) {
-    HeapMonitor.enableSamplingEvents();
     HeapMonitor.allocateAndCheckFrames();
 
     // Disabling the notification system should stop events.
@@ -43,8 +42,8 @@
     HeapMonitor.resetEventStorage();
     HeapMonitor.allocateAndCheckFrames(false, false);
 
-    // Enabling the notification system should start events again.
-    HeapMonitor.enableSamplingEvents();
+    // By calling allocateAndCheckFrames(), we enable the notifications and check if allocations
+    // get sampled again.
     HeapMonitor.allocateAndCheckFrames();
   }
 }
--- a/test/hotspot/jtreg/testlibrary/ctw/src/sun/hotspot/tools/ctw/CtwRunner.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/hotspot/jtreg/testlibrary/ctw/src/sun/hotspot/tools/ctw/CtwRunner.java	Fri Dec 07 09:46:53 2018 -0500
@@ -272,6 +272,7 @@
                 "--add-exports", "java.base/jdk.internal.jimage=ALL-UNNAMED",
                 "--add-exports", "java.base/jdk.internal.misc=ALL-UNNAMED",
                 "--add-exports", "java.base/jdk.internal.reflect=ALL-UNNAMED",
+                "--add-exports", "java.base/jdk.internal.access=ALL-UNNAMED",
                 // enable diagnostic logging
                 "-XX:+LogCompilation",
                 // use phase specific log, hs_err and ciReplay files
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/network/TEST.properties	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-#
-# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-exclusiveAccess.dirs=.
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/network/network001.java	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,544 +0,0 @@
-/*
- * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @key stress
- *
- * @summary converted from VM testbase nsk/stress/network/network001.
- * VM testbase keywords: [stress, diehard, slow, nonconcurrent, quick]
- * VM testbase readme:
- * DESCRIPTION
- *     This test transfers huge amount of data between server and client
- *     TCP/IP sockets, and checks if those data are transfered correctly.
- *     Both sockets are attached to local host name, or to the loopback
- *     "localhost" (having IP address 127.0.0.1).
- *     Information transfer is synchronized in this test. Client passes
- *     a large data parcel to server, and server reads that parcel and checks
- *     if it is same as expected (byte-to-byte equality). Then server passes
- *     (some other) parcel to client, and client reads and verifies those bytes.
- *     This ping-pong game is repeated 2000 times; and after that both sockets
- *     check if there are no extra bytes accudentally passed through their
- *     connection.
- *     Parcels lengths and contents are chosen randomly, and average parcel
- *     length is 125 bytes. So totally, each of the 2 sockets passes ~250Kb of
- *     data to its partner, and thus ~500Kb of data are transfered by this test.
- * COMMENTS
- *     Note, that HotSpot 1.3beta-H fails to start this test due to the bug:
- *         #4245704 (P1/S1) Fails to launch with: jre/bin/net.dll ...
- *
- * @run main/othervm nsk.stress.network.network001
- */
-
-package nsk.stress.network;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.util.Random;
-
-/**
- * This test transfers huge amount of data between server and client
- * TCP/IP sockets, and checks if those data are transfered correctly.
- * Both sockets are attached to local host name, or to the loopback
- * ``localhost'' (having IP address 127.0.0.1).
- * <p>
- * <p>Information transfer is synchronized in this test. Client passes
- * a large data parcel to server, and server reads that parcel and checks
- * if it is same as expected (byte-to-byte equality). Then server passes
- * (some other) parcel to client, and client reads and verifies those bytes.
- * This ping-pong game is repeated 2000 times; and after that both sockets
- * check if there are no extra bytes accudentally passed through their
- * connection.
- * <p>
- * <p>Parcels lengths and contents are chosen randomly, and average parcel
- * length is 125 bytes. So totally, each of the 2 sockets passes ~250Kb of
- * data to its partner, and thus ~500Kb of data are transfered by this test.
- */
-public class network001 {
-    /**
-     * Number of parcels to be sent/recieve.
-     */
-    private static final int DATA_PARCELS = 2000;
-
-    /**
-     * Maximal length of data parcel to be sent/recieved
-     * (now it equals to 250 bytes).
-     */
-    private static final int MAX_PARCEL = 250;
-
-    /**
-     * Either actually display optional reports or not.
-     */
-    static private final boolean DEBUG_MODE = false;
-
-    /**
-     * Errors and optional reports log. Usually <code>System.out</code>.
-     */
-    static private PrintStream out = System.out;
-
-    /**
-     * Print error message: both client and server may print
-     * concurently.
-     */
-    static private synchronized void println(Object message) {
-        out.println(message.toString());
-    }
-
-    /**
-     * Display optional report: comment ca va.
-     */
-    static private void display(Object report) {
-        if (DEBUG_MODE)
-            println(report.toString());
-    }
-
-    /**
-     * Server thread intended to reply to data parcels sent by Client thread.
-     */
-    static private class Server extends Thread {
-        /**
-         * This server thread listens the single socket.
-         */
-        private ServerSocket serverSocket;
-
-        /**
-         * Address and port of this server socket.
-         */
-        public String toString() {
-            return serverSocket.toString();
-        }
-
-        /**
-         * Did the thread failed? If yes, what is the failure's reason.
-         */
-        Exception exception = null;
-
-        /**
-         * Which port does this socket is listening.
-         */
-        int getPort() {
-            return serverSocket.getLocalPort();
-        }
-
-        /**
-         * Find some free port at the given <code>address</code>
-         * and attach new server to hear that port.
-         */
-        Server(InetAddress address) throws IOException {
-            int someFreePort = 0;
-            int backlog = 50; // default for new ServerSocket(port)
-            serverSocket = new ServerSocket(someFreePort, backlog, address);
-        }
-
-        /**
-         * Accept connection, read the string "abra", and respond "cadabra".
-         */
-        public void run() {
-            try {
-                Socket socket = serverSocket.accept();
-                display("Server socket: " + socket);
-
-                InputStream istream = socket.getInputStream();
-                OutputStream ostream = socket.getOutputStream();
-
-                Random random = new Random(0);
-
-                for (int i = 0; i < DATA_PARCELS; i++) {
-                    Parcel etalon = new Parcel(random);
-
-                    Parcel sample = new Parcel(istream); // read
-                    if (!sample.equals(etalon)) {
-                        println("Server thread got unexpected parcel:");
-                        println("sample=" + sample);
-                        println("etalon=" + etalon);
-                        throw new TestFailure(
-                                "server has read unexpected parcel");
-                    }
-
-                    etalon.send(ostream);
-                    ostream.flush();
-                }
-
-                int datum = istream.read(); // wait for client close()
-                if (datum >= 0)
-                    throw new TestFailure(
-                            "server has read ambigous byte: " + datum);
-
-                ostream.close(); // implies: socket.close();
-
-            } catch (Exception oops) {
-                exception = oops;
-            }
-        }
-
-    }
-
-    /**
-     * Client thread intended to send data parcels to Server thread and
-     * to recieve the server's replies.
-     */
-    static private class Client extends Thread {
-        /**
-         * This thread uses the single client socket.
-         */
-        private Socket socket;
-
-        /**
-         * Address and port of this socket.
-         */
-        public String toString() {
-            return socket.toString();
-        }
-
-        /**
-         * Did the thread failed? If yes, what is the failure's reason.
-         */
-        Exception exception = null;
-
-        /**
-         * Connect client socket on the given <code>address</code>
-         * and <code>port</code>.
-         */
-        Client(InetAddress address, int port) throws IOException {
-            socket = new Socket(address, port);
-        }
-
-        /**
-         * Accept connection, read the string "abra", and respond "cadabra".
-         */
-        public void run() {
-            try {
-                InputStream istream = socket.getInputStream();
-                OutputStream ostream = socket.getOutputStream();
-
-                Random random = new Random(0);
-
-                for (int i = 0; i < DATA_PARCELS; i++) {
-                    Parcel etalon = new Parcel(random);
-                    etalon.send(ostream);
-                    ostream.flush();
-
-                    Parcel sample = new Parcel(istream); // read
-                    if (!sample.equals(etalon)) {
-                        println("Client thread got unexpected parcel:");
-                        println("sample=" + sample);
-                        println("etalon=" + etalon);
-                        throw new TestFailure(
-                                "parcel context is unexpected to client");
-                    }
-                }
-
-                if (istream.available() > 0) {
-                    int datum = istream.read();
-                    throw new TestFailure(
-                            "client has read ambigous byte: " + datum);
-                }
-                ostream.close(); // implies: socket.close()
-
-            } catch (Exception oops) {
-                exception = oops;
-            }
-        }
-
-    }
-
-    /**
-     * A data parcel to sent/recieved between Client and Server threads.
-     * When data parcel is sent, first 4 bytes transfered encode the size
-     * of the parcel (i.e.: number of data bytes in the parcel's contents).
-     * Then the parcel's contents bytes are transered.
-     */
-    static class Parcel {
-        private byte[] parcel;
-
-        /**
-         * Display all bytes as integer values from 0 to 255;
-         * or return ``<tt>null</tt>'' if this Parcel is not
-         * yet initialized.
-         */
-        public String toString() {
-            if (parcel == null)
-                return "null";
-            String s = "{";
-            for (int i = 0; i < parcel.length; i++)
-                s += (i > 0 ? ", " : "") + ((int) parcel[i] & 0xFF);
-            return s + "}";
-        }
-
-        /**
-         * Generate new <code>parcel[]</code> array using the given
-         * <code>random</code> numbers generator. Client and Server
-         * threads should use identical <code>random</code> generators,
-         * so that those threads could generate equal data parcels and
-         * check the parcel just transfered.
-         */
-        public Parcel(Random random) {
-            int size = random.nextInt(MAX_PARCEL) + 1;
-            parcel = new byte[size];
-            for (int i = 0; i < size; i++)
-                parcel[i] = (byte) random.nextInt(256);
-        }
-
-        /**
-         * Read exactly <code>size</code> bytes from the <code>istream</code>
-         * if possible, or throw <code>TestFailure</code> if unexpected end of
-         * <code>istream</code> occurs.
-         */
-        private static byte[] readBytes(int size, InputStream istream)
-                throws IOException {
-
-            byte data[] = new byte[size];
-            for (int i = 0; i < size; i++) {
-                int datum = istream.read();
-                if (datum < 0)
-                    throw new TestFailure(
-                            "unexpected EOF: have read: " + i + " bytes of " + size);
-                data[i] = (byte) datum;
-            }
-            return data;
-        }
-
-        /**
-         * Read 4 bytes from <code>istream</code> and threat them to encode
-         * size of data parcel following these 4 bytes.
-         */
-        private static int getSize(InputStream istream) throws IOException {
-            byte data[] = readBytes(4, istream);
-            int data0 = (int) data[0] & 0xFF;
-            int data1 = (int) data[1] & 0xFF;
-            int data2 = (int) data[2] & 0xFF;
-            int data3 = (int) data[3] & 0xFF;
-            int sizeWord = data0 + (data1 << 8) + (data2 << 16) + (data3 << 24);
-            int size = sizeWord + 1;
-            if (size <= 0)
-                throw new TestFailure("illegal size: " + size);
-            return size;
-        }
-
-        /**
-         * Send 4 bytes encoding actual size of the parcel just to be transfered.
-         */
-        private static void putSize(OutputStream ostream, int size)
-                throws IOException {
-
-            if (size <= 0)
-                throw new TestFailure("illegal size: " + size);
-
-            int sizeWord = size - 1;
-            byte data[] = new byte[4];
-            data[0] = (byte) sizeWord;
-            data[1] = (byte) (sizeWord >> 8);
-            data[2] = (byte) (sizeWord >> 16);
-            data[3] = (byte) (sizeWord >> 24);
-            ostream.write(data);
-        }
-
-        /**
-         * Recieve data parcel.
-         */
-        public Parcel(InputStream istream) throws IOException {
-            int size = getSize(istream);
-            parcel = readBytes(size, istream);
-        }
-
-        /**
-         * Send <code>this</code> data parcel.
-         */
-        public void send(OutputStream ostream) throws IOException {
-            int size = parcel.length;
-            putSize(ostream, size);
-            ostream.write(parcel);
-        }
-
-        /**
-         * Check byte-to-byte equality between <code>this</code> and the
-         * <code>other</code> parcels.
-         */
-        public boolean equals(Parcel other) {
-            if (this.parcel.length != other.parcel.length)
-                return false;
-            int size = parcel.length;
-            for (int i = 0; i < size; i++)
-                if (this.parcel[i] != other.parcel[i])
-                    return false;
-            return true;
-        }
-
-    }
-
-    /**
-     * Server or Client thread may throw this exception to report the test
-     * failure.
-     */
-    static class TestFailure extends RuntimeException {
-        /**
-         * Report particular <code>purpose</code> of the test failure.
-         */
-        public TestFailure(String purpose) {
-            super(purpose);
-        }
-
-    }
-
-    /**
-     * Attach client and server sockets to the local host, and check if
-     * huge amount of data could be correctly transfered between these
-     * sockets.
-     * <p>
-     * <p>Command-line parameters provided with <code>args[]</code> may
-     * prompt the local host IP address or domain name. Execute:
-     * <br>&nbsp;&nbsp;
-     * <code>java network001 [<i>IP-address</i> | <i>host_name</i> |
-     * localhost ]</code>
-     * <br>where parameters are:
-     * <br>&nbsp;&nbsp;
-     * <code><i>IP-address</i></code> - local hots's address, or 127.0.0.1
-     * <br>&nbsp;&nbsp;
-     * <code><i>host_name</i></code> - local host's domain name, or the
-     * keyword ``<code>localhost</code>''
-     * <br>&nbsp;&nbsp;
-     * <code>localhost</code> - placeholder for the IP-address 127.0.0.1
-     * <br>By default, the test uses the Internet address available via
-     * the method <code>InetAddress.getLocalHost()</code>
-     */
-    public static int run(String args[], PrintStream out) {
-        network001.out = out;
-
-        //
-        // Get IP address of the local machine.
-        //
-
-        InetAddress address = null;
-        try {
-            switch (args.length) {
-                case 0:
-                    address = InetAddress.getLocalHost();
-                    break;
-                case 1:
-                    String hostName = args[0];
-                    address = InetAddress.getByName(args[0]);
-                    break;
-                default:
-                    println("Use:");
-                    println("    java network001");
-                    println("or:");
-                    println("    java network001 ${IP_ADDRESS}");
-                    println("or:");
-                    println("    java network001 ${HOST_NAME}");
-                    println("or:");
-                    println("    java network001 localhost");
-                    return 2; // FAILED
-            }
-        } catch (UnknownHostException exception) {
-            println(exception);
-            return 2; // FAILED
-        }
-        display("Host: " + address);
-
-        //
-        // Incarnate the server & the client sockets.
-        //
-
-        Server server = null;
-        try {
-            server = new Server(address);
-        } catch (IOException io) {
-            println("Failed to create server: " + io);
-            return 2;
-        }
-        display("Server: " + server);
-
-        int port = server.getPort();
-
-        Client client = null;
-        try {
-            client = new Client(address, port);
-        } catch (IOException io) {
-            out.println("Failed to create client: " + io);
-            return 2;
-        }
-        display("Client socket: " + client);
-
-        //
-        // Execute the server and client threads.
-        //
-
-        Exception exception = null;
-        try {
-            server.start();
-            client.start();
-            while (client.isAlive() || server.isAlive())
-                if (client.exception == null && server.exception == null)
-                    Thread.yield();
-                else
-                    break;
-        } catch (TestFailure failure) {
-            exception = failure;
-        }
-
-        // Failure diagnostics, if needed.
-
-        Exception problem[] = new Exception[3];
-        problem[0] = exception;
-        problem[1] = server.exception;
-        problem[2] = client.exception;
-
-        int exitCode = 0;
-
-        for (int i = 0; i < 3; i++)
-            if (problem[i] != null) {
-                out.println("#### OOPS ! ####");
-                problem[i].printStackTrace(out);
-                exitCode = 2;
-            }
-
-        if (exitCode != 0) {
-            out.println("#### OOPS ! ####");
-            out.println("# Test failed.");
-            return 2; // FAILED
-        }
-        display("Test passed.");
-        return 0; // PASSED
-    }
-
-    /**
-     * Re-calls to the method <code>run(args[],out)</code> actually
-     * performing the test; and stop with exit code 95 if the test
-     * has passed, or with code 97 if the test has failed.
-     * (This is JCK-like exit codes convention.)
-     *
-     * @see #run(String[], PrintStream)
-     */
-    public static void main(String args[]) {
-        int exitCode = run(args, System.out);
-        System.exit(exitCode + 95);
-        // JCK-like exit code.
-    }
-
-}
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/network/network002.java	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,697 +0,0 @@
-/*
- * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-
-/*
- * @test
- * @key stress
- *
- * @summary converted from VM testbase nsk/stress/network/network002.
- * VM testbase keywords: [stress, slow, nonconcurrent, quick]
- * VM testbase readme:
- * DESCRIPTION
- *     This test transfers huge amount of data between 2 Java virtual machines
- *     using the TCP/IP protocol, and checks if those data are transfered correctly.
- *     Both client and server VMs run on the same local computer and attach TCP/IP
- *     sockets to the local host, or to the loopback domain "localhost" (having IP
- *     address 127.0.0.1).
- *     Information transfer is synchronized in this test. Client VM passes
- *     a large data parcel to server VM, and server reads that parcel and checks
- *     if it is same as expected (byte-to-byte equality). Then server passes
- *     (some other) parcel to client, and client reads and verifies those data.
- *     This ping-pong game is repeated 2000 times; and after that both VMs check
- *     if there are no extra bytes accudentally passed through their connection.
- *     Parcels lengths and contents are chosen randomly, and average parcel
- *     length is 125 bytes. So totally, each of the 2 VMs passes ~250Kb of data
- *     to its partner, and thus ~500Kb of data are transfered by this test.
- * COMMENTS
- *     HotSpot 1.3beta-H fails to start this test due to the hotspot bug:
- *         #4245704 (P1/S1) Fails to launch with: jre/bin/net.dll ...
- *     Test was fixed:
- *     added WAITTIME parameter defined timeout for TCP/IP sockets in minutes
- *
- * @library /vmTestbase
- *          /test/lib
- * @run driver jdk.test.lib.FileInstaller . .
- * @build nsk.stress.network.network002
- * @run main/othervm PropertyResolvingWrapper
- *      nsk.stress.network.network002
- *      "${test.jdk}/bin/java ${test.vm.opts} ${test.java.opts}" 5
- */
-
-package nsk.stress.network;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.util.Random;
-
-/**
- * This test transfers huge amount of data between 2 Java virtual machines
- * using the TCP/IP protocol, and checks if those data are transfered correctly.
- * Both client and server VMs run on the same local computer and attach TCP/IP
- * sockets to the local host, or to the loopback domain ``<code>localhost</code>''
- * (having IP address <code>127.0.0.1</code>).
- * <p>
- * <p>Information transfer is synchronized in this test. Client VM passes
- * a large data parcel to server VM, and server reads that parcel and checks
- * if it is same as expected (byte-to-byte equality). Then server passes
- * (some other) parcel to client, and client reads and verifies those data.
- * This ping-pong game is repeated 2000 times; and after that both VMs check
- * if there are no extra bytes accudentally passed through their connection.
- * <p>
- * <p>Parcels lengths and contents are chosen randomly, and average parcel
- * length is 125 bytes. So totally, each of the 2 VMs passes ~250Kb of data
- * to its partner, and thus ~500Kb of data are transfered by this test.
- */
-public class network002 {
-    /**
-     * Timeout for TCP/IP sockets (currently set to 1 min).
-     */
-    private static int SO_TIMEOUT;
-
-    /**
-     * Number of parcels to be sent/recieved.
-     */
-    private static final int DATA_PARCELS = 2000;
-
-    /**
-     * Maximal length of data parcel to be sent/recieved.
-     */
-    private static final int MAX_PARCEL = 250;
-
-    /**
-     * Either actually display optional reports or not.
-     */
-    static private final boolean DEBUG_MODE = false;
-
-    //----------------------------------------------------------------//
-
-    /**
-     * Re-calls to the method <code>run(args[],out)</code> actually
-     * performing the test. After <code>run(args[],out)</code> stops,
-     * follow JDK-like convention for exit codes. I.e.: stop with
-     * exit status 95 if the test has passed, or with status 97 if
-     * the test has failed.
-     *
-     * @see #run(String[], PrintStream)
-     */
-    public static void main(String args[]) {
-        int exitCode = run(args, System.out);
-        System.exit(exitCode + 95);
-        // JCK-like exit status.
-    }
-
-    /**
-     * Incarnate new <code>network002</code> instance reporting to the given
-     * <code>out</code> stream, and invoke the method <code>run(args)</code>
-     * for that instance to perform the test.
-     */
-    public static int run(String args[], PrintStream out) {
-        network002 test = new network002(out);
-        int exitCode = test.run(args);
-        return exitCode;
-    }
-
-    /**
-     * Parse command-line parameters stored into <code>args[]</code> array,
-     * then perform the test. I.e.: start the server thread at the same VM
-     * this method runs, then start the other client VM, and verify data
-     * transfer through TCP/IP connection between those different virtual
-     * machines.
-     * <p>
-     * <p>There should be 1 or 2 command-line parameters:
-     * <br>&nbsp;&nbsp;
-     * <code>java network002 <i>java_command</i> <i>waittime</i>
-     * [<i>IP-address</i> | <i>host_name</i> | localhost ]</code>
-     * <br>where parameters are:
-     * <br>&nbsp;&nbsp;
-     * <code><i>java_command</i></code> - how to start java,
-     * e.g.: ``<code>c:\jdk1.3\bin\java -classic</code>''
-     * <br>&nbsp;&nbsp;
-     * <code>waittime</code> - timeout for TCP/IP sockets in minutes
-     * <br>&nbsp;&nbsp;
-     * <code><i>IP-address</i></code> - local hots's address, or 127.0.0.1
-     * <br>&nbsp;&nbsp;
-     * <code><i>host_name</i></code> - local host's domain name, or the
-     * keyword ``<code>localhost</code>''
-     * <br>&nbsp;&nbsp;
-     * <code>localhost</code> - placeholder for the IP-address 127.0.0.1
-     * <p>
-     * <p>Usually, <code><i>java_command</i></code> should point to the same
-     * Java machine just executing this test. However, every compatible Java 2
-     * implementation is appropriate.
-     * <p>
-     * <p>If optional parameter is ommited, the test invokes the method
-     * <code>InetAddress.getLocalHost()</code> to get the domain name and
-     * IP-address of the local computer.
-     */
-    private int run(String args[]) {
-        //
-        // Get the Internet address of the local machine.
-        //
-        InetAddress address = null;
-        try {
-            switch (args.length) {
-                case 2:
-                    address = InetAddress.getLocalHost();
-                    break;
-                case 3:
-                    address = InetAddress.getByName(args[2]);
-                    break;
-                default:
-                    complain("Illegal arguments number; execute:");
-                    complain("    java network002 $JAVA_COMMAND " +
-                            "[$IP_ADDRESS | $HOST_NAME | localhost]");
-                    return 2; // FAILED
-            }
-        } catch (UnknownHostException exception) {
-            complain(exception.toString());
-            return 2; // FAILED
-        }
-        display("Host: " + address);
-
-        //
-        // Start the server thread on the same VM this method just runs.
-        //
-        Server server = null;
-        try {
-            server = new Server(address);
-            server.start();
-        } catch (Exception exception) {
-            complain("Failed to start server: " + exception);
-            return 2;
-        }
-        display("Server: " + server);
-
-        //
-        // Start the client process on different VM.
-        //
-        String IPAddress = server.getIPAddress(); // e.g.: 127.0.0.1
-        int port = server.getPort();
-        String command = args[0] + " " + network002.class.getName() + "$Client " + IPAddress + " " + port;
-        try {
-            SO_TIMEOUT = Integer.parseInt(args[1]) * 60 * 1000;
-        } catch (NumberFormatException e) {
-            complain("Wrong timeout argument: " + e);
-            return 2;
-        }
-
-        Runtime runtime = Runtime.getRuntime();
-
-        Process client = null;
-        IORedirector redirectOut = null;
-        IORedirector redirectErr = null;
-
-        try {
-            client = runtime.exec(command);
-
-            InputStream clientOut = client.getInputStream();
-            InputStream clientErr = client.getErrorStream();
-            redirectOut = new IORedirector(clientOut, DEBUG_MODE ? out : null);
-            redirectErr = new IORedirector(clientErr, out);
-            redirectOut.start();
-            redirectErr.start();
-
-        } catch (Exception exception) {
-            complain("Failed to start client: " + exception);
-            return 2;
-        }
-
-        //
-        // Wait until the server and client both stop.
-        //
-        try {
-            client.waitFor();
-            if (redirectOut.isAlive())
-                redirectOut.join();
-            if (redirectErr.isAlive())
-                redirectErr.join();
-
-            // If client has crashed, also terminate the server (to avoid hangup).
-            int clientStatus = client.exitValue();
-            if (clientStatus != 95) {
-                complain("");
-                complain("Client VM has crashed: exit status=" + clientStatus);
-                if (server.isAlive())
-                    complain("Server also should be terminated.");
-                complain("Test failed.");
-                return 2; // failure
-            }
-
-            // Client has finished OK; wait for the server.
-            if (server.isAlive())
-                server.join();
-
-        } catch (Exception exception) {
-            complain("Test interrupted: " + exception);
-            complain("Test failed.");
-            return 2; // FAILURE
-        }
-
-        //
-        // Complain failure, if occured.
-        //
-
-        if (server.exception != null) {
-            complain("Server exception: " + server.exception);
-            complain("Test failed.");
-            return 2; // failure
-        }
-
-        display("Test passed.");
-        return 0; // Ok
-    }
-
-    //----------------------------------------------------------------//
-
-    /**
-     * The test should report to the given <code>out</code> stream.
-     */
-    private network002(PrintStream out) {
-        this.out = out;
-    }
-
-    /**
-     * Log stream for error messages and/or (optional) execution trace.
-     */
-    private PrintStream out;
-
-    /**
-     * Print error message.
-     */
-    private void complain(Object message) {
-        out.println("# " + message);
-        out.flush();
-    }
-
-    /**
-     * Display optional report: comment ca va?
-     */
-    private void display(Object report) {
-        if (DEBUG_MODE)
-            out.println(report.toString());
-        out.flush();
-    }
-
-    //----------------------------------------------------------------//
-
-    /**
-     * Server thread should reply to data parcels sent by Client VM.
-     */
-    private class Server extends Thread {
-        /**
-         * The socket to listen for a client.
-         */
-        private ServerSocket serverSocket;
-
-        /**
-         * Display the server socket.
-         */
-        public String toString() {
-            return serverSocket.toString();
-        }
-
-        /**
-         * Server's IP-address in the form ``<code><i>x.y.u.z</i></code>'',
-         * or ``<code>127.0.0.1</code>'' for loopback connection.
-         */
-        public String getIPAddress() {
-            return serverSocket.getInetAddress().getHostAddress();
-        }
-
-        /**
-         * Which port is this socket listening?
-         */
-        int getPort() {
-            return serverSocket.getLocalPort();
-        }
-
-        /**
-         * Find some free port at the given <code>address</code>
-         * and attach new server to hear that port.
-         */
-        public Server(InetAddress address) throws IOException {
-            int someFreePort = 0;
-            int backlog = 50; // default for new ServerSocket(port)
-            serverSocket = new ServerSocket(someFreePort, backlog, address);
-        }
-
-        /**
-         * Exception just arisen while the server was working,
-         * or <code>null</code> if it was OK with the server.
-         */
-        Exception exception = null;
-
-        /**
-         * Accept connection, then reply to client's parcels.
-         */
-        public void run() {
-            try {
-                Socket socket = serverSocket.accept();
-                socket.setSoTimeout(SO_TIMEOUT);
-
-                InputStream istream = socket.getInputStream();
-                OutputStream ostream = socket.getOutputStream();
-
-                Random random = new Random(0);
-
-                for (int i = 0; i < DATA_PARCELS; i++) {
-                    display("Server: i=" + i);
-                    Parcel etalon = new Parcel(random);
-
-                    Parcel sample = new Parcel(istream); // read
-                    if (!sample.equals(etalon)) {
-                        complain("Server got unexpected parcel:\n"
-                                + "sample=" + sample + "\n"
-                                + "etalon=" + etalon);
-                        throw new TestFailure(
-                                "the parcel just read seems wrong for server");
-                    }
-
-                    etalon.send(ostream);
-                    ostream.flush();
-                }
-
-                int datum = istream.read(); // wait for client close()
-                if (datum >= 0)
-                    throw new TestFailure(
-                            "server has read ambigous byte: " + datum);
-
-                ostream.close(); // implies: socket.close();
-
-            } catch (Exception oops) {
-                exception = oops;
-            }
-        }
-
-    }
-
-    //----------------------------------------------------------------//
-
-    /**
-     * Client VM should send data parcels to Server VM and
-     * recieve and verify the server's replies.
-     */
-    private static class Client {
-        /**
-         * Print error message.
-         */
-        private static void complain(Object message) {
-            System.err.println("# " + message);
-            System.err.flush();
-        }
-
-        /**
-         * Display execution trace.
-         */
-        private static void display(Object message) {
-            System.out.println(message.toString());
-            System.out.flush();
-        }
-
-        /**
-         * Exit with JCK-like status.
-         */
-        private static void exit(int exitCode) {
-            System.exit(exitCode + 95);
-        }
-
-        /**
-         * Atack server with huge data parcels, and check if it replies correctly.
-         * The command-line parameters prescribe the server's IP-address and port:
-         * <br>&nbsp;&nbsp;
-         * <code>java network002$Client <i>IP-address</i> <i>port</i></code>
-         * <br>where:
-         * <br>&nbsp;&nbsp;
-         * <code><i>IP-address</i></code> - local host's address,
-         * or <code>127.0.0.1</code>
-         * <br>&nbsp;&nbsp;
-         * <code><i>port</i></code> - some port assigned by server
-         */
-        public static void main(String args[]) {
-            if (args.length != 2) {
-                complain("Illegal number of client paramenets, try:");
-                complain("    java network002$Client IP-address port");
-                exit(2); // FAILED
-            }
-
-            try {
-                InetAddress address = InetAddress.getByName(args[0]);
-                int port = Integer.parseInt(args[1]);
-
-                Socket socket = new Socket(address, port);
-                socket.setSoTimeout(SO_TIMEOUT);
-                display("Client: " + socket);
-
-                InputStream istream = socket.getInputStream();
-                OutputStream ostream = socket.getOutputStream();
-
-                Random random = new Random(0);
-
-                for (int i = 0; i < DATA_PARCELS; i++) {
-                    display("Client: i=" + i);
-                    Parcel etalon = new Parcel(random);
-                    etalon.send(ostream);
-                    ostream.flush();
-
-                    Parcel sample = new Parcel(istream); // read
-                    if (!sample.equals(etalon)) {
-                        complain("Client got unexpected parcel:\n"
-                                + "sample=" + sample + "\n"
-                                + "etalon=" + etalon);
-                        throw new TestFailure(
-                                "parcel context is unexpected to client");
-                    }
-                }
-
-                if (istream.available() > 0) {
-                    int datum = istream.read();
-                    throw new TestFailure(
-                            "client has read ambigous byte: " + datum);
-                }
-                ostream.close(); // implies: socket.close()
-
-            } catch (Exception exception) {
-                complain("Client exception: " + exception);
-                exit(2); // FAILED
-            }
-            exit(0); // PASSED, at least at the client side.
-        }
-
-    }
-
-    /**
-     * Two of such threads should redirect <code>out</code> and <code>err</code>
-     * streams of client VM.
-     */
-    private static class IORedirector extends Thread {
-        /**
-         * Source stream.
-         */
-        InputStream in;
-        /**
-         * Destination stream.
-         */
-        OutputStream out;
-
-        /**
-         * Redirect <code>in</code> to <code>out</code>.
-         */
-        public IORedirector(InputStream in, OutputStream out) {
-            this.in = in;
-            this.out = out;
-        }
-
-        /**
-         * Read input stream until the EOF, and write everithing to output stream.
-         * If output stream is assigned to <code>null</code>, do not print anything,
-         * but read the input stream anywhere.
-         */
-        public void run() {
-            try {
-                for (; ; ) {
-                    int symbol = in.read();
-                    if (symbol < 0)
-                        break; // EOF
-                    if (out != null)
-                        out.write(symbol);
-                }
-
-                if (out != null)
-                    out.flush();
-
-            } catch (Exception exception) {
-                throw new TestFailure("IORedirector exception: " + exception);
-            }
-        }
-    }
-
-    //----------------------------------------------------------------//
-
-    /**
-     * A data parcel to be sent/recieved between Client VM and Server thread.
-     * When data parcel is sent, first 4 bytes are transfered which encode the
-     * <code>int</code> number equal to size of the parcel minus 1. I.e.: if
-     * number of data bytes in the parcel's contents is <code>N</code>, then
-     * the first 4 bytes encode the number <code>N-1</code>. After that, the
-     * parcel's contents bytes are transered.
-     */
-    static class Parcel {
-        private byte[] parcel;
-
-        /**
-         * Display all bytes as integer values from 0 to 255;
-         * or return ``<tt>null</tt>'' if this Parcel is not
-         * yet initialized.
-         */
-        public String toString() {
-            if (parcel == null)
-                return "null";
-            String s = "{";
-            for (int i = 0; i < parcel.length; i++)
-                s += (i > 0 ? ", " : "") + ((int) parcel[i] & 0xFF);
-            return s + "}";
-        }
-
-        /**
-         * Generate new <code>parcel[]</code> array using the given
-         * <code>random</code> numbers generator. Client and Server
-         * threads should use identical <code>random</code> generators,
-         * so that those threads could generate equal data parcels and
-         * check the parcel just transfered.
-         */
-        public Parcel(Random random) {
-            int size = random.nextInt(MAX_PARCEL) + 1;
-            parcel = new byte[size];
-            for (int i = 0; i < size; i++)
-                parcel[i] = (byte) random.nextInt(256);
-        }
-
-        /**
-         * Read exactly <code>size</code> bytes from the <code>istream</code>
-         * if possible, or throw <code>TestFailure</code> if unexpected end of
-         * <code>istream</code> occurs.
-         */
-        private static byte[] readBytes(int size, InputStream istream)
-                throws IOException {
-
-            byte data[] = new byte[size];
-            for (int i = 0; i < size; i++) {
-                int datum = istream.read();
-                if (datum < 0)
-                    throw new TestFailure(
-                            "unexpected EOF: have read: " + i + " bytes of " + size);
-                data[i] = (byte) datum;
-            }
-            return data;
-        }
-
-        /**
-         * Read 4 bytes from <code>istream</code> and threat them to encode
-         * size of data parcel following these 4 bytes.
-         */
-        private static int getSize(InputStream istream) throws IOException {
-            byte data[] = readBytes(4, istream);
-            int data0 = (int) data[0] & 0xFF;
-            int data1 = (int) data[1] & 0xFF;
-            int data2 = (int) data[2] & 0xFF;
-            int data3 = (int) data[3] & 0xFF;
-            int sizeWord = data0 + (data1 << 8) + (data2 << 16) + (data3 << 24);
-            int size = sizeWord + 1;
-            if (size <= 0)
-                throw new TestFailure("illegal size: " + size);
-            return size;
-        }
-
-        /**
-         * Send 4 bytes encoding actual size of the parcel just to be transfered.
-         */
-        private static void putSize(OutputStream ostream, int size)
-                throws IOException {
-
-            if (size <= 0)
-                throw new TestFailure("illegal size: " + size);
-
-            int sizeWord = size - 1;
-            byte data[] = new byte[4];
-            data[0] = (byte) sizeWord;
-            data[1] = (byte) (sizeWord >> 8);
-            data[2] = (byte) (sizeWord >> 16);
-            data[3] = (byte) (sizeWord >> 24);
-            ostream.write(data);
-        }
-
-        /**
-         * Recieve data parcel.
-         */
-        public Parcel(InputStream istream) throws IOException {
-            int size = getSize(istream);
-            parcel = readBytes(size, istream);
-        }
-
-        /**
-         * Send <code>this</code> data parcel.
-         */
-        public void send(OutputStream ostream) throws IOException {
-            int size = parcel.length;
-            putSize(ostream, size);
-            ostream.write(parcel);
-        }
-
-        /**
-         * Check byte-to-byte equality between <code>this</code> and the
-         * <code>other</code> parcels.
-         */
-        public boolean equals(Parcel other) {
-            if (this.parcel.length != other.parcel.length)
-                return false;
-            int size = parcel.length;
-            for (int i = 0; i < size; i++)
-                if (this.parcel[i] != other.parcel[i])
-                    return false;
-            return true;
-        }
-
-    }
-
-    /**
-     * Server or Client may throw this exception to report the test failure.
-     */
-    static class TestFailure extends RuntimeException {
-        /**
-         * Report particular <code>purpose</code> of the test failure.
-         */
-        public TestFailure(String purpose) {
-            super(purpose);
-        }
-
-    }
-
-}
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/network/network003.java	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,658 +0,0 @@
-/*
- * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @key stress
- *
- * @summary converted from VM testbase nsk/stress/network/network003.
- * VM testbase keywords: [stress, slow, nonconcurrent, quick]
- * VM testbase readme:
- * DESCRIPTION
- *     This test transfers huge amount of data between one server and multiple
- *     clients communicating via TCP/IP sockets, and checks if those data are
- *     transfered correctly. All TCP/IP sockets are attached to local host
- *     (by its domain name), or to the ``localhost'' loopback (having the IP
- *     address 127.0.0.1).
- *     In this test, 128 client/server connections are established. Once a
- *     connection is established, client passes a large data parcel to server,
- *     and server reads that parcel and checks if it is same as expected
- *     (byte-to-byte equality is desired). Then server passes (some other) parcel
- *     to the client, and client reads and verifies those bytes. This ping-pong
- *     game is repeated 128 times; and after that each pair of sockets checks if
- *     there are no extra bytes accudentally passed through their connection.
- *     Parcels lengths and contents are chosen randomly, and average parcel
- *     length is 128 bytes. So totally, each pair of sockets passes ~16Kb of
- *     data to each other, and thus ~32Kb of data are transfered by each sockets
- *     pair. Totally, ~4Mb of data are transfered by all client/server pairs.
- * COMMENTS
- *     The production Solaris_JDK_1.3-b12 Server VM crashes under this test:
- *         #
- *         # HotSpot Virtual Machine Error, Unexpected Signal 10
- *         # Please report this error at
- *         # http://java.sun.com/cgi-bin/bugreport.cgi
- *         #
- *         # Error ID: 4F533F534F4C415249530E43505007D9 01
- *         #
- *         # Problematic Thread: prio=5 tid=0x214418 nid=0x103 runnable
- *         #
- *     (ErrorID == "os_solaris.cpp, 2009")
- *
- * @run main/othervm nsk.stress.network.network003
- */
-
-package nsk.stress.network;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.util.Random;
-
-/**
- * This test transfers huge amount of data between one server and multiple
- * clients communicating via TCP/IP sockets, and checks if those data are
- * transfered correctly. All TCP/IP sockets are attached to local host
- * (by its domain name), or to the ``localhost'' loopback (having the IP
- * address 127.0.0.1).
- * <p>
- * <p>In this test, 128 client/server connections are established. Once a
- * connection is established, client passes a large data parcel to server,
- * and server reads that parcel and checks if it is same as expected
- * (byte-to-byte equality is desired). Then server passes (some other) parcel
- * to the client, and client reads and verifies those bytes. This ping-pong
- * game is repeated 128 times; and after that each pair of sockets checks if
- * there are no extra bytes accudentally passed through their connection.
- * <p>
- * <p>Parcels lengths and contents are chosen randomly, and average parcel
- * length is 128 bytes. So totally, each pair of sockets passes ~16Kb of
- * data to each other, and thus ~32Kb of data are transfered by each sockets
- * pair. Totally, ~4Mb of data are transfered by all client/server pairs.
- */
-public class network003 {
-    /**
-     * Do actually display optional reports?
-     */
-    static private final boolean DEBUG_MODE = false;
-
-    /**
-     * Errors and optional reports log. Usually <code>System.out</code>.
-     */
-    static private PrintStream out = System.out;
-
-    /**
-     * Print error message: all clients and servers may print concurently.
-     */
-    static private synchronized void println(Object message) {
-        out.println(message.toString());
-    }
-
-    /**
-     * Display optional report: comment ca va.
-     */
-    static private void display(Object report) {
-        if (DEBUG_MODE)
-            println(report.toString());
-    }
-
-    /**
-     * Maximal number of connections this test should open simultaneously.
-     */
-    private final static int MAX_CONNECTIONS = 128;
-
-    /**
-     * Check few more connections to make sure that MAX_CONNECTIONS are safe.
-     */
-    private final static int CONNECTIONS_RESERVE = 10;
-
-    /**
-     * Number of client/server connections to establish.
-     */
-    private static final int CONNECTIONS = detectOSLimitation();
-
-    /**
-     * Number of parcels to be sent/recieved.
-     */
-    private static final int DATA_PARCELS = 128;
-
-    /**
-     * Maximal length of data parcel to be sent/recieved
-     * (it equals to 256 bytes now).
-     */
-    private static final int MAX_PARCEL = 1 << 8;
-
-    /**
-     * How many IP sockets can we open simultaneously?
-     * Check if <code>MAX_CONNECTIONS</code> connections
-     * can be open simultaneously.
-     */
-    private static int detectOSLimitation() {
-        final int CONNECTIONS_TO_TRY = MAX_CONNECTIONS + CONNECTIONS_RESERVE;
-        ServerSocket ssoc[] = new ServerSocket[CONNECTIONS_TO_TRY];
-        display("--- Trying to open " + CONNECTIONS_TO_TRY + " connections:");
-        int i;
-        for (i = 0; i < CONNECTIONS_TO_TRY; i++)
-            try {
-                ssoc[i] = new ServerSocket(0);
-                display("--- Open: ssoc[" + i + "] = " + ssoc[i]);
-            } catch (IOException ioe) {
-                display("--- OOPS! -- failed to open connection #" + i);
-                break;
-            }
-        display("--- Could open " +
-                (i < CONNECTIONS_TO_TRY ? "only " : "") + i + " connections.");
-        display("--- Closing them:");
-        for (int j = 0; j < i; j++)
-            try {
-                ssoc[j].close();
-            } catch (IOException ioe) {
-                throw new Error("FATAL error while loading the test: " + ioe);
-            }
-        display("--- OK.");
-        int safeConnections = i - CONNECTIONS_RESERVE;
-        if (safeConnections < 1)
-            safeConnections = 1;
-        if (safeConnections < MAX_CONNECTIONS) {
-            println("# ------------------------- CAUTION: -------------------");
-            println("# While checking the OS limitations, the test found that");
-            println("# only " + i + " TCP/IP socket connections could be safely open");
-            println("# simultaneously. However, possibility to open at least");
-            println("# " + MAX_CONNECTIONS + "+" + CONNECTIONS_RESERVE
-                    + " connections were expected.");
-            println("# ");
-            println("# So, the test will check only " + safeConnections + " connection"
-                    + (safeConnections == 1 ? "" : "s") + " which seem");
-            println("# safe to be open simultaneously.");
-            println("# ------------------------------------------------------");
-        }
-        return safeConnections;
-    }
-
-    /**
-     * Server thread intended to reply to data parcels sent by Client thread.
-     */
-    static private class Server extends Thread {
-        /**
-         * This server thread listens the single socket.
-         */
-        private ServerSocket serverSocket;
-
-        /**
-         * Address and port of this server socket.
-         */
-        public String toString() {
-            return serverSocket.toString();
-        }
-
-        /**
-         * Did the thread failed? If yes, what is the failure's reason.
-         */
-        Exception exception = null;
-
-        /**
-         * What is the port number this socket is listening for?
-         */
-        int getPort() {
-            return serverSocket.getLocalPort();
-        }
-
-        /**
-         * Find some free port at the given <code>address</code>
-         * and attach new server to hear that port.
-         */
-        Server(InetAddress address) throws IOException {
-            int someFreePort = 0;
-            int backlog = 50; // default for new ServerSocket(port)
-            serverSocket = new ServerSocket(someFreePort, backlog, address);
-        }
-
-        /**
-         * Accept connection, then read/respond <code>DATA_PARCELS</code> parcels
-         * of random data. Set initial seed for pseudo-random numbers generator
-         * to the value of the local port number.
-         *
-         * @see #DATA_PARCELS
-         * @see #getPort()
-         */
-        public void run() {
-            try {
-                Socket socket = serverSocket.accept();
-                display("Server socket: " + socket);
-
-                InputStream istream = socket.getInputStream();
-                OutputStream ostream = socket.getOutputStream();
-
-                Random random = new Random(getPort());
-
-                for (int i = 0; i < DATA_PARCELS; i++) {
-                    Parcel etalon = new Parcel(random);
-
-                    Parcel sample = new Parcel(istream); // read
-                    if (!sample.equals(etalon)) {
-                        println("Server thread for port #"
-                                + getPort() + " got unexpected parcel:\n"
-                                + "sample=" + sample + "\n"
-                                + "etalon=" + etalon);
-                        throw new TestFailure(
-                                "server has read unexpected parcel");
-                    }
-
-                    etalon.send(ostream);
-                    ostream.flush();
-                }
-
-                int datum = istream.read(); // wait for client close()
-                if (datum >= 0)
-                    throw new TestFailure(
-                            "server has read ambigous byte: " + datum);
-
-                ostream.close(); // implies: socket.close();
-
-            } catch (Exception oops) {
-                exception = oops;
-            }
-        }
-
-    }
-
-    /**
-     * Client thread intended to send data parcels to Server thread and
-     * to recieve the server's replies.
-     */
-    static private class Client extends Thread {
-        /**
-         * This thread uses the single client socket.
-         */
-        private Socket socket;
-
-        /**
-         * Address and port of this socket.
-         */
-        public String toString() {
-            return socket.toString();
-        }
-
-        /**
-         * Did the thread failed? If yes, what is the failure's reason.
-         */
-        Exception exception = null;
-
-        /**
-         * Connect client socket on the given <code>address</code>
-         * and <code>port</code>.
-         */
-        Client(InetAddress address, int port) throws IOException {
-            socket = new Socket(address, port);
-        }
-
-        /**
-         * What is the port number this socket is listening for?
-         */
-        int getPort() {
-            return socket.getPort();
-        }
-
-
-        /**
-         * Establish connection, then read/respond <code>DATA_PARCELS</code> parcels
-         * of random data. Set initial seed for pseudo-random numbers generator
-         * to the value of the local port number.
-         *
-         * @see #DATA_PARCELS
-         * @see #getPort()
-         */
-        public void run() {
-            try {
-                InputStream istream = socket.getInputStream();
-                OutputStream ostream = socket.getOutputStream();
-
-                Random random = new Random(getPort());
-
-                for (int i = 0; i < DATA_PARCELS; i++) {
-                    Parcel etalon = new Parcel(random);
-                    etalon.send(ostream);
-                    ostream.flush();
-
-                    Parcel sample = new Parcel(istream); // read
-                    if (!sample.equals(etalon)) {
-                        println("Client thread for port #"
-                                + getPort() + " got unexpected parcel:\n"
-                                + "sample=" + sample + "\n"
-                                + "etalon=" + etalon);
-                        throw new TestFailure(
-                                "parcel context is unexpected to client");
-                    }
-                }
-
-                if (istream.available() > 0) {
-                    int datum = istream.read();
-                    throw new TestFailure(
-                            "client has read ambigous byte: " + datum);
-                }
-                ostream.close(); // implies: socket.close()
-
-            } catch (Exception oops) {
-                exception = oops;
-            }
-        }
-
-    }
-
-    /**
-     * A data parcel to sent/recieved between Client and Server threads.
-     * When data parcel is sent, first 4 bytes transfered encode the size
-     * of the parcel (i.e.: number of data bytes in the parcel's contents).
-     * Then the parcel's contents bytes are transered.
-     */
-    static class Parcel {
-        private byte[] parcel;
-
-        /**
-         * Display all bytes as integer values from 0 to 255;
-         * or return ``<tt>null</tt>'' if this Parcel is not
-         * yet initialized.
-         */
-        public String toString() {
-            if (parcel == null)
-                return "null";
-            String s = "{";
-            for (int i = 0; i < parcel.length; i++)
-                s += (i > 0 ? ", " : "") + ((int) parcel[i] & 0xFF);
-            return s + "}";
-        }
-
-        /**
-         * Generate new <code>parcel[]</code> array using the given
-         * <code>random</code> numbers generator. Client and Server
-         * threads should use identical <code>random</code> generators,
-         * so that those threads could generate equal data parcels and
-         * check the parcel just transfered.
-         */
-        public Parcel(Random random) {
-            int size = random.nextInt(MAX_PARCEL) + 1;
-            parcel = new byte[size];
-            for (int i = 0; i < size; i++)
-                parcel[i] = (byte) random.nextInt(256);
-        }
-
-        /**
-         * Read exactly <code>size</code> bytes from the <code>istream</code>
-         * if possible, or throw <code>TestFailure</code> if unexpected end of
-         * <code>istream</code> occurs.
-         */
-        private static byte[] readBytes(int size, InputStream istream)
-                throws IOException {
-
-            byte data[] = new byte[size];
-            for (int i = 0; i < size; i++) {
-                int datum = istream.read();
-                if (datum < 0)
-                    throw new TestFailure(
-                            "unexpected EOF: have read: " + i + " bytes of " + size);
-                data[i] = (byte) datum;
-            }
-            return data;
-        }
-
-        /**
-         * Read 4 bytes from <code>istream</code> and threat them to encode
-         * size of data parcel following these 4 bytes.
-         */
-        private static int getSize(InputStream istream) throws IOException {
-            byte data[] = readBytes(4, istream);
-            int data0 = (int) data[0] & 0xFF;
-            int data1 = (int) data[1] & 0xFF;
-            int data2 = (int) data[2] & 0xFF;
-            int data3 = (int) data[3] & 0xFF;
-            int sizeWord = data0 + (data1 << 8) + (data2 << 16) + (data3 << 24);
-            int size = sizeWord + 1;
-            if (size <= 0)
-                throw new TestFailure("illegal size: " + size);
-            return size;
-        }
-
-        /**
-         * Send 4 bytes encoding actual size of the parcel just to be transfered.
-         */
-        private static void putSize(OutputStream ostream, int size)
-                throws IOException {
-
-            if (size <= 0)
-                throw new TestFailure("illegal size: " + size);
-
-            int sizeWord = size - 1;
-            byte data[] = new byte[4];
-            data[0] = (byte) sizeWord;
-            data[1] = (byte) (sizeWord >> 8);
-            data[2] = (byte) (sizeWord >> 16);
-            data[3] = (byte) (sizeWord >> 24);
-            ostream.write(data);
-        }
-
-        /**
-         * Recieve data parcel.
-         */
-        public Parcel(InputStream istream) throws IOException {
-            int size = getSize(istream);
-            parcel = readBytes(size, istream);
-        }
-
-        /**
-         * Send <code>this</code> data parcel.
-         */
-        public void send(OutputStream ostream) throws IOException {
-            int size = parcel.length;
-            putSize(ostream, size);
-            ostream.write(parcel);
-        }
-
-        /**
-         * Check byte-to-byte equality between <code>this</code> and the
-         * <code>other</code> parcels.
-         */
-        public boolean equals(Parcel other) {
-            if (this.parcel.length != other.parcel.length)
-                return false;
-            int size = parcel.length;
-            for (int i = 0; i < size; i++)
-                if (this.parcel[i] != other.parcel[i])
-                    return false;
-            return true;
-        }
-
-    }
-
-    /**
-     * Server or Client thread may throw this exception to report the test
-     * failure.
-     */
-    static class TestFailure extends RuntimeException {
-        /**
-         * Report particular <code>purpose</code> of the test failure.
-         */
-        public TestFailure(String purpose) {
-            super(purpose);
-        }
-
-    }
-
-    /**
-     * Attach client and server sockets to the local host, and check if
-     * huge amount of data could be correctly transfered between these
-     * sockets.
-     * <p>
-     * <p>Command-line parameters provided with <code>args[]</code> may
-     * prompt the local host IP address or domain name. Execute:
-     * <br>&nbsp;&nbsp;
-     * <code>java network003 [<i>IP-address</i> | <i>host_name</i> |
-     * localhost ]</code>
-     * <br>where parameters are:
-     * <br>&nbsp;&nbsp;
-     * <code><i>IP-address</i></code> - local hots's address, or 127.0.0.1
-     * <br>&nbsp;&nbsp;
-     * <code><i>host_name</i></code> - local host's domain name, or the
-     * keyword ``<code>localhost</code>''
-     * <br>&nbsp;&nbsp;
-     * <code>localhost</code> - placeholder for the IP-address 127.0.0.1
-     * <br>By default, the test uses the Internet address available via
-     * the method <code>InetAddress.getLocalHost()</code>
-     */
-    public static int run(String args[], PrintStream out) {
-        network003.out = out;
-
-        //
-        // Get IP address of the local machine.
-        //
-
-        InetAddress address = null;
-        try {
-            switch (args.length) {
-                case 0:
-                    address = InetAddress.getLocalHost();
-                    break;
-                case 1:
-                    String hostName = args[0];
-                    address = InetAddress.getByName(args[0]);
-                    break;
-                default:
-                    println("Use:");
-                    println("    java network003");
-                    println("or:");
-                    println("    java network003 ${IP_ADDRESS}");
-                    println("or:");
-                    println("    java network003 ${HOST_NAME}");
-                    println("or:");
-                    println("    java network003 localhost");
-                    return 2; // FAILED
-            }
-        } catch (UnknownHostException exception) {
-            println(exception);
-            return 2; // FAILED
-        }
-        display("Host: " + address);
-
-        //
-        // Incarnate the server & the client sockets.
-        //
-
-        Server server[] = new Server[CONNECTIONS];
-        Client client[] = new Client[CONNECTIONS];
-
-        for (int i = 0; i < CONNECTIONS; i++) {
-            try {
-                server[i] = new Server(address);
-            } catch (IOException io) {
-                println("Failed to create server #" + i + ": " + io);
-                return 2;
-            }
-            display("Server #" + i + ": " + server[i]);
-        }
-
-        for (int i = 0; i < CONNECTIONS; i++) {
-            int port = server[i].getPort();
-            try {
-                client[i] = new Client(address, port);
-            } catch (IOException io) {
-                out.println("Failed to create client #" + i + ": " + io);
-                return 2;
-            }
-            display("Client socket #" + i + ": " + client[i]);
-        }
-
-        //
-        // Execute the server and client threads.
-        //
-
-        Exception exception = null;
-        try {
-            for (int i = 0; i < CONNECTIONS; i++)
-                server[i].start();
-            for (int i = 0; i < CONNECTIONS; i++)
-                client[i].start();
-            boolean someIsAlive = true;
-            while (someIsAlive) {
-                boolean aliveFound = false;
-                boolean someBroken = false;
-                for (int i = 0; i < CONNECTIONS; i++)
-                    if (client[i].isAlive() || server[i].isAlive()) {
-                        if ((client[i].exception != null) ||
-                                (server[i].exception != null))
-                            someBroken = true;
-                        aliveFound = true;
-                        Thread.yield();
-                    }
-                someIsAlive = aliveFound;
-                if (someBroken)
-                    break;
-            }
-        } catch (TestFailure failure) {
-            exception = failure;
-        }
-
-        // Failure diagnostics, if needed.
-
-        Exception problem[] = new Exception[2 * CONNECTIONS + 1];
-        problem[0] = exception;
-        for (int i = 0; i < CONNECTIONS; i++) {
-            problem[2 * i + 1] = server[i].exception;
-            problem[2 * i + 2] = client[i].exception;
-        }
-
-        int exitCode = 0;
-
-        for (int i = 0; i < 2 * CONNECTIONS + 1; i++)
-            if (problem[i] != null) {
-                out.println("#### OOPS ! ####");
-                problem[i].printStackTrace(out);
-                exitCode = 2;
-            }
-
-        if (exitCode != 0) {
-            out.println("#### OOPS ! ####");
-            out.println("# Test failed.");
-            return 2; // FAILED
-        }
-        display("Test passed.");
-        return 0; // PASSED
-    }
-
-    /**
-     * Re-calls to the method <code>run(args[],out)</code> actually
-     * performing the test; and stop with exit code 95 if the test
-     * has passed, or with code 97 if the test has failed.
-     * (This is JCK-like exit codes convention.)
-     *
-     * @see #run(String[], PrintStream)
-     */
-    public static void main(String args[]) {
-        int exitCode = run(args, System.out);
-        System.exit(exitCode + 95);
-        // JCK-like exit code.
-    }
-
-}
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/network/network004.java	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,878 +0,0 @@
-/*
- * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @key stress
- *
- * @summary converted from VM testbase nsk/stress/network/network004.
- * VM testbase keywords: [stress, slow, nonconcurrent, quick]
- * VM testbase readme:
- * DESCRIPTION
- *     This test transfers huge amount of data between 2 Java virtual machines
- *     using the TCP/IP protocol, and checks if those data are transfered correctly.
- *     Both client and server VMs run on the same local computer and attach TCP/IP
- *     sockets to the local host, or to the loopback domain ``localhost''
- *     (having IP address 127.0.0.1).
- *     In this test, 128 client/server connections are established. Once a
- *     connection is established, client passes a large data parcel to server,
- *     and server reads that parcel and checks if it is same as expected
- *     (byte-to-byte equality is desired). Then server passes (some other) parcel
- *     to the client, and client reads and verifies those bytes. This ping-pong
- *     game is repeated 128 times; and after that each pair of sockets checks if
- *     there are no extra bytes accudentally passed through their connection.
- *     Parcels lengths and contents are chosen randomly, and average
- *     parcel length is 128 bytes. So totally, each pair of sockets passes ~16Kb of
- *     data to each other, and thus ~32Kb of data are transfered by each sockets
- *     pair. Totally, ~4Mb of data are transfered by all client/server pairs.
- * COMMENTS
- *     The production Solaris_JDK_1.3-b12 Server VM intermittently crashes under
- *     this test, even when client part of the test is executed with Client HS:
- *         >>>> java -server network004 java
- *         #
- *         # HotSpot Virtual Machine Error, Unexpected Signal 10
- *         # Please report this error at
- *         # http://java.sun.com/cgi-bin/bugreport.cgi
- *         #
- *         # Error ID: 4F533F534F4C415249530E43505007D9 01
- *         #
- *         # Problematic Thread: prio=5 tid=0x214418 nid=0x103 runnable
- *         #
- *     (ErrorID == "os_solaris.cpp, 2009")
- *     If the client part of the test is executed with Server HS, the
- *     production Solaris_JDK_1.3-b12 Server VM intermittently fails
- *     this test due to timeout:
- *         >>>> time java -server network004 'java -server -showversion'
- *         java version "1.3"
- *         Java(TM) 2 Runtime Environment, Standard Edition (build Solaris_JDK_1.3-b12)
- *         Java HotSpot(TM) Server VM (build 1.3-b12, mixed mode)
- *         # Client #96: java.io.InterruptedIOException: Read timed out
- *         # Client VM has crashed: exit status=97
- *         # Test failed.
- *         156.0u 117.0s 7:06 63% 0+0k 0+0io 0pf+0w
- *     Test was fixed:
- *     added WAITTIME parameter defined timeout for TCP/IP sockets in minutes
- *
- * @library /vmTestbase
- *          /test/lib
- * @run driver jdk.test.lib.FileInstaller . .
- * @build nsk.stress.network.network004
- * @run main/othervm PropertyResolvingWrapper
- *      nsk.stress.network.network004
- *      "${test.jdk}/bin/java ${test.vm.opts} ${test.java.opts}" 5
- */
-
-package nsk.stress.network;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.util.Random;
-import java.util.StringTokenizer;
-
-/**
- * This test transfers huge amount of data between 2 Java virtual machines
- * using the TCP/IP protocol, and checks if those data are transfered correctly.
- * Both client and server VMs run on the same local computer and attach TCP/IP
- * sockets to the local host, or to the loopback domain ``<code>localhost</code>''
- * (having IP address <code>127.0.0.1</code>).
- * <p>
- * <p>In this test, 128 client/server connections are established. Once a
- * connection is established, client passes a large data parcel to server,
- * and server reads that parcel and checks if it is same as expected
- * (byte-to-byte equality is desired). Then server passes (some other) parcel
- * to the client, and client reads and verifies those bytes. This ping-pong
- * game is repeated 128 times; and after that each pair of sockets checks if
- * there are no extra bytes accudentally passed through their connection.
- * <p>
- * <p>Parcels lengths and contents are chosen randomly, and average
- * parcel length is 128 bytes. So totally, each pair of sockets passes ~16Kb of
- * data to each other, and thus ~32Kb of data are transfered by each sockets
- * pair. Totally, ~4Mb of data are transfered by all client/server pairs.
- */
-public class network004 {
-    /**
-     * Timeout for TCP/IP sockets (currently set to 1 min).
-     */
-    private static int SO_TIMEOUT;// = 2*60*1000;
-
-    /**
-     * Maximal number of connections this test should open simultaneously.
-     */
-    private final static int MAX_CONNECTIONS = 128;
-
-    /**
-     * Check few more connections to make sure that MAX_CONNECTIONS are safe.
-     */
-    private final static int CONNECTIONS_RESERVE = 10;
-
-    /**
-     * Number of parcels to be sent/recieved.
-     */
-    private final static int DATA_PARCELS = 128;
-
-    /**
-     * Maximal length of data parcel to be sent/recieved
-     * (it equals to 256 bytes now).
-     */
-    private final static int MAX_PARCEL = 1 << 8;
-
-    /**
-     * Either actually display optional reports or not.
-     */
-    static private final boolean DEBUG_MODE = false;
-
-    /**
-     * How many IP sockets can we open simultaneously?
-     * Check if <code>MAX_CONNECTIONS</code> connections
-     * can be open simultaneously.
-     */
-    private static int detectOSLimitation() {
-        final int CONNECTIONS_TO_TRY = MAX_CONNECTIONS + CONNECTIONS_RESERVE;
-        ServerSocket ssoc[] = new ServerSocket[CONNECTIONS_TO_TRY];
-        display("--- Trying to open " + CONNECTIONS_TO_TRY + " connections:");
-        int i;
-        for (i = 0; i < CONNECTIONS_TO_TRY; i++)
-            try {
-                ssoc[i] = new ServerSocket(0);
-                display("--- Open: ssoc[" + i + "] = " + ssoc[i]);
-            } catch (IOException ioe) {
-                display("--- OOPS! -- failed to open connection #" + i);
-                break;
-            }
-        display("--- Could open " +
-                (i < CONNECTIONS_TO_TRY ? "only " : "") + i + " connections.");
-        display("--- Closing them:");
-        for (int j = 0; j < i; j++)
-            try {
-                ssoc[j].close();
-            } catch (IOException ioe) {
-                throw new Error("FATAL error while loading the test: " + ioe);
-            }
-        display("--- OK.");
-        int safeConnections = i - CONNECTIONS_RESERVE;
-        if (safeConnections < 1)
-            safeConnections = 1;
-        if (safeConnections < MAX_CONNECTIONS) {
-            complain("------------------------- CAUTION: -------------------");
-            complain("While checking the OS limitations, the test found that");
-            complain("only " + i + " TCP/IP socket connections could be safely open");
-            complain("simultaneously. However, possibility to open at least");
-            complain("" + MAX_CONNECTIONS + "+" + CONNECTIONS_RESERVE
-                    + " connections were expected.");
-            complain("");
-            complain("So, the test will check only " + safeConnections + " connection"
-                    + (safeConnections == 1 ? "" : "s") + " which seem");
-            complain("safe to be open simultaneously.");
-            complain("------------------------------------------------------");
-        }
-        return safeConnections;
-    }
-
-    //----------------------------------------------------------------//
-
-    /**
-     * Re-calls to the method <code>run(args[],out)</code> actually
-     * performing the test. After <code>run(args[],out)</code> stops,
-     * follow JDK-like convention for exit codes. I.e.: stop with
-     * exit status 95 if the test has passed, or with status 97 if
-     * the test has failed.
-     *
-     * @see #run(String[], PrintStream)
-     */
-    public static void main(String args[]) {
-        int exitCode = run(args, System.out);
-        System.exit(exitCode + 95);
-        // JCK-like exit status.
-    }
-
-    /**
-     * Parse command-line parameters stored into <code>args[]</code> array,
-     * then perform the test. I.e.: start the server thread at the same VM
-     * this method runs, then start the other client VM, and verify data
-     * transfer through TCP/IP connection between those different virtual
-     * machines.
-     * <p>
-     * <p>There should be 1 or 2 command-line parameters:
-     * <br>&nbsp;&nbsp;
-     * <code>java network004 <i>java_command</i>
-     * [<i>IP-address</i> | <i>host_name</i> | localhost ]</code>
-     * <br>where parameters are:
-     * <br>&nbsp;&nbsp;
-     * <code><i>java_command</i></code> - how to start java,
-     * e.g.: ``<code>c:\jdk1.3\bin\java -classic</code>''
-     * <br>&nbsp;&nbsp;
-     * <code>waittime</code> - timeout for TCP/IP sockets in minutes
-     * <br>&nbsp;&nbsp;
-     * <code><i>IP-address</i></code> - local hots's address, or 127.0.0.1
-     * <br>&nbsp;&nbsp;
-     * <code><i>host_name</i></code> - local host's domain name, or the
-     * keyword ``<code>localhost</code>''
-     * <br>&nbsp;&nbsp;
-     * <code>localhost</code> - placeholder for the IP-address 127.0.0.1
-     * <p>
-     * <p>Usually, <code><i>java_command</i></code> should point to the same
-     * Java machine just executing this test. However, every compatible Java 2
-     * implementation is appropriate.
-     * <p>
-     * <p>If optional parameter is ommited, the test invokes the method
-     * <code>InetAddress.getLocalHost()</code> to get the domain name and
-     * IP-address of the local computer.
-     */
-    public static int run(String args[], PrintStream out) {
-        network004.out = out;
-
-        //
-        // Get the Internet address of the local machine.
-        //
-        InetAddress address = null;
-        try {
-            switch (args.length) {
-                case 2:
-                    address = InetAddress.getLocalHost();
-                    break;
-                case 3:
-                    address = InetAddress.getByName(args[2]);
-                    break;
-                default:
-                    complain("Illegal arguments number; execute:");
-                    complain("    java network004 $JAVA_COMMAND " +
-                            "[$IP_ADDRESS | $HOST_NAME | localhost]");
-                    return 2; // FAILED
-            }
-        } catch (UnknownHostException exception) {
-            complain(exception.toString());
-            return 2; // FAILED
-        }
-        display("Host: " + address);
-
-        //
-        // Detect if it is safe to open MAX_CONNETIONS simultaneously:
-        //
-        final int CONNECTIONS = detectOSLimitation();
-
-        //
-        // Start the server thread on the same VM (which executes this method).
-        //
-        Server server[] = new Server[CONNECTIONS];
-        for (int i = 0; i < CONNECTIONS; i++) {
-            try {
-                server[i] = new Server(address);
-            } catch (Exception exception) {
-                complain("Server #" + i + ": " + exception);
-                return 2;
-            }
-            display("Server #" + i + ": " + server[i]);
-            server[i].start();
-        }
-
-        //
-        // Start the client process on different VM.
-        //
-        String command = args[0] + " " + network004.class.getName() + "$Client";
-        try {
-            SO_TIMEOUT = Integer.parseInt(args[1]) * 60 * 1000;
-        } catch (NumberFormatException e) {
-            complain("Wrong timeout argument: " + e);
-            return 2;
-        }
-
-        Runtime runtime = Runtime.getRuntime();
-
-        Process client = null;
-        IORedirector redirectOut = null;
-        IORedirector redirectErr = null;
-
-        try {
-            // Start clients on different JVM:
-            client = runtime.exec(command);
-
-            // Provide clients with access to stderr and stdout:
-            InputStream clientOut = client.getInputStream();
-            InputStream clientErr = client.getErrorStream();
-            redirectOut = new IORedirector(clientOut, DEBUG_MODE ? out : null);
-            redirectErr = new IORedirector(clientErr, out);
-            redirectOut.start();
-            redirectErr.start();
-
-            // Pass parameters to clients (number of connections, and IP adresses and ports):
-            PrintStream clientIn = new PrintStream(client.getOutputStream());
-            clientIn.println(CONNECTIONS);
-            for (int i = 0; i < CONNECTIONS; i++)
-                clientIn.println(server[i].getIPAddress() + " " + server[i].getPort());
-            clientIn.flush();
-            clientIn.close();
-
-        } catch (Exception exception) {
-            complain("Failed to start client: " + exception);
-            return 2;
-        }
-
-        //
-        // Wait until the server and client both stop.
-        //
-        boolean testFailed = false;
-        try {
-            client.waitFor();
-            // Let I/O redirectors to flush:
-            if (redirectOut.isAlive())
-                redirectOut.join();
-            if (redirectErr.isAlive())
-                redirectErr.join();
-
-            // If client has crashed, also terminate the server (to avoid hangup).
-            int clientStatus = client.exitValue();
-            if (clientStatus != 95) {
-                complain("Client VM has failed: exit status=" + clientStatus);
-                testFailed = true;
-            }
-
-            // Client has finished OK; wait for the server.
-            for (int i = 0; i < CONNECTIONS; i++) {
-                display("Server: waiting for #" + i);
-                while (server[i].isAlive())
-                    server[i].join();
-                if (server[i].exception != null) {
-                    complain("Server thread #" + i + ": " + server[i].exception);
-                    testFailed = true;
-                }
-            }
-
-        } catch (Exception exception) {
-            complain("Test interrupted: " + exception);
-            testFailed = true;
-        }
-
-        if (testFailed)
-            complain("Test failed.");
-        else
-            display("Test passed.");
-        return testFailed ? 2 : 0;
-    }
-
-    //----------------------------------------------------------------//
-
-    /**
-     * Log stream for error messages and/or (optional) execution trace.
-     */
-    private static PrintStream out;
-
-    /**
-     * Print error message.
-     */
-    private static synchronized void complain(Object message) {
-        out.println("# " + message);
-        out.flush();
-    }
-
-    /**
-     * Display optional report: comment ca va?
-     */
-    private static synchronized void display(Object report) {
-        if (DEBUG_MODE)
-            out.println(report.toString());
-        out.flush();
-    }
-
-    //----------------------------------------------------------------//
-
-    /**
-     * Server thread should reply to data parcels sent by Client VM.
-     */
-    private static class Server extends Thread {
-        /**
-         * The socket to listen for a client.
-         */
-        private ServerSocket serverSocket;
-
-        /**
-         * Display the server socket.
-         */
-        public String toString() {
-            return serverSocket.toString();
-        }
-
-        /**
-         * Server's IP-address in the form ``<code><i>x.y.u.z</i></code>'',
-         * or ``<code>127.0.0.1</code>'' for loopback connection.
-         */
-        public String getIPAddress() {
-            return serverSocket.getInetAddress().getHostAddress();
-        }
-
-        /**
-         * Which port is this socket listening?
-         */
-        int getPort() {
-            return serverSocket.getLocalPort();
-        }
-
-        /**
-         * Find some free port at the given <code>address</code>
-         * and attach new server to hear that port.
-         */
-        public Server(InetAddress address) throws IOException {
-            int someFreePort = 0;
-            int backlog = 50; // default for new ServerSocket(port)
-            serverSocket = new ServerSocket(someFreePort, backlog, address);
-        }
-
-        /**
-         * Exception just arisen while the server was working,
-         * or <code>null</code> if it was OK with the server.
-         */
-        Exception exception = null;
-
-        /**
-         * Accept connection, then reply to client's parcels.
-         */
-        public void run() {
-            try {
-                Socket socket = serverSocket.accept();
-                socket.setSoTimeout(SO_TIMEOUT);
-//              display("Server: " + socket);
-
-                InputStream istream = socket.getInputStream();
-                OutputStream ostream = socket.getOutputStream();
-
-                Random random = new Random(getPort());
-
-                for (int i = 0; i < DATA_PARCELS; i++) {
-                    Parcel etalon = new Parcel(random);
-
-                    Parcel sample = new Parcel(istream); // read
-                    if (!sample.equals(etalon)) {
-                        complain("Server thread for port #"
-                                + getPort() + " got unexpected parcel:\n"
-                                + "sample=" + sample + "\n"
-                                + "etalon=" + etalon);
-                        throw new TestFailure(
-                                "server has read unexpected parcel");
-                    }
-
-                    etalon.send(ostream);
-                    ostream.flush();
-                }
-
-                int datum = istream.read(); // wait for client close()
-                if (datum >= 0)
-                    throw new TestFailure(
-                            "server has read ambigous byte: " + datum);
-
-                ostream.close(); // implies: socket.close();
-
-            } catch (Exception oops) {
-                exception = oops;
-            }
-        }
-
-    }
-
-    //----------------------------------------------------------------//
-
-    /**
-     * Client VM should send data parcels to Server VM and
-     * recieve and verify the server's replies.
-     */
-    private static class Client extends Thread {
-        /**
-         * This thread uses the single client socket.
-         */
-        private Socket socket;
-
-        /**
-         * Address and port of this socket.
-         */
-        public String toString() {
-            return socket.toString();
-        }
-
-        /**
-         * Did the thread failed? If yes, what is the failure's reason.
-         */
-        Exception exception = null;
-
-        /**
-         * Connect client socket on the given <code>address</code>
-         * and <code>port</code>.
-         */
-        Client(InetAddress address, int port) throws IOException {
-            socket = new Socket(address, port);
-            socket.setSoTimeout(SO_TIMEOUT);
-        }
-
-        /**
-         * What is the port number this socket is listening for?
-         */
-        int getPort() {
-            return socket.getPort();
-        }
-
-        /**
-         * Establish connection, then read/respond <code>DATA_PARCELS</code> parcels
-         * of random data. Set initial seed for pseudo-random numbers generator
-         * to the value of the local port number.
-         *
-         * @see #DATA_PARCELS
-         * @see #getPort()
-         */
-        public void run() {
-            try {
-                InputStream istream = socket.getInputStream();
-                OutputStream ostream = socket.getOutputStream();
-
-                Random random = new Random(getPort());
-
-                for (int i = 0; i < DATA_PARCELS; i++) {
-                    Parcel etalon = new Parcel(random);
-                    etalon.send(ostream);
-                    ostream.flush();
-
-                    Parcel sample = new Parcel(istream); // read
-                    if (!sample.equals(etalon)) {
-                        complain("Client thread for port #"
-                                + getPort() + " got unexpected parcel:\n"
-                                + "sample=" + sample + "\n"
-                                + "etalon=" + etalon);
-                        throw new TestFailure(
-                                "parcel context is unexpected to client");
-                    }
-                }
-
-                if (istream.available() > 0) {
-                    int datum = istream.read();
-                    throw new TestFailure(
-                            "client has read ambigous byte: " + datum);
-                }
-                ostream.close(); // implies: socket.close()
-
-            } catch (Exception oops) {
-                exception = oops;
-            }
-        }
-
-        /**
-         * Establish connections to lots of server sockets, atack servers with
-         * huge data parcels, and check if it replies correctly. The addresses
-         * and port numbers for server sockets are passed through <code>stdin</code>.
-         * The input stream must consist of the stipulated number (up to 128+1) of
-         * lines containing the pair of symbolic server domain name and the port number,
-         * like:
-         * <br>&nbsp;&nbsp; actual_number_of_sockets
-         * <br>&nbsp;&nbsp; address_1 port_1
-         * <br>&nbsp;&nbsp; address_2 port_2
-         * <br>&nbsp;&nbsp; . . .
-         * <br>&nbsp;&nbsp; address_N port_N
-         * <br>where N must equal to the actual_number_of_sockets.
-         */
-        public static void main(String args[]) {
-            // ---- Parse stdin for the list of server sockets: ---- //
-            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
-
-            final int CONNECTIONS;
-            try {
-                String line = in.readLine();
-                if (line == null) {
-                    complain("Client expects paramenets passed through stdin:");
-                    complain("    actual_number_of_sockets");
-                    complain("    IP-address_1 port_1");
-                    complain("    IP-address_2 port_2");
-                    complain("    .   .   .");
-                    complain("    IP-address_N port_N");
-                    exit(2); // FAILED
-                }
-                CONNECTIONS = Integer.parseInt(line);
-            } catch (IOException ioe) {
-                complain("Client failed to read the actual number of CONNECTIONS");
-                throw new RuntimeException(ioe.toString());
-            }
-
-            Client client[] = new Client[CONNECTIONS];
-            for (int i = 0; i < CONNECTIONS; i++)
-                try {
-                    String line = in.readLine();
-                    if (line == null) {
-                        complain("Client: failed to read address/port for client #" + i);
-                        exit(3);
-                    }
-
-                    StringTokenizer tokenz = new StringTokenizer(line);
-                    if (tokenz.countTokens() != 2) {
-                        complain("Client: illegal input string: " + line);
-                        exit(3);
-                    }
-                    String serverName = (String) tokenz.nextElement();
-                    InetAddress address = InetAddress.getByName(serverName);
-                    int port = Integer.parseInt((String) tokenz.nextElement());
-
-                    client[i] = new Client(address, port);
-
-                    display("Client #" + i + ": " + client[i]);
-
-                } catch (IOException ioe) {
-                    complain("Client #" + i + ": " + ioe);
-                    exit(3);
-                }
-
-            // ---- Start testing: ---- //
-
-            for (int i = 0; i < CONNECTIONS; i++)
-                client[i].start();
-
-            int status = 0;
-            for (int i = 0; i < CONNECTIONS; i++) {
-                display("Client: waiting for #" + i);
-                while (client[i].isAlive())
-                    yield();
-                if (client[i].exception != null) {
-                    complain("Client #" + i + ": " + client[i].exception);
-                    status = 2;
-                }
-            }
-
-            exit(status);
-        }
-
-        /**
-         * Print error message.
-         */
-        private static synchronized void complain(Object message) {
-            System.err.println("# " + message);
-            System.err.flush();
-        }
-
-        /**
-         * Display execution trace.
-         */
-        private static synchronized void display(Object message) {
-            if (!DEBUG_MODE)
-                return;
-            System.out.println(message.toString());
-            System.out.flush();
-        }
-
-        /**
-         * Exit with JCK-like status.
-         */
-        private static void exit(int exitCode) {
-            System.exit(exitCode + 95);
-        }
-
-    }
-
-    /**
-     * Two of such threads should redirect <code>out</code> and <code>err</code>
-     * streams of client VM.
-     */
-    private static class IORedirector extends Thread {
-        /**
-         * Source stream.
-         */
-        InputStream in;
-        /**
-         * Destination stream.
-         */
-        OutputStream out;
-
-        /**
-         * Redirect <code>in</code> to <code>out</code>.
-         */
-        public IORedirector(InputStream in, OutputStream out) {
-            this.in = in;
-            this.out = out;
-        }
-
-        /**
-         * Read input stream until the EOF, and write everithing to output stream.
-         * If output stream is assigned to <code>null</code>, do not print anything,
-         * but read the input stream anywhere.
-         */
-        public void run() {
-            try {
-                for (; ; ) {
-                    int symbol = in.read();
-                    if (symbol < 0)
-                        break; // EOF
-                    if (out != null)
-                        out.write(symbol);
-                }
-
-                if (out != null)
-                    out.flush();
-
-            } catch (Exception exception) {
-                throw new TestFailure("IORedirector exception: " + exception);
-            }
-        }
-    }
-
-    //----------------------------------------------------------------//
-
-    /**
-     * A data parcel to be sent/recieved between Client VM and Server thread.
-     * When data parcel is sent, first 4 bytes are transfered which encode the
-     * <code>int</code> number equal to size of the parcel minus 1. I.e.: if
-     * number of data bytes in the parcel's contents is <code>N</code>, then
-     * the first 4 bytes encode the number <code>N-1</code>. After that, the
-     * parcel's contents bytes are transered.
-     */
-    static class Parcel {
-        private byte[] parcel;
-
-        /**
-         * Display all bytes as integer values from 0 to 255;
-         * or return ``<tt>null</tt>'' if this Parcel is not
-         * yet initialized.
-         */
-        public String toString() {
-            if (parcel == null)
-                return "null";
-            String s = "{";
-            for (int i = 0; i < parcel.length; i++)
-                s += (i > 0 ? ", " : "") + ((int) parcel[i] & 0xFF);
-            return s + "}";
-        }
-
-        /**
-         * Generate new <code>parcel[]</code> array using the given
-         * <code>random</code> numbers generator. Client and Server
-         * threads should use identical <code>random</code> generators,
-         * so that those threads could generate equal data parcels and
-         * check the parcel just transfered.
-         */
-        public Parcel(Random random) {
-            int size = random.nextInt(MAX_PARCEL) + 1;
-            parcel = new byte[size];
-            for (int i = 0; i < size; i++)
-                parcel[i] = (byte) random.nextInt(256);
-        }
-
-        /**
-         * Read exactly <code>size</code> bytes from the <code>istream</code>
-         * if possible, or throw <code>TestFailure</code> if unexpected end of
-         * <code>istream</code> occurs.
-         */
-        private static byte[] readBytes(int size, InputStream istream)
-                throws IOException {
-
-            byte data[] = new byte[size];
-            for (int i = 0; i < size; i++) {
-                int datum = istream.read();
-                if (datum < 0)
-                    throw new TestFailure(
-                            "unexpected EOF: have read: " + i + " bytes of " + size);
-                data[i] = (byte) datum;
-            }
-            return data;
-        }
-
-        /**
-         * Read 4 bytes from <code>istream</code> and threat them to encode
-         * size of data parcel following these 4 bytes.
-         */
-        private static int getSize(InputStream istream) throws IOException {
-            byte data[] = readBytes(4, istream);
-            int data0 = (int) data[0] & 0xFF;
-            int data1 = (int) data[1] & 0xFF;
-            int data2 = (int) data[2] & 0xFF;
-            int data3 = (int) data[3] & 0xFF;
-            int sizeWord = data0 + (data1 << 8) + (data2 << 16) + (data3 << 24);
-            int size = sizeWord + 1;
-            if (size <= 0)
-                throw new TestFailure("illegal size: " + size);
-            return size;
-        }
-
-        /**
-         * Send 4 bytes encoding actual size of the parcel just to be transfered.
-         */
-        private static void putSize(OutputStream ostream, int size)
-                throws IOException {
-
-            if (size <= 0)
-                throw new TestFailure("illegal size: " + size);
-
-            int sizeWord = size - 1;
-            byte data[] = new byte[4];
-            data[0] = (byte) sizeWord;
-            data[1] = (byte) (sizeWord >> 8);
-            data[2] = (byte) (sizeWord >> 16);
-            data[3] = (byte) (sizeWord >> 24);
-            ostream.write(data);
-        }
-
-        /**
-         * Recieve data parcel.
-         */
-        public Parcel(InputStream istream) throws IOException {
-            int size = getSize(istream);
-            parcel = readBytes(size, istream);
-        }
-
-        /**
-         * Send <code>this</code> data parcel.
-         */
-        public void send(OutputStream ostream) throws IOException {
-            int size = parcel.length;
-            putSize(ostream, size);
-            ostream.write(parcel);
-        }
-
-        /**
-         * Check byte-to-byte equality between <code>this</code> and the
-         * <code>other</code> parcels.
-         */
-        public boolean equals(Parcel other) {
-            if (this.parcel.length != other.parcel.length)
-                return false;
-            int size = parcel.length;
-            for (int i = 0; i < size; i++)
-                if (this.parcel[i] != other.parcel[i])
-                    return false;
-            return true;
-        }
-
-    }
-
-    /**
-     * Server or Client may throw this exception to report the test failure.
-     */
-    static class TestFailure extends RuntimeException {
-        /**
-         * Report particular <code>purpose</code> of the test failure.
-         */
-        public TestFailure(String purpose) {
-            super(purpose);
-        }
-
-    }
-
-}
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/network/network005.java	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,635 +0,0 @@
-/*
- * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @key stress
- *
- * @summary converted from VM testbase nsk/stress/network/network005.
- * VM testbase keywords: [stress, slow, nonconcurrent, quick]
- * VM testbase readme:
- * DESCRIPTION
- *     This test make huge number of data transers between one server and
- *     multiple clients communicating via TCP/IP sockets, and checks if those
- *     data are transfered correctly. All TCP/IP sockets are attached to local
- *     host (by its domain name), or to the ``localhost'' loopback (having the
- *     IP address 127.0.0.1).
- *     In this test, 128 client/server connections are established. Once a
- *     connection is established, client passes a large data parcel to server,
- *     and server reads that parcel and checks if it is same as expected
- *     (byte-to-byte equality is desired). Then server passes (some other) parcel
- *     to the client, and client reads and verifies those bytes. This ping-pong
- *     game is repeated 128 times; and after that each pair of sockets checks if
- *     there are no extra bytes accudentally passed through their connection.
- *     Parcels lengths and contents are chosen randomly, and average parcel
- *     length is 128 bytes. So totally, each pair of sockets passes ~16Kb of
- *     data to each other, and thus ~32Kb of data are transfered by each sockets
- *     pair. Totally, ~4Mb of data are transfered by all client/server pairs.
- * COMMENTS
- *
- * @run main/othervm nsk.stress.network.network005
- */
-
-package nsk.stress.network;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.util.Random;
-
-/**
- * This test make huge number of data transers between one server and
- * multiple clients communicating via TCP/IP sockets, and checks if those
- * data are transfered correctly. All TCP/IP sockets are attached to local
- * host (by its domain name), or to the ``localhost'' loopback (having the
- * IP address 127.0.0.1).
- * <p>
- * <p>In this test, 128 client/server connections are established. Once a
- * connection is established, client passes a large data parcel to server,
- * and server reads that parcel and checks if it is same as expected
- * (byte-to-byte equality is desired). Then server passes (some other) parcel
- * to the client, and client reads and verifies those bytes. This ping-pong
- * game is repeated 128 times; and after that each pair of sockets checks if
- * there are no extra bytes accudentally passed through their connection.
- * <p>
- * <p>Parcels lengths and contents are chosen randomly, and average parcel
- * length is 128 bytes. So totally, each pair of sockets passes ~16Kb of
- * data to each other, and thus ~32Kb of data are transfered by each sockets
- * pair. Totally, ~4Mb of data are transfered by all client/server pairs.
- */
-public class network005 {
-    /**
-     * Do actually display optional reports?
-     */
-    static private final boolean DEBUG_MODE = false;
-
-    /**
-     * Errors and optional reports log. Usually <code>System.out</code>.
-     */
-    static private PrintStream out = System.out;
-
-    /**
-     * Print error message: all clients and servers may print concurently.
-     */
-    static private synchronized void println(Object message) {
-        out.println(message.toString());
-    }
-
-    /**
-     * Display optional report: comment ca va.
-     */
-    static private void display(Object report) {
-        if (DEBUG_MODE)
-            println(report.toString());
-    }
-
-    /**
-     * Maximal number of connections this test should open simultaneously.
-     */
-    private final static int MAX_CONNECTIONS = 128;
-
-    /**
-     * Check few more connections to make sure that MAX_CONNECTIONS are safe.
-     */
-    private final static int CONNECTIONS_RESERVE = 10;
-
-    /**
-     * Number of client/server connections to establish.
-     */
-    private static final int CONNECTIONS = detectOSLimitation();
-
-    /**
-     * Number of parcels to be sent/recieved.
-     */
-    private static final int DATA_PARCELS = 128;
-
-    /**
-     * Maximal length of data parcel to be sent/recieved
-     * (it equals to 256 bytes now).
-     */
-    private static final int MAX_PARCEL = 1 << 8;
-
-    /**
-     * How many IP sockets can we open simultaneously?
-     * Check if <code>MAX_CONNECTIONS</code> connections
-     * can be open simultaneously.
-     */
-    private static int detectOSLimitation() {
-        final int CONNECTIONS_TO_TRY = MAX_CONNECTIONS + CONNECTIONS_RESERVE;
-        display("--- Trying to open " + CONNECTIONS_TO_TRY + " connections:");
-
-        InetAddress address;
-        ServerSocket serverSocket;
-        try {
-            address = InetAddress.getLocalHost();
-            int anyPort = 0;
-            int defaultBacklog = 50;
-            serverSocket = new ServerSocket(anyPort, defaultBacklog, address);
-        } catch (IOException ioe) {
-            throw new Error("FATAL error while loading the test: " + ioe);
-        }
-        display(serverSocket.toString());
-
-        Socket server[] = new Socket[CONNECTIONS_TO_TRY];
-        Socket client[] = new Socket[CONNECTIONS_TO_TRY];
-
-        int i, port = serverSocket.getLocalPort();
-        for (i = 0; i < CONNECTIONS_TO_TRY; i++)
-            try {
-                client[i] = new Socket(address, port);
-                display("--- Open: client[" + i + "] = " + client[i]);
-                server[i] = serverSocket.accept();
-                display("--- Open: server[" + i + "] = " + server[i]);
-            } catch (IOException ioe) {
-                display("--- OOPS! -- failed to open connection #" + i);
-                break;
-            }
-        display("--- Could open " +
-                (i < CONNECTIONS_TO_TRY ? "only " : "") + i + " connections.");
-        display("--- Closing them:");
-        for (int j = 0; j < i; j++)
-            try {
-                server[j].close();
-                client[j].close();
-            } catch (IOException ioe) {
-                throw new Error("FATAL error while loading the test: " + ioe);
-            }
-        display("--- OK.");
-        int safeConnections = i - CONNECTIONS_RESERVE;
-        if (safeConnections < 1)
-            safeConnections = 1;
-        if (safeConnections < MAX_CONNECTIONS) {
-            println("# ------------------------- CAUTION: -------------------");
-            println("# While checking the OS limitations, the test found that");
-            println("# only " + i + " TCP/IP socket connections could be safely open");
-            println("# simultaneously. However, possibility to open at least");
-            println("# " + MAX_CONNECTIONS + "+" + CONNECTIONS_RESERVE
-                    + " connections were expected.");
-            println("# ");
-            println("# So, the test will check only " + safeConnections + " connection"
-                    + (safeConnections == 1 ? "" : "s") + " which seem");
-            println("# safe to be open simultaneously.");
-            println("# ------------------------------------------------------");
-        }
-        return safeConnections;
-    }
-
-    /**
-     * Server (or client) thread intended to transfer data parcels to
-     * another client (or server) Agent.
-     */
-    static private class Agent extends Thread {
-        /**
-         * Agent's client mode.
-         */
-        final static int CLIENT = 1;
-        /**
-         * Agen's server mode.
-         */
-        final static int SERVER = 2;
-
-        /**
-         * Is this agent is client or server one?
-         */
-        private int mode;
-
-        /**
-         * This server thread listens the single socket.
-         */
-        private Socket socket;
-
-        /**
-         * What is the port number this socket is listening for?
-         */
-        int getPort() {
-            if (mode == SERVER)
-                return socket.getLocalPort();
-            else
-                return socket.getPort();
-        }
-
-        /**
-         * Address and port of this server socket.
-         */
-        public String toString() {
-            String mode = (this.mode == CLIENT) ? "Client" : "Server";
-            return mode + ": " + socket.toString();
-        }
-
-        /**
-         * Did the thread failed? If yes, what is the failure's reason.
-         */
-        Exception exception = null;
-
-        /**
-         * Find some free port at the given <code>address</code>
-         * and attach new server to hear that port.
-         */
-        Agent(Socket socket, int mode) {
-            if ((mode != SERVER) && (mode != CLIENT))
-                throw new IllegalArgumentException("unknown mode=" + mode);
-            this.socket = socket;
-            this.mode = mode;
-        }
-
-        /**
-         * Transfer <code>DATA_PARCELS</code> parcels of random data.
-         * Set initial seed for pseudo-random numbers generator
-         * to the value of the local port number.
-         *
-         * @see #DATA_PARCELS
-         * @see #getPort()
-         */
-        public void run() {
-            try {
-                InputStream istream = socket.getInputStream();
-                OutputStream ostream = socket.getOutputStream();
-
-                Random random = new Random(getPort());
-
-                for (int i = 0; i < DATA_PARCELS; i++) {
-                    Parcel etalon = new Parcel(random);
-
-                    if (mode == SERVER) {
-                        Parcel sample = new Parcel(istream); // read
-                        if (!sample.equals(etalon)) {
-                            println("Server agent for port #"
-                                    + getPort() + " got unexpected parcel:\n"
-                                    + "sample=" + sample + "\n"
-                                    + "etalon=" + etalon);
-                            throw new TestFailure(
-                                    "server has read unexpected parcel");
-                        }
-
-                        etalon.send(ostream);                // reply
-                        ostream.flush();
-
-                    } else {
-                        etalon.send(ostream);                // init transfer
-                        ostream.flush();
-
-                        Parcel sample = new Parcel(istream); // read
-                        if (!sample.equals(etalon)) {
-                            println("Client agent for port #"
-                                    + getPort() + " got unexpected parcel:\n"
-                                    + "sample=" + sample + "\n"
-                                    + "etalon=" + etalon);
-                            throw new TestFailure(
-                                    "parcel context is unexpected to client");
-                        }
-                    }
-                }
-
-                if (mode == SERVER) {
-                    int datum = istream.read(); // wait until client's close()
-                    if (datum >= 0)
-                        throw new TestFailure(
-                                "server has read ambigous byte: " + datum);
-
-                    ostream.close(); // implies: socket.close();
-
-                } else {
-                    if (istream.available() > 0) {
-                        int datum = istream.read();
-                        throw new TestFailure(
-                                "client has read ambigous byte: " + datum);
-                    }
-                    ostream.close(); // implies: socket.close()
-                }
-
-            } catch (Exception oops) {
-                exception = oops;
-            }
-        }
-
-    }
-
-    /**
-     * A data parcel to sent/recieved between Client and Server threads.
-     * When data parcel is sent, first 4 bytes transfered encode the size
-     * of the parcel (i.e.: number of data bytes in the parcel's contents).
-     * Then the parcel's contents bytes are transered.
-     */
-    static class Parcel {
-        private byte[] parcel;
-
-        /**
-         * Display all bytes as integer values from 0 to 255;
-         * or return ``<tt>null</tt>'' if this Parcel is not
-         * yet initialized.
-         */
-        public String toString() {
-            if (parcel == null)
-                return "null";
-            String s = "{";
-            for (int i = 0; i < parcel.length; i++)
-                s += (i > 0 ? ", " : "") + ((int) parcel[i] & 0xFF);
-            return s + "}";
-        }
-
-        /**
-         * Generate new <code>parcel[]</code> array using the given
-         * <code>random</code> numbers generator. Client and Server
-         * threads should use identical <code>random</code> generators,
-         * so that those threads could generate equal data parcels and
-         * check the parcel just transfered.
-         */
-        public Parcel(Random random) {
-            int size = random.nextInt(MAX_PARCEL) + 1;
-            parcel = new byte[size];
-            for (int i = 0; i < size; i++)
-                parcel[i] = (byte) random.nextInt(256);
-        }
-
-        /**
-         * Read exactly <code>size</code> bytes from the <code>istream</code>
-         * if possible, or throw <code>TestFailure</code> if unexpected end of
-         * <code>istream</code> occurs.
-         */
-        private static byte[] readBytes(int size, InputStream istream)
-                throws IOException {
-
-            byte data[] = new byte[size];
-            for (int i = 0; i < size; i++) {
-                int datum = istream.read();
-                if (datum < 0)
-                    throw new TestFailure(
-                            "unexpected EOF: have read: " + i + " bytes of " + size);
-                data[i] = (byte) datum;
-            }
-            return data;
-        }
-
-        /**
-         * Read 4 bytes from <code>istream</code> and threat them to encode
-         * size of data parcel following these 4 bytes.
-         */
-        private static int getSize(InputStream istream) throws IOException {
-            byte data[] = readBytes(4, istream);
-            int data0 = (int) data[0] & 0xFF;
-            int data1 = (int) data[1] & 0xFF;
-            int data2 = (int) data[2] & 0xFF;
-            int data3 = (int) data[3] & 0xFF;
-            int sizeWord = data0 + (data1 << 8) + (data2 << 16) + (data3 << 24);
-            int size = sizeWord + 1;
-            if (size <= 0)
-                throw new TestFailure("illegal size: " + size);
-            return size;
-        }
-
-        /**
-         * Send 4 bytes encoding actual size of the parcel just to be transfered.
-         */
-        private static void putSize(OutputStream ostream, int size)
-                throws IOException {
-
-            if (size <= 0)
-                throw new TestFailure("illegal size: " + size);
-
-            int sizeWord = size - 1;
-            byte data[] = new byte[4];
-            data[0] = (byte) sizeWord;
-            data[1] = (byte) (sizeWord >> 8);
-            data[2] = (byte) (sizeWord >> 16);
-            data[3] = (byte) (sizeWord >> 24);
-            ostream.write(data);
-        }
-
-        /**
-         * Recieve data parcel.
-         */
-        public Parcel(InputStream istream) throws IOException {
-            int size = getSize(istream);
-            parcel = readBytes(size, istream);
-        }
-
-        /**
-         * Send <code>this</code> data parcel.
-         */
-        public void send(OutputStream ostream) throws IOException {
-            int size = parcel.length;
-            putSize(ostream, size);
-            ostream.write(parcel);
-        }
-
-        /**
-         * Check byte-to-byte equality between <code>this</code> and the
-         * <code>other</code> parcels.
-         */
-        public boolean equals(Parcel other) {
-            if (this.parcel.length != other.parcel.length)
-                return false;
-            int size = parcel.length;
-            for (int i = 0; i < size; i++)
-                if (this.parcel[i] != other.parcel[i])
-                    return false;
-            return true;
-        }
-
-    }
-
-    /**
-     * Server or Client thread may throw this exception to report the test
-     * failure.
-     */
-    static class TestFailure extends RuntimeException {
-        /**
-         * Report particular <code>purpose</code> of the test failure.
-         */
-        public TestFailure(String purpose) {
-            super(purpose);
-        }
-
-    }
-
-    /**
-     * Attach client and server sockets to the local host, and check if
-     * huge number of data transfers could be correctly transfered between
-     * these sockets.
-     * <p>
-     * <p>Command-line parameters provided with <code>args[]</code> may
-     * prompt the local host IP address or domain name. Execute:
-     * <br>&nbsp;&nbsp;
-     * <code>java network005 [<i>IP-address</i> | <i>host_name</i> |
-     * localhost ]</code>
-     * <br>where parameters are:
-     * <br>&nbsp;&nbsp;
-     * <code><i>IP-address</i></code> - local hots's address, or 127.0.0.1
-     * <br>&nbsp;&nbsp;
-     * <code><i>host_name</i></code> - local host's domain name, or the
-     * keyword ``<code>localhost</code>''
-     * <br>&nbsp;&nbsp;
-     * <code>localhost</code> - placeholder for the IP-address 127.0.0.1
-     * <br>By default, the test uses the Internet address available via
-     * the method <code>InetAddress.getLocalHost()</code>
-     */
-    public static int run(String args[], PrintStream out) {
-        network005.out = out;
-
-        //
-        // Get IP address of the local machine.
-        //
-
-        InetAddress address = null;
-        try {
-            switch (args.length) {
-                case 0:
-                    address = InetAddress.getLocalHost();
-                    break;
-                case 1:
-                    String hostName = args[0];
-                    address = InetAddress.getByName(args[0]);
-                    break;
-                default:
-                    println("Use:");
-                    println("    java network005");
-                    println("or:");
-                    println("    java network005 ${IP_ADDRESS}");
-                    println("or:");
-                    println("    java network005 ${HOST_NAME}");
-                    println("or:");
-                    println("    java network005 localhost");
-                    return 2; // FAILED
-            }
-        } catch (UnknownHostException exception) {
-            println(exception);
-            return 2; // FAILED
-        }
-        display("Host: " + address);
-
-        //
-        // Assign ServerSocket to the local host:
-        //
-
-        ServerSocket serverSocket;
-        try {
-            final int anyPort = 0;
-            final int defaultBacklog = 50;
-            serverSocket = new ServerSocket(anyPort, defaultBacklog, address);
-        } catch (IOException ioe) {
-            println("# Failed to assign ServerSocket on: " + address);
-            return 2;
-        }
-        display(serverSocket.toString());
-
-        final int port = serverSocket.getLocalPort();
-
-        //
-        // Incarnate the server & the client agents.
-        //
-
-        Agent server[] = new Agent[CONNECTIONS];
-        Agent client[] = new Agent[CONNECTIONS];
-
-        for (int i = 0; i < CONNECTIONS; i++)
-            try {
-                Socket socket;
-                socket = new Socket(address, port);
-                client[i] = new Agent(socket, Agent.CLIENT);
-                display("Client #" + i + ": " + socket);
-                socket = serverSocket.accept();
-                server[i] = new Agent(socket, Agent.SERVER);
-                display("Server #" + i + ": " + socket);
-            } catch (IOException io) {
-                println("Failed establish conection #" + i + ": " + io);
-                return 2;
-            }
-
-        //
-        // Execute the server and client threads.
-        //
-
-        Exception exception = null;
-        for (int i = 0; i < CONNECTIONS; i++) {
-            server[i].start();
-            client[i].start();
-        }
-        try {
-            boolean someIsAlive = true;
-            while (someIsAlive) {
-                boolean aliveFound = false;
-                boolean someBroken = false;
-                for (int i = 0; i < CONNECTIONS; i++)
-                    if (client[i].isAlive() || server[i].isAlive()) {
-                        if ((client[i].exception != null) ||
-                                (server[i].exception != null))
-                            someBroken = true;
-                        aliveFound = true;
-                        Thread.yield();
-                    }
-                someIsAlive = aliveFound;
-                if (someBroken)
-                    break;
-            }
-        } catch (TestFailure failure) {
-            exception = failure;
-        }
-
-        // Failure diagnostics, if needed.
-
-        Exception problem[] = new Exception[2 * CONNECTIONS + 1];
-        problem[0] = exception;
-        for (int i = 0; i < CONNECTIONS; i++) {
-            problem[2 * i + 1] = server[i].exception;
-            problem[2 * i + 2] = client[i].exception;
-        }
-
-        int exitCode = 0;
-
-        for (int i = 0; i < 2 * CONNECTIONS + 1; i++)
-            if (problem[i] != null) {
-                out.println("#### OOPS ! ####");
-                problem[i].printStackTrace(out);
-                exitCode = 2;
-            }
-
-        if (exitCode != 0) {
-            out.println("#### OOPS ! ####");
-            out.println("# Test failed.");
-            return 2; // FAILED
-        }
-        display("Test passed.");
-        return 0; // PASSED
-    }
-
-    /**
-     * Re-calls to the method <code>run(args[],out)</code> actually
-     * performing the test; and stop with exit code 95 if the test
-     * has passed, or with code 97 if the test has failed.
-     * (This is JCK-like exit codes convention.)
-     *
-     * @see #run(String[], PrintStream)
-     */
-    public static void main(String args[]) {
-        int exitCode = run(args, System.out);
-        System.exit(exitCode + 95);
-        // JCK-like exit code.
-    }
-
-}
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/network/network006.java	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,916 +0,0 @@
-/*
- * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- * @key stress
- *
- * @summary converted from VM testbase nsk/stress/network/network006.
- * VM testbase keywords: [stress, slow, nonconcurrent, quick, quarantine]
- * VM testbase comments: 8185072
- * VM testbase readme:
- * DESCRIPTION
- *     This test makes huge number of data transfers between 2 Java virtual
- *     machines using the TCP/IP protocol, and checks if those data are transfered
- *     correctly. Both client and server VMs run on the same local computer and
- *     attach TCP/IP sockets to the local host, or to the loopback domain
- *     ``localhost'' (having IP address 127.0.0.1).
- *     In this test, 128 client/server connections are established. Once a
- *     connection is established, client passes a data parcel to server, and server
- *     reads that parcel and checks if it is same as expected (byte-to-byte equality
- *     is desired). Then server passes (some other) parcel to the client, and client
- *     reads and verifies those bytes. This ping-pong game is repeated 128 times; and
- *     after that each pair of sockets checks if there are no extra bytes accudentally
- *     passed through their connection.
- *     Parcels lengths and contents are chosen randomly, and average parcel length
- *     is 128 bytes. So totally, each pair of sockets passes ~16Kb of data to each other,
- *     and thus ~32Kb of data are transfered by each sockets pair. Totally, ~4Mb of data
- *     are transfered by all client/server pairs.
- * COMMENTS
- *     Test was fixed:
- *     added WAITTIME parameter defined timeout for TCP/IP sockets in minutes
- *
- * @library /vmTestbase
- *          /test/lib
- * @run driver jdk.test.lib.FileInstaller . .
- * @build nsk.stress.network.network006
- * @run main/othervm PropertyResolvingWrapper
- *      nsk.stress.network.network006
- *      "${test.jdk}/bin/java ${test.vm.opts} ${test.java.opts}" 5
- */
-
-package nsk.stress.network;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.util.Random;
-
-/**
- * This test makes huge number of data transfers between 2 Java virtual
- * machines using the TCP/IP protocol, and checks if those data are transfered
- * correctly. Both client and server VMs run on the same local computer and
- * attach TCP/IP sockets to the local host, or to the loopback domain
- * ``<code>localhost</code>'' (having IP address <code>127.0.0.1</code>).
- * <p>
- * <p>In this test, 128 client/server connections are established. Once a
- * connection is established, client passes a data parcel to server, and server
- * reads that parcel and checks if it is same as expected (byte-to-byte equality
- * is desired). Then server passes (some other) parcel to the client, and client
- * reads and verifies those bytes. This ping-pong game is repeated 128 times; and
- * after that each pair of sockets checks if there are no extra bytes accudentally
- * passed through their connection.
- * <p>
- * <p>Parcels lengths and contents are chosen randomly, and average parcel length
- * is 128 bytes. So totally, each pair of sockets passes ~16Kb of data to each other,
- * and thus ~32Kb of data are transfered by each sockets pair. Totally, ~4Mb of data
- * are transfered by all client/server pairs.
- */
-public class network006 {
-    /**
-     * Timeout for TCP/IP sockets (currently set to 1 min).
-     */
-    private static int SO_TIMEOUT;// = 2*60*1000;
-
-    /**
-     * Maximal number of connections this test should open simultaneously.
-     */
-    private final static int MAX_CONNECTIONS = 128;
-
-    /**
-     * Check few more connections to make sure that MAX_CONNECTIONS are safe.
-     */
-    private final static int CONNECTIONS_RESERVE = 10;
-
-    /**
-     * The test used to fail with connection reset by peer set to 50.
-     * (and once in a three if it was set to 10).
-     * So now we set it to MAX_CONNECTIONS (128).
-     */
-    private final static int BACKLOG_QUEUE_LENGTH = MAX_CONNECTIONS;
-
-    /**
-     * Number of parcels to be sent/recieved.
-     */
-    private final static int DATA_PARCELS = 128;
-
-    /**
-     * Maximal length of data parcel to be sent/recieved
-     * (it equals to 256 bytes now).
-     */
-    private final static int MAX_PARCEL = 1 << 8;
-
-    /**
-     * Either actually display optional reports or not.
-     */
-    static private final boolean DEBUG_MODE = false;
-
-    /**
-     * How many IP sockets can we open simultaneously?
-     * Check if <code>MAX_CONNECTIONS</code> connections
-     * can be open simultaneously.
-     */
-    private static int detectOSLimitation() {
-        final int CONNECTIONS_TO_TRY = MAX_CONNECTIONS + CONNECTIONS_RESERVE;
-        display("--- Trying to open " + CONNECTIONS_TO_TRY + " connections:");
-
-        InetAddress address;
-        ServerSocket serverSocket;
-        try {
-            address = InetAddress.getLocalHost();
-            int anyPort = 0;
-            int defaultBacklog = BACKLOG_QUEUE_LENGTH;
-            serverSocket = new ServerSocket(anyPort, defaultBacklog, address);
-        } catch (IOException ioe) {
-            throw new Error("FATAL error while loading the test: " + ioe);
-        }
-        display(serverSocket.toString());
-
-        Socket server[] = new Socket[CONNECTIONS_TO_TRY];
-        Socket client[] = new Socket[CONNECTIONS_TO_TRY];
-
-        int i, port = serverSocket.getLocalPort();
-        for (i = 0; i < CONNECTIONS_TO_TRY; i++)
-            try {
-                client[i] = new Socket(address, port);
-                display(">Open: client[" + i + "] = " + client[i]);
-                server[i] = serverSocket.accept();
-                display(">Open: server[" + i + "] = " + server[i]);
-            } catch (IOException ioe) {
-                display(">OOPS! -- failed to open connection #" + i);
-                break;
-            }
-        display("> Could open " +
-                (i < CONNECTIONS_TO_TRY ? "only " : "") + i + " connections.");
-        display(">Closing them:");
-        for (int j = 0; j < i; j++)
-            try {
-                server[j].close();
-                client[j].close();
-            } catch (IOException ioe) {
-                throw new Error("FATAL error while loading the test: " + ioe);
-            }
-        display(">OK.");
-        int safeConnections = i - CONNECTIONS_RESERVE;
-        if (safeConnections < 1)
-            safeConnections = 1;
-        if (safeConnections < MAX_CONNECTIONS) {
-            complain("------------------------- CAUTION: -------------------");
-            complain("While checking the OS limitations, the test found that");
-            complain("only " + i + " TCP/IP socket connections could be safely open");
-            complain("simultaneously. However, possibility to open at least");
-            complain("" + MAX_CONNECTIONS + "+" + CONNECTIONS_RESERVE
-                    + " connections were expected.");
-            complain("");
-            complain("So, the test will check only " + safeConnections + " connection"
-                    + (safeConnections == 1 ? "" : "s") + " which seem");
-            complain("safe to be open simultaneously.");
-            complain("------------------------------------------------------");
-        }
-        return safeConnections;
-    }
-
-    //----------------------------------------------------------------//
-
-    /**
-     * Re-calls to the method <code>run(args[],out)</code> actually
-     * performing the test. After <code>run(args[],out)</code> stops,
-     * follow JDK-like convention for exit codes. I.e.: stop with
-     * exit status 95 if the test has passed, or with status 97 if
-     * the test has failed.
-     *
-     * @see #run(String[], PrintStream)
-     */
-    public static void main(String args[]) {
-        int exitCode = run(args, System.out);
-        System.exit(exitCode + 95);
-        // JCK-like exit status.
-    }
-
-    /**
-     * Parse command-line parameters stored into <code>args[]</code> array,
-     * then perform the test. I.e.: start the server thread at the same VM
-     * this method runs, then start the other client VM, and verify data
-     * transfer through TCP/IP connection between those different virtual
-     * machines.
-     * <p>
-     * <p>There should be 2 or 3 command-line parameters:
-     * <br>&nbsp;&nbsp;
-     * <code>java network006 <i>java_command</i>
-     * [<i>IP-address</i> | <i>host_name</i> | localhost ]</code>
-     * <br>where parameters are:
-     * <br>&nbsp;&nbsp;
-     * <code><i>java_command</i></code> - how to start java,
-     * e.g.: ``<code>c:\jdk1.3\bin\java -classic</code>''
-     * <br>&nbsp;&nbsp;
-     * <code>waittime</code> - timeout for TCP/IP sockets in minutes
-     * <br>&nbsp;&nbsp;
-     * <code><i>IP-address</i></code> - local hots's address, or 127.0.0.1
-     * <br>&nbsp;&nbsp;
-     * <code><i>host_name</i></code> - local host's domain name, or the
-     * keyword ``<code>localhost</code>''
-     * <br>&nbsp;&nbsp;
-     * <code>localhost</code> - placeholder for the IP-address 127.0.0.1
-     * <p>
-     * <p>Usually, <code><i>java_command</i></code> should point to the same
-     * Java machine just executing this test. However, every compatible Java 2
-     * implementation is appropriate.
-     * <p>
-     * <p>If optional parameter is ommited, the test invokes the method
-     * <code>InetAddress.getLocalHost()</code> to get the domain name and
-     * IP-address of the local computer.
-     */
-    public static int run(String args[], PrintStream out) {
-        network006.out = out;
-
-        //
-        // Get the Internet address of the local machine.
-        //
-        InetAddress address = null;
-        try {
-            switch (args.length) {
-                case 2:
-                    address = InetAddress.getLocalHost();
-                    break;
-                case 3:
-                    address = InetAddress.getByName(args[2]);
-                    break;
-                default:
-                    complain("Illegal arguments number; execute:");
-                    complain("    java " + network006.class.getName() + " $JAVA_COMMAND " +
-                            "[$IP_ADDRESS | $HOST_NAME | localhost]");
-                    return 2; // FAILED
-            }
-        } catch (UnknownHostException exception) {
-            complain(exception.toString());
-            return 2; // FAILED
-        }
-        display("Host: " + address);
-
-        //
-        // Detect if it is safe to open MAX_CONNETIONS simultaneously:
-        //
-        final int CONNECTIONS = detectOSLimitation();
-
-        //
-        // Assign ServerSocket, and start client VM which should open
-        // the prescribed number of CONNECTIONS to that ServerSocket.
-        //
-
-        ServerSocket serverSocket;
-        try {
-            final int anyPort = 0;
-            final int defaultBacklog = BACKLOG_QUEUE_LENGTH;
-            serverSocket = new ServerSocket(anyPort, defaultBacklog, address);
-        } catch (IOException exception) {
-            complain("Cannot assign a ServerSocket on: " + address);
-            return 2;
-        }
-
-        //
-        // Start the client process on different VM.
-        //
-
-        String IPAddress = address.getHostAddress();
-        int localPort = serverSocket.getLocalPort();
-        String arguments = " " + CONNECTIONS + " " + IPAddress + " " + localPort;
-        //String command = args[0] + " " + network006.class.getName() + "$Client " + arguments;
-        String command = args[0] + " " + Client.class.getName() + " " + arguments;
-        try {
-            SO_TIMEOUT = Integer.parseInt(args[1]) * 60 * 1000;
-        } catch (NumberFormatException e) {
-            complain("Wrong timeout argument: " + e);
-            return 2;
-        }
-
-        Runtime runtime = Runtime.getRuntime();
-
-        Process client = null;
-        IORedirector redirectOut = null;
-        IORedirector redirectErr = null;
-
-        try {
-            // Start clients on different JVM:
-            client = runtime.exec(command);
-
-            // Provide clients with access to stderr and stdout:
-            InputStream clientOut = client.getInputStream();
-            InputStream clientErr = client.getErrorStream();
-            redirectOut = new IORedirector(clientOut, DEBUG_MODE ? out : null);
-            redirectErr = new IORedirector(clientErr, out);
-            redirectOut.start();
-            redirectErr.start();
-
-        } catch (Exception exception) {
-            complain("Failed to start client: " + exception);
-            return 2;
-        }
-        //
-        // Start the server threads (and let them establish connections):
-        //
-
-        Server server[] = new Server[CONNECTIONS];
-        for (int i = 0; i < CONNECTIONS; i++) {
-            server[i] = new Server(serverSocket);
-            display("Server #" + i + ": " + server[i]);
-            server[i].start();
-        }
-
-        //
-        // Wait for the servers and the clients:
-        //
-
-        boolean testFailed = false;
-
-        try {
-            client.waitFor();
-            int clientStatus = client.exitValue();
-            display("Client VM exitCode=" + clientStatus);
-
-            // Let I/O redirectors to flush:
-            if (redirectOut.isAlive())
-                redirectOut.join();
-            if (redirectErr.isAlive())
-                redirectErr.join();
-
-            // If client has crashed, also terminate the server (to avoid hangup).
-            if (clientStatus != 95) {
-                complain("Client VM has crashed: exit status=" + clientStatus);
-                testFailed = true;
-            }
-
-            // Client has finished OK; wait for the server.
-            for (int i = 0; i < CONNECTIONS; i++) {
-                display("Server: waiting for #" + i);
-                if (server[i].isAlive()) {
-                    display("Server #" + i + ": (joining...)" + server[i]);
-                    server[i].join();
-                }
-                if (server[i].exception != null) {
-                    if (server[i].message != null)
-                        complain("Server #" + i + "(finished): with message:" + server[i].message);
-
-                    complain("Server #" + i + "(finished): " + server[i].exception);
-                    server[i].exception.printStackTrace(out);
-                    out.flush();
-//                    complain("Server #"+i+": "+server[i].exception.getStackTrace());
-                    testFailed = true;
-                }
-            }
-
-        } catch (Exception exception) {
-            complain("Test interrupted: " + exception);
-            testFailed = true;
-        }
-
-        if (testFailed)
-            complain("Test failed.");
-        else
-            display("Test passed.");
-        return testFailed ? 2 : 0;
-    }
-
-    //----------------------------------------------------------------//
-
-    /**
-     * Log stream for error messages and/or (optional) execution trace.
-     */
-    private static PrintStream out;
-
-    /**
-     * Print error message.
-     */
-    private static synchronized void complain(Object message) {
-        out.println("# " + message);
-        out.flush();
-    }
-
-    /**
-     * Display optional report: comment ca va?
-     */
-    private static synchronized void display(Object report) {
-        if (DEBUG_MODE)
-            out.println(report.toString());
-        out.flush(); //todo shouldn't this be inside if??
-    }
-
-    //----------------------------------------------------------------//
-
-    /**
-     * Server thread should reply to data parcels sent by Client VM.
-     */
-    private static class Server extends Thread {
-        /**
-         * The socket is assigned at the Server instantiation.
-         */
-        private ServerSocket serverSocket;
-
-        /**
-         * The socket is assigned at the Server runtime.
-         */
-        private Socket socket;
-
-        /**
-         * Display the server socket.
-         */
-        public String toString() {
-
-            return "ServerSocket: " + serverSocket.toString();
-//                    + " socket: " + socket.toString();
-        }
-
-        /**
-         * Which port is this socket listening?
-         */
-        int getPort() {
-            return serverSocket.getLocalPort();
-        }
-
-        /**
-         * Find some free port at the given <code>address</code>
-         * and attach new server to hear that port. // lidsten to??
-         */
-        public Server(ServerSocket serverSocket) {
-            this.serverSocket = serverSocket;
-        }
-
-        /**
-         * Exception just arisen while the server was working,
-         * or <code>null</code> if it was OK with the server.
-         */
-        Exception exception = null;
-        String message = null;
-
-        /**
-         * Accept connection, then reply to client's parcels.
-         */
-        public void run() {
-            try {
-                socket = serverSocket.accept();
-                socket.setSoTimeout(SO_TIMEOUT);
-
-                InputStream istream = socket.getInputStream();
-                OutputStream ostream = socket.getOutputStream();
-
-                Random random = new Random(getPort());
-
-                for (int i = 0; i < DATA_PARCELS; i++) {
-                    Parcel etalon = new Parcel(random);
-                    message = "reading parcel number " + i;
-                    Parcel sample = new Parcel(istream); // read
-                    if (!sample.equals(etalon)) {
-                        complain("Server thread for port #"
-                                + getPort() + " got unexpected parcel:\n"
-                                + "sample=" + sample + "\n"
-                                + "etalon=" + etalon);
-                        throw new TestFailure(  //received??
-                                "server has read unexpected parcel");
-                    }
-                    message = "sending parcel number " + i;
-                    etalon.send(ostream);
-                    ostream.flush();
-                }
-
-                int datum = istream.read(); // wait for client close()
-                if (datum >= 0)
-                    throw new TestFailure(
-                            "server has read ambigous byte: " + datum);
-
-                ostream.close(); // implies: socket.close();
-
-            } catch (Exception oops) {
-                exception = oops;
-            }
-        }
-    }
-
-    //----------------------------------------------------------------//
-
-    /**
-     * Client VM should send data parcels to Server VM and
-     * recieve and verify the server's replies.
-     */
-    private static class Client extends Thread {
-        /**
-         * This thread uses the single client socket.
-         */
-        private Socket socket;
-
-        /**
-         * Address and port of this socket.
-         */
-        public String toString() {
-            return socket.toString();
-        }
-
-        /**
-         * Did the thread failed? If yes, what is the failure's reason.
-         */
-        Exception exception = null;
-        String message = null;
-
-
-        public static java.io.PrintStream complainStream = System.out;
-        public static java.io.PrintStream displayStream = System.err;
-
-        /**
-         * Connect client socket on the given <code>address</code>
-         * and <code>port</code>.
-         */
-        Client(InetAddress address, int port) throws IOException {
-            socket = new Socket(address, port);
-            socket.setSoTimeout(SO_TIMEOUT);
-        }
-
-        /**
-         * What is the port number this socket is listening for?
-         */
-        int getPort() {
-            return socket.getPort();
-        }
-
-        /**
-         * Establish connection, then read/respond <code>DATA_PARCELS</code> parcels
-         * of random data. Set initial seed for pseudo-random numbers generator
-         * to the value of the local port number.
-         *
-         * @see #DATA_PARCELS
-         * @see #getPort()
-         */
-        public void run() {
-            try {
-                InputStream istream = socket.getInputStream();
-                OutputStream ostream = socket.getOutputStream();
-
-                Random random = new Random(getPort());
-                // suggested by Oleg -- to avoid race conditions
-               /* try{
-                    Thread.sleep(500);
-                }
-                catch (java.lang.InterruptedException e)
-                {
-                }*/
-
-                for (int i = 0; i < DATA_PARCELS; i++) {
-                    Parcel etalon = new Parcel(random);
-                    message = "sending parcel number: " + i;
-                    etalon.send(ostream);
-                    ostream.flush();
-
-                    message = "reading parcel number: " + i;
-                    Parcel sample = new Parcel(istream); // read
-                    if (!sample.equals(etalon)) {
-                        complain("Client thread for port #"
-                                + getPort() + " got unexpected parcel:\n"
-                                + "sample=" + sample + "\n"
-                                + "etalon=" + etalon);
-                        throw new TestFailure(
-                                "parcel context is unexpected to client");
-                    }
-                }
-
-                if (istream.available() > 0) {
-                    int datum = istream.read();
-                    throw new TestFailure(
-                            "client has read ambigous byte: " + datum);
-                }
-                ostream.close(); // implies: socket.close()
-
-            } catch (Exception oops) {
-                exception = oops;
-            }
-        }
-
-        /**
-         * Establish lots of connections to server socket, attack servers with
-         * huge data parcels, and check if they reply correctly. The number of
-         * connections to try, the address and port number for the server socket
-         * are passed through <code>args[]</code>, like:
-         * <pre>
-         *    java network006$Client connections_to_try address port
-         * </pre>
-         */
-        public static void main(String args[]) {
-            if (DEBUG_MODE) {
-                try {
-                    String filename = "Client" + ((args.length == 3) ? args[2] : "new");
-                    displayStream = new PrintStream(filename + ".out");
-                    complainStream = new PrintStream(filename + ".err");
-                } catch (FileNotFoundException exception) {
-                    complain(exception);
-                }
-
-            }
-
-            if (args.length != 3) {
-                complain("Client expects 3 paramenets:");
-                complain("    java " + Client.class.getName() + " connections_to_try address port");
-                exit(1); // FAILED
-            }
-
-            int CONNECTIONS = Integer.parseInt(args[0]);
-            display("Client VM: will try " + CONNECTIONS + " connections.");
-            InetAddress address;
-            try {
-                address = InetAddress.getByName(args[1]);
-            } catch (UnknownHostException exception) {
-                address = null;
-                complain("Client: cannot find host: \"" + args[1] + "\"");
-                exit(4);
-            }
-            display("Client: host to contact: " + address);
-            int port = Integer.parseInt(args[2]);
-            display("Client: port to contact: " + port);
-
-            //
-            // Establish connections, and start client processes:
-            //
-
-            Client client[] = new Client[CONNECTIONS];
-            for (int i = 0; i < CONNECTIONS; i++)
-                try {
-                    client[i] = new Client(address, port);
-                    display("Client #" + i + ": " + client[i]);
-
-                } catch (IOException ioe) {
-                    complain("Client #" + i + "(creation): " + ioe);
-                    ioe.printStackTrace(complainStream);
-                    complainStream.flush();
-//                    complain("Client #" + i + "(creation): " + ioe.getStackTrace());
-                    exit(3);
-                }
-
-            for (int i = 0; i < CONNECTIONS; i++)
-                client[i].start();
-
-            //
-            // Wait until testing is not finished:
-            //
-
-            int status = 0;
-            for (int i = 0; i < CONNECTIONS; i++) {
-                display("Client: waiting for #" + i);
-                if (client[i].isAlive()) {
-                    display("Client #" + i + ": (joining...)" + client[i]);
-
-                    try {
-                        client[i].join();
-                    } catch (InterruptedException ie) {
-                        complain("Client #" + i + ": " + ie);
-                        status = 3;
-                    }
-                }
-                if (client[i].exception != null) {
-                    if (client[i].message != null)
-                        complain("Client #" + i + "(finished) with message: " + client[i].message);
-                    complain("Client #" + i + "(finished): " + client[i].exception);
-                    client[i].exception.printStackTrace(complainStream);
-                    complainStream.flush();
-                    if (status == 0)
-                        status = 2;
-                }
-            }
-
-            exit(status);
-        }
-
-        /**
-         * Print error message.
-         */
-        private static synchronized void complain(Object message) {
-            complainStream.println("# " + message);
-            complainStream.flush();
-        }
-
-        /**
-         * Display execution trace.
-         */
-        private static synchronized void display(Object message) {
-            if (!DEBUG_MODE)
-                return;
-            displayStream.println(message.toString());
-            displayStream.flush();
-        }
-
-        /**
-         * Exit with JCK-like status.
-         */
-        private static void exit(int exitCode) {
-            int status = exitCode + 95;
-//          display("Client: exiting with code=" + status);
-            System.exit(status);
-        }
-    }
-
-    /**
-     * Two of such threads should redirect <code>out</code> and <code>err</code>
-     * streams of client VM.
-     */
-    private static class IORedirector extends Thread {
-        /**
-         * Source stream.
-         */
-        InputStream in;
-        /**
-         * Destination stream.
-         */
-        OutputStream out;
-
-        /**
-         * Redirect <code>in</code> to <code>out</code>.
-         */
-        public IORedirector(InputStream in, OutputStream out) {
-            this.in = in;
-            this.out = out;
-        }
-
-        /**
-         * Read input stream until the EOF, and write everithing to output stream.
-         * If output stream is assigned to <code>null</code>, do not print anything,
-         * but read the input stream anywhere.
-         */
-        public void run() {
-            try {
-                for (; ; ) {
-                    int symbol = in.read();
-                    if (symbol < 0)
-                        break; // EOF
-                    if (out != null)
-                        out.write(symbol);
-                }
-
-                if (out != null)
-                    out.flush();
-
-            } catch (Exception exception) {
-                throw new TestFailure("IORedirector exception: " + exception);
-            }
-        }
-    }
-
-    //----------------------------------------------------------------//
-
-    /**
-     * A data parcel to be sent/recieved between Client VM and Server thread.
-     * When data parcel is sent, first 4 bytes are transfered which encode the
-     * <code>int</code> number equal to size of the parcel minus 1. I.e.: if
-     * number of data bytes in the parcel's contents is <code>N</code>, then
-     * the first 4 bytes encode the number <code>N-1</code>. After that, the
-     * parcel's contents bytes are transered.
-     */
-    static class Parcel {
-        private byte[] parcel;
-
-        /**
-         * Display all bytes as integer values from 0 to 255;
-         * or return ``<tt>null</tt>'' if this Parcel is not
-         * yet initialized.
-         */
-        public String toString() {
-            if (parcel == null)
-                return "null";
-            String s = "{";
-            for (int i = 0; i < parcel.length; i++)
-                s += (i > 0 ? ", " : "") + ((int) parcel[i] & 0xFF);
-            return s + "}";
-        }
-
-        /**
-         * Generate new <code>parcel[]</code> array using the given
-         * <code>random</code> numbers generator. Client and Server
-         * threads should use identical <code>random</code> generators,
-         * so that those threads could generate equal data parcels and
-         * check the parcel just transfered.
-         */
-        public Parcel(Random random) {
-            int size = random.nextInt(MAX_PARCEL) + 1;
-            parcel = new byte[size];
-            for (int i = 0; i < size; i++)
-                parcel[i] = (byte) random.nextInt(256);
-        }
-
-        /**
-         * Read exactly <code>size</code> bytes from the <code>istream</code>
-         * if possible, or throw <code>TestFailure</code> if unexpected end of
-         * <code>istream</code> occurs.
-         */
-        private static byte[] readBytes(int size, InputStream istream)
-                throws IOException {
-
-            byte data[] = new byte[size];
-            for (int i = 0; i < size; i++) {
-                int datum = istream.read();
-                if (datum < 0)
-                    throw new TestFailure(
-                            "unexpected EOF: have read: " + i + " bytes of " + size);
-                data[i] = (byte) datum;
-            }
-            return data;
-        }
-
-        /**
-         * Read 4 bytes from <code>istream</code> and threat them to encode
-         * size of data parcel following these 4 bytes.
-         */
-        private static int getSize(InputStream istream) throws IOException {
-            byte data[] = readBytes(4, istream);
-            int data0 = (int) data[0] & 0xFF;
-            int data1 = (int) data[1] & 0xFF;
-            int data2 = (int) data[2] & 0xFF;
-            int data3 = (int) data[3] & 0xFF;
-            int sizeWord = data0 + (data1 << 8) + (data2 << 16) + (data3 << 24);
-            int size = sizeWord + 1;
-            if (size <= 0)
-                throw new TestFailure("illegal size: " + size);
-            return size;
-        }
-
-        /**
-         * Send 4 bytes encoding actual size of the parcel just to be transfered.
-         */
-        private static void putSize(OutputStream ostream, int size)
-                throws IOException {
-
-            if (size <= 0)
-                throw new TestFailure("illegal size: " + size);
-
-            int sizeWord = size - 1;
-            byte data[] = new byte[4];
-            data[0] = (byte) sizeWord;
-            data[1] = (byte) (sizeWord >> 8);
-            data[2] = (byte) (sizeWord >> 16);
-            data[3] = (byte) (sizeWord >> 24);
-            ostream.write(data);
-        }
-
-        /**
-         * Recieve data parcel.
-         */
-        public Parcel(InputStream istream) throws IOException {
-            int size = getSize(istream);
-            parcel = readBytes(size, istream);
-        }
-
-        /**
-         * Send <code>this</code> data parcel.
-         */
-        public void send(OutputStream ostream) throws IOException {
-            int size = parcel.length;
-            putSize(ostream, size);
-            ostream.write(parcel);
-        }
-
-        /**
-         * Check byte-to-byte equality between <code>this</code> and the
-         * <code>other</code> parcels.
-         */
-        public boolean equals(Parcel other) {
-            if (this.parcel.length != other.parcel.length)
-                return false;
-            int size = parcel.length;
-            for (int i = 0; i < size; i++)
-                if (this.parcel[i] != other.parcel[i])
-                    return false;
-            return true;
-        }
-    }
-
-    /**
-     * Server or Client may throw this exception to report the test failure.
-     */
-    static class TestFailure extends RuntimeException {
-        /**
-         * Report particular <code>purpose</code> of the test failure.
-         */
-        public TestFailure(String purpose) {
-            super(purpose);
-        }
-    }
-}
--- a/test/jdk/ProblemList.txt	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/ProblemList.txt	Fri Dec 07 09:46:53 2018 -0500
@@ -883,4 +883,3 @@
 # jdk_jfr
 
 jdk/jfr/event/io/TestInstrumentation.java                       8202142    generic-all
-jdk/jfr/event/sampling/TestNative.java                          8202142    generic-all
--- a/test/jdk/java/io/InputStream/NullInputStream.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/java/io/InputStream/NullInputStream.java	Fri Dec 07 09:46:53 2018 -0500
@@ -22,6 +22,7 @@
  */
 
 import java.io.ByteArrayOutputStream;
+import java.io.EOFException;
 import java.io.InputStream;
 import java.io.IOException;
 import org.testng.annotations.AfterGroups;
@@ -31,7 +32,7 @@
 
 /*
  * @test
- * @bug 4358774 8139206
+ * @bug 4358774 6516099 8139206
  * @run testng NullInputStream
  * @summary Check for expected behavior of InputStream.nullInputStream().
  */
@@ -146,6 +147,21 @@
     }
 
     @Test(groups = "open")
+    public static void testSkipNBytes() {
+        try {
+            openStream.skipNBytes(-1);
+            openStream.skipNBytes(0);
+        } catch (IOException ioe) {
+            fail("Unexpected IOException");
+        }
+    }
+
+    @Test(groups = "open", expectedExceptions = EOFException.class)
+    public static void testSkipNBytesEOF() throws IOException {
+        openStream.skipNBytes(1);
+    }
+
+    @Test(groups = "open")
     public static void testTransferTo() {
         try {
             assertEquals(0, openStream.transferTo(new ByteArrayOutputStream(7)),
@@ -219,6 +235,15 @@
     }
 
     @Test(groups = "closed")
+    public static void testSkipNBytesClosed() {
+        try {
+            closedStream.skipNBytes(1);
+            fail("Expected IOException not thrown");
+        } catch (IOException e) {
+        }
+    }
+
+    @Test(groups = "closed")
     public static void testTransferToClosed() {
         try {
             closedStream.transferTo(new ByteArrayOutputStream(7));
--- a/test/jdk/java/io/InputStream/Skip.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/java/io/InputStream/Skip.java	Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,24 +21,22 @@
  * questions.
  */
 
-
-/* @test
-   @bug 4016710
-   @summary check for correct implementation of InputStream.skip
-   */
-
-import java.io.*;
-
+/**
+ * @test
+ * @bug 4016710 6516099
+ * @summary check for correct implementation of InputStream.skip{NBytes}
+ */
 
-public class Skip{
+import java.io.EOFException;
+import java.io.InputStream;
+import java.io.IOException;
 
-    private static void dotest(InputStream in , int curpos ,
-                               long total , long toskip , long expected)
-        throws Exception
-    {
+public class Skip {
+    private static final int EOF = -1;
 
+    private static void dotest(InputStream in, int curpos, long total,
+                               long toskip, long expected) throws Exception {
         try {
-
             System.err.println("\n\nCurrently at pos = " + curpos +
                                "\nTotal bytes in the Stream = " + total +
                                "\nNumber of bytes to skip = " + toskip +
@@ -50,43 +48,69 @@
             System.err.println("actual number skipped: "+ skipped);
 
             if ((skipped < 0) || (skipped > expected)) {
-                throw new RuntimeException("Unexpected number of bytes skipped");
+                throw new RuntimeException("Unexpected byte count skipped");
             }
-
         } catch (IOException e) {
-            System.err.println("IOException is thrown - possible result");
+            System.err.println("IOException is thrown: " + e);
         } catch (Throwable e) {
-            throw new RuntimeException("Unexpected "+e+" is thrown!");
+            throw new RuntimeException("Unexpected " + e + " is thrown!");
         }
+    }
 
+    private static void dotestExact(MyInputStream in, long curpos, long total,
+        long toskip, boolean expectIOE, boolean expectEOFE) {
+
+        System.err.println("\n\nCurrently at pos = " + curpos +
+                           "\nTotal bytes in the Stream = " + total +
+                           "\nNumber of bytes to skip = " + toskip);
+
+        try {
+            long pos = in.position();
+            assert pos == curpos : pos + " != " + curpos;
+            in.skipNBytes(toskip);
+            if (in.position() != pos + (toskip < 0 ? 0 : toskip)) {
+                throw new RuntimeException((in.position() - pos) +
+                    " bytes skipped; expected " + toskip);
+            }
+        } catch (EOFException eofe) {
+            if (!expectEOFE) {
+                throw new RuntimeException("Unexpected EOFException", eofe);
+            }
+            System.err.println("Caught expected EOFException");
+        } catch (IOException ioe) {
+            if (!expectIOE) {
+                throw new RuntimeException("Unexpected IOException", ioe);
+            }
+            System.err.println("Caught expected IOException");
+        }
     }
 
     public static void main( String argv[] ) throws Exception {
-
         MyInputStream in = new MyInputStream(11);
 
-        /* test for negative skip */
+        // test for negative skip
         dotest(in,  0, 11, -23,  0);
 
-        /* check for skip beyond EOF starting from before EOF */
+        // check for skip beyond EOF starting from before EOF
         dotest(in,  0, 11,  20, 11);
 
-        /* check for skip after EOF */
-        dotest(in, -1, 11,  20,  0);
+        // check for skip after EOF
+        dotest(in, EOF, 11,  20,  0);
 
         in = new MyInputStream(9000);
-        /* check for skip equal to the read chunk size in InputStream.java */
+
+        // check for skip equal to the read chunk size in InputStream.java
         dotest(in,  0, 9000, 2048, 2048);
 
-        /* check for skip greater than the read chunk size in InputStream.java */
+        // check for skip larger than the read chunk size in InputStream.java
         dotest(in, 2048, 9000, 5000, 5000);
 
-        /* check for skip beyond EOF starting from before EOF */
+        // check for skip beyond EOF starting from before EOF
         dotest(in, 7048, 9000, 5000, 1952);
 
         in = new MyInputStream(5000);
 
-        /* check for multiple chunk reads */
+        // check for multiple chunk reads
         dotest(in, 0, 5000, 6000, 5000);
 
         /*
@@ -98,23 +122,86 @@
          * dotest(in, 0, total, toskip, toskip);
          */
 
+        // tests for skipping an exact number of bytes
+
+        final long streamLength = Long.MAX_VALUE;
+        in = new MyInputStream(streamLength);
+
+        // negative skip: OK
+        dotestExact(in, 0, streamLength, -1, false, false);
+
+        // negative skip at EOF: OK
+        in.position(streamLength);
+        dotestExact(in, streamLength, streamLength, -1, false, false);
+        in.position(0);
+
+        // zero skip: OK
+        dotestExact(in, 0, streamLength, 0, false, false);
+
+        // zero skip at EOF: OK
+        in.position(streamLength);
+        dotestExact(in, streamLength, streamLength, 0, false, false);
+
+        // skip(1) at EOF: EOFE
+        dotestExact(in, streamLength, streamLength, 1, false, true);
+        in.position(0);
+
+        final long n = 31; // skip count
+        long pos = 0;
+
+        // skip(n) returns negative value: IOE
+        in.setState(-1, 100);
+        dotestExact(in, pos, streamLength, n, true, false);
+
+        // skip(n) returns n + 1: IOE
+        in.setState(n + 1, 100);
+        dotestExact(in, pos, streamLength, n, true, false);
+        pos += n + 1;
+
+        // skip(n) returns n/2 but only n/4 subsequent reads succeed: EOFE
+        in.setState(n/2, n/2 + n/4);
+        dotestExact(in, pos, streamLength, n, false, true);
+        pos += n/2 + n/4;
+
+        // skip(n) returns n/2 but n - n/2 subsequent reads succeed: OK
+        in.setState(n/2, n);
+        dotestExact(in, pos, streamLength, n, false, false);
+        pos += n;
     }
-
 }
 
 class MyInputStream extends InputStream {
+    private static final int EOF = -1;
 
-    private int readctr = 0;
-    private long endoffile;
+    private final long endoffile;
+
+    private long readctr = 0;
+
+    private boolean isStateSet = false;
+    private long skipReturn;
+    private long readLimit;
 
     public MyInputStream(long endoffile) {
         this.endoffile = endoffile;
     }
 
-    public int read() {
+    /**
+     * Limits the behavior of skip() and read().
+     *
+     * @param skipReturn the value to be returned by skip()
+     * @param maxReads   the maximum number of reads past the current position
+     *                   before EOF is reached
+     */
+    public void setState(long skipReturn, long maxReads) {
+        this.skipReturn = skipReturn;
+        this.readLimit = readctr + maxReads;
+        isStateSet = true;
+    }
 
-        if (readctr == endoffile) {
-            return -1;
+    public int read() {
+        if (readctr == endoffile ||
+            (isStateSet && readctr >= readLimit)) {
+            return EOF;
         }
         else {
             readctr++;
@@ -123,4 +210,19 @@
     }
 
     public int available() { return 0; }
+
+    public long position() { return readctr; }
+
+    public void position(long pos) {
+        readctr = pos < 0 ? 0 : Math.min(pos, endoffile);
+    }
+
+    public long skip(long n) throws IOException {
+        if (isStateSet) {
+            return skipReturn < 0 ? skipReturn : super.skip(skipReturn);
+        }
+
+        // InputStream skip implementation.
+        return super.skip(n); // readctr is implicitly incremented
+    }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/CompactFormatAndParseHelper.java	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.math.BigDecimal;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import static org.testng.Assert.*;
+
+class CompactFormatAndParseHelper {
+
+    static void testFormat(NumberFormat cnf, Object number,
+            String expected) {
+        String result = cnf.format(number);
+        assertEquals(result, expected, "Incorrect formatting of the number '"
+                + number + "'");
+    }
+
+    static void testParse(NumberFormat cnf, String parseString,
+            Number expected, ParsePosition position, Class<? extends Number> returnType) throws ParseException {
+
+        Number number;
+        if (position == null) {
+            number = cnf.parse(parseString);
+        } else {
+            number = cnf.parse(parseString, position);
+        }
+
+        if (returnType != null) {
+            assertEquals(number.getClass(), returnType, "Incorrect return type for string" + parseString);
+        }
+
+        if (number instanceof Double) {
+            assertEquals(number.doubleValue(), (double) expected,
+                    "Incorrect parsing of the string '" + parseString + "'");
+        } else if (number instanceof Long) {
+            assertEquals(number.longValue(), (long) expected,
+                    "Incorrect parsing of the string '" + parseString + "'");
+        } else if (number instanceof BigDecimal) {
+            BigDecimal num = (BigDecimal) number;
+            assertEquals(num, (BigDecimal) expected,
+                    "Incorrect parsing of the string '" + parseString + "'");
+        } else {
+            assertEquals(number, expected, "Incorrect parsing of the string '"
+                    + parseString + "'");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/TestCNFRounding.java	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,173 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @summary Checks the rounding of formatted number in compact number formatting
+ * @run testng/othervm TestCNFRounding
+ */
+
+import java.math.RoundingMode;
+import java.text.NumberFormat;
+import java.util.List;
+import java.util.Locale;
+import static org.testng.Assert.*;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+public class TestCNFRounding {
+
+    private static final List<RoundingMode> MODES = List.of(
+            RoundingMode.HALF_EVEN,
+            RoundingMode.HALF_UP,
+            RoundingMode.HALF_DOWN,
+            RoundingMode.UP,
+            RoundingMode.DOWN,
+            RoundingMode.CEILING,
+            RoundingMode.FLOOR);
+
+    @DataProvider(name = "roundingData")
+    Object[][] roundingData() {
+        return new Object[][]{
+            // Number, half_even, half_up, half_down, up, down, ceiling, floor
+            {5500, new String[]{"6K", "6K", "5K", "6K", "5K", "6K", "5K"}},
+            {2500, new String[]{"2K", "3K", "2K", "3K", "2K", "3K", "2K"}},
+            {1600, new String[]{"2K", "2K", "2K", "2K", "1K", "2K", "1K"}},
+            {1100, new String[]{"1K", "1K", "1K", "2K", "1K", "2K", "1K"}},
+            {1000, new String[]{"1K", "1K", "1K", "1K", "1K", "1K", "1K"}},
+            {-1000, new String[]{"-1K", "-1K", "-1K", "-1K", "-1K", "-1K", "-1K"}},
+            {-1100, new String[]{"-1K", "-1K", "-1K", "-2K", "-1K", "-1K", "-2K"}},
+            {-1600, new String[]{"-2K", "-2K", "-2K", "-2K", "-1K", "-1K", "-2K"}},
+            {-2500, new String[]{"-2K", "-3K", "-2K", "-3K", "-2K", "-2K", "-3K"}},
+            {-5500, new String[]{"-6K", "-6K", "-5K", "-6K", "-5K", "-5K", "-6K"}},
+            {5501, new String[]{"6K", "6K", "6K", "6K", "5K", "6K", "5K"}},
+            {-5501, new String[]{"-6K", "-6K", "-6K", "-6K", "-5K", "-5K", "-6K"}},
+            {1001, new String[]{"1K", "1K", "1K", "2K", "1K", "2K", "1K"}},
+            {-1001, new String[]{"-1K", "-1K", "-1K", "-2K", "-1K", "-1K", "-2K"}},
+            {4501, new String[]{"5K", "5K", "5K", "5K", "4K", "5K", "4K"}},
+            {-4501, new String[]{"-5K", "-5K", "-5K", "-5K", "-4K", "-4K", "-5K"}},
+            {4500, new String[]{"4K", "5K", "4K", "5K", "4K", "5K", "4K"}},
+            {-4500, new String[]{"-4K", "-5K", "-4K", "-5K", "-4K", "-4K", "-5K"}},};
+    }
+
+    @DataProvider(name = "roundingFract")
+    Object[][] roundingFract() {
+        return new Object[][]{
+            // Number, half_even, half_up, half_down, up, down, ceiling, floor
+            {5550, new String[]{"5.5K", "5.5K", "5.5K", "5.6K", "5.5K", "5.6K", "5.5K"}},
+            {2550, new String[]{"2.5K", "2.5K", "2.5K", "2.6K", "2.5K", "2.6K", "2.5K"}},
+            {1660, new String[]{"1.7K", "1.7K", "1.7K", "1.7K", "1.6K", "1.7K", "1.6K"}},
+            {1110, new String[]{"1.1K", "1.1K", "1.1K", "1.2K", "1.1K", "1.2K", "1.1K"}},
+            {1000, new String[]{"1.0K", "1.0K", "1.0K", "1.0K", "1.0K", "1.0K", "1.0K"}},
+            {-1000, new String[]{"-1.0K", "-1.0K", "-1.0K", "-1.0K", "-1.0K", "-1.0K", "-1.0K"}},
+            {-1110, new String[]{"-1.1K", "-1.1K", "-1.1K", "-1.2K", "-1.1K", "-1.1K", "-1.2K"}},
+            {-1660, new String[]{"-1.7K", "-1.7K", "-1.7K", "-1.7K", "-1.6K", "-1.6K", "-1.7K"}},
+            {-2550, new String[]{"-2.5K", "-2.5K", "-2.5K", "-2.6K", "-2.5K", "-2.5K", "-2.6K"}},
+            {-5550, new String[]{"-5.5K", "-5.5K", "-5.5K", "-5.6K", "-5.5K", "-5.5K", "-5.6K"}},
+            {5551, new String[]{"5.6K", "5.6K", "5.6K", "5.6K", "5.5K", "5.6K", "5.5K"}},
+            {-5551, new String[]{"-5.6K", "-5.6K", "-5.6K", "-5.6K", "-5.5K", "-5.5K", "-5.6K"}},
+            {1001, new String[]{"1.0K", "1.0K", "1.0K", "1.1K", "1.0K", "1.1K", "1.0K"}},
+            {-1001, new String[]{"-1.0K", "-1.0K", "-1.0K", "-1.1K", "-1.0K", "-1.0K", "-1.1K"}},
+            {4551, new String[]{"4.6K", "4.6K", "4.6K", "4.6K", "4.5K", "4.6K", "4.5K"}},
+            {-4551, new String[]{"-4.6K", "-4.6K", "-4.6K", "-4.6K", "-4.5K", "-4.5K", "-4.6K"}},
+            {4500, new String[]{"4.5K", "4.5K", "4.5K", "4.5K", "4.5K", "4.5K", "4.5K"}},
+            {-4500, new String[]{"-4.5K", "-4.5K", "-4.5K", "-4.5K", "-4.5K", "-4.5K", "-4.5K"}},};
+    }
+
+    @DataProvider(name = "rounding2Fract")
+    Object[][] rounding2Fract() {
+        return new Object[][]{
+            // Number, half_even, half_up, half_down
+            {1115, new String[]{"1.11K", "1.11K", "1.11K"}},
+            {1125, new String[]{"1.12K", "1.13K", "1.12K"}},
+            {1135, new String[]{"1.14K", "1.14K", "1.14K"}},
+            {3115, new String[]{"3.12K", "3.12K", "3.12K"}},
+            {3125, new String[]{"3.12K", "3.13K", "3.12K"}},
+            {3135, new String[]{"3.13K", "3.13K", "3.13K"}},
+            {6865, new String[]{"6.87K", "6.87K", "6.87K"}},
+            {6875, new String[]{"6.88K", "6.88K", "6.87K"}},
+            {6885, new String[]{"6.88K", "6.88K", "6.88K"}},
+            {3124, new String[]{"3.12K", "3.12K", "3.12K"}},
+            {3126, new String[]{"3.13K", "3.13K", "3.13K"}},
+            {3128, new String[]{"3.13K", "3.13K", "3.13K"}},
+            {6864, new String[]{"6.86K", "6.86K", "6.86K"}},
+            {6865, new String[]{"6.87K", "6.87K", "6.87K"}},
+            {6868, new String[]{"6.87K", "6.87K", "6.87K"}},
+            {4685, new String[]{"4.68K", "4.68K", "4.68K"}},
+            {4687, new String[]{"4.69K", "4.69K", "4.69K"}},
+            {4686, new String[]{"4.69K", "4.69K", "4.69K"}},};
+    }
+
+    @Test(expectedExceptions = NullPointerException.class)
+    public void testNullMode() {
+        NumberFormat fmt = NumberFormat
+                .getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
+        fmt.setRoundingMode(null);
+    }
+
+    @Test
+    public void testDefaultRoundingMode() {
+        NumberFormat fmt = NumberFormat
+                .getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
+        assertEquals(fmt.getRoundingMode(), RoundingMode.HALF_EVEN,
+                "Default RoundingMode should be " + RoundingMode.HALF_EVEN);
+    }
+
+    @Test(dataProvider = "roundingData")
+    public void testRounding(Object number, String[] expected) {
+        for (int index = 0; index < MODES.size(); index++) {
+            testRoundingMode(number, expected[index], 0, MODES.get(index));
+        }
+    }
+
+    @Test(dataProvider = "roundingFract")
+    public void testRoundingFract(Object number, String[] expected) {
+        for (int index = 0; index < MODES.size(); index++) {
+            testRoundingMode(number, expected[index], 1, MODES.get(index));
+        }
+    }
+
+    @Test(dataProvider = "rounding2Fract")
+    public void testRounding2Fract(Object number, String[] expected) {
+        List<RoundingMode> rModes = List.of(RoundingMode.HALF_EVEN,
+                RoundingMode.HALF_UP, RoundingMode.HALF_DOWN);
+        for (int index = 0; index < rModes.size(); index++) {
+            testRoundingMode(number, expected[index], 2, rModes.get(index));
+        }
+    }
+
+    private void testRoundingMode(Object number, String expected,
+            int fraction, RoundingMode rounding) {
+        NumberFormat fmt = NumberFormat
+                .getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
+        fmt.setRoundingMode(rounding);
+        assertEquals(fmt.getRoundingMode(), rounding,
+                "RoundingMode set is not returned by getRoundingMode");
+
+        fmt.setMinimumFractionDigits(fraction);
+        String result = fmt.format(number);
+        assertEquals(result, expected, "Incorrect formatting of number "
+                + number + " using rounding mode: " + rounding);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/TestCompactNumber.java	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,589 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @summary Checks the functioning of compact number format
+ * @modules jdk.localedata
+ * @run testng/othervm TestCompactNumber
+ */
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Locale;
+import java.util.stream.Stream;
+import static org.testng.Assert.*;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+public class TestCompactNumber {
+
+    private static final NumberFormat FORMAT_DZ_LONG = NumberFormat
+            .getCompactNumberInstance(new Locale("dz"), NumberFormat.Style.LONG);
+
+    private static final NumberFormat FORMAT_EN_US_SHORT = NumberFormat
+            .getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
+
+    private static final NumberFormat FORMAT_EN_LONG = NumberFormat
+            .getCompactNumberInstance(new Locale("en"), NumberFormat.Style.LONG);
+
+    private static final NumberFormat FORMAT_HI_IN_LONG = NumberFormat
+            .getCompactNumberInstance(new Locale("hi", "IN"), NumberFormat.Style.LONG);
+
+    private static final NumberFormat FORMAT_JA_JP_SHORT = NumberFormat
+            .getCompactNumberInstance(Locale.JAPAN, NumberFormat.Style.SHORT);
+
+    private static final NumberFormat FORMAT_IT_SHORT = NumberFormat
+            .getCompactNumberInstance(new Locale("it"), NumberFormat.Style.SHORT);
+
+    private static final NumberFormat FORMAT_CA_LONG = NumberFormat
+            .getCompactNumberInstance(new Locale("ca"), NumberFormat.Style.LONG);
+
+    private static final NumberFormat FORMAT_AS_LONG = NumberFormat
+            .getCompactNumberInstance(new Locale("as"), NumberFormat.Style.LONG);
+
+    private static final NumberFormat FORMAT_BRX_SHORT = NumberFormat
+            .getCompactNumberInstance(new Locale("brx"), NumberFormat.Style.SHORT);
+
+    private static final NumberFormat FORMAT_SW_LONG = NumberFormat
+            .getCompactNumberInstance(new Locale("sw"), NumberFormat.Style.LONG);
+
+    private static final NumberFormat FORMAT_SE_SHORT = NumberFormat
+            .getCompactNumberInstance(new Locale("se"), NumberFormat.Style.SHORT);
+
+    @DataProvider(name = "format")
+    Object[][] compactFormatData() {
+        return new Object[][]{
+            // compact number format instance, number to format, formatted output
+            {FORMAT_DZ_LONG, 1000.09, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55"
+                + "\u0FB2\u0F42 \u0F21"},
+            {FORMAT_DZ_LONG, -999.99, "-\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55"
+                + "\u0FB2\u0F42 \u0F21"},
+            {FORMAT_DZ_LONG, -0.0, "-\u0F20"},
+            {FORMAT_DZ_LONG, 3000L, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55"
+                + "\u0FB2\u0F42 \u0F23"},
+            {FORMAT_DZ_LONG, new BigInteger("12345678901234567890"), "\u0F51"
+                + "\u0F74\u0F44\u0F0B\u0F55\u0FB1\u0F74\u0F62\u0F0B\u0F66"
+                + "\u0F0B\u0F61\u0F0B \u0F21\u0F22\u0F23\u0F24\u0F25\u0F27"},
+            // negative
+            {FORMAT_DZ_LONG, new BigInteger("-12345678901234567890"), "-\u0F51"
+                + "\u0F74\u0F44\u0F0B\u0F55\u0FB1\u0F74\u0F62\u0F0B\u0F66"
+                + "\u0F0B\u0F61\u0F0B \u0F21\u0F22\u0F23\u0F24\u0F25\u0F27"},
+            {FORMAT_DZ_LONG, new BigDecimal("12345678901234567890.89"), "\u0F51"
+                + "\u0F74\u0F44\u0F0B\u0F55\u0FB1\u0F74\u0F62\u0F0B\u0F66"
+                + "\u0F0B\u0F61\u0F0B \u0F21\u0F22\u0F23\u0F24\u0F25\u0F27"},
+            {FORMAT_DZ_LONG, new BigDecimal("-12345678901234567890.89"), "-\u0F51"
+                + "\u0F74\u0F44\u0F0B\u0F55\u0FB1\u0F74\u0F62\u0F0B\u0F66"
+                + "\u0F0B\u0F61\u0F0B \u0F21\u0F22\u0F23\u0F24\u0F25\u0F27"},
+            // Zeros
+            {FORMAT_EN_US_SHORT, 0, "0"},
+            {FORMAT_EN_US_SHORT, 0.0, "0"},
+            {FORMAT_EN_US_SHORT, -0.0, "-0"},
+            // Less than 1000 no suffix
+            {FORMAT_EN_US_SHORT, 499, "499"},
+            // Boundary number
+            {FORMAT_EN_US_SHORT, 1000.0, "1K"},
+            // Long
+            {FORMAT_EN_US_SHORT, 3000L, "3K"},
+            {FORMAT_EN_US_SHORT, 30000L, "30K"},
+            {FORMAT_EN_US_SHORT, 300000L, "300K"},
+            {FORMAT_EN_US_SHORT, 3000000L, "3M"},
+            {FORMAT_EN_US_SHORT, 30000000L, "30M"},
+            {FORMAT_EN_US_SHORT, 300000000L, "300M"},
+            {FORMAT_EN_US_SHORT, 3000000000L, "3B"},
+            {FORMAT_EN_US_SHORT, 30000000000L, "30B"},
+            {FORMAT_EN_US_SHORT, 300000000000L, "300B"},
+            {FORMAT_EN_US_SHORT, 3000000000000L, "3T"},
+            {FORMAT_EN_US_SHORT, 30000000000000L, "30T"},
+            {FORMAT_EN_US_SHORT, 300000000000000L, "300T"},
+            {FORMAT_EN_US_SHORT, 3000000000000000L, "3000T"},
+            // Negatives
+            {FORMAT_EN_US_SHORT, -3000L, "-3K"},
+            {FORMAT_EN_US_SHORT, -30000L, "-30K"},
+            {FORMAT_EN_US_SHORT, -300000L, "-300K"},
+            {FORMAT_EN_US_SHORT, -3000000L, "-3M"},
+            {FORMAT_EN_US_SHORT, -30000000L, "-30M"},
+            {FORMAT_EN_US_SHORT, -300000000L, "-300M"},
+            {FORMAT_EN_US_SHORT, -3000000000L, "-3B"},
+            {FORMAT_EN_US_SHORT, -30000000000L, "-30B"},
+            {FORMAT_EN_US_SHORT, -300000000000L, "-300B"},
+            {FORMAT_EN_US_SHORT, -3000000000000L, "-3T"},
+            {FORMAT_EN_US_SHORT, -30000000000000L, "-30T"},
+            {FORMAT_EN_US_SHORT, -300000000000000L, "-300T"},
+            {FORMAT_EN_US_SHORT, -3000000000000000L, "-3000T"},
+            // Double
+            {FORMAT_EN_US_SHORT, 3000.0, "3K"},
+            {FORMAT_EN_US_SHORT, 30000.0, "30K"},
+            {FORMAT_EN_US_SHORT, 300000.0, "300K"},
+            {FORMAT_EN_US_SHORT, 3000000.0, "3M"},
+            {FORMAT_EN_US_SHORT, 30000000.0, "30M"},
+            {FORMAT_EN_US_SHORT, 300000000.0, "300M"},
+            {FORMAT_EN_US_SHORT, 3000000000.0, "3B"},
+            {FORMAT_EN_US_SHORT, 30000000000.0, "30B"},
+            {FORMAT_EN_US_SHORT, 300000000000.0, "300B"},
+            {FORMAT_EN_US_SHORT, 3000000000000.0, "3T"},
+            {FORMAT_EN_US_SHORT, 30000000000000.0, "30T"},
+            {FORMAT_EN_US_SHORT, 300000000000000.0, "300T"},
+            {FORMAT_EN_US_SHORT, 3000000000000000.0, "3000T"},
+            // Negatives
+            {FORMAT_EN_US_SHORT, -3000.0, "-3K"},
+            {FORMAT_EN_US_SHORT, -30000.0, "-30K"},
+            {FORMAT_EN_US_SHORT, -300000.0, "-300K"},
+            {FORMAT_EN_US_SHORT, -3000000.0, "-3M"},
+            {FORMAT_EN_US_SHORT, -30000000.0, "-30M"},
+            {FORMAT_EN_US_SHORT, -300000000.0, "-300M"},
+            {FORMAT_EN_US_SHORT, -3000000000.0, "-3B"},
+            {FORMAT_EN_US_SHORT, -30000000000.0, "-30B"},
+            {FORMAT_EN_US_SHORT, -300000000000.0, "-300B"},
+            {FORMAT_EN_US_SHORT, -3000000000000.0, "-3T"},
+            {FORMAT_EN_US_SHORT, -30000000000000.0, "-30T"},
+            {FORMAT_EN_US_SHORT, -300000000000000.0, "-300T"},
+            {FORMAT_EN_US_SHORT, -3000000000000000.0, "-3000T"},
+            // BigInteger
+            {FORMAT_EN_US_SHORT, new BigInteger("12345678901234567890"),
+                "12345679T"},
+            {FORMAT_EN_US_SHORT, new BigInteger("-12345678901234567890"),
+                "-12345679T"},
+            //BigDecimal
+            {FORMAT_EN_US_SHORT, new BigDecimal("12345678901234567890.89"),
+                "12345679T"},
+            {FORMAT_EN_US_SHORT, new BigDecimal("-12345678901234567890.89"),
+                "-12345679T"},
+            {FORMAT_EN_US_SHORT, new BigDecimal("12345678901234567890123466767.89"),
+                "12345678901234568T"},
+            {FORMAT_EN_US_SHORT, new BigDecimal(
+                "12345678901234567890878732267863209.89"),
+                "12345678901234567890879T"},
+            // number as exponent
+            {FORMAT_EN_US_SHORT, 9.78313E+3, "10K"},
+            // Less than 1000 no suffix
+            {FORMAT_EN_LONG, 999, "999"},
+            // Round the value and then format
+            {FORMAT_EN_LONG, 999.99, "1 thousand"},
+            // 10 thousand
+            {FORMAT_EN_LONG, 99000, "99 thousand"},
+            // Long path
+            {FORMAT_EN_LONG, 330000, "330 thousand"},
+            // Double path
+            {FORMAT_EN_LONG, 3000.90, "3 thousand"},
+            // BigInteger path
+            {FORMAT_EN_LONG, new BigInteger("12345678901234567890"),
+                "12345679 trillion"},
+            //BigDecimal path
+            {FORMAT_EN_LONG, new BigDecimal("12345678901234567890.89"),
+                "12345679 trillion"},
+            // Less than 1000 no suffix
+            {FORMAT_HI_IN_LONG, -999, "-999"},
+            // Round the value with 0 fraction digits and format it
+            {FORMAT_HI_IN_LONG, -999.99, "-1 \u0939\u091C\u093C\u093E\u0930"},
+            // 10 thousand
+            {FORMAT_HI_IN_LONG, 99000, "99 \u0939\u091C\u093C\u093E\u0930"},
+            // Long path
+            {FORMAT_HI_IN_LONG, 330000, "3 \u0932\u093E\u0916"},
+            // Double path
+            {FORMAT_HI_IN_LONG, 3000.90, "3 \u0939\u091C\u093C\u093E\u0930"},
+            // BigInteger path
+            {FORMAT_HI_IN_LONG, new BigInteger("12345678901234567890"),
+                "123456789 \u0916\u0930\u092C"},
+            // BigDecimal path
+            {FORMAT_HI_IN_LONG, new BigDecimal("12345678901234567890.89"),
+                "123456789 \u0916\u0930\u092C"},
+            // 1000 does not have any suffix in "ja" locale
+            {FORMAT_JA_JP_SHORT, -999.99, "-1,000"},
+            // 0-9999 does not have any suffix
+            {FORMAT_JA_JP_SHORT, 9999, "9,999"},
+            // 99000/10000 => 9.9\u4E07 rounded to 10\u4E07
+            {FORMAT_JA_JP_SHORT, 99000, "10\u4E07"},
+            // Negative
+            {FORMAT_JA_JP_SHORT, -99000, "-10\u4E07"},
+            // Long path
+            {FORMAT_JA_JP_SHORT, 330000, "33\u4E07"},
+            // Double path
+            {FORMAT_JA_JP_SHORT, 3000.90, "3,001"},
+            // BigInteger path
+            {FORMAT_JA_JP_SHORT, new BigInteger("12345678901234567890"),
+                "12345679\u5146"},
+            // BigDecimal path
+            {FORMAT_JA_JP_SHORT, new BigDecimal("12345678901234567890.89"),
+                "12345679\u5146"},
+            // less than 1000 no suffix
+            {FORMAT_IT_SHORT, 499, "499"},
+            // Boundary number
+            {FORMAT_IT_SHORT, 1000, "1.000"},
+            // Long path
+            {FORMAT_IT_SHORT, 3000000L, "3\u00a0Mln"},
+            // Double path
+            {FORMAT_IT_SHORT, 3000000.0, "3\u00a0Mln"},
+            // BigInteger path
+            {FORMAT_IT_SHORT, new BigInteger("12345678901234567890"),
+                "12345679\u00a0Bln"},
+            // BigDecimal path
+            {FORMAT_IT_SHORT, new BigDecimal("12345678901234567890.89"),
+                "12345679\u00a0Bln"},
+            {FORMAT_CA_LONG, 999, "999"},
+            {FORMAT_CA_LONG, 999.99, "1 miler"},
+            {FORMAT_CA_LONG, 99000, "99 milers"},
+            {FORMAT_CA_LONG, 330000, "330 milers"},
+            {FORMAT_CA_LONG, 3000.90, "3 miler"},
+            {FORMAT_CA_LONG, 1000000, "1 mili\u00f3"},
+            {FORMAT_CA_LONG, new BigInteger("12345678901234567890"),
+                "12345679 bilions"},
+            {FORMAT_CA_LONG, new BigDecimal("12345678901234567890.89"),
+                "12345679 bilions"},
+            {FORMAT_AS_LONG, 5000.0, "\u09eb \u09b9\u09be\u099c\u09be\u09f0"},
+            {FORMAT_AS_LONG, 50000.0, "\u09eb\u09e6 \u09b9\u09be\u099c\u09be\u09f0"},
+            {FORMAT_AS_LONG, 500000.0, "\u09eb \u09b2\u09be\u0996"},
+            {FORMAT_AS_LONG, 5000000.0, "\u09eb \u09a8\u09bf\u09af\u09c1\u09a4"},
+            {FORMAT_AS_LONG, 50000000.0, "\u09eb\u09e6 \u09a8\u09bf\u09af\u09c1\u09a4"},
+            {FORMAT_AS_LONG, 500000000.0, "\u09eb\u09e6\u09e6 \u09a8\u09bf\u09af\u09c1\u09a4"},
+            {FORMAT_AS_LONG, 5000000000.0, "\u09eb \u09b6\u09a4 \u0995\u09cb\u099f\u09bf"},
+            {FORMAT_AS_LONG, 50000000000.0, "\u09eb\u09e6 \u09b6\u09a4 \u0995\u09cb\u099f\u09bf"},
+            {FORMAT_AS_LONG, 500000000000.0, "\u09eb\u09e6\u09e6 \u09b6\u09a4 \u0995\u09cb\u099f\u09bf"},
+            {FORMAT_AS_LONG, 5000000000000.0, "\u09eb \u09b6\u09a4 \u09aa\u09f0\u09be\u09f0\u09cd\u09a6\u09cd\u09a7"},
+            {FORMAT_AS_LONG, 50000000000000.0, "\u09eb\u09e6 \u09b6\u09a4 \u09aa\u09f0\u09be\u09f0\u09cd\u09a6\u09cd\u09a7"},
+            {FORMAT_AS_LONG, 500000000000000.0, "\u09eb\u09e6\u09e6 \u09b6\u09a4 \u09aa\u09f0\u09be\u09f0\u09cd\u09a6\u09cd\u09a7"},
+            {FORMAT_AS_LONG, 5000000000000000.0, "\u09eb\u09e6\u09e6\u09e6 \u09b6\u09a4 \u09aa\u09f0\u09be\u09f0\u09cd\u09a6\u09cd\u09a7"},
+            {FORMAT_AS_LONG, new BigInteger("12345678901234567890"),
+                "\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ef \u09b6\u09a4 \u09aa\u09f0\u09be\u09f0\u09cd\u09a6\u09cd\u09a7"},
+            {FORMAT_AS_LONG, new BigDecimal("12345678901234567890123466767.89"),
+                "\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ee \u09b6\u09a4 \u09aa\u09f0\u09be\u09f0\u09cd\u09a6\u09cd\u09a7"},
+            {FORMAT_BRX_SHORT, 999, "999"},
+            {FORMAT_BRX_SHORT, 999.99, "1K"},
+            {FORMAT_BRX_SHORT, 99000, "99K"},
+            {FORMAT_BRX_SHORT, 330000, "330K"},
+            {FORMAT_BRX_SHORT, 3000.90, "3K"},
+            {FORMAT_BRX_SHORT, 1000000, "1M"},
+            {FORMAT_BRX_SHORT, new BigInteger("12345678901234567890"),
+                    "12345679T"},
+            {FORMAT_BRX_SHORT, new BigDecimal("12345678901234567890.89"),
+                    "12345679T"},
+            // Less than 1000 no suffix
+            {FORMAT_SW_LONG, 499, "499"},
+            // Boundary number
+            {FORMAT_SW_LONG, 1000, "elfu 1"},
+            // Long path
+            {FORMAT_SW_LONG, 3000000L, "milioni 3"},
+            // Long path, negative
+            {FORMAT_SW_LONG, -3000000L, "milioni -3"},
+            // Double path
+            {FORMAT_SW_LONG, 3000000.0, "milioni 3"},
+            // Double path, negative
+            {FORMAT_SW_LONG, -3000000.0, "milioni -3"},
+            // BigInteger path
+            {FORMAT_SW_LONG, new BigInteger("12345678901234567890"),
+                "trilioni 12345679"},
+            // BigDecimal path
+            {FORMAT_SW_LONG, new BigDecimal("12345678901234567890.89"),
+                "trilioni 12345679"},
+            // Positives
+            // No compact form
+            {FORMAT_SE_SHORT, 999, "999"},
+            // Long
+            {FORMAT_SE_SHORT, 8000000L, "8\u00a0mn"},
+            // Double
+            {FORMAT_SE_SHORT, 8000.98, "8\u00a0dt"},
+            // Big integer
+            {FORMAT_SE_SHORT, new BigInteger("12345678901234567890"), "12345679\u00a0bn"},
+            // Big decimal
+            {FORMAT_SE_SHORT, new BigDecimal("12345678901234567890.98"), "12345679\u00a0bn"},
+            // Negatives
+            // No compact form
+            {FORMAT_SE_SHORT, -999, "\u2212999"},
+            // Long
+            {FORMAT_SE_SHORT, -8000000L, "\u22128\u00a0mn"},
+            // Double
+            {FORMAT_SE_SHORT, -8000.98, "\u22128\u00a0dt"},
+            // BigInteger
+            {FORMAT_SE_SHORT, new BigInteger("-12345678901234567890"), "\u221212345679\u00a0bn"},
+            // BigDecimal
+            {FORMAT_SE_SHORT, new BigDecimal("-12345678901234567890.98"), "\u221212345679\u00a0bn"},};
+    }
+
+    @DataProvider(name = "parse")
+    Object[][] compactParseData() {
+        return new Object[][]{
+                // compact number format instance, string to parse, parsed number, return type
+                {FORMAT_DZ_LONG, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2"
+                        + "\u0F42 \u0F21", 1000L, Long.class},
+                {FORMAT_DZ_LONG, "-\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2"
+                        + "\u0F42 \u0F23", -3000L, Long.class},
+                {FORMAT_DZ_LONG, "\u0F51\u0F74\u0F44\u0F0B\u0F55\u0FB1\u0F74\u0F62"
+                        + "\u0F0B\u0F66\u0F0B\u0F61\u0F0B \u0F21"
+                        + "\u0F22\u0F23\u0F24\u0F25\u0F27", 1.23457E19, Double.class},
+                {FORMAT_DZ_LONG, "-\u0F51\u0F74\u0F44\u0F0B\u0F55\u0FB1\u0F74\u0F62"
+                        + "\u0F0B\u0F66\u0F0B\u0F61\u0F0B \u0F21"
+                        + "\u0F22\u0F23\u0F24\u0F25\u0F27", -1.23457E19, Double.class},
+                {FORMAT_EN_US_SHORT, "-0.0", -0.0, Double.class},
+                {FORMAT_EN_US_SHORT, "-0", -0.0, Double.class},
+                {FORMAT_EN_US_SHORT, "0", 0L, Long.class},
+                {FORMAT_EN_US_SHORT, "499", 499L, Long.class},
+                {FORMAT_EN_US_SHORT, "-499", -499L, Long.class},
+                {FORMAT_EN_US_SHORT, "499.89", 499.89, Double.class},
+                {FORMAT_EN_US_SHORT, "-499.89", -499.89, Double.class},
+                {FORMAT_EN_US_SHORT, "1K", 1000L, Long.class},
+                {FORMAT_EN_US_SHORT, "-1K", -1000L, Long.class},
+                {FORMAT_EN_US_SHORT, "3K", 3000L, Long.class},
+                {FORMAT_EN_US_SHORT, "17K", 17000L, Long.class},
+                {FORMAT_EN_US_SHORT, "-17K", -17000L, Long.class},
+                {FORMAT_EN_US_SHORT, "-3K", -3000L, Long.class},
+                {FORMAT_EN_US_SHORT, "12345678901234567890", 1.2345678901234567E19, Double.class},
+                {FORMAT_EN_US_SHORT, "12345679T", 1.2345679E19, Double.class},
+                {FORMAT_EN_US_SHORT, "-12345679T", -1.2345679E19, Double.class},
+                {FORMAT_EN_US_SHORT, "599.01K", 599010L, Long.class},
+                {FORMAT_EN_US_SHORT, "-599.01K", -599010L, Long.class},
+                {FORMAT_EN_US_SHORT, "599444444.90T", 5.994444449E20, Double.class},
+                {FORMAT_EN_US_SHORT, "-599444444.90T", -5.994444449E20, Double.class},
+                {FORMAT_EN_US_SHORT, "123456789012345.5678K", 123456789012345568L, Long.class},
+                {FORMAT_EN_US_SHORT, "17.000K", 17000L, Long.class},
+                {FORMAT_EN_US_SHORT, "123.56678K", 123566.78000, Double.class},
+                {FORMAT_EN_US_SHORT, "-123.56678K", -123566.78000, Double.class},
+                {FORMAT_EN_LONG, "999", 999L, Long.class},
+                {FORMAT_EN_LONG, "1 thousand", 1000L, Long.class},
+                {FORMAT_EN_LONG, "3 thousand", 3000L, Long.class},
+                {FORMAT_EN_LONG, "12345679 trillion", 1.2345679E19, Double.class},
+                {FORMAT_HI_IN_LONG, "999", 999L, Long.class},
+                {FORMAT_HI_IN_LONG, "-999", -999L, Long.class},
+                {FORMAT_HI_IN_LONG, "1 \u0939\u091C\u093C\u093E\u0930", 1000L, Long.class},
+                {FORMAT_HI_IN_LONG, "-1 \u0939\u091C\u093C\u093E\u0930", -1000L, Long.class},
+                {FORMAT_HI_IN_LONG, "3 \u0939\u091C\u093C\u093E\u0930", 3000L, Long.class},
+                {FORMAT_HI_IN_LONG, "12345679 \u0916\u0930\u092C", 1234567900000000000L, Long.class},
+                {FORMAT_HI_IN_LONG, "-12345679 \u0916\u0930\u092C", -1234567900000000000L, Long.class},
+                {FORMAT_JA_JP_SHORT, "-99", -99L, Long.class},
+                {FORMAT_JA_JP_SHORT, "1\u4E07", 10000L, Long.class},
+                {FORMAT_JA_JP_SHORT, "30\u4E07", 300000L, Long.class},
+                {FORMAT_JA_JP_SHORT, "-30\u4E07", -300000L, Long.class},
+                {FORMAT_JA_JP_SHORT, "12345679\u5146", 1.2345679E19, Double.class},
+                {FORMAT_JA_JP_SHORT, "-12345679\u5146", -1.2345679E19, Double.class},
+                {FORMAT_IT_SHORT, "-99", -99L, Long.class},
+                {FORMAT_IT_SHORT, "1\u00a0Mln", 1000000L, Long.class},
+                {FORMAT_IT_SHORT, "30\u00a0Mln", 30000000L, Long.class},
+                {FORMAT_IT_SHORT, "-30\u00a0Mln", -30000000L, Long.class},
+                {FORMAT_IT_SHORT, "12345679\u00a0Bln", 1.2345679E19, Double.class},
+                {FORMAT_IT_SHORT, "-12345679\u00a0Bln", -1.2345679E19, Double.class},
+                {FORMAT_SW_LONG, "-0.0", -0.0, Double.class},
+                {FORMAT_SW_LONG, "499", 499L, Long.class},
+                {FORMAT_SW_LONG, "elfu 1", 1000L, Long.class},
+                {FORMAT_SW_LONG, "elfu 3", 3000L, Long.class},
+                {FORMAT_SW_LONG, "elfu 17", 17000L, Long.class},
+                {FORMAT_SW_LONG, "elfu -3", -3000L, Long.class},
+                {FORMAT_SW_LONG, "499", 499L, Long.class},
+                {FORMAT_SW_LONG, "-499", -499L, Long.class},
+                {FORMAT_SW_LONG, "elfu 1", 1000L, Long.class},
+                {FORMAT_SW_LONG, "elfu 3", 3000L, Long.class},
+                {FORMAT_SW_LONG, "elfu -3", -3000L, Long.class},
+                {FORMAT_SW_LONG, "elfu 17", 17000L, Long.class},
+                {FORMAT_SW_LONG, "trilioni 12345679", 1.2345679E19, Double.class},
+                {FORMAT_SW_LONG, "trilioni -12345679", -1.2345679E19, Double.class},
+                {FORMAT_SW_LONG, "elfu 599.01", 599010L, Long.class},
+                {FORMAT_SW_LONG, "elfu -599.01", -599010L, Long.class},
+                {FORMAT_SE_SHORT, "999", 999L, Long.class},
+                {FORMAT_SE_SHORT, "8\u00a0mn", 8000000L, Long.class},
+                {FORMAT_SE_SHORT, "8\u00a0dt", 8000L, Long.class},
+                {FORMAT_SE_SHORT, "12345679\u00a0bn", 1.2345679E19, Double.class},
+                {FORMAT_SE_SHORT, "12345679,89\u00a0bn", 1.2345679890000001E19, Double.class},
+                {FORMAT_SE_SHORT, "\u2212999", -999L, Long.class},
+                {FORMAT_SE_SHORT, "\u22128\u00a0mn", -8000000L, Long.class},
+                {FORMAT_SE_SHORT, "\u22128\u00a0dt", -8000L, Long.class},
+                {FORMAT_SE_SHORT, "\u221212345679\u00a0bn", -1.2345679E19, Double.class},
+                {FORMAT_SE_SHORT, "\u221212345679,89\u00a0bn", -1.2345679890000001E19, Double.class},};
+    }
+
+    @DataProvider(name = "exceptionParse")
+    Object[][] exceptionParseData() {
+        return new Object[][]{
+            // compact number instance, string to parse, null (no o/p; must throws exception)
+            // no number
+            {FORMAT_DZ_LONG, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2"
+                + "\u0F42", null},
+            // Invalid prefix
+            {FORMAT_DZ_LONG, "-\u0F66\u0F9F\u0F7C\u0F44,\u0F0B\u0F55\u0FB2"
+                + "\u0F42 \u0F23", null},
+            // Invalid prefix for en_US
+            {FORMAT_EN_US_SHORT, "K12,347", null},
+            // Invalid prefix for ja_JP
+            {FORMAT_JA_JP_SHORT, "\u4E071", null},
+            // Localized minus sign should be used
+            {FORMAT_SE_SHORT, "-8\u00a0mn", null},};
+    }
+
+    @DataProvider(name = "invalidParse")
+    Object[][] invalidParseData() {
+        return new Object[][]{
+            // compact number instance, string to parse, parsed number
+            // Prefix and suffix do not match
+            {FORMAT_DZ_LONG, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2"
+                + "\u0F42 \u0F21 KM", 1000L},
+            // Exponents are unparseable
+            {FORMAT_EN_US_SHORT, "-1.05E4K", -1.05},
+            // Default instance does not allow grouping
+            {FORMAT_EN_US_SHORT, "12,347", 12L},
+            // Take partial suffix "K" as 1000 for en_US_SHORT patterns
+            {FORMAT_EN_US_SHORT, "12KM", 12000L},
+            // Invalid suffix
+            {FORMAT_HI_IN_LONG, "-1 \u00a0\u0915.", -1L},};
+    }
+
+    @DataProvider(name = "fieldPosition")
+    Object[][] formatFieldPositionData() {
+        return new Object[][]{
+            //compact number instance, number to format, field, start position, end position, formatted string
+            {FORMAT_DZ_LONG, -3500, NumberFormat.Field.SIGN, 0, 1, "-\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2\u0F42 \u0F24"},
+            {FORMAT_DZ_LONG, 3500, NumberFormat.Field.INTEGER, 9, 10, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2\u0F42 \u0F24"},
+            {FORMAT_DZ_LONG, -3500, NumberFormat.Field.INTEGER, 10, 11, "-\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2\u0F42 \u0F24"},
+            {FORMAT_DZ_LONG, 999, NumberFormat.Field.INTEGER, 0, 3, "\u0F29\u0F29\u0F29"},
+            {FORMAT_DZ_LONG, -999, NumberFormat.Field.INTEGER, 1, 4, "-\u0F29\u0F29\u0F29"},
+            {FORMAT_DZ_LONG, 3500, NumberFormat.Field.PREFIX, 0, 9, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2\u0F42 \u0F24"},
+            {FORMAT_DZ_LONG, -3500, NumberFormat.Field.PREFIX, 0, 10, "-\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2\u0F42 \u0F24"},
+            {FORMAT_DZ_LONG, 999, NumberFormat.Field.PREFIX, 0, 0, "\u0F29\u0F29\u0F29"},
+            {FORMAT_EN_US_SHORT, -3500, NumberFormat.Field.SIGN, 0, 1, "-4K"},
+            {FORMAT_EN_US_SHORT, 3500, NumberFormat.Field.INTEGER, 0, 1, "4K"},
+            {FORMAT_EN_US_SHORT, 14900000067L, NumberFormat.Field.INTEGER, 0, 2, "15B"},
+            {FORMAT_EN_US_SHORT, -1000, NumberFormat.Field.PREFIX, 0, 1, "-1K"},
+            {FORMAT_EN_US_SHORT, 3500, NumberFormat.Field.SUFFIX, 1, 2, "4K"},
+            {FORMAT_EN_US_SHORT, 14900000067L, NumberFormat.Field.SUFFIX, 2, 3, "15B"},
+            {FORMAT_EN_LONG, 3500, NumberFormat.Field.INTEGER, 0, 1, "4 thousand"},
+            {FORMAT_EN_LONG, 14900000067L, NumberFormat.Field.INTEGER, 0, 2, "15 billion"},
+            {FORMAT_EN_LONG, 3500, NumberFormat.Field.SUFFIX, 1, 10, "4 thousand"},
+            {FORMAT_EN_LONG, 14900000067L, NumberFormat.Field.SUFFIX, 2, 10, "15 billion"},
+            {FORMAT_JA_JP_SHORT, 14900000067L, NumberFormat.Field.INTEGER, 0, 3, "149\u5104"},
+            {FORMAT_JA_JP_SHORT, -999.99, NumberFormat.Field.INTEGER, 1, 6, "-1,000"},
+            {FORMAT_JA_JP_SHORT, 14900000067L, NumberFormat.Field.SUFFIX, 3, 4, "149\u5104"},
+            {FORMAT_JA_JP_SHORT, -999.99, NumberFormat.Field.SUFFIX, 0, 0, "-1,000"},
+            {FORMAT_JA_JP_SHORT, -999.99, NumberFormat.Field.SIGN, 0, 1, "-1,000"},
+            {FORMAT_HI_IN_LONG, -14900000067L, NumberFormat.Field.SIGN, 0, 1,
+                "-15 \u0905\u0930\u092C"},
+            {FORMAT_HI_IN_LONG, 3500, NumberFormat.Field.INTEGER, 0, 1,
+                "4 \u0939\u091C\u093C\u093E\u0930"},
+            {FORMAT_HI_IN_LONG, 14900000067L, NumberFormat.Field.INTEGER, 0, 2,
+                "15 \u0905\u0930\u092C"},
+            {FORMAT_HI_IN_LONG, 3500, NumberFormat.Field.SUFFIX, 1, 7,
+                "4 \u0939\u091C\u093C\u093E\u0930"},
+            {FORMAT_HI_IN_LONG, 14900000067L, NumberFormat.Field.SUFFIX, 2, 6,
+                "15 \u0905\u0930\u092C"},
+            {FORMAT_SE_SHORT, 8000000L, NumberFormat.Field.SUFFIX, 1, 4, "8\u00a0mn"},
+            {FORMAT_SE_SHORT, 8000.98, NumberFormat.Field.SUFFIX, 1, 4, "8\u00a0dt"},
+            {FORMAT_SE_SHORT, new BigInteger("12345678901234567890"), NumberFormat.Field.SUFFIX, 8, 11, "12345679\u00a0bn"},
+            {FORMAT_SE_SHORT, new BigDecimal("12345678901234567890.98"), NumberFormat.Field.SUFFIX, 8, 11, "12345679\u00a0bn"},
+            {FORMAT_SE_SHORT, -8000000L, NumberFormat.Field.INTEGER, 1, 2, "\u22128\u00a0mn"},
+            {FORMAT_SE_SHORT, -8000.98, NumberFormat.Field.SIGN, 0, 1, "\u22128\u00a0dt"},
+            {FORMAT_SE_SHORT, new BigDecimal("-48982865901234567890.98"), NumberFormat.Field.INTEGER, 1, 9, "\u221248982866\u00a0bn"},};
+    }
+
+    @DataProvider(name = "varParsePosition")
+    Object[][] varParsePosition() {
+        return new Object[][]{
+                // compact number instance, parse string, parsed number,
+                // start position, end position, error index
+                {FORMAT_DZ_LONG, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2"
+                        + "\u0F42 \u0F21 KM", 1000L, 0, 10, -1},
+                // Invalid prefix returns null
+                {FORMAT_DZ_LONG, "Number is: -\u0F66\u0F9F\u0F7C\u0F44,\u0F0B\u0F55\u0FB2"
+                        + "\u0F42 \u0F23", null, 11, 11, 11},
+                // Returns null
+                {FORMAT_DZ_LONG, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2"
+                        + "\u0F42", null, 0, 0, 0},
+                {FORMAT_EN_US_SHORT, "Exponent: -1.05E4K", -1.05, 10, 15, -1},
+                // Default instance does not allow grouping
+                {FORMAT_EN_US_SHORT, "12,347", 12L, 0, 2, -1},
+                // Invalid suffix "KM" for en_US_SHORT patterns
+                {FORMAT_EN_US_SHORT, "12KM", 12000L, 0, 3, -1},
+                // Invalid suffix
+                {FORMAT_HI_IN_LONG, "-1 \u00a0\u0915.", -1L, 0, 2, -1},
+                {FORMAT_EN_LONG, "Number is: 12345679 trillion",
+                        1.2345679E19, 11, 28, -1},
+                {FORMAT_EN_LONG, "Number is: -12345679 trillion",
+                        -1.2345679E19, 11, 29, -1},
+                {FORMAT_EN_LONG, "parse 12 thousand and four", 12000L, 6, 17, -1},};
+    }
+
+    @Test
+    public void testInstanceCreation() {
+        Stream.of(NumberFormat.getAvailableLocales()).forEach(l -> NumberFormat
+                .getCompactNumberInstance(l, NumberFormat.Style.SHORT).format(10000));
+        Stream.of(NumberFormat.getAvailableLocales()).forEach(l -> NumberFormat
+                .getCompactNumberInstance(l, NumberFormat.Style.LONG).format(10000));
+    }
+
+    @Test(dataProvider = "format")
+    public void testFormat(NumberFormat cnf, Object number,
+            String expected) {
+        CompactFormatAndParseHelper.testFormat(cnf, number, expected);
+    }
+
+    @Test(dataProvider = "parse")
+    public void testParse(NumberFormat cnf, String parseString,
+            Number expected, Class<? extends Number> returnType) throws ParseException {
+        CompactFormatAndParseHelper.testParse(cnf, parseString, expected, null, returnType);
+    }
+
+    @Test(dataProvider = "parse")
+    public void testParsePosition(NumberFormat cnf, String parseString,
+            Number expected, Class<? extends Number> returnType) throws ParseException {
+        ParsePosition pos = new ParsePosition(0);
+        CompactFormatAndParseHelper.testParse(cnf, parseString, expected, pos, returnType);
+        assertEquals(pos.getIndex(), parseString.length());
+        assertEquals(pos.getErrorIndex(), -1);
+    }
+
+    @Test(dataProvider = "varParsePosition")
+    public void testVarParsePosition(NumberFormat cnf, String parseString,
+            Number expected, int startPosition, int indexPosition,
+            int errPosition) throws ParseException {
+        ParsePosition pos = new ParsePosition(startPosition);
+        CompactFormatAndParseHelper.testParse(cnf, parseString, expected, pos, null);
+        assertEquals(pos.getIndex(), indexPosition);
+        assertEquals(pos.getErrorIndex(), errPosition);
+    }
+
+    @Test(dataProvider = "exceptionParse", expectedExceptions = ParseException.class)
+    public void throwsParseException(NumberFormat cnf, String parseString,
+            Number expected) throws ParseException {
+        CompactFormatAndParseHelper.testParse(cnf, parseString, expected, null, null);
+    }
+
+    @Test(dataProvider = "invalidParse")
+    public void testInvalidParse(NumberFormat cnf, String parseString,
+            Number expected) throws ParseException {
+        CompactFormatAndParseHelper.testParse(cnf, parseString, expected, null, null);
+    }
+
+    @Test(dataProvider = "fieldPosition")
+    public void testFormatWithFieldPosition(NumberFormat nf,
+            Object number, Format.Field field, int posStartExpected,
+            int posEndExpected, String expected) {
+        FieldPosition pos = new FieldPosition(field);
+        StringBuffer buf = new StringBuffer();
+        StringBuffer result = nf.format(number, buf, pos);
+        assertEquals(result.toString(), expected, "Incorrect formatting of the number '"
+                + number + "'");
+        assertEquals(pos.getBeginIndex(), posStartExpected, "Incorrect start position"
+                + " while formatting the number '" + number + "', for the field " + field);
+        assertEquals(pos.getEndIndex(), posEndExpected, "Incorrect end position"
+                + " while formatting the number '" + number + "', for the field " + field);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/TestCompactPatternsValidity.java	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,154 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @summary Checks the validity of compact number patterns specified through
+ *          CompactNumberFormat constructor
+ * @run testng/othervm TestCompactPatternsValidity
+ */
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.CompactNumberFormat;
+import java.text.DecimalFormatSymbols;
+import java.text.ParseException;
+import java.util.List;
+import java.util.Locale;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+public class TestCompactPatternsValidity {
+
+    // Max range 10^4
+    private static final String[] COMPACT_PATTERN1 = new String[]{"0", "0", "0", "0K", "00K"};
+    // Quoted special character '.' as prefix
+    private static final String[] COMPACT_PATTERN2 = new String[]{"0", "'.'K0"};
+    // Quoted special character '.' as suffix
+    private static final String[] COMPACT_PATTERN3 = new String[]{"0", "0", "0", "0K", "00K'.'"};
+    // Containing both prefix and suffix
+    private static final String[] COMPACT_PATTERN4 = new String[]{"", "", "H0H", "0K", "00K", "H0G"};
+    // Differing while specifying prefix and suffix
+    private static final String[] COMPACT_PATTERN5 = new String[]{"", "", "", "0K", "K0"};
+    // Containing both prefix ('.') and suffix (K)
+    private static final String[] COMPACT_PATTERN6 = new String[]{"0", "", "", "'.'0K"};
+    // Quoted special character ',' as suffix
+    private static final String[] COMPACT_PATTERN7 = new String[]{"", "0", "0", "0K','"};
+    // Most commonly used type of compact patterns with 15 elements
+    private static final String[] COMPACT_PATTERN8 = new String[]{"", "", "", "0K", "00K", "000K", "0M",
+        "00M", "000M", "0B", "00B", "000B", "0T", "00T", "000T"};
+    // All empty or special patterns; checking the default formatting behaviour
+    private static final String[] COMPACT_PATTERN9 = new String[]{"", "", "", "0", "0", "", "", "", "", "", "", "", "", "", ""};
+    // Patterns beyond 10^19; divisors beyond long range
+    private static final String[] COMPACT_PATTERN10 = new String[]{"", "", "", "0K", "00K", "000K", "0M", "00M",
+        "000M", "0B", "00B", "000B", "0T", "00T", "000T", "0L", "00L", "000L", "0XL", "00XL"};
+    // Containing positive;negative subpatterns
+    private static final String[] COMPACT_PATTERN11 = new String[]{"", "", "", "elfu 0;elfu -0", "elfu 00;elfu -00",
+        "elfu 000;elfu -000", "milioni 0;milioni -0", "milioni 00;milioni -00", "milioni 000;milioni -000"};
+    // Containing both prefix and suffix and positive;negative subpatern
+    private static final String[] COMPACT_PATTERN12 = new String[]{"", "", "H0H;H-0H", "0K;0K-", "00K;-00K", "H0G;-H0G"};
+
+    @DataProvider(name = "invalidPatterns")
+    Object[][] invalidCompactPatterns() {
+        return new Object[][]{
+            // compact patterns
+            // Pattern containing unquoted special character '.'
+            {new String[]{"", "", "", "0K", "00K."}},
+            // Pattern containing invalid single quote
+            {new String[]{"", "", "", "0 'do", "00K"}},
+            {new String[]{"", "", "", "0K", "00 don't"}},
+            // A non empty pattern containing no 0s (min integer digits)
+            {new String[]{"K", "0K", "00K"}},
+            // 0s (min integer digits) exceeding for the range at index 3
+            {new String[]{"", "", "0K", "00000K"}},};
+    }
+
+    @DataProvider(name = "validPatternsFormat")
+    Object[][] validPatternsFormat() {
+        return new Object[][]{
+            // compact patterns, numbers, expected output
+            {COMPACT_PATTERN1, List.of(200, 1000, 3000, 500000), List.of("200", "1K", "3K", "500K")},
+            {COMPACT_PATTERN2, List.of(1, 20, 3000), List.of("1", ".K2", ".K300")},
+            {COMPACT_PATTERN3, List.of(100.99, 1000, 30000), List.of("101", "1K", "30K.")},
+            {COMPACT_PATTERN4, List.of(0.0, 500, -500, 30000, 5000000), List.of("0", "H5H", "-H5H", "30K", "H50G")},
+            {COMPACT_PATTERN5, List.of(100, 1000, 30000), List.of("100", "1K", "K3")},
+            {COMPACT_PATTERN6, List.of(20.99, 1000, 30000), List.of("21", ".1K", ".30K")},
+            {COMPACT_PATTERN7, List.of(100, 1000, new BigInteger("12345678987654321")), List.of("100", "1K,", "12345678987654K,")},
+            {COMPACT_PATTERN8, List.of(new BigInteger("223565686837667632"), new BigDecimal("12322456774334.89766"), 30000, 3456.78),
+                List.of("223566T", "12T", "30K", "3K")},
+            {COMPACT_PATTERN9, List.of(new BigInteger("223566000000000000"), new BigDecimal("12345678987654567"), 30000, 3000),
+                List.of("223,566,000,000,000,000", "12,345,678,987,654,567", "30,000", "3,000")},
+            {COMPACT_PATTERN10, List.of(new BigInteger("100000000000000000"), new BigInteger("10000000000000000000"), new BigDecimal("555555555555555555555.89766"), 30000),
+                List.of("100L", "10XL", "556XL", "30K")},
+            {COMPACT_PATTERN11, List.of(20.99, -20.99, 1000, -1000, 30000, -30000, new BigInteger("12345678987654321"), new BigInteger("-12345678987654321")),
+                List.of("21", "-21", "elfu 1", "elfu -1", "elfu 30", "elfu -30", "milioni 12345678988", "milioni -12345678988")},
+            {COMPACT_PATTERN12, List.of(0, 500, -500, 30000, -3000, 5000000), List.of("0", "H5H", "H-5H", "30K", "3K-", "H50G")},};
+    }
+
+    @DataProvider(name = "validPatternsParse")
+    Object[][] validPatternsParse() {
+        return new Object[][]{
+            // compact patterns, parse string, expected output
+            {COMPACT_PATTERN1, List.of(".56", "200", ".1K", "3K", "500K"), List.of(0.56, 200L, 100L, 3000L, 500000L)},
+            {COMPACT_PATTERN2, List.of("1", ".K2", ".K300"), List.of(1L, 20L, 3000L)},
+            {COMPACT_PATTERN3, List.of("101", "1K", "30K."), List.of(101L, 1000L, 30000L)},
+            {COMPACT_PATTERN4, List.of("0", "H5H", "-H5H", "30K", "H50G"), List.of(0L, 500L, -500L, 30000L, 5000000L)},
+            {COMPACT_PATTERN5, List.of("100", "1K", "K3"), List.of(100L, 1000L, 30000L)},
+            {COMPACT_PATTERN6, List.of("21", ".1K", ".30K"), List.of(21L, 1000L, 30000L)},
+            {COMPACT_PATTERN7, List.of("100", "1K,", "12345678987654K,"), List.of(100L, 1000L, 12345678987654000L)},
+            {COMPACT_PATTERN8, List.of("223566T", "12T", "30K", "3K"), List.of(223566000000000000L, 12000000000000L, 30000L, 3000L)},
+            {COMPACT_PATTERN10, List.of("1L", "100L", "10XL", "556XL", "30K"), List.of(1000000000000000L, 100000000000000000L, 1.0E19, 5.56E20, 30000L)},
+            {COMPACT_PATTERN11, List.of("21", "-21", "100.90", "-100.90", "elfu 1", "elfu -1", "elfu 30", "elfu -30", "milioni 12345678988", "milioni -12345678988"),
+                List.of(21L, -21L, 100.90, -100.90, 1000L, -1000L, 30000L, -30000L, 12345678988000000L, -12345678988000000L)},
+            {COMPACT_PATTERN12, List.of("0", "H5H", "H-5H", "30K", "30K-", "H50G"), List.of(0L, 500L, -500L, 30000L, -30000L, 5000000L)},};
+    }
+
+    @Test(dataProvider = "invalidPatterns",
+            expectedExceptions = RuntimeException.class)
+    public void testInvalidCompactPatterns(String[] compactPatterns) {
+        new CompactNumberFormat("#,##0.0#", DecimalFormatSymbols
+                .getInstance(Locale.US), compactPatterns);
+    }
+
+    @Test(dataProvider = "validPatternsFormat")
+    public void testValidPatternsFormat(String[] compactPatterns,
+            List<Object> numbers, List<String> expected) {
+        CompactNumberFormat fmt = new CompactNumberFormat("#,##0.0#",
+                DecimalFormatSymbols.getInstance(Locale.US), compactPatterns);
+        for (int index = 0; index < numbers.size(); index++) {
+            CompactFormatAndParseHelper.testFormat(fmt, numbers.get(index),
+                    expected.get(index));
+        }
+    }
+
+    @Test(dataProvider = "validPatternsParse")
+    public void testValidPatternsParse(String[] compactPatterns,
+            List<String> parseString, List<Number> numbers) throws ParseException {
+        CompactNumberFormat fmt = new CompactNumberFormat("#,##0.0#",
+                DecimalFormatSymbols.getInstance(Locale.US), compactPatterns);
+        for (int index = 0; index < parseString.size(); index++) {
+            CompactFormatAndParseHelper.testParse(fmt, parseString.get(index),
+                    numbers.get(index), null, null);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/TestEquality.java	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,167 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @summary Checks the equals and hashCode method of CompactNumberFormat
+ * @modules jdk.localedata
+ * @run testng/othervm TestEquality
+ *
+ */
+
+import java.text.CompactNumberFormat;
+import java.text.DecimalFormatSymbols;
+import java.text.NumberFormat;
+import java.util.Locale;
+import org.testng.annotations.Test;
+
+public class TestEquality {
+
+    @Test
+    public void testEquality() {
+        CompactNumberFormat cnf1 = (CompactNumberFormat) NumberFormat
+                .getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
+
+        CompactNumberFormat cnf2 = (CompactNumberFormat) NumberFormat
+                .getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
+
+        // A custom compact instance with the same state as
+        // compact number instance of "en_US" locale with SHORT style
+        String decimalPattern = "#,##0.###";
+        String[] compactPatterns = new String[]{"", "", "", "0K", "00K", "000K", "0M", "00M", "000M", "0B", "00B", "000B", "0T", "00T", "000T"};
+        DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(Locale.US);
+        CompactNumberFormat cnf3 = new CompactNumberFormat(decimalPattern, symbols, compactPatterns);
+
+        // A compact instance created with different decimalPattern than cnf3
+        CompactNumberFormat cnf4 = new CompactNumberFormat("#,#0.0#", symbols, compactPatterns);
+
+        // A compact instance created with different format symbols than cnf3
+        CompactNumberFormat cnf5 = new CompactNumberFormat(decimalPattern,
+                DecimalFormatSymbols.getInstance(Locale.JAPAN), compactPatterns);
+
+        // A compact instance created with different compact patterns than cnf3
+        CompactNumberFormat cnf6 = new CompactNumberFormat(decimalPattern,
+                symbols, new String[]{"", "", "", "0K", "00K", "000K"});
+
+        // Checking reflexivity
+        if (!cnf1.equals(cnf1)) {
+            throw new RuntimeException("[testEquality() reflexivity FAILED: The compared"
+                    + " objects must be equal]");
+        }
+
+        // Checking symmetry, checking equality of two same objects
+        if (!cnf1.equals(cnf2) || !cnf2.equals(cnf1)) {
+            throw new RuntimeException("[testEquality() symmetry FAILED: The compared"
+                    + " objects must be equal]");
+        }
+
+        // Checking transitivity, three objects must be equal
+        if (!cnf1.equals(cnf2) || !cnf2.equals(cnf3) || !cnf1.equals(cnf3)) {
+            throw new RuntimeException("[testEquality() transitivity FAILED: The compared"
+                    + " objects must be equal]");
+        }
+
+        // Objects must not be equal as the decimalPattern is different
+        checkEquals(cnf3, cnf4, false, "1st", "different decimal pattern");
+
+        // Objects must not be equal as the format symbols instance is different
+        checkEquals(cnf3, cnf5, false, "2nd", "different format symbols");
+
+        // Objects must not be equal as the compact patters are different
+        checkEquals(cnf3, cnf6, false, "3rd", "different compact patterns");
+
+        // Changing the min integer digits of first object; objects must not
+        // be equal
+        cnf1.setMinimumIntegerDigits(5);
+        checkEquals(cnf1, cnf2, false, "4th", "different min integer digits");
+
+        // Changing the min integer digits of second object; objects must
+        // be equal
+        cnf2.setMinimumIntegerDigits(5);
+        checkEquals(cnf1, cnf2, true, "5th", "");
+
+        // Changing the grouping size of first object; objects must not
+        // be equal
+        cnf1.setGroupingSize(4);
+        checkEquals(cnf1, cnf2, false, "6th", "different grouping size");
+
+        // Changing the grouping size if second object; objects must be equal
+        cnf2.setGroupingSize(4);
+        checkEquals(cnf1, cnf2, true, "7th", "");
+
+        // Changing the parseBigDecimal of first object; objects must not
+        // be equal
+        cnf1.setParseBigDecimal(true);
+        checkEquals(cnf1, cnf2, false, "8th", "different parse big decimal");
+
+    }
+
+    private void checkEquals(CompactNumberFormat cnf1, CompactNumberFormat cnf2,
+            boolean mustEqual, String nthComparison, String message) {
+        if (cnf1.equals(cnf2) != mustEqual) {
+            if (mustEqual) {
+                throw new RuntimeException("[testEquality() " + nthComparison
+                        + " comparison FAILED: The compared objects must be equal]");
+            } else {
+                throw new RuntimeException("[testEquality() " + nthComparison
+                        + " comparison FAILED: The compared objects must"
+                        + " not be equal because of " + message + "]");
+            }
+        }
+    }
+
+    @Test
+    public void testHashCode() {
+        NumberFormat cnf1 = NumberFormat
+                .getCompactNumberInstance(Locale.JAPAN, NumberFormat.Style.SHORT);
+        NumberFormat cnf2 = NumberFormat
+                .getCompactNumberInstance(Locale.JAPAN, NumberFormat.Style.SHORT);
+
+        if (cnf1.hashCode() != cnf2.hashCode()) {
+            throw new RuntimeException("[testHashCode() FAILED: hashCode of the"
+                    + " compared objects must match]");
+        }
+    }
+
+    // Test the property of equals and hashCode i.e. two equal object must
+    // always have the same hashCode
+    @Test
+    public void testEqualsAndHashCode() {
+        NumberFormat cnf1 = NumberFormat
+                .getCompactNumberInstance(new Locale("hi", "IN"), NumberFormat.Style.SHORT);
+        cnf1.setMinimumIntegerDigits(5);
+        NumberFormat cnf2 = NumberFormat
+                .getCompactNumberInstance(new Locale("hi", "IN"), NumberFormat.Style.SHORT);
+        cnf2.setMinimumIntegerDigits(5);
+        if (cnf1.equals(cnf2)) {
+            if (cnf1.hashCode() != cnf2.hashCode()) {
+                throw new RuntimeException("[testEqualsAndHashCode() FAILED: two"
+                        + " equal objects must have same hashCode]");
+            }
+        } else {
+            throw new RuntimeException("[testEqualsAndHashCode() FAILED: The"
+                    + " compared objects must be equal]");
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/TestFormatToCharacterIterator.java	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,197 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @summary Checks the functioning of
+ *          CompactNumberFormat.formatToCharacterIterator method
+ * @modules jdk.localedata
+ * @run testng/othervm TestFormatToCharacterIterator
+ */
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.AttributedCharacterIterator;
+import java.text.CharacterIterator;
+import java.text.Format;
+import java.text.NumberFormat;
+import java.util.Locale;
+import java.util.Set;
+import static org.testng.Assert.assertEquals;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+public class TestFormatToCharacterIterator {
+
+    private static final NumberFormat FORMAT_DZ = NumberFormat
+            .getCompactNumberInstance(new Locale("dz"),
+                    NumberFormat.Style.LONG);
+
+    private static final NumberFormat FORMAT_EN_US = NumberFormat
+            .getCompactNumberInstance(Locale.US,
+                    NumberFormat.Style.SHORT);
+
+    private static final NumberFormat FORMAT_EN_LONG = NumberFormat
+            .getCompactNumberInstance(new Locale("en"),
+                    NumberFormat.Style.LONG);
+
+    @DataProvider(name = "fieldPositions")
+    Object[][] compactFieldPositionData() {
+        return new Object[][]{
+            // compact format instance, number, resulted string, attributes/fields, attribute positions
+            {FORMAT_DZ, 1000.09, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2\u0F42 \u0F21",
+                new Format.Field[]{NumberFormat.Field.PREFIX, NumberFormat.Field.INTEGER}, new int[]{0, 9, 9, 10}},
+            {FORMAT_DZ, -999.99, "-\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2\u0F42 \u0F21",
+                new Format.Field[]{NumberFormat.Field.SIGN, NumberFormat.Field.PREFIX, NumberFormat.Field.INTEGER},
+                new int[]{0, 1, 1, 10, 10, 11}},
+            {FORMAT_DZ, -0.0, "-\u0F20", new Format.Field[]{NumberFormat.Field.SIGN, NumberFormat.Field.INTEGER}, new int[]{0, 1, 1, 2}},
+            {FORMAT_DZ, 3000L, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2\u0F42 \u0F23",
+                new Format.Field[]{NumberFormat.Field.PREFIX, NumberFormat.Field.INTEGER}, new int[]{0, 9, 9, 10}},
+            {FORMAT_DZ, new BigInteger("12345678901234567890"),
+                "\u0F51\u0F74\u0F44\u0F0B\u0F55\u0FB1\u0F74\u0F62\u0F0B\u0F66\u0F0B\u0F61\u0F0B \u0F21\u0F22\u0F23\u0F24\u0F25\u0F27",
+                new Format.Field[]{NumberFormat.Field.PREFIX, NumberFormat.Field.INTEGER}, new int[]{0, 14, 14, 20}},
+            {FORMAT_DZ, new BigDecimal("12345678901234567890.89"),
+                "\u0F51\u0F74\u0F44\u0F0B\u0F55\u0FB1\u0F74\u0F62\u0F0B\u0F66\u0F0B\u0F61\u0F0B \u0F21\u0F22\u0F23\u0F24\u0F25\u0F27",
+                new Format.Field[]{NumberFormat.Field.PREFIX, NumberFormat.Field.INTEGER}, new int[]{0, 14, 14, 20}},
+            // Zeros
+            {FORMAT_EN_US, 0, "0", new Format.Field[]{NumberFormat.Field.INTEGER}, new int[]{0, 1}},
+            {FORMAT_EN_US, 0.0, "0", new Format.Field[]{NumberFormat.Field.INTEGER}, new int[]{0, 1}},
+            {FORMAT_EN_US, -0.0, "-0", new Format.Field[]{NumberFormat.Field.SIGN, NumberFormat.Field.INTEGER}, new int[]{0, 1, 1, 2}},
+            // Less than 1000 no suffix
+            {FORMAT_EN_US, 499, "499", new Format.Field[]{NumberFormat.Field.INTEGER}, new int[]{0, 3}},
+            // Boundary number
+            {FORMAT_EN_US, 1000.0, "1K",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 1, 1, 2}},
+            // Long
+            {FORMAT_EN_US, 3000L, "3K",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 1, 1, 2}},
+            {FORMAT_EN_US, 30000L, "30K",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 2, 2, 3}},
+            {FORMAT_EN_US, 300000L, "300K",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 3, 3, 4}},
+            {FORMAT_EN_US, 3000000L, "3M",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 1, 1, 2}},
+            {FORMAT_EN_US, 30000000L, "30M",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 2, 2, 3}},
+            {FORMAT_EN_US, 300000000L, "300M",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 3, 3, 4}},
+            {FORMAT_EN_US, 3000000000L, "3B",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 1, 1, 2}},
+            {FORMAT_EN_US, 30000000000L, "30B",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 2, 2, 3}},
+            {FORMAT_EN_US, 300000000000L, "300B",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 3, 3, 4}},
+            {FORMAT_EN_US, 3000000000000L, "3T",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 1, 1, 2}},
+            {FORMAT_EN_US, 30000000000000L, "30T",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 2, 2, 3}},
+            {FORMAT_EN_US, 300000000000000L, "300T",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 3, 3, 4}},
+            {FORMAT_EN_US, 3000000000000000L, "3000T",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 4, 4, 5}},
+            // Double
+            {FORMAT_EN_US, 3000.0, "3K",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 1, 1, 2}},
+            {FORMAT_EN_US, 30000.0, "30K",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 2, 2, 3}},
+            {FORMAT_EN_US, 300000.0, "300K",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 3, 3, 4}},
+            {FORMAT_EN_US, 3000000000000000.0, "3000T",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 4, 4, 5}},
+            // BigInteger
+            {FORMAT_EN_US, new BigInteger("12345678901234567890"), "12345679T",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 8, 8, 9}},
+            // BigDecimal
+            {FORMAT_EN_US, new BigDecimal("12345678901234567890.89"), "12345679T",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 8, 8, 9}},
+            // Number as exponent
+            {FORMAT_EN_US, 9.78313E+3, "10K",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 2, 2, 3}},
+            // Less than 1000 no suffix
+            {FORMAT_EN_LONG, 999, "999", new Format.Field[]{NumberFormat.Field.INTEGER}, new int[]{0, 3}},
+            // Round the value and then format
+            {FORMAT_EN_LONG, 999.99, "1 thousand",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 1, 1, 10}},
+            // 10 thousand
+            {FORMAT_EN_LONG, 99000, "99 thousand",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 2, 2, 11}},
+            // Long path
+            {FORMAT_EN_LONG, 330000, "330 thousand",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 3, 3, 12}},
+            // Double path
+            {FORMAT_EN_LONG, 3000.90, "3 thousand",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 1, 1, 10}},
+            // BigInteger path
+            {FORMAT_EN_LONG, new BigInteger("12345678901234567890"), "12345679 trillion",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 8, 8, 17}},
+            // BigDecimal path
+            {FORMAT_EN_LONG, new BigDecimal("12345678901234567890.89"), "12345679 trillion",
+                new Format.Field[]{NumberFormat.Field.INTEGER, NumberFormat.Field.SUFFIX}, new int[]{0, 8, 8, 17}}
+        };
+    }
+
+    @Test(dataProvider = "fieldPositions")
+    public void testFormatToCharacterIterator(NumberFormat fmt, Object number,
+            String expected, Format.Field[] expectedFields, int[] positions) {
+        AttributedCharacterIterator iterator = fmt.formatToCharacterIterator(number);
+        assertEquals(getText(iterator), expected, "Incorrect formatting of the number '"
+                + number + "'");
+
+        iterator.first();
+        // Check start and end index of the formatted string
+        assertEquals(iterator.getBeginIndex(), 0, "Incorrect start index: "
+                + iterator.getBeginIndex() + " of the formatted string: " + expected);
+        assertEquals(iterator.getEndIndex(), expected.length(), "Incorrect end index: "
+                + iterator.getEndIndex() + " of the formatted string: " + expected);
+
+        // Check the attributes returned by the formatToCharacterIterator
+        assertEquals(iterator.getAllAttributeKeys(), Set.of(expectedFields),
+                "Attributes do not match while formatting number: " + number);
+
+        // Check the begin and end index for attributes
+        iterator.first();
+        int currentPosition = 0;
+        do {
+            int start = iterator.getRunStart();
+            int end = iterator.getRunLimit();
+            assertEquals(start, positions[currentPosition],
+                    "Incorrect start position for the attribute(s): "
+                    + iterator.getAttributes().keySet());
+            assertEquals(end, positions[currentPosition + 1],
+                    "Incorrect end position for the attribute(s): "
+                    + iterator.getAttributes().keySet());
+            currentPosition = currentPosition + 2;
+            iterator.setIndex(end);
+        } while (iterator.current() != CharacterIterator.DONE);
+    }
+
+    // Create the formatted string from returned AttributedCharacterIterator
+    private String getText(AttributedCharacterIterator iterator) {
+        StringBuffer buffer = new StringBuffer();
+        for (char c = iterator.first(); c != CharacterIterator.DONE;
+                c = iterator.next()) {
+            buffer.append(c);
+        }
+        return buffer.toString();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/TestMutatingInstance.java	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @summary Checks the functioning of compact number format by changing the
+ *          formatting parameters. For example, min fraction digits, grouping
+ *          size etc.
+ * @modules jdk.localedata
+ * @run testng/othervm TestMutatingInstance
+ */
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.CompactNumberFormat;
+import java.text.DecimalFormatSymbols;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Locale;
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+public class TestMutatingInstance {
+
+    private static final NumberFormat FORMAT_FRACTION = NumberFormat
+            .getCompactNumberInstance(new Locale("en"), NumberFormat.Style.LONG);
+
+    private static final CompactNumberFormat FORMAT_GROUPING = (CompactNumberFormat) NumberFormat
+            .getCompactNumberInstance(new Locale("en"), NumberFormat.Style.LONG);
+
+    private static final NumberFormat FORMAT_MININTEGER = NumberFormat
+            .getCompactNumberInstance(new Locale("en"), NumberFormat.Style.LONG);
+
+    private static final NumberFormat FORMAT_PARSEINTONLY = NumberFormat
+            .getCompactNumberInstance(new Locale("en"), NumberFormat.Style.LONG);
+
+    // No compact patterns are specified for this instance except at index 4.
+    // This is to test how the behaviour differs between compact number formatting
+    // and general number formatting
+    private static final NumberFormat FORMAT_NO_PATTERNS = new CompactNumberFormat(
+            "#,##0.0#", DecimalFormatSymbols.getInstance(Locale.US),
+            new String[]{"", "", "", "", "00K", "", "", "", "", "", "", "", "", "", ""});
+
+    @BeforeTest
+    public void mutateInstances() {
+        FORMAT_FRACTION.setMinimumFractionDigits(2);
+        FORMAT_GROUPING.setGroupingSize(3);
+        FORMAT_GROUPING.setGroupingUsed(true);
+        FORMAT_MININTEGER.setMinimumIntegerDigits(5);
+        FORMAT_PARSEINTONLY.setParseIntegerOnly(true);
+        FORMAT_PARSEINTONLY.setGroupingUsed(true);
+        // Setting min fraction digits and other fields does not effect
+        // the general number formatting behaviour, when no compact number
+        // patterns are specified
+        FORMAT_NO_PATTERNS.setMinimumFractionDigits(2);
+    }
+
+    @DataProvider(name = "format")
+    Object[][] compactFormatData() {
+        return new Object[][]{
+            {FORMAT_FRACTION, 1900, "1.90 thousand"},
+            {FORMAT_FRACTION, 1000, "1.00 thousand"},
+            {FORMAT_FRACTION, 9090.99, "9.09 thousand"},
+            {FORMAT_FRACTION, new BigDecimal(12346567890987654.32),
+                "12346.57 trillion"},
+            {FORMAT_FRACTION, new BigInteger("12346567890987654"),
+                "12346.57 trillion"},
+            {FORMAT_GROUPING, new BigDecimal(12346567890987654.32),
+                "12,347 trillion"},
+            {FORMAT_GROUPING, 100000, "100 thousand"},
+            {FORMAT_MININTEGER, 10000, "00010 thousand"},
+            {FORMAT_NO_PATTERNS, 100000, "100,000"},
+            {FORMAT_NO_PATTERNS, 1000.998, "1,001"},
+            {FORMAT_NO_PATTERNS, 10900, "10.90K"},
+            {FORMAT_NO_PATTERNS, new BigDecimal(12346567890987654.32), "12,346,567,890,987,654"},};
+    }
+
+    @DataProvider(name = "parse")
+    Object[][] compactParseData() {
+        return new Object[][]{
+            {FORMAT_FRACTION, "190 thousand", 190000L},
+            {FORMAT_FRACTION, "19.9 thousand", 19900L},
+            {FORMAT_GROUPING, "12,346 thousand", 12346000L},
+            {FORMAT_PARSEINTONLY, "12345 thousand", 12345000L},
+            {FORMAT_PARSEINTONLY, "12,345 thousand", 12345000L},
+            {FORMAT_PARSEINTONLY, "12.345 thousand", 12000L},};
+    }
+
+    @Test(dataProvider = "format")
+    public void formatCompactNumber(NumberFormat nf,
+            Object number, String expected) {
+        CompactFormatAndParseHelper.testFormat(nf, number, expected);
+    }
+
+    @Test(dataProvider = "parse")
+    public void parseCompactNumber(NumberFormat nf,
+            String parseString, Number expected) throws ParseException {
+        CompactFormatAndParseHelper.testParse(nf, parseString, expected, null, null);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/TestParseBigDecimal.java	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,173 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @summary Checks CNF.parse() when parseBigDecimal is set to true
+ * @modules jdk.localedata
+ * @run testng/othervm TestParseBigDecimal
+ */
+
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+import java.math.BigDecimal;
+import java.text.CompactNumberFormat;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Locale;
+
+public class TestParseBigDecimal {
+
+    private static final CompactNumberFormat FORMAT_DZ_LONG = (CompactNumberFormat) NumberFormat
+            .getCompactNumberInstance(new Locale("dz"), NumberFormat.Style.LONG);
+
+    private static final CompactNumberFormat FORMAT_EN_US_SHORT = (CompactNumberFormat) NumberFormat
+            .getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
+
+    private static final CompactNumberFormat FORMAT_EN_LONG = (CompactNumberFormat) NumberFormat
+            .getCompactNumberInstance(new Locale("en"), NumberFormat.Style.LONG);
+
+    private static final CompactNumberFormat FORMAT_HI_IN_LONG = (CompactNumberFormat) NumberFormat
+            .getCompactNumberInstance(new Locale("hi", "IN"), NumberFormat.Style.LONG);
+
+    private static final CompactNumberFormat FORMAT_JA_JP_SHORT = (CompactNumberFormat) NumberFormat
+            .getCompactNumberInstance(Locale.JAPAN, NumberFormat.Style.SHORT);
+
+    private static final CompactNumberFormat FORMAT_IT_SHORT = (CompactNumberFormat) NumberFormat
+            .getCompactNumberInstance(new Locale("it"), NumberFormat.Style.SHORT);
+
+    private static final CompactNumberFormat FORMAT_SW_LONG = (CompactNumberFormat) NumberFormat
+            .getCompactNumberInstance(new Locale("sw"), NumberFormat.Style.LONG);
+
+    private static final CompactNumberFormat FORMAT_SE_SHORT = (CompactNumberFormat) NumberFormat
+            .getCompactNumberInstance(new Locale("se"), NumberFormat.Style.SHORT);
+
+    @BeforeTest
+    public void mutateInstances() {
+        FORMAT_DZ_LONG.setParseBigDecimal(true);
+        FORMAT_EN_US_SHORT.setParseBigDecimal(true);
+        FORMAT_EN_LONG.setParseBigDecimal(true);
+        FORMAT_HI_IN_LONG.setParseBigDecimal(true);
+        FORMAT_JA_JP_SHORT.setParseBigDecimal(true);
+        FORMAT_IT_SHORT.setParseBigDecimal(true);
+        FORMAT_SW_LONG.setParseBigDecimal(true);
+        FORMAT_SE_SHORT.setParseBigDecimal(true);
+    }
+
+    @DataProvider(name = "parse")
+    Object[][] compactParseData() {
+        return new Object[][]{
+            // compact number format instance, string to parse, parsed number
+            {FORMAT_DZ_LONG, "\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2"
+                + "\u0F42 \u0F21", new BigDecimal("1000")},
+            {FORMAT_DZ_LONG, "-\u0F66\u0F9F\u0F7C\u0F44\u0F0B\u0F55\u0FB2"
+                + "\u0F42 \u0F23", new BigDecimal("-3000")},
+            {FORMAT_DZ_LONG, "\u0F51\u0F74\u0F44\u0F0B\u0F55\u0FB1\u0F74\u0F62"
+                + "\u0F0B\u0F66\u0F0B\u0F61\u0F0B \u0F21"
+                + "\u0F22\u0F23\u0F24\u0F25\u0F27", new BigDecimal("12345700000000000000")},
+            {FORMAT_DZ_LONG, "-\u0F51\u0F74\u0F44\u0F0B\u0F55\u0FB1\u0F74\u0F62"
+                + "\u0F0B\u0F66\u0F0B\u0F61\u0F0B \u0F21"
+                + "\u0F22\u0F23\u0F24\u0F25\u0F27", new BigDecimal("-12345700000000000000")},
+            {FORMAT_EN_US_SHORT, "-0.0", new BigDecimal("-0.0")},
+            {FORMAT_EN_US_SHORT, "0", new BigDecimal("0")},
+            {FORMAT_EN_US_SHORT, "499", new BigDecimal("499")},
+            {FORMAT_EN_US_SHORT, "-499", new BigDecimal("-499")},
+            {FORMAT_EN_US_SHORT, "499.89", new BigDecimal("499.89")},
+            {FORMAT_EN_US_SHORT, "-499.89", new BigDecimal("-499.89")},
+            {FORMAT_EN_US_SHORT, "1K", new BigDecimal("1000")},
+            {FORMAT_EN_US_SHORT, "-1K", new BigDecimal("-1000")},
+            {FORMAT_EN_US_SHORT, "3K", new BigDecimal("3000")},
+            {FORMAT_EN_US_SHORT, "-3K", new BigDecimal("-3000")},
+            {FORMAT_EN_US_SHORT, "17K", new BigDecimal("17000")},
+            {FORMAT_EN_US_SHORT, "-17K", new BigDecimal("-17000")},
+            {FORMAT_EN_US_SHORT, "12345678901234567890",
+                new BigDecimal("12345678901234567890")},
+            {FORMAT_EN_US_SHORT, "12345679T", new BigDecimal("12345679000000000000")},
+            {FORMAT_EN_US_SHORT, "-12345679T", new BigDecimal("-12345679000000000000")},
+            {FORMAT_EN_US_SHORT, "599.01K", new BigDecimal("599010.00")},
+            {FORMAT_EN_US_SHORT, "-599.01K", new BigDecimal("-599010.00")},
+            {FORMAT_EN_US_SHORT, "599444444.90T", new BigDecimal("599444444900000000000.00")},
+            {FORMAT_EN_US_SHORT, "-599444444.90T", new BigDecimal("-599444444900000000000.00")},
+            {FORMAT_EN_US_SHORT, "123456789012345.5678K",
+                new BigDecimal("123456789012345567.8000")},
+            {FORMAT_EN_US_SHORT, "17.000K", new BigDecimal("17000.000")},
+            {FORMAT_EN_US_SHORT, "123.56678K", new BigDecimal("123566.78000")},
+            {FORMAT_EN_US_SHORT, "-123.56678K", new BigDecimal("-123566.78000")},
+            {FORMAT_EN_LONG, "999", new BigDecimal("999")},
+            {FORMAT_EN_LONG, "1 thousand", new BigDecimal("1000")},
+            {FORMAT_EN_LONG, "3 thousand", new BigDecimal("3000")},
+            {FORMAT_EN_LONG, "12345679 trillion", new BigDecimal("12345679000000000000")},
+            {FORMAT_HI_IN_LONG, "999", new BigDecimal("999")},
+            {FORMAT_HI_IN_LONG, "-999", new BigDecimal("-999")},
+            {FORMAT_HI_IN_LONG, "1 \u0939\u091C\u093C\u093E\u0930", new BigDecimal("1000")},
+            {FORMAT_HI_IN_LONG, "-1 \u0939\u091C\u093C\u093E\u0930", new BigDecimal("-1000")},
+            {FORMAT_HI_IN_LONG, "3 \u0939\u091C\u093C\u093E\u0930", new BigDecimal("3000")},
+            {FORMAT_HI_IN_LONG, "12345679 \u0916\u0930\u092C", new BigDecimal("1234567900000000000")},
+            {FORMAT_HI_IN_LONG, "-12345679 \u0916\u0930\u092C", new BigDecimal("-1234567900000000000")},
+            {FORMAT_JA_JP_SHORT, "-99", new BigDecimal("-99")},
+            {FORMAT_JA_JP_SHORT, "1\u4E07", new BigDecimal("10000")},
+            {FORMAT_JA_JP_SHORT, "30\u4E07", new BigDecimal("300000")},
+            {FORMAT_JA_JP_SHORT, "-30\u4E07", new BigDecimal("-300000")},
+            {FORMAT_JA_JP_SHORT, "12345679\u5146", new BigDecimal("12345679000000000000")},
+            {FORMAT_JA_JP_SHORT, "-12345679\u5146", new BigDecimal("-12345679000000000000")},
+            {FORMAT_IT_SHORT, "-99", new BigDecimal("-99")},
+            {FORMAT_IT_SHORT, "1\u00a0Mln", new BigDecimal("1000000")},
+            {FORMAT_IT_SHORT, "30\u00a0Mln", new BigDecimal("30000000")},
+            {FORMAT_IT_SHORT, "-30\u00a0Mln", new BigDecimal("-30000000")},
+            {FORMAT_IT_SHORT, "12345679\u00a0Bln", new BigDecimal("12345679000000000000")},
+            {FORMAT_IT_SHORT, "-12345679\u00a0Bln", new BigDecimal("-12345679000000000000")},
+            {FORMAT_SW_LONG, "-0.0", new BigDecimal("-0.0")},
+            {FORMAT_SW_LONG, "499", new BigDecimal("499")},
+            {FORMAT_SW_LONG, "elfu 1", new BigDecimal("1000")},
+            {FORMAT_SW_LONG, "elfu 3", new BigDecimal("3000")},
+            {FORMAT_SW_LONG, "elfu 17", new BigDecimal("17000")},
+            {FORMAT_SW_LONG, "elfu -3", new BigDecimal("-3000")},
+            {FORMAT_SW_LONG, "-499", new BigDecimal("-499")},
+            {FORMAT_SW_LONG, "elfu 1", new BigDecimal("1000")},
+            {FORMAT_SW_LONG, "elfu 3", new BigDecimal("3000")},
+            {FORMAT_SW_LONG, "elfu -3", new BigDecimal("-3000")},
+            {FORMAT_SW_LONG, "elfu 17", new BigDecimal("17000")},
+            {FORMAT_SW_LONG, "trilioni 12345679", new BigDecimal("12345679000000000000")},
+            {FORMAT_SW_LONG, "trilioni -12345679", new BigDecimal("-12345679000000000000")},
+            {FORMAT_SW_LONG, "elfu 599.01", new BigDecimal("599010.00")},
+            {FORMAT_SW_LONG, "elfu -599.01", new BigDecimal("-599010.00")},
+            {FORMAT_SE_SHORT, "999", new BigDecimal("999")},
+            {FORMAT_SE_SHORT, "8\u00a0mn", new BigDecimal("8000000")},
+            {FORMAT_SE_SHORT, "8\u00a0dt", new BigDecimal("8000")},
+            {FORMAT_SE_SHORT, "12345679\u00a0bn", new BigDecimal("12345679000000000000")},
+            {FORMAT_SE_SHORT, "12345679,89\u00a0bn", new BigDecimal("12345679890000000000.00")},
+            {FORMAT_SE_SHORT, "\u2212999", new BigDecimal("-999")},
+            {FORMAT_SE_SHORT, "\u22128\u00a0mn", new BigDecimal("-8000000")},
+            {FORMAT_SE_SHORT, "\u22128\u00a0dt", new BigDecimal("-8000")},
+            {FORMAT_SE_SHORT, "\u221212345679\u00a0bn", new BigDecimal("-12345679000000000000")},
+            {FORMAT_SE_SHORT, "\u221212345679,89\u00a0bn", new BigDecimal("-12345679890000000000.00")},};
+    }
+
+    @Test(dataProvider = "parse")
+    public void testParse(NumberFormat cnf, String parseString,
+            Number expected) throws ParseException {
+        CompactFormatAndParseHelper.testParse(cnf, parseString, expected, null, BigDecimal.class);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/TestSpecialValues.java	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @summary Checks the formatting and parsing of special values
+ * @modules jdk.localedata
+ * @run testng/othervm TestSpecialValues
+ */
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Locale;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+public class TestSpecialValues {
+
+    private static final NumberFormat FORMAT = NumberFormat
+            .getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
+
+    @DataProvider(name = "formatSpecialValues")
+    Object[][] formatSpecialValues() {
+        return new Object[][]{
+            // number , formatted ouput
+            {+0.0, "0"},
+            {-0.0, "-0"},
+            {Double.MIN_VALUE, "0"},
+            {Double.MIN_NORMAL, "0"},
+            {Double.NaN, "NaN"},
+            {Double.POSITIVE_INFINITY, "\u221E"},
+            {Double.NEGATIVE_INFINITY, "-\u221E"},
+            {Long.MIN_VALUE, "-9223372T"},
+            {Long.MAX_VALUE, "9223372T"},};
+    }
+
+    @DataProvider(name = "parseSpecialValues")
+    Object[][] parseSpecialValues() {
+        return new Object[][]{
+            // parse string, parsed number
+            {"-0.0", -0.0},
+            {"" + Long.MIN_VALUE, Long.MIN_VALUE},
+            {"" + Long.MAX_VALUE, Long.MAX_VALUE},
+            {"NaN", Double.NaN},
+            {"\u221E", Double.POSITIVE_INFINITY},
+            {"-\u221E", Double.NEGATIVE_INFINITY},};
+    }
+
+    @Test(dataProvider = "formatSpecialValues")
+    public void testFormatSpecialValues(Object number, String expected) {
+        CompactFormatAndParseHelper.testFormat(FORMAT, number, expected);
+    }
+
+    @Test(dataProvider = "parseSpecialValues")
+    public void testParseSpecialValues(String parseString, Number expected)
+            throws ParseException {
+        CompactFormatAndParseHelper.testParse(FORMAT, parseString, expected, null, null);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/TestUExtensionOverride.java	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @summary Checks the behaviour of Unicode BCP 47 U Extension with
+ *          compact number format
+ * @modules jdk.localedata
+ * @run testng/othervm TestUExtensionOverride
+ */
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Locale;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+public class TestUExtensionOverride {
+
+    @DataProvider(name = "compactFormatData")
+    Object[][] compactFormatData() {
+        return new Object[][]{
+            // locale, number, formatted string
+
+            // -nu
+            {Locale.forLanguageTag("en-US-u-nu-deva"), 12345, "\u0967\u0968K"},
+            {Locale.forLanguageTag("en-US-u-nu-sinh"), 12345, "\u0de7\u0de8K"},
+            {Locale.forLanguageTag("en-US-u-nu-zzzz"), 12345, "12K"},
+            // -rg
+            {Locale.forLanguageTag("fr-FR-u-rg-cazzzz"), 1234567,
+                "1\u00a0234\u00a0567"},
+            {Locale.forLanguageTag("fr-FR-u-rg-cazzzz"), 1234567890,
+                "1\u00a0G"},
+            // -nu and -rg
+            {Locale.forLanguageTag("en-US-u-nu-deva-rg-dezzzz"), 12345,
+                "\u0967\u0968K"},
+            {Locale.forLanguageTag("fr-FR-u-nu-zzzz-rg-cazzzz"), 1234567890,
+                "1\u00a0Md"},
+            {Locale.forLanguageTag("fr-FR-u-nu-zzzz-rg-zzzz"), 12345,
+                "12\u00a0k"},
+            {Locale.forLanguageTag("fr-FR-u-rg-cazzzz-nu-deva"), 12345,
+                "\u0967\u0968\u00a0k"},};
+    }
+
+    @DataProvider(name = "compactParseData")
+    Object[][] compactParseData() {
+        return new Object[][]{
+            // locale, parse string, parsed number
+
+            // -nu
+            {Locale.forLanguageTag("en-US-u-nu-deva"),
+                "\u0967\u0968K", 12000L},
+            {Locale.forLanguageTag("en-US-u-nu-sinh"),
+                "\u0de7\u0de8K", 12000L},
+            {Locale.forLanguageTag("en-US-u-nu-zzzz"),
+                "12K", 12000L},
+            // -rg
+            {Locale.forLanguageTag("fr-FR-u-rg-cazzzz"),
+                "1\u00a0G", 1000000000L},
+            // -nu and -rg
+            {Locale.forLanguageTag("en-US-u-nu-deva-rg-dezzzz"),
+                "\u0967\u0968K", 12000L},
+            {Locale.forLanguageTag("fr-FR-u-nu-zzzz-rg-cazzzz"),
+                "1\u00a0Md", 1000000000L},
+            {Locale.forLanguageTag("fr-FR-u-nu-zzzz-rg-zzzz"),
+                "12\u00a0k", 12000L},
+            {Locale.forLanguageTag("fr-FR-u-rg-cazzzz-nu-deva"),
+                "\u0967\u0968\u00a0k", 12000L},};
+    }
+
+    @Test(dataProvider = "compactFormatData")
+    public void testFormat(Locale locale, double num,
+            String expected) {
+        NumberFormat cnf = NumberFormat.getCompactNumberInstance(locale,
+                NumberFormat.Style.SHORT);
+        CompactFormatAndParseHelper.testFormat(cnf, num, expected);
+    }
+
+    @Test(dataProvider = "compactParseData")
+    public void testParse(Locale locale, String parseString,
+            Number expected) throws ParseException {
+        NumberFormat cnf = NumberFormat.getCompactNumberInstance(locale,
+                NumberFormat.Style.SHORT);
+        CompactFormatAndParseHelper.testParse(cnf, parseString, expected, null, null);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/TestWithCompatProvider.java	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @summary Checks the compact number format with COMPAT provider. Since the
+ *          compact number resources are only provided by CLDR, using COMPAT
+ *          as a provider should always use the default patterns added in the
+ *          FormatData.java resource bundle
+ * @modules jdk.localedata
+ * @run testng/othervm -Djava.locale.providers=COMPAT TestWithCompatProvider
+ */
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Locale;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+public class TestWithCompatProvider {
+
+    private static final NumberFormat FORMAT_DZ_SHORT = NumberFormat
+            .getCompactNumberInstance(new Locale("dz"), NumberFormat.Style.SHORT);
+
+    private static final NumberFormat FORMAT_EN_US_SHORT = NumberFormat
+            .getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
+
+    @DataProvider(name = "format")
+    Object[][] compactFormatData() {
+        return new Object[][]{
+            {FORMAT_DZ_SHORT, 1000.09, "1K"},
+            {FORMAT_DZ_SHORT, -999.99, "-1K"},
+            {FORMAT_DZ_SHORT, -0.0, "-0"},
+            {FORMAT_DZ_SHORT, new BigInteger("12345678901234567890"), "12345679T"},
+            {FORMAT_DZ_SHORT, new BigDecimal("12345678901234567890.89"), "12345679T"},
+            {FORMAT_EN_US_SHORT, -999.99, "-1K"},
+            {FORMAT_EN_US_SHORT, 9999, "10K"},
+            {FORMAT_EN_US_SHORT, 3000.90, "3K"},
+            {FORMAT_EN_US_SHORT, new BigInteger("12345678901234567890"), "12345679T"},
+            {FORMAT_EN_US_SHORT, new BigDecimal("12345678901234567890.89"), "12345679T"},};
+    }
+
+    @DataProvider(name = "parse")
+    Object[][] compactParseData() {
+        return new Object[][]{
+            {FORMAT_DZ_SHORT, "1K", 1000L},
+            {FORMAT_DZ_SHORT, "-3K", -3000L},
+            {FORMAT_DZ_SHORT, "12345700T", 1.23457E19},
+            {FORMAT_EN_US_SHORT, "-99", -99L},
+            {FORMAT_EN_US_SHORT, "10K", 10000L},
+            {FORMAT_EN_US_SHORT, "12345679T", 1.2345679E19},};
+    }
+
+    @Test(dataProvider = "format")
+    public void testFormat(NumberFormat cnf, Object number,
+            String expected) {
+        CompactFormatAndParseHelper.testFormat(cnf, number, expected);
+    }
+
+    @Test(dataProvider = "parse")
+    public void testParse(NumberFormat cnf, String parseString,
+            Number expected) throws ParseException {
+        CompactFormatAndParseHelper.testParse(cnf, parseString, expected, null, null);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/serialization/TestDeserializeCNF.java	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8177552
+ * @modules jdk.localedata
+ * @summary Checks deserialization of compact number format
+ * @library /java/text/testlib
+ * @build TestDeserializeCNF HexDumpReader
+ * @run testng/othervm TestDeserializeCNF
+ */
+
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.Test;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.math.RoundingMode;
+import java.text.CompactNumberFormat;
+import java.text.DecimalFormatSymbols;
+import java.util.Locale;
+import static org.testng.Assert.*;
+
+public class TestDeserializeCNF {
+
+    // This object is serialized in cnf1.ser.txt with HALF_UP
+    // rounding mode, groupingsize = 3 and parseBigDecimal = true
+    private static final CompactNumberFormat COMPACT_FORMAT1 = new CompactNumberFormat("#,##0.###",
+            DecimalFormatSymbols.getInstance(Locale.US),
+            new String[]{"", "", "", "0K", "00K", "000K", "0M", "00M", "000M", "0B", "00B", "000B", "0T", "00T", "000T"});
+
+    // This object is serialized in cnf2.ser.txt with min integer digits = 20
+    // and min fraction digits = 5
+    private static final CompactNumberFormat COMPACT_FORMAT2 = new CompactNumberFormat("#,##0.###",
+            DecimalFormatSymbols.getInstance(Locale.JAPAN),
+            new String[]{"", "", "", "0", "0\u4e07", "00\u4e07", "000\u4e07", "0000\u4e07", "0\u5104", "00\u5104", "000\u5104", "0000\u5104", "0\u5146", "00\u5146", "000\u5146"});
+
+    private static final String FILE_COMPACT_FORMAT1 = "cnf1.ser.txt";
+    private static final String FILE_COMPACT_FORMAT2 = "cnf2.ser.txt";
+
+    @BeforeTest
+    public void mutateInstances() {
+        COMPACT_FORMAT1.setRoundingMode(RoundingMode.HALF_UP);
+        COMPACT_FORMAT1.setGroupingSize(3);
+        COMPACT_FORMAT1.setParseBigDecimal(true);
+
+        COMPACT_FORMAT2.setMinimumIntegerDigits(20);
+        COMPACT_FORMAT2.setMinimumFractionDigits(5);
+    }
+
+    @Test
+    public void testDeserialization() throws IOException, ClassNotFoundException {
+        try (InputStream istream1 = HexDumpReader.getStreamFromHexDump(FILE_COMPACT_FORMAT1);
+                ObjectInputStream ois1 = new ObjectInputStream(istream1);
+                InputStream istream2 = HexDumpReader.getStreamFromHexDump(FILE_COMPACT_FORMAT2);
+                ObjectInputStream ois2 = new ObjectInputStream(istream2);) {
+
+            CompactNumberFormat obj1 = (CompactNumberFormat) ois1.readObject();
+            assertEquals(obj1, COMPACT_FORMAT1, "Deserialized instance is not"
+                    + " equal to the instance serialized in " + FILE_COMPACT_FORMAT1);
+
+            CompactNumberFormat obj2 = (CompactNumberFormat) ois2.readObject();
+            assertEquals(obj2, COMPACT_FORMAT2, "Deserialized instance is not"
+                    + " equal to the instance serialized in " + FILE_COMPACT_FORMAT2);
+        }
+    }
+
+    // The objects are serialized using the serialize() method, the hex
+    // dump printed is copied to respective object files
+//    void serialize(CompactNumberFormat cnf) {
+//        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+//        try (ObjectOutputStream oos = new ObjectOutputStream(baos)) {
+//            oos.writeObject(cnf);
+//        } catch (IOException ioe) {
+//            throw new RuntimeException(ioe);
+//        }
+//        byte[] ser = baos.toByteArray();
+//        for (byte b : ser) {
+//            System.out.print("" + String.format("%02x", b));
+//        }
+//    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/serialization/TestSerialization.java	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8177552
+ * @modules jdk.localedata
+ * @summary Checks the serialization feature of CompactNumberFormat
+ * @run testng/othervm TestSerialization
+ */
+
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.Test;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.math.RoundingMode;
+import java.text.CompactNumberFormat;
+import java.text.NumberFormat;
+import java.util.Locale;
+import static org.testng.Assert.*;
+
+public class TestSerialization {
+
+    private static final NumberFormat FORMAT_HI = NumberFormat.getCompactNumberInstance(
+            new Locale("hi"), NumberFormat.Style.SHORT);
+    private static final CompactNumberFormat FORMAT_EN_US = (CompactNumberFormat) NumberFormat
+            .getCompactNumberInstance(Locale.US, NumberFormat.Style.LONG);
+    private static final NumberFormat FORMAT_JA_JP = NumberFormat.getCompactNumberInstance(
+            Locale.JAPAN, NumberFormat.Style.SHORT);
+    private static final NumberFormat FORMAT_FR_FR = NumberFormat.getCompactNumberInstance(
+            Locale.FRANCE, NumberFormat.Style.LONG);
+    private static final NumberFormat FORMAT_DE_DE = NumberFormat.getCompactNumberInstance(
+            Locale.GERMANY, NumberFormat.Style.SHORT);
+    private static final NumberFormat FORMAT_KO_KR = NumberFormat.getCompactNumberInstance(
+            Locale.KOREA, NumberFormat.Style.SHORT);
+
+    @BeforeTest
+    public void mutateInstances() {
+        FORMAT_HI.setMinimumFractionDigits(2);
+        FORMAT_HI.setMinimumIntegerDigits(5);
+
+        FORMAT_EN_US.setRoundingMode(RoundingMode.HALF_UP);
+        FORMAT_EN_US.setGroupingSize(3);
+        FORMAT_EN_US.setParseBigDecimal(true);
+
+        FORMAT_JA_JP.setMaximumFractionDigits(30);
+        FORMAT_JA_JP.setMaximumIntegerDigits(30);
+
+        FORMAT_FR_FR.setParseIntegerOnly(true);
+        FORMAT_FR_FR.setGroupingUsed(true);
+
+        // Setting minimum integer digits beyond the allowed range
+        FORMAT_DE_DE.setMinimumIntegerDigits(320);
+
+        // Setting minimum fraction digits beyond the allowed range
+        FORMAT_KO_KR.setMinimumFractionDigits(350);
+    }
+
+    @Test
+    public void testSerialization() throws IOException, ClassNotFoundException {
+        // Serialize
+        serialize("cdf.ser", FORMAT_HI, FORMAT_EN_US, FORMAT_JA_JP, FORMAT_FR_FR, FORMAT_DE_DE, FORMAT_KO_KR);
+        // Deserialize
+        deserialize("cdf.ser", FORMAT_HI, FORMAT_EN_US, FORMAT_JA_JP, FORMAT_FR_FR, FORMAT_DE_DE, FORMAT_KO_KR);
+    }
+
+    private void serialize(String fileName, NumberFormat... formats)
+            throws IOException {
+        try (ObjectOutputStream os = new ObjectOutputStream(
+                new FileOutputStream(fileName))) {
+            for (NumberFormat fmt : formats) {
+                os.writeObject(fmt);
+            }
+        }
+    }
+
+    private static void deserialize(String fileName, NumberFormat... formats)
+            throws IOException, ClassNotFoundException {
+        try (ObjectInputStream os = new ObjectInputStream(
+                new FileInputStream(fileName))) {
+            for (NumberFormat fmt : formats) {
+                NumberFormat obj = (NumberFormat) os.readObject();
+                assertEquals(fmt, obj, "Serialized and deserialized"
+                        + " objects do not match");
+
+                long number = 123456789789L;
+                String expected = fmt.format(number);
+                String actual = obj.format(number);
+                assertEquals(actual, expected, "Serialized and deserialized"
+                        + " objects are expected to return same formatted"
+                        + " output for number: " + number);
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/serialization/cnf1.ser.txt	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,64 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# Hex dump of a serialized CompactNumberFormat for TestDeserializeCNF.
+
+aced00057372001d6a6176612e746578742e436f6d706163744e756d626572466f726d
+617462ed0c37b8207cf602000642000c67726f7570696e6753697a655a000f70617273
+65426967446563696d616c5b000f636f6d706163745061747465726e737400135b4c6a
+6176612f6c616e672f537472696e673b4c000e646563696d616c5061747465726e7400
+124c6a6176612f6c616e672f537472696e673b4c000c726f756e64696e674d6f646574
+00184c6a6176612f6d6174682f526f756e64696e674d6f64653b4c000773796d626f6c
+737400204c6a6176612f746578742f446563696d616c466f726d617453796d626f6c73
+3b787200166a6176612e746578742e4e756d626572466f726d6174dff6b3bf137d07e8
+03000b5a000c67726f7570696e67557365644200116d61784672616374696f6e446967
+6974734200106d6178496e74656765724469676974734900156d6178696d756d467261
+6374696f6e4469676974734900146d6178696d756d496e746567657244696769747342
+00116d696e4672616374696f6e4469676974734200106d696e496e7465676572446967
+6974734900156d696e696d756d4672616374696f6e4469676974734900146d696e696d
+756d496e74656765724469676974735a00107061727365496e74656765724f6e6c7949
+001573657269616c56657273696f6e4f6e53747265616d787200106a6176612e746578
+742e466f726d6174fbd8bc12e90f1843020000787000007f0000000000000135000100
+000000000000010000000001780301757200135b4c6a6176612e6c616e672e53747269
+6e673badd256e7e91d7b4702000078700000000f74000071007e000a71007e000a7400
+02304b74000330304b7400043030304b740002304d74000330304d7400043030304d74
+0002304274000330304274000430303042740002305474000330305474000430303054
+740009232c2323302e2323237e7200166a6176612e6d6174682e526f756e64696e674d
+6f646500000000000000001200007872000e6a6176612e6c616e672e456e756d000000
+0000000000120000787074000748414c465f55507372001e6a6176612e746578742e44
+6563696d616c466f726d617453796d626f6c73501d17990868939c0200114300106465
+63696d616c536570617261746f72430005646967697443000b6578706f6e656e746961
+6c43001167726f7570696e67536570617261746f724300096d696e75735369676e4300
+116d6f6e6574617279536570617261746f724300107061747465726e53657061726174
+6f724300077065724d696c6c43000770657263656e7449001573657269616c56657273
+696f6e4f6e53747265616d4300097a65726f44696769744c00034e614e71007e00024c
+000e63757272656e637953796d626f6c71007e00024c00146578706f6e656e7469616c
+536570617261746f7271007e00024c0008696e66696e69747971007e00024c0012696e
+746c43757272656e637953796d626f6c71007e00024c00066c6f63616c657400124c6a
+6176612f7574696c2f4c6f63616c653b7870002e00230045002c002d002e003b203000
+250000000300307400034e614e7074000145740003e2889e70737200106a6176612e75
+74696c2e4c6f63616c657ef811609c30f9ec03000649000868617368636f64654c0007
+636f756e74727971007e00024c000a657874656e73696f6e7371007e00024c00086c61
+6e677561676571007e00024c000673637269707471007e00024c000776617269616e74
+71007e00027870ffffffff740002555371007e000a740002656e71007e000a71007e00
+0a78
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/CompactNumberFormat/serialization/cnf2.ser.txt	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,64 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# Hex dump of a serialized CompactNumberFormat for TestDeserializeCNF.
+
+aced00057372001d6a6176612e746578742e436f6d706163744e756d626572466f726d
+617462ed0c37b8207cf602000642000c67726f7570696e6753697a655a000f70617273
+65426967446563696d616c5b000f636f6d706163745061747465726e737400135b4c6a
+6176612f6c616e672f537472696e673b4c000e646563696d616c5061747465726e7400
+124c6a6176612f6c616e672f537472696e673b4c000c726f756e64696e674d6f646574
+00184c6a6176612f6d6174682f526f756e64696e674d6f64653b4c000773796d626f6c
+737400204c6a6176612f746578742f446563696d616c466f726d617453796d626f6c73
+3b787200166a6176612e746578742e4e756d626572466f726d6174dff6b3bf137d07e8
+03000b5a000c67726f7570696e67557365644200116d61784672616374696f6e446967
+6974734200106d6178496e74656765724469676974734900156d6178696d756d467261
+6374696f6e4469676974734900146d6178696d756d496e746567657244696769747342
+00116d696e4672616374696f6e4469676974734200106d696e496e7465676572446967
+6974734900156d696e696d756d4672616374696f6e4469676974734900146d696e696d
+756d496e74656765724469676974735a00107061727365496e74656765724f6e6c7949
+001573657269616c56657273696f6e4f6e53747265616d787200106a6176612e746578
+742e466f726d6174fbd8bc12e90f1843020000787000057f0000000500000135051400
+000005000000140000000001780000757200135b4c6a6176612e6c616e672e53747269
+6e673badd256e7e91d7b4702000078700000000f74000071007e000a71007e000a7400
+013074000430e4b8877400053030e4b887740006303030e4b88774000730303030e4b8
+8774000430e584847400053030e58484740006303030e5848474000730303030e58484
+74000430e585867400053030e58586740006303030e58586740009232c2323302e2323
+237e7200166a6176612e6d6174682e526f756e64696e674d6f64650000000000000000
+1200007872000e6a6176612e6c616e672e456e756d0000000000000000120000787074
+000948414c465f4556454e7372001e6a6176612e746578742e446563696d616c466f72
+6d617453796d626f6c73501d17990868939c020011430010646563696d616c53657061
+7261746f72430005646967697443000b6578706f6e656e7469616c43001167726f7570
+696e67536570617261746f724300096d696e75735369676e4300116d6f6e6574617279
+536570617261746f724300107061747465726e536570617261746f724300077065724d
+696c6c43000770657263656e7449001573657269616c56657273696f6e4f6e53747265
+616d4300097a65726f44696769744c00034e614e71007e00024c000e63757272656e63
+7953796d626f6c71007e00024c00146578706f6e656e7469616c536570617261746f72
+71007e00024c0008696e66696e69747971007e00024c0012696e746c43757272656e63
+7953796d626f6c71007e00024c00066c6f63616c657400124c6a6176612f7574696c2f
+4c6f63616c653b7870002e00230045002c002d002e003b203000250000000300307400
+034e614e7074000145740003e2889e70737200106a6176612e7574696c2e4c6f63616c
+657ef811609c30f9ec03000649000868617368636f64654c0007636f756e7472797100
+7e00024c000a657874656e73696f6e7371007e00024c00086c616e677561676571007e
+00024c000673637269707471007e00024c000776617269616e7471007e00027870ffff
+ffff7400024a5071007e000a7400026a6171007e000a71007e000a78
--- a/test/jdk/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-# 
-# Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-# 
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-# 
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-# 
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-# 
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-# @test
-# @bug 4354216
-# @summary Test for the cause support when throwing a
-# MissingResourceBundle. (This test exists under
-# ResourceBundle/Control because bad resource bundle data can be
-# shared with other test cases.)
-# @build MissingResourceCauseTest
-# @build NonResourceBundle PrivateConstructorRB AbstractRB BadStaticInitRB
-#   NoNoArgConstructorRB
-# @run shell MissingResourceCauseTest.sh
-
-case "`uname`" in
-Windows* | CYGWIN*)
-    exit 0;
-    ;;
-*)
-    DEL=":";
-    PS="/";
-    ;;
-esac
-
-#
-# Create an unreadble properties file
-#
-UNREADABLE=${TESTCLASSPATH}${PS}UnreadableRB.properties
-rm -f $UNREADABLE
-echo "type=unreadable" >$UNREADABLE
-chmod 000 $UNREADABLE
-
-${TESTJAVA}/bin/java ${TESTVMOPTS} -esa -cp ${TESTCLASSES}${DEL}${TESTSRC} MissingResourceCauseTest
-STATUS=$?
-chmod 666 $UNREADABLE
-rm -f $UNREADABLE
-exit $STATUS
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/util/ResourceBundle/Control/MissingResourceCauseTestRun.java	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 4354216 8213127
+ * @summary Test for the cause support when throwing a
+ *          MissingResourceBundle. (This test exists under
+ *          ResourceBundle/Control because bad resource bundle data can be
+ *          shared with other test cases.)
+ * @library /test/lib
+ * @build jdk.test.lib.JDKToolLauncher
+ *        jdk.test.lib.Utils
+ *        jdk.test.lib.process.ProcessTools
+ *        MissingResourceCauseTest
+ *        NonResourceBundle
+ *        PrivateConstructorRB
+ *        AbstractRB
+ *        BadStaticInitRB
+ *        NoNoArgConstructorRB
+ * @run main MissingResourceCauseTestRun
+ */
+
+import java.io.File;
+import java.io.FileWriter;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import jdk.test.lib.JDKToolLauncher;
+import jdk.test.lib.Utils;
+import jdk.test.lib.process.ProcessTools;
+
+public class MissingResourceCauseTestRun {
+    public static void main(String[] args) throws Throwable {
+        Path path = Paths.get("UnreadableRB.properties");
+        Files.deleteIfExists(path);
+        try {
+            writeFile(path);
+            runCmd();
+        } finally {
+            deleteFile(path);
+        }
+    }
+
+    /**
+     * Create an unreadable properties file
+     */
+    private static void writeFile(Path path) throws Throwable {
+        String str = "type=unreadable";
+        Files.createFile(path);
+        try (FileWriter fw = new FileWriter(path.toString())) {
+            fw.write(str);
+        }
+        ProcessTools.executeCommand("chmod", "000", path.toString())
+                .outputTo(System.out)
+                .errorTo(System.out)
+                .shouldHaveExitValue(0);
+    }
+
+    private static void runCmd() throws Throwable {
+        // Class files are in Utils.TEST_CLASSES
+        // MalformedDataRB_en.properties is in Utils.TEST_SRC
+        // UnreadableRB.properties is in current directory
+        String cp = Utils.TEST_CLASSES + File.pathSeparator + Utils.TEST_SRC
+                + File.pathSeparator + ".";
+        JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("java");
+        launcher.addToolArg("-esa")
+                .addToolArg("-cp")
+                .addToolArg(cp)
+                .addToolArg("MissingResourceCauseTest");
+
+        int exitCode = ProcessTools.executeCommand(launcher.getCommand())
+                .getExitValue();
+        if (exitCode != 0) {
+            throw new RuntimeException("Execution of the test failed. "
+                    + "Unexpected exit code: " + exitCode);
+        }
+    }
+
+    private static void deleteFile(Path path) throws Throwable {
+        if(path.toFile().exists()) {
+            ProcessTools.executeCommand("chmod", "666", path.toString())
+                        .outputTo(System.out)
+                        .errorTo(System.out)
+                        .shouldHaveExitValue(0);
+            Files.delete(path);
+        }
+    }
+}
--- a/test/jdk/jdk/jfr/event/sampling/libTestNative.c	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/event/sampling/libTestNative.c	Fri Dec 07 09:46:53 2018 -0500
@@ -30,7 +30,7 @@
 #include <unistd.h>
 #endif
 
-JNIEXPORT void JNICALL Java_com_oracle_jfr_event_sampling_TestNative_longTime
+JNIEXPORT void JNICALL Java_jdk_jfr_event_sampling_TestNative_longTime
   (JNIEnv *env, jclass jc)
 {
 #ifdef WINDOWS
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/jdk/jfr/jmx/TestFlightRecorderMXBeanLeak.java	Fri Dec 07 09:46:53 2018 -0500
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package jdk.jfr.jmx;
+
+import java.lang.management.ManagementFactory;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanInfo;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
+import jdk.jfr.Recording;
+import jdk.jfr.consumer.RecordedClassLoader;
+import jdk.jfr.consumer.RecordedEvent;
+import jdk.management.jfr.FlightRecorderMXBean;
+import jdk.test.lib.jfr.Events;
+
+/**
+ * @test
+ * @key jfr
+ * @summary Verifies that attributes in FlightRecorderMXBean can be inspected
+ *          without causing a memory leak.
+ * @requires vm.hasJFR
+ * @library /test/lib /test/jdk
+ * @run main/othervm jdk.jfr.jmx.TestFlightRecorderMXBeanLeak
+ */
+public class TestFlightRecorderMXBeanLeak {
+
+    private static final String CLASS_LOADER_NAME = "Test Leak";
+    private static final String TEST_CLASS = "jdk.jfr.jmx.TestFlightRecorderMXBeanLeak$FlightRecorderMXBeanLoader";
+
+    public static void main(String[] args) throws Exception {
+        URL url = FlightRecorderMXBeanLoader.class.getProtectionDomain().getCodeSource().getLocation();
+        URLClassLoader loader = new URLClassLoader(CLASS_LOADER_NAME, new URL[] { url }, null);
+        Class<?> clazz = Class.forName(TEST_CLASS, true, loader);
+        clazz.newInstance();
+        loader.close();
+        clazz = null;
+        loader = null;
+        System.gc();
+        System.gc();
+
+        try (Recording r = new Recording()) {
+            r.enable("jdk.ClassLoaderStatistics").with("period", "endChunk");
+            r.start();
+            r.stop();
+            for (RecordedEvent e : Events.fromRecording(r)) {
+                RecordedClassLoader o = e.getValue("classLoader");
+                if (o != null) {
+                    System.out.println("Class loader: type=" + o.getType().getName() + " name=" + o.getName());
+                    if (CLASS_LOADER_NAME.equals(o.getName())) {
+                        throw new Exception("Memory Leak. Class loader '" + CLASS_LOADER_NAME + "' should not be on the heap!");
+                    }
+                }
+            }
+        }
+    }
+
+    public static class FlightRecorderMXBeanLoader {
+        public FlightRecorderMXBeanLoader() throws Exception {
+            ObjectName objectName = new ObjectName(FlightRecorderMXBean.MXBEAN_NAME);
+            MBeanServer platformMBeanServer = ManagementFactory.getPlatformMBeanServer();
+            MBeanInfo mBeanInfo = platformMBeanServer.getMBeanInfo(objectName);
+            System.out.println("Inspecting FlightRecorderMXBeann:");
+            for (MBeanAttributeInfo attributeInfo : mBeanInfo.getAttributes()) {
+                Object value = platformMBeanServer.getAttribute(objectName, attributeInfo.getName());
+                System.out.println(attributeInfo.getName() + " = " + value);
+            }
+        }
+    }
+}
--- a/test/jdk/jdk/jfr/tool/ExecuteHelper.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/tool/ExecuteHelper.java	Fri Dec 07 09:46:53 2018 -0500
@@ -32,7 +32,10 @@
 import jdk.jfr.Configuration;
 import jdk.jfr.Event;
 import jdk.jfr.Recording;
-import jdk.test.lib.Utils;;
+import jdk.test.lib.JDKToolLauncher;
+import jdk.test.lib.Utils;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;;
 
 final class ExecuteHelper {
 
@@ -122,4 +125,12 @@
        Matcher m = p.matcher("aaaaab");
        m.matches();
     }
+
+    public static OutputAnalyzer jfr(String... args) throws Throwable {
+        JDKToolLauncher l = JDKToolLauncher.createUsingTestJDK("jfr");
+        for (String arg : args) {
+            l.addToolArg(arg);
+        }
+        return ProcessTools.executeCommand(l.getCommand());
+    }
 }
--- a/test/jdk/jdk/jfr/tool/TestAssemble.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/tool/TestAssemble.java	Fri Dec 07 09:46:53 2018 -0500
@@ -40,7 +40,6 @@
 import jdk.jfr.internal.SecuritySupport.SafePath;
 import jdk.test.lib.Asserts;
 import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
 
 /**
  * @test
@@ -90,30 +89,30 @@
         String destination = destinationPath.toAbsolutePath().toString();
 
         // Test failure
-        OutputAnalyzer output = ProcessTools.executeProcess("jfr", "assemble");
+        OutputAnalyzer output = ExecuteHelper.jfr("assemble");
         output.shouldContain("too few arguments");
 
-        output = ProcessTools.executeProcess("jfr", "assemble", directory);
+        output = ExecuteHelper.jfr("assemble", directory);
         output.shouldContain("too few arguments");
 
-        output = ProcessTools.executeProcess("jfr", "assemble", "not-a-directory", destination);
+        output = ExecuteHelper.jfr("assemble", "not-a-directory", destination);
         output.shouldContain("directory does not exist, not-a-directory");
 
-        output = ProcessTools.executeProcess("jfr", "assemble", directory, "not-a-destination");
+        output = ExecuteHelper.jfr("assemble", directory, "not-a-destination");
         output.shouldContain("filename must end with '.jfr'");
 
-        output = ProcessTools.executeProcess("jfr","assemble", "--wrongOption", directory, destination);
+        output = ExecuteHelper.jfr("assemble", "--wrongOption", directory, destination);
         output.shouldContain("too many arguments");
 
         FileWriter fw = new FileWriter(destination);
         fw.write('d');
         fw.close();
-        output = ProcessTools.executeProcess("jfr", "assemble", directory, destination);
+        output = ExecuteHelper.jfr("assemble", directory, destination);
         output.shouldContain("already exists");
         Files.delete(destinationPath);
 
         // test success
-        output = ProcessTools.executeProcess("jfr", "assemble", directory, destination);
+        output = ExecuteHelper.jfr("assemble", directory, destination);
         System.out.println(output.getOutput());
         output.shouldContain("Finished.");
 
--- a/test/jdk/jdk/jfr/tool/TestDisassemble.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/tool/TestDisassemble.java	Fri Dec 07 09:46:53 2018 -0500
@@ -37,7 +37,6 @@
 import jdk.jfr.Recording;
 import jdk.jfr.consumer.RecordingFile;
 import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
 
 /**
  * @test
@@ -64,40 +63,40 @@
         String fileBText = recordingFileB.toAbsolutePath().toString();
         String fileCText = recordingFileC.toAbsolutePath().toString();
 
-        OutputAnalyzer output = ProcessTools.executeProcess("jfr", "disassemble");
+        OutputAnalyzer output = ExecuteHelper.jfr("disassemble");
         output.shouldContain("missing file");
 
-        output =  ProcessTools.executeProcess("jfr","disassemble", "--wrongOption", fileAText);
+        output = ExecuteHelper.jfr("disassemble", "--wrongOption", fileAText);
         output.shouldContain("unknown option");
 
-        output = ProcessTools.executeProcess("jfr","disassemble", "--wrongOption", "1", fileAText);
+        output = ExecuteHelper.jfr("disassemble", "--wrongOption", "1", fileAText);
         output.shouldContain("unknown option");
 
-        output =  ProcessTools.executeProcess("jfr","disassemble", "--max-chunks", "-3", fileAText);
+        output = ExecuteHelper.jfr("disassemble", "--max-chunks", "-3", fileAText);
         output.shouldContain("max chunks must be at least 1");
 
-        output =  ProcessTools.executeProcess("jfr","disassemble", "--max-chunks", "1000", fileAText);
+        output = ExecuteHelper.jfr("disassemble", "--max-chunks", "1000", fileAText);
         output.shouldContain("number of chunks in recording");
         output.shouldContain("doesn't exceed max chunks");
-        output =  ProcessTools.executeProcess("jfr", "disassemble", fileAText); // maxchunks is 5 by
+        output = ExecuteHelper.jfr("disassemble", fileAText); // maxchunks is 5 by
                                                         // default
         System.out.println(output.getOutput());
         System.out.println(fileAText);
         verifyRecording(fileAText.substring(0, fileAText.length() - 4) + "_1.jfr");
         verifyRecording(fileAText.substring(0, fileAText.length() - 4) + "_2.jfr");
 
-        output =  ProcessTools.executeProcess("jfr","disassemble", "--max-chunks", "2", fileBText);
+        output = ExecuteHelper.jfr("disassemble", "--max-chunks", "2", fileBText);
 
         verifyRecording(fileBText.substring(0, fileBText.length() - 4) + "_1.jfr");
         verifyRecording(fileBText.substring(0, fileBText.length() - 4) + "_2.jfr");
         verifyRecording(fileBText.substring(0, fileBText.length() - 4) + "_3.jfr");
 
-        output =  ProcessTools.executeProcess("jfr","disassemble", "--max-chunks", "2", fileBText);
+        output = ExecuteHelper.jfr("disassemble", "--max-chunks", "2", fileBText);
         output.shouldContain("file with that name already exist");
 
         // sanity check
-        output =  ProcessTools.executeProcess("jfr","disassemble", "--max-size", "500000", fileCText);
-        verifyRecording(fileCText.substring(0, fileCText.length() - 4) + "_1.jfr");
+        output = ExecuteHelper.jfr("disassemble", "--max-size", "10000", fileCText);
+        verifyRecording(fileCText.substring(0, fileCText.length() - 4) + "_01.jfr");
     }
 
     private static void verifyRecording(String name) throws IOException {
--- a/test/jdk/jdk/jfr/tool/TestHelp.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/tool/TestHelp.java	Fri Dec 07 09:46:53 2018 -0500
@@ -26,7 +26,6 @@
 package jdk.jfr.tool;
 
 import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
 
 /**
  * @test
@@ -39,7 +38,7 @@
 public class TestHelp {
 
     public static void main(String[] args) throws Throwable {
-        OutputAnalyzer output = ProcessTools.executeProcess("jfr", "help");
+        OutputAnalyzer output = ExecuteHelper.jfr("help");
         output.shouldContain("print");
         output.shouldContain("assemble");
         output.shouldContain("disassemble");
@@ -47,11 +46,11 @@
         output.shouldContain("summary");
         output.shouldContain("help");
 
-        output = ProcessTools.executeProcess("jfr", "help", "version");
+        output = ExecuteHelper.jfr("help", "version");
         output.shouldContain("Display version of the jfr tool");
         output.shouldContain("jfr version");
 
-        output = ProcessTools.executeProcess("jfr", "help", "wrongcommand");
+        output = ExecuteHelper.jfr("help", "wrongcommand");
         output.shouldContain("unknown command 'wrongcommand'");
     }
 }
--- a/test/jdk/jdk/jfr/tool/TestMetadata.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/tool/TestMetadata.java	Fri Dec 07 09:46:53 2018 -0500
@@ -30,7 +30,6 @@
 import jdk.jfr.EventType;
 import jdk.jfr.consumer.RecordingFile;
 import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
 
 /**
  * @test
@@ -46,13 +45,13 @@
         Path f = ExecuteHelper.createProfilingRecording().toAbsolutePath();
         String file = f.toAbsolutePath().toString();
 
-        OutputAnalyzer output = ProcessTools.executeProcess("jfr", "metadata");
+        OutputAnalyzer output = ExecuteHelper.jfr("metadata");
         output.shouldContain("missing file");
 
-        output = ProcessTools.executeProcess("jfr", "metadata", "--wrongOption", file);
+        output = ExecuteHelper.jfr("metadata", "--wrongOption", file);
         output.shouldContain("unknown option --wrongOption");
 
-        output = ProcessTools.executeProcess("jfr", "metadata", file);
+        output = ExecuteHelper.jfr("metadata", file);
         try (RecordingFile rf = new RecordingFile(f)) {
             for (EventType t : rf.readEventTypes()) {
                 String name = t.getName();
--- a/test/jdk/jdk/jfr/tool/TestPrint.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/tool/TestPrint.java	Fri Dec 07 09:46:53 2018 -0500
@@ -31,7 +31,6 @@
 
 import jdk.test.lib.Utils;
 import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
 
 /**
  * @test
@@ -45,17 +44,17 @@
 
     public static void main(String[] args) throws Throwable {
 
-        OutputAnalyzer output = ProcessTools.executeProcess("jfr", "print");
+        OutputAnalyzer output = ExecuteHelper.jfr("print");
         output.shouldContain("missing file");
 
-        output = ProcessTools.executeProcess("jfr", "print", "missing.jfr");
+        output = ExecuteHelper.jfr("print", "missing.jfr");
         output.shouldContain("could not find file ");
 
         Path file = Utils.createTempFile("faked-print-file",  ".jfr");
         FileWriter fw = new FileWriter(file.toFile());
         fw.write('d');
         fw.close();
-        output = ProcessTools.executeProcess("jfr", "print", "--wrongOption", file.toAbsolutePath().toString());
+        output = ExecuteHelper.jfr("print", "--wrongOption", file.toAbsolutePath().toString());
         output.shouldContain("unknown option");
         Files.delete(file);
     }
--- a/test/jdk/jdk/jfr/tool/TestPrintDefault.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/tool/TestPrintDefault.java	Fri Dec 07 09:46:53 2018 -0500
@@ -28,7 +28,6 @@
 import java.nio.file.Path;
 
 import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
 
 /**
  * @test
@@ -48,7 +47,7 @@
 
         Path recordingFile = ExecuteHelper.createProfilingRecording().toAbsolutePath();
 
-        OutputAnalyzer output = ProcessTools.executeProcess("jfr", "print", recordingFile.toString());
+        OutputAnalyzer output = ExecuteHelper.jfr("print", recordingFile.toString());
         output.shouldContain("JVMInformation");
     }
 }
--- a/test/jdk/jdk/jfr/tool/TestPrintJSON.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/tool/TestPrintJSON.java	Fri Dec 07 09:46:53 2018 -0500
@@ -43,7 +43,6 @@
 import jdk.nashorn.api.scripting.JSObject;
 import jdk.test.lib.Asserts;
 import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
 
 /**
  * @test
@@ -63,7 +62,7 @@
 
         Path recordingFile = ExecuteHelper.createProfilingRecording().toAbsolutePath();
 
-        OutputAnalyzer output = ProcessTools.executeProcess("jfr", "print", "--json", "--stack-depth", "999", recordingFile.toString());
+        OutputAnalyzer output = ExecuteHelper.jfr("print", "--json", "--stack-depth", "999", recordingFile.toString());
         String json = output.getStdout();
 
         // Parse JSON using Nashorn
--- a/test/jdk/jdk/jfr/tool/TestPrintXML.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/tool/TestPrintXML.java	Fri Dec 07 09:46:53 2018 -0500
@@ -58,7 +58,6 @@
 import jdk.jfr.consumer.RecordedObject;
 import jdk.jfr.consumer.RecordingFile;
 import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
 
 /**
  * @test
@@ -77,7 +76,7 @@
 
         Path recordingFile = ExecuteHelper.createProfilingRecording().toAbsolutePath();
 
-        OutputAnalyzer output = ProcessTools.executeProcess("jfr", "print", "--xml", "--stack-depth", "9999", recordingFile.toString());
+        OutputAnalyzer output = ExecuteHelper.jfr("print", "--xml", "--stack-depth", "9999", recordingFile.toString());
         System.out.println(recordingFile);
         String xml = output.getStdout();
 
--- a/test/jdk/jdk/jfr/tool/TestSummary.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/jdk/jfr/tool/TestSummary.java	Fri Dec 07 09:46:53 2018 -0500
@@ -30,7 +30,6 @@
 import jdk.jfr.EventType;
 import jdk.jfr.consumer.RecordingFile;
 import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.process.ProcessTools;
 
 /**
  * @test
@@ -46,13 +45,13 @@
         Path f = ExecuteHelper.createProfilingRecording().toAbsolutePath();
         String file = f.toAbsolutePath().toString();
 
-        OutputAnalyzer output = ProcessTools.executeProcess("jfr", "summary");
+        OutputAnalyzer output = ExecuteHelper.jfr("summary");
         output.shouldContain("missing file");
 
-        output = ProcessTools.executeProcess("jfr", "summary", "--wrongOption", file);
+        output = ExecuteHelper.jfr("summary", "--wrongOption", file);
         output.shouldContain("too many arguments");
 
-        output = ProcessTools.executeProcess("jfr", "summary", file);
+        output = ExecuteHelper.jfr("summary", file);
         try (RecordingFile rf = new RecordingFile(f)) {
             for (EventType t : rf.readEventTypes()) {
                 output.shouldContain(t.getName());
--- a/test/jdk/sun/nio/cs/TestIBMBugs.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/jdk/sun/nio/cs/TestIBMBugs.java	Fri Dec 07 09:46:53 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,7 +22,7 @@
  */
 
 /* @test
- * @bug 6371437 6371422 6371416 6371619 5058184 6371431 6639450 6569191 6577466
+ * @bug 6371437 6371422 6371416 6371619 5058184 6371431 6639450 6569191 6577466 8212794
  * @summary Check if the problems reported in above bugs have been fixed
  * @modules jdk.charsets
  */
@@ -234,6 +234,22 @@
         }
     }
 
+    private static void bug8212794 () throws Exception {
+        Charset cs = Charset.forName("x-IBM964");
+        byte[] ba = new byte[] {(byte)0x5c, (byte)0x90, (byte)0xa1, (byte)0xa1};
+        char[] ca = new char[] {'\\', '\u0090', '\u3000'};
+        ByteBuffer bb = ByteBuffer.wrap(ba);
+        CharBuffer cb = cs.decode(bb);
+        if(!Arrays.equals(ca, Arrays.copyOf(cb.array(), cb.limit()))) {
+            throw new Exception("IBM964 failed to decode");
+        }
+        cb = CharBuffer.wrap(ca);
+        bb = cs.encode(cb);
+        if(!Arrays.equals(ba, Arrays.copyOf(bb.array(), bb.limit()))) {
+            throw new Exception("IBM964 failed to encode");
+        }
+    }
+
     public static void main (String[] args) throws Exception {
         bug6577466();
         // need to be tested before any other IBM949C test case
@@ -245,6 +261,7 @@
         bug6371431();
         bug6569191();
         bug8202329();
+        bug8212794();
         bug8213618();
     }
 }
Binary file test/jdk/sun/security/pkcs11/nss/src/nss-3.16-with-nspr-4.10.4.tar.gz has changed
--- a/test/jdk/sun/security/pkcs11/nss/src/nss-3.16-with-nspr-4.10.4.tar.gz.sha256	Thu Dec 06 16:45:26 2018 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-9d23633683ab3cea14519a22a997bc7f5d8d9664b6342df492c194966184ce0d  nss-3.16-with-nspr-4.10.4.tar.gz
--- a/test/langtools/jdk/javadoc/doclet/testDeprecatedDocs/pkg/DeprecatedClassByAnnotation.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testDeprecatedDocs/pkg/DeprecatedClassByAnnotation.java	Fri Dec 07 09:46:53 2018 -0500
@@ -23,7 +23,7 @@
 
 package pkg;
 
-@Deprecated()
+@Deprecated
 public class DeprecatedClassByAnnotation {
 
     @Deprecated(forRemoval=true)
@@ -32,6 +32,6 @@
     @Deprecated(forRemoval=true)
     public DeprecatedClassByAnnotation() {}
 
-    @Deprecated()
+    @Deprecated
     public void method() {}
 }
--- a/test/langtools/jdk/javadoc/doclet/testHtmlVersion/pkg2/DeprecatedClassByAnnotation.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testHtmlVersion/pkg2/DeprecatedClassByAnnotation.java	Fri Dec 07 09:46:53 2018 -0500
@@ -23,15 +23,15 @@
 
 package pkg2;
 
-@Deprecated()
+@Deprecated
 public class DeprecatedClassByAnnotation {
 
-    @Deprecated()
+    @Deprecated
     public int field;
 
-    @Deprecated()
+    @Deprecated
     public DeprecatedClassByAnnotation() {}
 
-    @Deprecated()
+    @Deprecated
     public void method() {}
 }
--- a/test/langtools/jdk/javadoc/doclet/testSearch/pkg2/DeprecatedClassByAnnotation.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testSearch/pkg2/DeprecatedClassByAnnotation.java	Fri Dec 07 09:46:53 2018 -0500
@@ -23,15 +23,15 @@
 
 package pkg2;
 
-@Deprecated()
+@Deprecated
 public class DeprecatedClassByAnnotation {
 
-    @Deprecated()
+    @Deprecated
     public int field;
 
-    @Deprecated()
+    @Deprecated
     public DeprecatedClassByAnnotation() {}
 
-    @Deprecated()
+    @Deprecated
     public void method() {}
 }
--- a/test/langtools/jdk/javadoc/doclet/testSeeTag/TestSeeTag.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testSeeTag/TestSeeTag.java	Fri Dec 07 09:46:53 2018 -0500
@@ -95,7 +95,7 @@
         checkOutput("badref/Test.html", true,
                 "<dl>\n"
                 + "<dt><span class=\"seeLabel\">See Also:</span></dt>\n"
-                + "<dd><code>Object[]</code>, \n"
+                + "<dd><code>Object</code>, \n"
                 + "<code>Foo<String></code></dd>\n"
                 + "</dl>");
     }
--- a/test/langtools/jdk/javadoc/doclet/testSerializedForm/SerializedForm.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testSerializedForm/SerializedForm.java	Fri Dec 07 09:46:53 2018 -0500
@@ -31,13 +31,15 @@
 
     /**
      * @serialField name String a test
+     * @serialField longs Long[] the longs
      * @see TestSerializedForm
      */
     @Deprecated
     private static final ObjectStreamField[] serialPersistentFields = {
         new ObjectStreamField("i", int.class),
         new ObjectStreamField("count", Integer.TYPE),
-        new ObjectStreamField("name", String.class)
+        new ObjectStreamField("name", String.class),
+        new ObjectStreamField("longs", Long[].class)
     };
 
     /**
--- a/test/langtools/jdk/javadoc/doclet/testSerializedForm/TestSerializedForm.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testSerializedForm/TestSerializedForm.java	Fri Dec 07 09:46:53 2018 -0500
@@ -84,6 +84,19 @@
                 + "pkg1.ProtectedInnerClass.ProInnerClass</a> extends java.lang.Object implements Serializable</h3>",
                 "<h3>Class pkg1.PublicExcludeInnerClass.PubInnerClass extends java.lang.Object implements "
                 + "Serializable</h3>");
+
+        checkOutput("serialized-form.html", true,
+                "<h3>Serialized Fields</h3>\n" +
+                "<ul class=\"blockList\">\n" +
+                "<li class=\"blockList\">\n" +
+                "<h4>longs</h4>\n" +
+                "<pre>Long[] longs</pre>\n" +
+                "<div class=\"block\">the longs</div>\n" +
+                "</li>\n" +
+                "<li class=\"blockListLast\">\n" +
+                "<h4>name</h4>\n" +
+                "<pre>java.lang.String name</pre>\n" +
+                "<div class=\"block\">a test</div>");
     }
 
     @Test
@@ -113,6 +126,19 @@
                 "<h3>Class <a href=\"pkg1/PublicExcludeInnerClass.PubInnerClass.html\" "
                 + "title=\"class in pkg1\">pkg1.PublicExcludeInnerClass.PubInnerClass</a> "
                 + "extends java.lang.Object implements Serializable</h3>");
+
+        checkOutput("serialized-form.html", true,
+                "<h3>Serialized Fields</h3>\n" +
+                "<ul class=\"blockList\">\n" +
+                "<li class=\"blockList\">\n" +
+                "<h4>longs</h4>\n" +
+                "<pre>Long[] longs</pre>\n" +
+                "<div class=\"block\">the longs</div>\n" +
+                "</li>\n" +
+                "<li class=\"blockListLast\">\n" +
+                "<h4>name</h4>\n" +
+                "<pre>java.lang.String name</pre>\n" +
+                "<div class=\"block\">a test</div>");
     }
 
     @Test
--- a/test/langtools/tools/doclint/ReferenceTest.out	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/doclint/ReferenceTest.out	Fri Dec 07 09:46:53 2018 -0500
@@ -43,24 +43,12 @@
 ReferenceTest.java:65: error: type arguments not allowed here
      * @see not.Found<String>
             ^
-ReferenceTest.java:70: error: array type not allowed here
-     * {@link java.lang.String[]}
-              ^
-ReferenceTest.java:71: error: array type not allowed here
-     * {@link java.lang.String[]#equals}
-              ^
-ReferenceTest.java:72: error: array type not allowed here
+ReferenceTest.java:72: error: reference not found
      * {@link not.Found[]}
               ^
-ReferenceTest.java:73: error: array type not allowed here
-     * @see java.lang.String[]
-            ^
-ReferenceTest.java:74: error: array type not allowed here
-     * @see java.lang.String[]#equals
-            ^
-ReferenceTest.java:75: error: array type not allowed here
+ReferenceTest.java:75: error: reference not found
      * @see not.Found[]
             ^
-20 errors
+16 errors
 1 warning
 
--- a/test/langtools/tools/javac/T8020997/CannotCompileRepeatedAnnoTest.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/T8020997/CannotCompileRepeatedAnnoTest.java	Fri Dec 07 09:46:53 2018 -0500
@@ -31,7 +31,7 @@
 import java.lang.annotation.*;
 
 @Anno(req = true)
-@Anno()
+@Anno
 public class CannotCompileRepeatedAnnoTest {
 }
 
--- a/test/langtools/tools/javac/annotations/6881115/T6881115.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/annotations/6881115/T6881115.java	Fri Dec 07 09:46:53 2018 -0500
@@ -12,7 +12,7 @@
 @Target({ElementType.TYPE, ElementType.TYPE_PARAMETER, ElementType.ANNOTATION_TYPE})
 @interface A {
     B b() default @B(b2 = 1, b2 = 2);
-    B[] b_arr() default {@B(), @B(b2 = 1, b2 = 2)};
+    B[] b_arr() default {@B, @B(b2 = 1, b2 = 2)};
 }
 
 @interface B {
@@ -21,6 +21,6 @@
 }
 
 @A(b = @B(b2 = 1, b2 = 2),
-   b_arr = {@B(), @B(b2 = 1, b2 = 2)})
+   b_arr = {@B, @B(b2 = 1, b2 = 2)})
 class T6881115<@A(b = @B(b2 = 1, b2 = 2),
-                  b_arr = {@B(), @B(b2 = 1, b2 = 2)}) X> {}
+                  b_arr = {@B, @B(b2 = 1, b2 = 2)}) X> {}
--- a/test/langtools/tools/javac/annotations/6881115/T6881115.out	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/annotations/6881115/T6881115.out	Fri Dec 07 09:46:53 2018 -0500
@@ -1,16 +1,16 @@
 T6881115.java:14:30: compiler.err.duplicate.annotation.member.value: b2, B
 T6881115.java:14:19: compiler.err.annotation.missing.default.value: B, b1
 T6881115.java:15:26: compiler.err.annotation.missing.default.value.1: B, b1,b2
-T6881115.java:15:43: compiler.err.duplicate.annotation.member.value: b2, B
-T6881115.java:15:32: compiler.err.annotation.missing.default.value: B, b1
+T6881115.java:15:41: compiler.err.duplicate.annotation.member.value: b2, B
+T6881115.java:15:30: compiler.err.annotation.missing.default.value: B, b1
 T6881115.java:23:19: compiler.err.duplicate.annotation.member.value: b2, B
 T6881115.java:23:8: compiler.err.annotation.missing.default.value: B, b1
 T6881115.java:24:13: compiler.err.annotation.missing.default.value.1: B, b1,b2
-T6881115.java:24:30: compiler.err.duplicate.annotation.member.value: b2, B
-T6881115.java:24:19: compiler.err.annotation.missing.default.value: B, b1
+T6881115.java:24:28: compiler.err.duplicate.annotation.member.value: b2, B
+T6881115.java:24:17: compiler.err.annotation.missing.default.value: B, b1
 T6881115.java:25:34: compiler.err.duplicate.annotation.member.value: b2, B
 T6881115.java:25:23: compiler.err.annotation.missing.default.value: B, b1
 T6881115.java:26:28: compiler.err.annotation.missing.default.value.1: B, b1,b2
-T6881115.java:26:45: compiler.err.duplicate.annotation.member.value: b2, B
-T6881115.java:26:34: compiler.err.annotation.missing.default.value: B, b1
+T6881115.java:26:43: compiler.err.duplicate.annotation.member.value: b2, B
+T6881115.java:26:32: compiler.err.annotation.missing.default.value: B, b1
 15 errors
--- a/test/langtools/tools/javac/annotations/neg/Cycle3.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/annotations/neg/Cycle3.java	Fri Dec 07 09:46:53 2018 -0500
@@ -14,10 +14,10 @@
 
 @Retention(RUNTIME)
 @interface A {
-    A[] values() default { @A() };
+    A[] values() default { @A };
 }
 
-@A()
+@A
 class Main {
     public static void main(String[] args) {
         A a = Main.class.getAnnotation(A.class);
--- a/test/langtools/tools/javac/annotations/pos/Primitives.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/annotations/pos/Primitives.java	Fri Dec 07 09:46:53 2018 -0500
@@ -39,8 +39,8 @@
         Class[] value() default { void.class };
     }
 
-    @A()
-    @B()
+    @A
+    @B
     static class T1 {}
 
     @A(int.class)
--- a/test/langtools/tools/javac/annotations/repeatingAnnotations/BaseAnnoAsContainerAnno.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/annotations/repeatingAnnotations/BaseAnnoAsContainerAnno.java	Fri Dec 07 09:46:53 2018 -0500
@@ -13,6 +13,6 @@
     Foo[] value() default {};
 }
 
-@Foo() @Foo()
+@Foo @Foo
 public class BaseAnnoAsContainerAnno {}
 
--- a/test/langtools/tools/javac/annotations/repeatingAnnotations/MissingContainer.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/annotations/repeatingAnnotations/MissingContainer.java	Fri Dec 07 09:46:53 2018 -0500
@@ -8,7 +8,7 @@
 
 import java.lang.annotation.Repeatable;
 
-@Repeatable()
+@Repeatable
 @interface Foo {}
 
 @interface FooContainer {
--- a/test/langtools/tools/javac/annotations/typeAnnotations/api/AnnotatedArrayOrder.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/annotations/typeAnnotations/api/AnnotatedArrayOrder.java	Fri Dec 07 09:46:53 2018 -0500
@@ -107,30 +107,30 @@
     // visited code
     @A String @C [] @B [] field;
     static {
-        // Shouldn't find @A(), as it is field annotation
-        expectedLocations.put("@B()", 1);
-        expectedLocations.put("@C()", 2);
+        // Shouldn't find @A, as it is field annotation
+        expectedLocations.put("@B", 1);
+        expectedLocations.put("@C", 2);
     }
 
     List<@D String @F [] @E []> typearg;
     static {
-        expectedLocations.put("@D()", 0);
-        expectedLocations.put("@E()", 1);
-        expectedLocations.put("@F()", 2);
+        expectedLocations.put("@D", 0);
+        expectedLocations.put("@E", 1);
+        expectedLocations.put("@F", 2);
     }
 
     void varargSimple(@G String @H ... vararg1) { }
     static {
-        // Shouldn't find @G(), as it is a parameter annotation
-        expectedLocations.put("@H()", 1);
+        // Shouldn't find @G, as it is a parameter annotation
+        expectedLocations.put("@H", 1);
     }
 
     void varargLong(@I String @L [] @K [] @J ... vararg2) { }
     static {
-        // Shouldn't find @I(), as it is a parameter annotation
-        expectedLocations.put("@J()", 1);
-        expectedLocations.put("@K()", 2);
-        expectedLocations.put("@L()", 3);
+        // Shouldn't find @I, as it is a parameter annotation
+        expectedLocations.put("@J", 1);
+        expectedLocations.put("@K", 2);
+        expectedLocations.put("@L", 3);
     }
 
     @Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
--- a/test/langtools/tools/javac/annotations/typeAnnotations/api/ArrayCreationTree.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/annotations/typeAnnotations/api/ArrayCreationTree.java	Fri Dec 07 09:46:53 2018 -0500
@@ -84,11 +84,11 @@
             foundAnnotations++;
 
             int expected = -1;
-            if (annotation.equals("@A()"))
+            if (annotation.equals("@A"))
                 expected = 0;
-            else if (annotation.equals("@B()"))
+            else if (annotation.equals("@B"))
                 expected = 1;
-            else if (annotation.equals("@C()"))
+            else if (annotation.equals("@C"))
                 expected = 2;
             else
                 throw new AssertionError("found an unexpected annotation: " + annotation);
--- a/test/langtools/tools/javac/annotations/typeAnnotations/api/ArrayPositionConsistency.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/annotations/typeAnnotations/api/ArrayPositionConsistency.java	Fri Dec 07 09:46:53 2018 -0500
@@ -79,11 +79,11 @@
             foundAnnotations++;
 
             int expected = -1;
-            if (annotation.equals("@A()"))
+            if (annotation.equals("@A"))
                 expected = 0;
-            else if (annotation.equals("@B()"))
+            else if (annotation.equals("@B"))
                 expected = 1;
-            else if (annotation.equals("@C()"))
+            else if (annotation.equals("@C"))
                 expected = 2;
             else
                 throw new AssertionError("found an unexpected annotation: " + annotation);
--- a/test/langtools/tools/javac/annotations/typeAnnotations/failures/AnnotatedMethodSelectorTest.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/annotations/typeAnnotations/failures/AnnotatedMethodSelectorTest.java	Fri Dec 07 09:46:53 2018 -0500
@@ -9,6 +9,6 @@
 class AnnotatedMethodSelectorTest {
     @interface A {}
     static public void main(String... args) {
-        java.util.@A() Arrays.stream(args);
+        java.util.@A Arrays.stream(args);
     }
 }
--- a/test/langtools/tools/javac/diags/examples/AnnoNotApplicable.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/diags/examples/AnnoNotApplicable.java	Fri Dec 07 09:46:53 2018 -0500
@@ -29,5 +29,5 @@
 @interface Anno { }
 
 
-@Anno()
+@Anno
 class AnnoNotApplicable { }
--- a/test/langtools/tools/javac/tree/TypeAnnotationsPretty.java	Thu Dec 06 16:45:26 2018 -0500
+++ b/test/langtools/tools/javac/tree/TypeAnnotationsPretty.java	Fri Dec 07 09:46:53 2018 -0500
@@ -60,26 +60,26 @@
     public static void main(String... args) throws Exception {
         TypeAnnotationsPretty tap = new TypeAnnotationsPretty();
 
-        tap.runField("@TA()\nObject cls = null");
-        tap.runField("@TA()\nObject cls = new @TA() Object()");
+        tap.runField("@TA\nObject cls = null");
+        tap.runField("@TA\nObject cls = new @TA Object()");
 
-        tap.runField("@TA()\nList<@TB() Object> cls = null");
-        tap.runField("@TA()\nList<@TB() Object> cls = new @TA() LinkedList<@TB() Object>()");
+        tap.runField("@TA\nList<@TB Object> cls = null");
+        tap.runField("@TA\nList<@TB Object> cls = new @TA LinkedList<@TB Object>()");
 
         tap.runField("Class[] cls = null");
-        tap.runField("@TA()\nClass[] cls = null");
-        tap.runField("Class @TA() [] cls = null");
-        tap.runField("@TA()\nClass @TB() [] cls = null");
+        tap.runField("@TA\nClass[] cls = null");
+        tap.runField("Class @TA [] cls = null");
+        tap.runField("@TA\nClass @TB [] cls = null");
 
         tap.runField("Class[] cls = new Class[]{Object.class}");
-        tap.runField("@TA()\nClass[] cls = new @TA() Class[]{Object.class}");
-        tap.runField("Class @TB() [] cls = new Class @TB() []{Object.class}");
-        tap.runField("@TA()\nClass @TB() [] cls = new @TA() Class @TB() []{Object.class}");
-        tap.runField("@TA()\nClass @TB() [] @TC() [] cls = new @TA() Class @TB() [10] @TC() []");
-        tap.runField("Class @TB() [] @TC() [] cls = new Class @TB() [10] @TC() []");
-        tap.runField("@TA()\nClass @TB() [] @TC() [] @TD() [] cls = new @TA() Class @TB() [10] @TC() [] @TD() []");
+        tap.runField("@TA\nClass[] cls = new @TA Class[]{Object.class}");
+        tap.runField("Class @TB [] cls = new Class @TB []{Object.class}");
+        tap.runField("@TA\nClass @TB [] cls = new @TA Class @TB []{Object.class}");
+        tap.runField("@TA\nClass @TB [] @TC [] cls = new @TA Class @TB [10] @TC []");
+        tap.runField("Class @TB [] @TC [] cls = new Class @TB [10] @TC []");
+        tap.runField("@TA\nClass @TB [] @TC [] @TD [] cls = new @TA Class @TB [10] @TC [] @TD []");
 
-        tap.runMethod("\n@TA()\nObject test(@TB()\nList<@TC() String> p) {\n" +
+        tap.runMethod("\n@TA\nObject test(@TB\nList<@TC String> p) {\n" +
                 "    return null;\n" +
                 "}");