[Pcre-svn] [349] code/trunk: Preliminary patch for upgraded …

Página Inicial
Delete this message
Autor: Subversion repository
Data:  
Para: pcre-svn
Assunto: [Pcre-svn] [349] code/trunk: Preliminary patch for upgraded Unicode Property support.
Revision: 349
          http://vcs.pcre.org/viewvc?view=rev&revision=349
Author:   ph10
Date:     2008-07-02 19:42:11 +0100 (Wed, 02 Jul 2008)


Log Message:
-----------
Preliminary patch for upgraded Unicode Property support.

Modified Paths:
--------------
    code/trunk/ChangeLog
    code/trunk/Makefile.am
    code/trunk/configure.ac
    code/trunk/pcre_compile.c
    code/trunk/pcre_dfa_exec.c
    code/trunk/pcre_exec.c
    code/trunk/pcre_internal.h
    code/trunk/pcre_ord2utf8.c
    code/trunk/pcre_xclass.c
    code/trunk/testdata/testinput6
    code/trunk/testdata/testinput9
    code/trunk/testdata/testoutput6
    code/trunk/testdata/testoutput9


Added Paths:
-----------
    code/trunk/maint/MultiStage2.py
    code/trunk/maint/Unicode.tables/DerivedGeneralCategory.txt
    code/trunk/pcre_ucd.c


Modified: code/trunk/ChangeLog
===================================================================
--- code/trunk/ChangeLog    2008-05-07 16:39:17 UTC (rev 348)
+++ code/trunk/ChangeLog    2008-07-02 18:42:11 UTC (rev 349)
@@ -1,6 +1,17 @@
 ChangeLog for PCRE
 ------------------


+Version 8.0 02 Jul-08
+---------------------
+
+1.  Replaced UCP searching code with optimized version as implemented for Ad
+    Muncher (http://www.admuncher.com/) by Peter Kankowski. This uses a two-
+    stage table and inline lookup instead of a function, giving speed ups of 2 
+    to 5 times on some simple patterns that I tested. Permission was given to 
+    distribute the MultiStage2.py script that generates the tables (it's not in 
+    the tarball, but is in the Subversion repository). 
+
+
 Version 7.7 07-May-08
 ---------------------



Modified: code/trunk/Makefile.am
===================================================================
--- code/trunk/Makefile.am    2008-05-07 16:39:17 UTC (rev 348)
+++ code/trunk/Makefile.am    2008-07-02 18:42:11 UTC (rev 349)
@@ -178,13 +178,11 @@
   pcre_study.c \
   pcre_tables.c \
   pcre_try_flipped.c \
-  pcre_ucp_searchfuncs.c \
+  pcre_ucd.c \
   pcre_valid_utf8.c \
   pcre_version.c \
   pcre_xclass.c \
-  ucp.h \
-  ucpinternal.h \
-  ucptable.h
+  ucp.h


 ## This file is generated as part of the building process, so don't distribute.
 nodist_libpcre_la_SOURCES = \
@@ -316,7 +314,7 @@
     pcre_globals.o pcre_info.o pcre_maketables.o \
     pcre_newline.o pcre_ord2utf8.o pcre_refcount.o \
     pcre_study.o pcre_tables.o pcre_try_flipped.o \
-    pcre_ucp_searchfuncs.o pcre_valid_utf8.o pcre_version.o \
+    pcre_ucd.o pcre_valid_utf8.o pcre_version.o \
     pcre_chartables.o \
     pcre_xclass.o



Modified: code/trunk/configure.ac
===================================================================
--- code/trunk/configure.ac    2008-05-07 16:39:17 UTC (rev 348)
+++ code/trunk/configure.ac    2008-07-02 18:42:11 UTC (rev 349)
@@ -6,10 +6,10 @@
 dnl be defined as -RC2, for example. For real releases, it should be defined
 dnl empty.


-m4_define(pcre_major, [7])
-m4_define(pcre_minor, [7])
-m4_define(pcre_prerelease, [])
-m4_define(pcre_date, [2008-05-07])
+m4_define(pcre_major, [8])
+m4_define(pcre_minor, [0])
+m4_define(pcre_prerelease, [-RC1])
+m4_define(pcre_date, [2008-07-01])

# Libtool shared library interface versions (current:revision:age)
m4_define(libpcre_version, [0:1:0])

Added: code/trunk/maint/MultiStage2.py
===================================================================
--- code/trunk/maint/MultiStage2.py                            (rev 0)
+++ code/trunk/maint/MultiStage2.py    2008-07-02 18:42:11 UTC (rev 349)
@@ -0,0 +1,209 @@
+#! /usr/bin/python
+
+# Multistage table builder
+# (c) Peter Kankowski, 2008
+
+import re
+import string
+import sys
+
+MAX_UNICODE = 0x110000
+NOTACHAR = 0xffffffff
+
+# Parse a line of CaseFolding.txt, Scripts.txt, and DerivedGeneralCategory.txt file
+def make_get_names(enum):
+        return lambda chardata: enum.index(chardata[1])
+
+def get_case_folding_value(chardata):
+        if chardata[1] != 'C' and chardata[1] != 'S':
+                return 0
+        return int(chardata[2], 16) - int(chardata[0], 16)
+        
+def get_other_case(chardata):
+        if chardata[12] != '':
+                return int(chardata[12], 16) - int(chardata[0], 16)
+        if chardata[13] != '':
+                return int(chardata[13], 16) - int(chardata[0], 16)
+        return 0
+
+# Read the whole table in memory
+def read_table(file_name, get_value, default_value):
+        file = open(file_name, 'r')
+        table = [default_value] * MAX_UNICODE
+        for line in file:
+                line = re.sub(r'#.*', '', line)
+                chardata = map(string.strip, line.split(';'))
+                if len(chardata) <= 1:
+                        continue
+                value = get_value(chardata)
+                
+                m = re.match(r'([0-9a-fA-F]+)(\.\.([0-9a-fA-F]+))?$', chardata[0])
+                char = int(m.group(1), 16)
+#PH             last = char if m.group(3) is None else int(m.group(3), 16)
+                if m.group(3) is None:
+                        last = char
+                else:
+                        last = int(m.group(3), 16)            
+                for i in range(char, last + 1):
+                        table[i] = value
+        file.close()
+        return table
+
+# Get the smallest possible C language type for the values
+def get_type_size(table):
+        type_size = [("uschar", 1), ("pcre_uint16", 2), ("pcre_uint32", 4),
+                                 ("signed char", 1), ("pcre_int16", 2), ("pcre_int32", 4)]
+        limits = [(0, 255), (0, 65535), (0, 4294967295),
+                          (-128, 127), (-32768, 32767), (-2147483648, 2147483647)]
+        minval = min(table)
+        maxval = max(table)
+        for num, (minlimit, maxlimit) in enumerate(limits):
+                if minlimit <= minval and maxval <= maxlimit:
+                        return type_size[num]
+        else:
+                raise OverflowError, "Too large to fit into C types"
+
+def get_tables_size(*tables):
+        total_size = 0
+        for table in tables:
+                type, size = get_type_size(table)
+                total_size += size * len(table)
+        return total_size
+
+# Compress the table into the two stages
+def compress_table(table, block_size):
+        blocks = {} # Dictionary for finding identical blocks
+        stage1 = [] # Stage 1 table contains block numbers (indices into stage 2 table)
+        stage2 = [] # Stage 2 table contains the blocks with property values
+        table = tuple(table)
+        for i in range(0, len(table), block_size):
+                block = table[i:i+block_size]
+                start = blocks.get(block)
+                if start is None:
+                        # Allocate a new block
+                        start = len(stage2) / block_size
+                        stage2 += block
+                        blocks[block] = start
+                stage1.append(start)
+        
+        return stage1, stage2
+
+# Print a table
+def print_table(table, table_name, block_size = None):
+        type, size = get_type_size(table)
+        ELEMS_PER_LINE = 16
+        
+        s = "const %s %s[] = { /* %d bytes" % (type, table_name, size * len(table))
+        if block_size:
+                s += ", block = %d" % block_size
+        print s + " */"
+        table = tuple(table)
+        if block_size is None:
+                fmt = "%3d," * ELEMS_PER_LINE + " /* U+%04X */"
+                mult = MAX_UNICODE / len(table)
+                for i in range(0, len(table), ELEMS_PER_LINE):
+                        print fmt % (table[i:i+ELEMS_PER_LINE] + (i * mult,))
+        else:
+#PH             fmt = "%3d," * (ELEMS_PER_LINE if block_size > ELEMS_PER_LINE else block_size) + "\n"
+                if block_size > ELEMS_PER_LINE:
+                        fmt = "%3d," * ELEMS_PER_LINE + "\n"
+                else:
+                        fmt = "%3d," * block_size + "\n"          
+                if block_size > ELEMS_PER_LINE:
+                        fmt = fmt * (block_size / ELEMS_PER_LINE)
+                for i in range(0, len(table), block_size):
+                        print ("/* block %d */\n" + fmt) % ((i / block_size,) + table[i:i+block_size])
+        print "};\n"
+
+# Extract the unique combinations of properties into records
+def combine_tables(*tables):
+        records = {}
+        index = []
+        for t in zip(*tables):
+                i = records.get(t)
+                if i is None:
+                        i = records[t] = len(records)
+                index.append(i)
+        return index, records
+
+def print_records(records):
+        print 'const ucd_record ucd_records[] = { /* %d bytes */' % (len(records) * 4)
+        records = zip(records.keys(), records.values())
+        records.sort(None, lambda x: x[1])
+        for i, record in enumerate(records):
+                print ('  {' + '%6d, ' * len(record[0]) + '}, /* %3d */') % (record[0] + (i,))
+        print '};\n'
+
+script_names = ['Arabic', 'Armenian', 'Bengali', 'Bopomofo', 'Braille', 'Buginese', 'Buhid', 'Canadian_Aboriginal', \
+ 'Cherokee', 'Common', 'Coptic', 'Cypriot', 'Cyrillic', 'Deseret', 'Devanagari', 'Ethiopic', 'Georgian', \
+ 'Glagolitic', 'Gothic', 'Greek', 'Gujarati', 'Gurmukhi', 'Han', 'Hangul', 'Hanunoo', 'Hebrew', 'Hiragana', \
+ 'Inherited', 'Kannada', 'Katakana', 'Kharoshthi', 'Khmer', 'Lao', 'Latin', 'Limbu', 'Linear_B', 'Malayalam', \
+ 'Mongolian', 'Myanmar', 'New_Tai_Lue', 'Ogham', 'Old_Italic', 'Old_Persian', 'Oriya', 'Osmanya', 'Runic', \
+ 'Shavian', 'Sinhala', 'Syloti_Nagri', 'Syriac', 'Tagalog', 'Tagbanwa', 'Tai_Le', 'Tamil', 'Telugu', 'Thaana', \
+ 'Thai', 'Tibetan', 'Tifinagh', 'Ugaritic', 'Yi', \
+ 'Balinese', 'Cuneiform', 'Nko', 'Phags_Pa', 'Phoenician']
+ 
+category_names = ['Cc', 'Cf', 'Cn', 'Co', 'Cs', 'Ll', 'Lm', 'Lo', 'Lt', 'Lu',
+  'Mc', 'Me', 'Mn', 'Nd', 'Nl', 'No', 'Pc', 'Pd', 'Pe', 'Pf', 'Pi', 'Po', 'Ps',
+  'Sc', 'Sk', 'Sm', 'So', 'Zl', 'Zp', 'Zs' ]
+
+
+script = read_table('Unicode.tables/Scripts.txt', make_get_names(script_names), script_names.index('Common'))
+category = read_table('Unicode.tables/DerivedGeneralCategory.txt', make_get_names(category_names), category_names.index('Cn'))
+other_case = read_table('Unicode.tables/UnicodeData.txt', get_other_case, 0)
+# case_fold = read_table('CaseFolding.txt', get_case_folding_value, 0)
+
+table, records = combine_tables(script, category, other_case)
+
+# Find the optimum block size for the two-stage table
+min_size = sys.maxint
+for block_size in [2 ** i for i in range(5,10)]:
+        size = len(records) * 4
+        stage1, stage2 = compress_table(table, block_size)
+        size += get_tables_size(stage1, stage2)
+        #print "/* block size %5d  => %5d bytes */" % (block_size, size)
+        if size < min_size:
+                min_size = size
+                min_stage1, min_stage2 = stage1, stage2
+                min_block_size = block_size
+
+print "#ifdef HAVE_CONFIG_H"
+print "#include \"config.h\""
+print "#endif"
+print "#include \"pcre_internal.h\""
+print
+print "/* Unicode character database. */"
+print "/* This file was autogenerated by MultiStage2.py script. */"
+print "/* Total size: %d bytes, block size: %d. */" % (min_size, min_block_size)
+print_records(records)
+print_table(min_stage1, 'ucd_stage1')
+print_table(min_stage2, 'ucd_stage2', min_block_size)
+print "#if UCD_BLOCK_SIZE != %d" % min_block_size
+print "#error Please correct UCD_BLOCK_SIZE in pcre_internal.h"
+print "#endif"
+
+"""
+
+# Three-stage tables:
+
+# Find the optimum block size for 3-stage table
+min_size = sys.maxint
+for stage3_block in [2 ** i for i in range(2,6)]:
+        stage_i, stage3 = compress_table(table, stage3_block)
+        for stage2_block in [2 ** i for i in range(5,10)]:
+                size = len(records) * 4
+                stage1, stage2 = compress_table(stage_i, stage2_block)
+                size += get_tables_size(stage1, stage2, stage3)
+                # print "/* %5d / %3d  => %5d bytes */" % (stage2_block, stage3_block, size)
+                if size < min_size:
+                        min_size = size
+                        min_stage1, min_stage2, min_stage3 = stage1, stage2, stage3
+                        min_stage2_block, min_stage3_block = stage2_block, stage3_block
+
+print "/* Total size: %d bytes" % min_size */
+print_records(records)
+print_table(min_stage1, 'ucd_stage1')
+print_table(min_stage2, 'ucd_stage2', min_stage2_block)
+print_table(min_stage3, 'ucd_stage3', min_stage3_block)
+
+"""



Property changes on: code/trunk/maint/MultiStage2.py
___________________________________________________________________
Name: svn:executable
+ *

Added: code/trunk/maint/Unicode.tables/DerivedGeneralCategory.txt
===================================================================
--- code/trunk/maint/Unicode.tables/DerivedGeneralCategory.txt                            (rev 0)
+++ code/trunk/maint/Unicode.tables/DerivedGeneralCategory.txt    2008-07-02 18:42:11 UTC (rev 349)
@@ -0,0 +1,2720 @@
+# DerivedGeneralCategory-5.0.0.txt
+# Date: 2006-02-27, 23:41:27 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+
+# ================================================
+
+# Property:    General_Category
+
+# ================================================
+
+# General_Category=Unassigned
+
+0370..0373    ; Cn #   [4] <reserved-0370>..<reserved-0373>
+0376..0379    ; Cn #   [4] <reserved-0376>..<reserved-0379>
+037F..0383    ; Cn #   [5] <reserved-037F>..<reserved-0383>
+038B          ; Cn #       <reserved-038B>
+038D          ; Cn #       <reserved-038D>
+03A2          ; Cn #       <reserved-03A2>
+03CF          ; Cn #       <reserved-03CF>
+0487          ; Cn #       <reserved-0487>
+0514..0530    ; Cn #  [29] <reserved-0514>..<reserved-0530>
+0557..0558    ; Cn #   [2] <reserved-0557>..<reserved-0558>
+0560          ; Cn #       <reserved-0560>
+0588          ; Cn #       <reserved-0588>
+058B..0590    ; Cn #   [6] <reserved-058B>..<reserved-0590>
+05C8..05CF    ; Cn #   [8] <reserved-05C8>..<reserved-05CF>
+05EB..05EF    ; Cn #   [5] <reserved-05EB>..<reserved-05EF>
+05F5..05FF    ; Cn #  [11] <reserved-05F5>..<reserved-05FF>
+0604..060A    ; Cn #   [7] <reserved-0604>..<reserved-060A>
+0616..061A    ; Cn #   [5] <reserved-0616>..<reserved-061A>
+061C..061D    ; Cn #   [2] <reserved-061C>..<reserved-061D>
+0620          ; Cn #       <reserved-0620>
+063B..063F    ; Cn #   [5] <reserved-063B>..<reserved-063F>
+065F          ; Cn #       <reserved-065F>
+070E          ; Cn #       <reserved-070E>
+074B..074C    ; Cn #   [2] <reserved-074B>..<reserved-074C>
+076E..077F    ; Cn #  [18] <reserved-076E>..<reserved-077F>
+07B2..07BF    ; Cn #  [14] <reserved-07B2>..<reserved-07BF>
+07FB..0900    ; Cn # [262] <reserved-07FB>..<reserved-0900>
+093A..093B    ; Cn #   [2] <reserved-093A>..<reserved-093B>
+094E..094F    ; Cn #   [2] <reserved-094E>..<reserved-094F>
+0955..0957    ; Cn #   [3] <reserved-0955>..<reserved-0957>
+0971..097A    ; Cn #  [10] <reserved-0971>..<reserved-097A>
+0980          ; Cn #       <reserved-0980>
+0984          ; Cn #       <reserved-0984>
+098D..098E    ; Cn #   [2] <reserved-098D>..<reserved-098E>
+0991..0992    ; Cn #   [2] <reserved-0991>..<reserved-0992>
+09A9          ; Cn #       <reserved-09A9>
+09B1          ; Cn #       <reserved-09B1>
+09B3..09B5    ; Cn #   [3] <reserved-09B3>..<reserved-09B5>
+09BA..09BB    ; Cn #   [2] <reserved-09BA>..<reserved-09BB>
+09C5..09C6    ; Cn #   [2] <reserved-09C5>..<reserved-09C6>
+09C9..09CA    ; Cn #   [2] <reserved-09C9>..<reserved-09CA>
+09CF..09D6    ; Cn #   [8] <reserved-09CF>..<reserved-09D6>
+09D8..09DB    ; Cn #   [4] <reserved-09D8>..<reserved-09DB>
+09DE          ; Cn #       <reserved-09DE>
+09E4..09E5    ; Cn #   [2] <reserved-09E4>..<reserved-09E5>
+09FB..0A00    ; Cn #   [6] <reserved-09FB>..<reserved-0A00>
+0A04          ; Cn #       <reserved-0A04>
+0A0B..0A0E    ; Cn #   [4] <reserved-0A0B>..<reserved-0A0E>
+0A11..0A12    ; Cn #   [2] <reserved-0A11>..<reserved-0A12>
+0A29          ; Cn #       <reserved-0A29>
+0A31          ; Cn #       <reserved-0A31>
+0A34          ; Cn #       <reserved-0A34>
+0A37          ; Cn #       <reserved-0A37>
+0A3A..0A3B    ; Cn #   [2] <reserved-0A3A>..<reserved-0A3B>
+0A3D          ; Cn #       <reserved-0A3D>
+0A43..0A46    ; Cn #   [4] <reserved-0A43>..<reserved-0A46>
+0A49..0A4A    ; Cn #   [2] <reserved-0A49>..<reserved-0A4A>
+0A4E..0A58    ; Cn #  [11] <reserved-0A4E>..<reserved-0A58>
+0A5D          ; Cn #       <reserved-0A5D>
+0A5F..0A65    ; Cn #   [7] <reserved-0A5F>..<reserved-0A65>
+0A75..0A80    ; Cn #  [12] <reserved-0A75>..<reserved-0A80>
+0A84          ; Cn #       <reserved-0A84>
+0A8E          ; Cn #       <reserved-0A8E>
+0A92          ; Cn #       <reserved-0A92>
+0AA9          ; Cn #       <reserved-0AA9>
+0AB1          ; Cn #       <reserved-0AB1>
+0AB4          ; Cn #       <reserved-0AB4>
+0ABA..0ABB    ; Cn #   [2] <reserved-0ABA>..<reserved-0ABB>
+0AC6          ; Cn #       <reserved-0AC6>
+0ACA          ; Cn #       <reserved-0ACA>
+0ACE..0ACF    ; Cn #   [2] <reserved-0ACE>..<reserved-0ACF>
+0AD1..0ADF    ; Cn #  [15] <reserved-0AD1>..<reserved-0ADF>
+0AE4..0AE5    ; Cn #   [2] <reserved-0AE4>..<reserved-0AE5>
+0AF0          ; Cn #       <reserved-0AF0>
+0AF2..0B00    ; Cn #  [15] <reserved-0AF2>..<reserved-0B00>
+0B04          ; Cn #       <reserved-0B04>
+0B0D..0B0E    ; Cn #   [2] <reserved-0B0D>..<reserved-0B0E>
+0B11..0B12    ; Cn #   [2] <reserved-0B11>..<reserved-0B12>
+0B29          ; Cn #       <reserved-0B29>
+0B31          ; Cn #       <reserved-0B31>
+0B34          ; Cn #       <reserved-0B34>
+0B3A..0B3B    ; Cn #   [2] <reserved-0B3A>..<reserved-0B3B>
+0B44..0B46    ; Cn #   [3] <reserved-0B44>..<reserved-0B46>
+0B49..0B4A    ; Cn #   [2] <reserved-0B49>..<reserved-0B4A>
+0B4E..0B55    ; Cn #   [8] <reserved-0B4E>..<reserved-0B55>
+0B58..0B5B    ; Cn #   [4] <reserved-0B58>..<reserved-0B5B>
+0B5E          ; Cn #       <reserved-0B5E>
+0B62..0B65    ; Cn #   [4] <reserved-0B62>..<reserved-0B65>
+0B72..0B81    ; Cn #  [16] <reserved-0B72>..<reserved-0B81>
+0B84          ; Cn #       <reserved-0B84>
+0B8B..0B8D    ; Cn #   [3] <reserved-0B8B>..<reserved-0B8D>
+0B91          ; Cn #       <reserved-0B91>
+0B96..0B98    ; Cn #   [3] <reserved-0B96>..<reserved-0B98>
+0B9B          ; Cn #       <reserved-0B9B>
+0B9D          ; Cn #       <reserved-0B9D>
+0BA0..0BA2    ; Cn #   [3] <reserved-0BA0>..<reserved-0BA2>
+0BA5..0BA7    ; Cn #   [3] <reserved-0BA5>..<reserved-0BA7>
+0BAB..0BAD    ; Cn #   [3] <reserved-0BAB>..<reserved-0BAD>
+0BBA..0BBD    ; Cn #   [4] <reserved-0BBA>..<reserved-0BBD>
+0BC3..0BC5    ; Cn #   [3] <reserved-0BC3>..<reserved-0BC5>
+0BC9          ; Cn #       <reserved-0BC9>
+0BCE..0BD6    ; Cn #   [9] <reserved-0BCE>..<reserved-0BD6>
+0BD8..0BE5    ; Cn #  [14] <reserved-0BD8>..<reserved-0BE5>
+0BFB..0C00    ; Cn #   [6] <reserved-0BFB>..<reserved-0C00>
+0C04          ; Cn #       <reserved-0C04>
+0C0D          ; Cn #       <reserved-0C0D>
+0C11          ; Cn #       <reserved-0C11>
+0C29          ; Cn #       <reserved-0C29>
+0C34          ; Cn #       <reserved-0C34>
+0C3A..0C3D    ; Cn #   [4] <reserved-0C3A>..<reserved-0C3D>
+0C45          ; Cn #       <reserved-0C45>
+0C49          ; Cn #       <reserved-0C49>
+0C4E..0C54    ; Cn #   [7] <reserved-0C4E>..<reserved-0C54>
+0C57..0C5F    ; Cn #   [9] <reserved-0C57>..<reserved-0C5F>
+0C62..0C65    ; Cn #   [4] <reserved-0C62>..<reserved-0C65>
+0C70..0C81    ; Cn #  [18] <reserved-0C70>..<reserved-0C81>
+0C84          ; Cn #       <reserved-0C84>
+0C8D          ; Cn #       <reserved-0C8D>
+0C91          ; Cn #       <reserved-0C91>
+0CA9          ; Cn #       <reserved-0CA9>
+0CB4          ; Cn #       <reserved-0CB4>
+0CBA..0CBB    ; Cn #   [2] <reserved-0CBA>..<reserved-0CBB>
+0CC5          ; Cn #       <reserved-0CC5>
+0CC9          ; Cn #       <reserved-0CC9>
+0CCE..0CD4    ; Cn #   [7] <reserved-0CCE>..<reserved-0CD4>
+0CD7..0CDD    ; Cn #   [7] <reserved-0CD7>..<reserved-0CDD>
+0CDF          ; Cn #       <reserved-0CDF>
+0CE4..0CE5    ; Cn #   [2] <reserved-0CE4>..<reserved-0CE5>
+0CF0          ; Cn #       <reserved-0CF0>
+0CF3..0D01    ; Cn #  [15] <reserved-0CF3>..<reserved-0D01>
+0D04          ; Cn #       <reserved-0D04>
+0D0D          ; Cn #       <reserved-0D0D>
+0D11          ; Cn #       <reserved-0D11>
+0D29          ; Cn #       <reserved-0D29>
+0D3A..0D3D    ; Cn #   [4] <reserved-0D3A>..<reserved-0D3D>
+0D44..0D45    ; Cn #   [2] <reserved-0D44>..<reserved-0D45>
+0D49          ; Cn #       <reserved-0D49>
+0D4E..0D56    ; Cn #   [9] <reserved-0D4E>..<reserved-0D56>
+0D58..0D5F    ; Cn #   [8] <reserved-0D58>..<reserved-0D5F>
+0D62..0D65    ; Cn #   [4] <reserved-0D62>..<reserved-0D65>
+0D70..0D81    ; Cn #  [18] <reserved-0D70>..<reserved-0D81>
+0D84          ; Cn #       <reserved-0D84>
+0D97..0D99    ; Cn #   [3] <reserved-0D97>..<reserved-0D99>
+0DB2          ; Cn #       <reserved-0DB2>
+0DBC          ; Cn #       <reserved-0DBC>
+0DBE..0DBF    ; Cn #   [2] <reserved-0DBE>..<reserved-0DBF>
+0DC7..0DC9    ; Cn #   [3] <reserved-0DC7>..<reserved-0DC9>
+0DCB..0DCE    ; Cn #   [4] <reserved-0DCB>..<reserved-0DCE>
+0DD5          ; Cn #       <reserved-0DD5>
+0DD7          ; Cn #       <reserved-0DD7>
+0DE0..0DF1    ; Cn #  [18] <reserved-0DE0>..<reserved-0DF1>
+0DF5..0E00    ; Cn #  [12] <reserved-0DF5>..<reserved-0E00>
+0E3B..0E3E    ; Cn #   [4] <reserved-0E3B>..<reserved-0E3E>
+0E5C..0E80    ; Cn #  [37] <reserved-0E5C>..<reserved-0E80>
+0E83          ; Cn #       <reserved-0E83>
+0E85..0E86    ; Cn #   [2] <reserved-0E85>..<reserved-0E86>
+0E89          ; Cn #       <reserved-0E89>
+0E8B..0E8C    ; Cn #   [2] <reserved-0E8B>..<reserved-0E8C>
+0E8E..0E93    ; Cn #   [6] <reserved-0E8E>..<reserved-0E93>
+0E98          ; Cn #       <reserved-0E98>
+0EA0          ; Cn #       <reserved-0EA0>
+0EA4          ; Cn #       <reserved-0EA4>
+0EA6          ; Cn #       <reserved-0EA6>
+0EA8..0EA9    ; Cn #   [2] <reserved-0EA8>..<reserved-0EA9>
+0EAC          ; Cn #       <reserved-0EAC>
+0EBA          ; Cn #       <reserved-0EBA>
+0EBE..0EBF    ; Cn #   [2] <reserved-0EBE>..<reserved-0EBF>
+0EC5          ; Cn #       <reserved-0EC5>
+0EC7          ; Cn #       <reserved-0EC7>
+0ECE..0ECF    ; Cn #   [2] <reserved-0ECE>..<reserved-0ECF>
+0EDA..0EDB    ; Cn #   [2] <reserved-0EDA>..<reserved-0EDB>
+0EDE..0EFF    ; Cn #  [34] <reserved-0EDE>..<reserved-0EFF>
+0F48          ; Cn #       <reserved-0F48>
+0F6B..0F70    ; Cn #   [6] <reserved-0F6B>..<reserved-0F70>
+0F8C..0F8F    ; Cn #   [4] <reserved-0F8C>..<reserved-0F8F>
+0F98          ; Cn #       <reserved-0F98>
+0FBD          ; Cn #       <reserved-0FBD>
+0FCD..0FCE    ; Cn #   [2] <reserved-0FCD>..<reserved-0FCE>
+0FD2..0FFF    ; Cn #  [46] <reserved-0FD2>..<reserved-0FFF>
+1022          ; Cn #       <reserved-1022>
+1028          ; Cn #       <reserved-1028>
+102B          ; Cn #       <reserved-102B>
+1033..1035    ; Cn #   [3] <reserved-1033>..<reserved-1035>
+103A..103F    ; Cn #   [6] <reserved-103A>..<reserved-103F>
+105A..109F    ; Cn #  [70] <reserved-105A>..<reserved-109F>
+10C6..10CF    ; Cn #  [10] <reserved-10C6>..<reserved-10CF>
+10FD..10FF    ; Cn #   [3] <reserved-10FD>..<reserved-10FF>
+115A..115E    ; Cn #   [5] <reserved-115A>..<reserved-115E>
+11A3..11A7    ; Cn #   [5] <reserved-11A3>..<reserved-11A7>
+11FA..11FF    ; Cn #   [6] <reserved-11FA>..<reserved-11FF>
+1249          ; Cn #       <reserved-1249>
+124E..124F    ; Cn #   [2] <reserved-124E>..<reserved-124F>
+1257          ; Cn #       <reserved-1257>
+1259          ; Cn #       <reserved-1259>
+125E..125F    ; Cn #   [2] <reserved-125E>..<reserved-125F>
+1289          ; Cn #       <reserved-1289>
+128E..128F    ; Cn #   [2] <reserved-128E>..<reserved-128F>
+12B1          ; Cn #       <reserved-12B1>
+12B6..12B7    ; Cn #   [2] <reserved-12B6>..<reserved-12B7>
+12BF          ; Cn #       <reserved-12BF>
+12C1          ; Cn #       <reserved-12C1>
+12C6..12C7    ; Cn #   [2] <reserved-12C6>..<reserved-12C7>
+12D7          ; Cn #       <reserved-12D7>
+1311          ; Cn #       <reserved-1311>
+1316..1317    ; Cn #   [2] <reserved-1316>..<reserved-1317>
+135B..135E    ; Cn #   [4] <reserved-135B>..<reserved-135E>
+137D..137F    ; Cn #   [3] <reserved-137D>..<reserved-137F>
+139A..139F    ; Cn #   [6] <reserved-139A>..<reserved-139F>
+13F5..1400    ; Cn #  [12] <reserved-13F5>..<reserved-1400>
+1677..167F    ; Cn #   [9] <reserved-1677>..<reserved-167F>
+169D..169F    ; Cn #   [3] <reserved-169D>..<reserved-169F>
+16F1..16FF    ; Cn #  [15] <reserved-16F1>..<reserved-16FF>
+170D          ; Cn #       <reserved-170D>
+1715..171F    ; Cn #  [11] <reserved-1715>..<reserved-171F>
+1737..173F    ; Cn #   [9] <reserved-1737>..<reserved-173F>
+1754..175F    ; Cn #  [12] <reserved-1754>..<reserved-175F>
+176D          ; Cn #       <reserved-176D>
+1771          ; Cn #       <reserved-1771>
+1774..177F    ; Cn #  [12] <reserved-1774>..<reserved-177F>
+17DE..17DF    ; Cn #   [2] <reserved-17DE>..<reserved-17DF>
+17EA..17EF    ; Cn #   [6] <reserved-17EA>..<reserved-17EF>
+17FA..17FF    ; Cn #   [6] <reserved-17FA>..<reserved-17FF>
+180F          ; Cn #       <reserved-180F>
+181A..181F    ; Cn #   [6] <reserved-181A>..<reserved-181F>
+1878..187F    ; Cn #   [8] <reserved-1878>..<reserved-187F>
+18AA..18FF    ; Cn #  [86] <reserved-18AA>..<reserved-18FF>
+191D..191F    ; Cn #   [3] <reserved-191D>..<reserved-191F>
+192C..192F    ; Cn #   [4] <reserved-192C>..<reserved-192F>
+193C..193F    ; Cn #   [4] <reserved-193C>..<reserved-193F>
+1941..1943    ; Cn #   [3] <reserved-1941>..<reserved-1943>
+196E..196F    ; Cn #   [2] <reserved-196E>..<reserved-196F>
+1975..197F    ; Cn #  [11] <reserved-1975>..<reserved-197F>
+19AA..19AF    ; Cn #   [6] <reserved-19AA>..<reserved-19AF>
+19CA..19CF    ; Cn #   [6] <reserved-19CA>..<reserved-19CF>
+19DA..19DD    ; Cn #   [4] <reserved-19DA>..<reserved-19DD>
+1A1C..1A1D    ; Cn #   [2] <reserved-1A1C>..<reserved-1A1D>
+1A20..1AFF    ; Cn # [224] <reserved-1A20>..<reserved-1AFF>
+1B4C..1B4F    ; Cn #   [4] <reserved-1B4C>..<reserved-1B4F>
+1B7D..1CFF    ; Cn # [387] <reserved-1B7D>..<reserved-1CFF>
+1DCB..1DFD    ; Cn #  [51] <reserved-1DCB>..<reserved-1DFD>
+1E9C..1E9F    ; Cn #   [4] <reserved-1E9C>..<reserved-1E9F>
+1EFA..1EFF    ; Cn #   [6] <reserved-1EFA>..<reserved-1EFF>
+1F16..1F17    ; Cn #   [2] <reserved-1F16>..<reserved-1F17>
+1F1E..1F1F    ; Cn #   [2] <reserved-1F1E>..<reserved-1F1F>
+1F46..1F47    ; Cn #   [2] <reserved-1F46>..<reserved-1F47>
+1F4E..1F4F    ; Cn #   [2] <reserved-1F4E>..<reserved-1F4F>
+1F58          ; Cn #       <reserved-1F58>
+1F5A          ; Cn #       <reserved-1F5A>
+1F5C          ; Cn #       <reserved-1F5C>
+1F5E          ; Cn #       <reserved-1F5E>
+1F7E..1F7F    ; Cn #   [2] <reserved-1F7E>..<reserved-1F7F>
+1FB5          ; Cn #       <reserved-1FB5>
+1FC5          ; Cn #       <reserved-1FC5>
+1FD4..1FD5    ; Cn #   [2] <reserved-1FD4>..<reserved-1FD5>
+1FDC          ; Cn #       <reserved-1FDC>
+1FF0..1FF1    ; Cn #   [2] <reserved-1FF0>..<reserved-1FF1>
+1FF5          ; Cn #       <reserved-1FF5>
+1FFF          ; Cn #       <reserved-1FFF>
+2064..2069    ; Cn #   [6] <reserved-2064>..<reserved-2069>
+2072..2073    ; Cn #   [2] <reserved-2072>..<reserved-2073>
+208F          ; Cn #       <reserved-208F>
+2095..209F    ; Cn #  [11] <reserved-2095>..<reserved-209F>
+20B6..20CF    ; Cn #  [26] <reserved-20B6>..<reserved-20CF>
+20F0..20FF    ; Cn #  [16] <reserved-20F0>..<reserved-20FF>
+214F..2152    ; Cn #   [4] <reserved-214F>..<reserved-2152>
+2185..218F    ; Cn #  [11] <reserved-2185>..<reserved-218F>
+23E8..23FF    ; Cn #  [24] <reserved-23E8>..<reserved-23FF>
+2427..243F    ; Cn #  [25] <reserved-2427>..<reserved-243F>
+244B..245F    ; Cn #  [21] <reserved-244B>..<reserved-245F>
+269D..269F    ; Cn #   [3] <reserved-269D>..<reserved-269F>
+26B3..2700    ; Cn #  [78] <reserved-26B3>..<reserved-2700>
+2705          ; Cn #       <reserved-2705>
+270A..270B    ; Cn #   [2] <reserved-270A>..<reserved-270B>
+2728          ; Cn #       <reserved-2728>
+274C          ; Cn #       <reserved-274C>
+274E          ; Cn #       <reserved-274E>
+2753..2755    ; Cn #   [3] <reserved-2753>..<reserved-2755>
+2757          ; Cn #       <reserved-2757>
+275F..2760    ; Cn #   [2] <reserved-275F>..<reserved-2760>
+2795..2797    ; Cn #   [3] <reserved-2795>..<reserved-2797>
+27B0          ; Cn #       <reserved-27B0>
+27BF          ; Cn #       <reserved-27BF>
+27CB..27CF    ; Cn #   [5] <reserved-27CB>..<reserved-27CF>
+27EC..27EF    ; Cn #   [4] <reserved-27EC>..<reserved-27EF>
+2B1B..2B1F    ; Cn #   [5] <reserved-2B1B>..<reserved-2B1F>
+2B24..2BFF    ; Cn # [220] <reserved-2B24>..<reserved-2BFF>
+2C2F          ; Cn #       <reserved-2C2F>
+2C5F          ; Cn #       <reserved-2C5F>
+2C6D..2C73    ; Cn #   [7] <reserved-2C6D>..<reserved-2C73>
+2C78..2C7F    ; Cn #   [8] <reserved-2C78>..<reserved-2C7F>
+2CEB..2CF8    ; Cn #  [14] <reserved-2CEB>..<reserved-2CF8>
+2D26..2D2F    ; Cn #  [10] <reserved-2D26>..<reserved-2D2F>
+2D66..2D6E    ; Cn #   [9] <reserved-2D66>..<reserved-2D6E>
+2D70..2D7F    ; Cn #  [16] <reserved-2D70>..<reserved-2D7F>
+2D97..2D9F    ; Cn #   [9] <reserved-2D97>..<reserved-2D9F>
+2DA7          ; Cn #       <reserved-2DA7>
+2DAF          ; Cn #       <reserved-2DAF>
+2DB7          ; Cn #       <reserved-2DB7>
+2DBF          ; Cn #       <reserved-2DBF>
+2DC7          ; Cn #       <reserved-2DC7>
+2DCF          ; Cn #       <reserved-2DCF>
+2DD7          ; Cn #       <reserved-2DD7>
+2DDF..2DFF    ; Cn #  [33] <reserved-2DDF>..<reserved-2DFF>
+2E18..2E1B    ; Cn #   [4] <reserved-2E18>..<reserved-2E1B>
+2E1E..2E7F    ; Cn #  [98] <reserved-2E1E>..<reserved-2E7F>
+2E9A          ; Cn #       <reserved-2E9A>
+2EF4..2EFF    ; Cn #  [12] <reserved-2EF4>..<reserved-2EFF>
+2FD6..2FEF    ; Cn #  [26] <reserved-2FD6>..<reserved-2FEF>
+2FFC..2FFF    ; Cn #   [4] <reserved-2FFC>..<reserved-2FFF>
+3040          ; Cn #       <reserved-3040>
+3097..3098    ; Cn #   [2] <reserved-3097>..<reserved-3098>
+3100..3104    ; Cn #   [5] <reserved-3100>..<reserved-3104>
+312D..3130    ; Cn #   [4] <reserved-312D>..<reserved-3130>
+318F          ; Cn #       <reserved-318F>
+31B8..31BF    ; Cn #   [8] <reserved-31B8>..<reserved-31BF>
+31D0..31EF    ; Cn #  [32] <reserved-31D0>..<reserved-31EF>
+321F          ; Cn #       <reserved-321F>
+3244..324F    ; Cn #  [12] <reserved-3244>..<reserved-324F>
+32FF          ; Cn #       <reserved-32FF>
+4DB6..4DBF    ; Cn #  [10] <reserved-4DB6>..<reserved-4DBF>
+9FBC..9FFF    ; Cn #  [68] <reserved-9FBC>..<reserved-9FFF>
+A48D..A48F    ; Cn #   [3] <reserved-A48D>..<reserved-A48F>
+A4C7..A6FF    ; Cn # [569] <reserved-A4C7>..<reserved-A6FF>
+A71B..A71F    ; Cn #   [5] <reserved-A71B>..<reserved-A71F>
+A722..A7FF    ; Cn # [222] <reserved-A722>..<reserved-A7FF>
+A82C..A83F    ; Cn #  [20] <reserved-A82C>..<reserved-A83F>
+A878..ABFF    ; Cn # [904] <reserved-A878>..<reserved-ABFF>
+D7A4..D7FF    ; Cn #  [92] <reserved-D7A4>..<reserved-D7FF>
+FA2E..FA2F    ; Cn #   [2] <reserved-FA2E>..<reserved-FA2F>
+FA6B..FA6F    ; Cn #   [5] <reserved-FA6B>..<reserved-FA6F>
+FADA..FAFF    ; Cn #  [38] <reserved-FADA>..<reserved-FAFF>
+FB07..FB12    ; Cn #  [12] <reserved-FB07>..<reserved-FB12>
+FB18..FB1C    ; Cn #   [5] <reserved-FB18>..<reserved-FB1C>
+FB37          ; Cn #       <reserved-FB37>
+FB3D          ; Cn #       <reserved-FB3D>
+FB3F          ; Cn #       <reserved-FB3F>
+FB42          ; Cn #       <reserved-FB42>
+FB45          ; Cn #       <reserved-FB45>
+FBB2..FBD2    ; Cn #  [33] <reserved-FBB2>..<reserved-FBD2>
+FD40..FD4F    ; Cn #  [16] <reserved-FD40>..<reserved-FD4F>
+FD90..FD91    ; Cn #   [2] <reserved-FD90>..<reserved-FD91>
+FDC8..FDEF    ; Cn #  [40] <reserved-FDC8>..<noncharacter-FDEF>
+FDFE..FDFF    ; Cn #   [2] <reserved-FDFE>..<reserved-FDFF>
+FE1A..FE1F    ; Cn #   [6] <reserved-FE1A>..<reserved-FE1F>
+FE24..FE2F    ; Cn #  [12] <reserved-FE24>..<reserved-FE2F>
+FE53          ; Cn #       <reserved-FE53>
+FE67          ; Cn #       <reserved-FE67>
+FE6C..FE6F    ; Cn #   [4] <reserved-FE6C>..<reserved-FE6F>
+FE75          ; Cn #       <reserved-FE75>
+FEFD..FEFE    ; Cn #   [2] <reserved-FEFD>..<reserved-FEFE>
+FF00          ; Cn #       <reserved-FF00>
+FFBF..FFC1    ; Cn #   [3] <reserved-FFBF>..<reserved-FFC1>
+FFC8..FFC9    ; Cn #   [2] <reserved-FFC8>..<reserved-FFC9>
+FFD0..FFD1    ; Cn #   [2] <reserved-FFD0>..<reserved-FFD1>
+FFD8..FFD9    ; Cn #   [2] <reserved-FFD8>..<reserved-FFD9>
+FFDD..FFDF    ; Cn #   [3] <reserved-FFDD>..<reserved-FFDF>
+FFE7          ; Cn #       <reserved-FFE7>
+FFEF..FFF8    ; Cn #  [10] <reserved-FFEF>..<reserved-FFF8>
+FFFE..FFFF    ; Cn #   [2] <noncharacter-FFFE>..<noncharacter-FFFF>
+1000C         ; Cn #       <reserved-1000C>
+10027         ; Cn #       <reserved-10027>
+1003B         ; Cn #       <reserved-1003B>
+1003E         ; Cn #       <reserved-1003E>
+1004E..1004F  ; Cn #   [2] <reserved-1004E>..<reserved-1004F>
+1005E..1007F  ; Cn #  [34] <reserved-1005E>..<reserved-1007F>
+100FB..100FF  ; Cn #   [5] <reserved-100FB>..<reserved-100FF>
+10103..10106  ; Cn #   [4] <reserved-10103>..<reserved-10106>
+10134..10136  ; Cn #   [3] <reserved-10134>..<reserved-10136>
+1018B..102FF  ; Cn # [373] <reserved-1018B>..<reserved-102FF>
+1031F         ; Cn #       <reserved-1031F>
+10324..1032F  ; Cn #  [12] <reserved-10324>..<reserved-1032F>
+1034B..1037F  ; Cn #  [53] <reserved-1034B>..<reserved-1037F>
+1039E         ; Cn #       <reserved-1039E>
+103C4..103C7  ; Cn #   [4] <reserved-103C4>..<reserved-103C7>
+103D6..103FF  ; Cn #  [42] <reserved-103D6>..<reserved-103FF>
+1049E..1049F  ; Cn #   [2] <reserved-1049E>..<reserved-1049F>
+104AA..107FF  ; Cn # [854] <reserved-104AA>..<reserved-107FF>
+10806..10807  ; Cn #   [2] <reserved-10806>..<reserved-10807>
+10809         ; Cn #       <reserved-10809>
+10836         ; Cn #       <reserved-10836>
+10839..1083B  ; Cn #   [3] <reserved-10839>..<reserved-1083B>
+1083D..1083E  ; Cn #   [2] <reserved-1083D>..<reserved-1083E>
+10840..108FF  ; Cn # [192] <reserved-10840>..<reserved-108FF>
+1091A..1091E  ; Cn #   [5] <reserved-1091A>..<reserved-1091E>
+10920..109FF  ; Cn # [224] <reserved-10920>..<reserved-109FF>
+10A04         ; Cn #       <reserved-10A04>
+10A07..10A0B  ; Cn #   [5] <reserved-10A07>..<reserved-10A0B>
+10A14         ; Cn #       <reserved-10A14>
+10A18         ; Cn #       <reserved-10A18>
+10A34..10A37  ; Cn #   [4] <reserved-10A34>..<reserved-10A37>
+10A3B..10A3E  ; Cn #   [4] <reserved-10A3B>..<reserved-10A3E>
+10A48..10A4F  ; Cn #   [8] <reserved-10A48>..<reserved-10A4F>
+10A59..11FFF  ; Cn # [5543] <reserved-10A59>..<reserved-11FFF>
+1236F..123FF  ; Cn # [145] <reserved-1236F>..<reserved-123FF>
+12463..1246F  ; Cn #  [13] <reserved-12463>..<reserved-1246F>
+12474..1CFFF  ; Cn # [43916] <reserved-12474>..<reserved-1CFFF>
+1D0F6..1D0FF  ; Cn #  [10] <reserved-1D0F6>..<reserved-1D0FF>
+1D127..1D129  ; Cn #   [3] <reserved-1D127>..<reserved-1D129>
+1D1DE..1D1FF  ; Cn #  [34] <reserved-1D1DE>..<reserved-1D1FF>
+1D246..1D2FF  ; Cn # [186] <reserved-1D246>..<reserved-1D2FF>
+1D357..1D35F  ; Cn #   [9] <reserved-1D357>..<reserved-1D35F>
+1D372..1D3FF  ; Cn # [142] <reserved-1D372>..<reserved-1D3FF>
+1D455         ; Cn #       <reserved-1D455>
+1D49D         ; Cn #       <reserved-1D49D>
+1D4A0..1D4A1  ; Cn #   [2] <reserved-1D4A0>..<reserved-1D4A1>
+1D4A3..1D4A4  ; Cn #   [2] <reserved-1D4A3>..<reserved-1D4A4>
+1D4A7..1D4A8  ; Cn #   [2] <reserved-1D4A7>..<reserved-1D4A8>
+1D4AD         ; Cn #       <reserved-1D4AD>
+1D4BA         ; Cn #       <reserved-1D4BA>
+1D4BC         ; Cn #       <reserved-1D4BC>
+1D4C4         ; Cn #       <reserved-1D4C4>
+1D506         ; Cn #       <reserved-1D506>
+1D50B..1D50C  ; Cn #   [2] <reserved-1D50B>..<reserved-1D50C>
+1D515         ; Cn #       <reserved-1D515>
+1D51D         ; Cn #       <reserved-1D51D>
+1D53A         ; Cn #       <reserved-1D53A>
+1D53F         ; Cn #       <reserved-1D53F>
+1D545         ; Cn #       <reserved-1D545>
+1D547..1D549  ; Cn #   [3] <reserved-1D547>..<reserved-1D549>
+1D551         ; Cn #       <reserved-1D551>
+1D6A6..1D6A7  ; Cn #   [2] <reserved-1D6A6>..<reserved-1D6A7>
+1D7CC..1D7CD  ; Cn #   [2] <reserved-1D7CC>..<reserved-1D7CD>
+1D800..1FFFF  ; Cn # [10240] <reserved-1D800>..<noncharacter-1FFFF>
+2A6D7..2F7FF  ; Cn # [20777] <reserved-2A6D7>..<reserved-2F7FF>
+2FA1E..E0000  ; Cn # [722403] <reserved-2FA1E>..<reserved-E0000>
+E0002..E001F  ; Cn #  [30] <reserved-E0002>..<reserved-E001F>
+E0080..E00FF  ; Cn # [128] <reserved-E0080>..<reserved-E00FF>
+E01F0..EFFFF  ; Cn # [65040] <reserved-E01F0>..<noncharacter-EFFFF>
+FFFFE..FFFFF  ; Cn #   [2] <noncharacter-FFFFE>..<noncharacter-FFFFF>
+10FFFE..10FFFF; Cn #   [2] <noncharacter-10FFFE>..<noncharacter-10FFFF>
+
+# Total code points: 875507
+
+# ================================================
+
+# General_Category=Uppercase_Letter
+
+0041..005A    ; Lu #  [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+00C0..00D6    ; Lu #  [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D8..00DE    ; Lu #   [7] LATIN CAPITAL LETTER O WITH STROKE..LATIN CAPITAL LETTER THORN
+0100          ; Lu #       LATIN CAPITAL LETTER A WITH MACRON
+0102          ; Lu #       LATIN CAPITAL LETTER A WITH BREVE
+0104          ; Lu #       LATIN CAPITAL LETTER A WITH OGONEK
+0106          ; Lu #       LATIN CAPITAL LETTER C WITH ACUTE
+0108          ; Lu #       LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+010A          ; Lu #       LATIN CAPITAL LETTER C WITH DOT ABOVE
+010C          ; Lu #       LATIN CAPITAL LETTER C WITH CARON
+010E          ; Lu #       LATIN CAPITAL LETTER D WITH CARON
+0110          ; Lu #       LATIN CAPITAL LETTER D WITH STROKE
+0112          ; Lu #       LATIN CAPITAL LETTER E WITH MACRON
+0114          ; Lu #       LATIN CAPITAL LETTER E WITH BREVE
+0116          ; Lu #       LATIN CAPITAL LETTER E WITH DOT ABOVE
+0118          ; Lu #       LATIN CAPITAL LETTER E WITH OGONEK
+011A          ; Lu #       LATIN CAPITAL LETTER E WITH CARON
+011C          ; Lu #       LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+011E          ; Lu #       LATIN CAPITAL LETTER G WITH BREVE
+0120          ; Lu #       LATIN CAPITAL LETTER G WITH DOT ABOVE
+0122          ; Lu #       LATIN CAPITAL LETTER G WITH CEDILLA
+0124          ; Lu #       LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+0126          ; Lu #       LATIN CAPITAL LETTER H WITH STROKE
+0128          ; Lu #       LATIN CAPITAL LETTER I WITH TILDE
+012A          ; Lu #       LATIN CAPITAL LETTER I WITH MACRON
+012C          ; Lu #       LATIN CAPITAL LETTER I WITH BREVE
+012E          ; Lu #       LATIN CAPITAL LETTER I WITH OGONEK
+0130          ; Lu #       LATIN CAPITAL LETTER I WITH DOT ABOVE
+0132          ; Lu #       LATIN CAPITAL LIGATURE IJ
+0134          ; Lu #       LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+0136          ; Lu #       LATIN CAPITAL LETTER K WITH CEDILLA
+0139          ; Lu #       LATIN CAPITAL LETTER L WITH ACUTE
+013B          ; Lu #       LATIN CAPITAL LETTER L WITH CEDILLA
+013D          ; Lu #       LATIN CAPITAL LETTER L WITH CARON
+013F          ; Lu #       LATIN CAPITAL LETTER L WITH MIDDLE DOT
+0141          ; Lu #       LATIN CAPITAL LETTER L WITH STROKE
+0143          ; Lu #       LATIN CAPITAL LETTER N WITH ACUTE
+0145          ; Lu #       LATIN CAPITAL LETTER N WITH CEDILLA
+0147          ; Lu #       LATIN CAPITAL LETTER N WITH CARON
+014A          ; Lu #       LATIN CAPITAL LETTER ENG
+014C          ; Lu #       LATIN CAPITAL LETTER O WITH MACRON
+014E          ; Lu #       LATIN CAPITAL LETTER O WITH BREVE
+0150          ; Lu #       LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0152          ; Lu #       LATIN CAPITAL LIGATURE OE
+0154          ; Lu #       LATIN CAPITAL LETTER R WITH ACUTE
+0156          ; Lu #       LATIN CAPITAL LETTER R WITH CEDILLA
+0158          ; Lu #       LATIN CAPITAL LETTER R WITH CARON
+015A          ; Lu #       LATIN CAPITAL LETTER S WITH ACUTE
+015C          ; Lu #       LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+015E          ; Lu #       LATIN CAPITAL LETTER S WITH CEDILLA
+0160          ; Lu #       LATIN CAPITAL LETTER S WITH CARON
+0162          ; Lu #       LATIN CAPITAL LETTER T WITH CEDILLA
+0164          ; Lu #       LATIN CAPITAL LETTER T WITH CARON
+0166          ; Lu #       LATIN CAPITAL LETTER T WITH STROKE
+0168          ; Lu #       LATIN CAPITAL LETTER U WITH TILDE
+016A          ; Lu #       LATIN CAPITAL LETTER U WITH MACRON
+016C          ; Lu #       LATIN CAPITAL LETTER U WITH BREVE
+016E          ; Lu #       LATIN CAPITAL LETTER U WITH RING ABOVE
+0170          ; Lu #       LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0172          ; Lu #       LATIN CAPITAL LETTER U WITH OGONEK
+0174          ; Lu #       LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+0176          ; Lu #       LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+0178..0179    ; Lu #   [2] LATIN CAPITAL LETTER Y WITH DIAERESIS..LATIN CAPITAL LETTER Z WITH ACUTE
+017B          ; Lu #       LATIN CAPITAL LETTER Z WITH DOT ABOVE
+017D          ; Lu #       LATIN CAPITAL LETTER Z WITH CARON
+0181..0182    ; Lu #   [2] LATIN CAPITAL LETTER B WITH HOOK..LATIN CAPITAL LETTER B WITH TOPBAR
+0184          ; Lu #       LATIN CAPITAL LETTER TONE SIX
+0186..0187    ; Lu #   [2] LATIN CAPITAL LETTER OPEN O..LATIN CAPITAL LETTER C WITH HOOK
+0189..018B    ; Lu #   [3] LATIN CAPITAL LETTER AFRICAN D..LATIN CAPITAL LETTER D WITH TOPBAR
+018E..0191    ; Lu #   [4] LATIN CAPITAL LETTER REVERSED E..LATIN CAPITAL LETTER F WITH HOOK
+0193..0194    ; Lu #   [2] LATIN CAPITAL LETTER G WITH HOOK..LATIN CAPITAL LETTER GAMMA
+0196..0198    ; Lu #   [3] LATIN CAPITAL LETTER IOTA..LATIN CAPITAL LETTER K WITH HOOK
+019C..019D    ; Lu #   [2] LATIN CAPITAL LETTER TURNED M..LATIN CAPITAL LETTER N WITH LEFT HOOK
+019F..01A0    ; Lu #   [2] LATIN CAPITAL LETTER O WITH MIDDLE TILDE..LATIN CAPITAL LETTER O WITH HORN
+01A2          ; Lu #       LATIN CAPITAL LETTER OI
+01A4          ; Lu #       LATIN CAPITAL LETTER P WITH HOOK
+01A6..01A7    ; Lu #   [2] LATIN LETTER YR..LATIN CAPITAL LETTER TONE TWO
+01A9          ; Lu #       LATIN CAPITAL LETTER ESH
+01AC          ; Lu #       LATIN CAPITAL LETTER T WITH HOOK
+01AE..01AF    ; Lu #   [2] LATIN CAPITAL LETTER T WITH RETROFLEX HOOK..LATIN CAPITAL LETTER U WITH HORN
+01B1..01B3    ; Lu #   [3] LATIN CAPITAL LETTER UPSILON..LATIN CAPITAL LETTER Y WITH HOOK
+01B5          ; Lu #       LATIN CAPITAL LETTER Z WITH STROKE
+01B7..01B8    ; Lu #   [2] LATIN CAPITAL LETTER EZH..LATIN CAPITAL LETTER EZH REVERSED
+01BC          ; Lu #       LATIN CAPITAL LETTER TONE FIVE
+01C4          ; Lu #       LATIN CAPITAL LETTER DZ WITH CARON
+01C7          ; Lu #       LATIN CAPITAL LETTER LJ
+01CA          ; Lu #       LATIN CAPITAL LETTER NJ
+01CD          ; Lu #       LATIN CAPITAL LETTER A WITH CARON
+01CF          ; Lu #       LATIN CAPITAL LETTER I WITH CARON
+01D1          ; Lu #       LATIN CAPITAL LETTER O WITH CARON
+01D3          ; Lu #       LATIN CAPITAL LETTER U WITH CARON
+01D5          ; Lu #       LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01D7          ; Lu #       LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D9          ; Lu #       LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+01DB          ; Lu #       LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01DE          ; Lu #       LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+01E0          ; Lu #       LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+01E2          ; Lu #       LATIN CAPITAL LETTER AE WITH MACRON
+01E4          ; Lu #       LATIN CAPITAL LETTER G WITH STROKE
+01E6          ; Lu #       LATIN CAPITAL LETTER G WITH CARON
+01E8          ; Lu #       LATIN CAPITAL LETTER K WITH CARON
+01EA          ; Lu #       LATIN CAPITAL LETTER O WITH OGONEK
+01EC          ; Lu #       LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+01EE          ; Lu #       LATIN CAPITAL LETTER EZH WITH CARON
+01F1          ; Lu #       LATIN CAPITAL LETTER DZ
+01F4          ; Lu #       LATIN CAPITAL LETTER G WITH ACUTE
+01F6..01F8    ; Lu #   [3] LATIN CAPITAL LETTER HWAIR..LATIN CAPITAL LETTER N WITH GRAVE
+01FA          ; Lu #       LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+01FC          ; Lu #       LATIN CAPITAL LETTER AE WITH ACUTE
+01FE          ; Lu #       LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+0200          ; Lu #       LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+0202          ; Lu #       LATIN CAPITAL LETTER A WITH INVERTED BREVE
+0204          ; Lu #       LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+0206          ; Lu #       LATIN CAPITAL LETTER E WITH INVERTED BREVE
+0208          ; Lu #       LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+020A          ; Lu #       LATIN CAPITAL LETTER I WITH INVERTED BREVE
+020C          ; Lu #       LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+020E          ; Lu #       LATIN CAPITAL LETTER O WITH INVERTED BREVE
+0210          ; Lu #       LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+0212          ; Lu #       LATIN CAPITAL LETTER R WITH INVERTED BREVE
+0214          ; Lu #       LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+0216          ; Lu #       LATIN CAPITAL LETTER U WITH INVERTED BREVE
+0218          ; Lu #       LATIN CAPITAL LETTER S WITH COMMA BELOW
+021A          ; Lu #       LATIN CAPITAL LETTER T WITH COMMA BELOW
+021C          ; Lu #       LATIN CAPITAL LETTER YOGH
+021E          ; Lu #       LATIN CAPITAL LETTER H WITH CARON
+0220          ; Lu #       LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
+0222          ; Lu #       LATIN CAPITAL LETTER OU
+0224          ; Lu #       LATIN CAPITAL LETTER Z WITH HOOK
+0226          ; Lu #       LATIN CAPITAL LETTER A WITH DOT ABOVE
+0228          ; Lu #       LATIN CAPITAL LETTER E WITH CEDILLA
+022A          ; Lu #       LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+022C          ; Lu #       LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+022E          ; Lu #       LATIN CAPITAL LETTER O WITH DOT ABOVE
+0230          ; Lu #       LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+0232          ; Lu #       LATIN CAPITAL LETTER Y WITH MACRON
+023A..023B    ; Lu #   [2] LATIN CAPITAL LETTER A WITH STROKE..LATIN CAPITAL LETTER C WITH STROKE
+023D..023E    ; Lu #   [2] LATIN CAPITAL LETTER L WITH BAR..LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
+0241          ; Lu #       LATIN CAPITAL LETTER GLOTTAL STOP
+0243..0246    ; Lu #   [4] LATIN CAPITAL LETTER B WITH STROKE..LATIN CAPITAL LETTER E WITH STROKE
+0248          ; Lu #       LATIN CAPITAL LETTER J WITH STROKE
+024A          ; Lu #       LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
+024C          ; Lu #       LATIN CAPITAL LETTER R WITH STROKE
+024E          ; Lu #       LATIN CAPITAL LETTER Y WITH STROKE
+0386          ; Lu #       GREEK CAPITAL LETTER ALPHA WITH TONOS
+0388..038A    ; Lu #   [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C          ; Lu #       GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..038F    ; Lu #   [2] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER OMEGA WITH TONOS
+0391..03A1    ; Lu #  [17] GREEK CAPITAL LETTER ALPHA..GREEK CAPITAL LETTER RHO
+03A3..03AB    ; Lu #   [9] GREEK CAPITAL LETTER SIGMA..GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+03D2..03D4    ; Lu #   [3] GREEK UPSILON WITH HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+03D8          ; Lu #       GREEK LETTER ARCHAIC KOPPA
+03DA          ; Lu #       GREEK LETTER STIGMA
+03DC          ; Lu #       GREEK LETTER DIGAMMA
+03DE          ; Lu #       GREEK LETTER KOPPA
+03E0          ; Lu #       GREEK LETTER SAMPI
+03E2          ; Lu #       COPTIC CAPITAL LETTER SHEI
+03E4          ; Lu #       COPTIC CAPITAL LETTER FEI
+03E6          ; Lu #       COPTIC CAPITAL LETTER KHEI
+03E8          ; Lu #       COPTIC CAPITAL LETTER HORI
+03EA          ; Lu #       COPTIC CAPITAL LETTER GANGIA
+03EC          ; Lu #       COPTIC CAPITAL LETTER SHIMA
+03EE          ; Lu #       COPTIC CAPITAL LETTER DEI
+03F4          ; Lu #       GREEK CAPITAL THETA SYMBOL
+03F7          ; Lu #       GREEK CAPITAL LETTER SHO
+03F9..03FA    ; Lu #   [2] GREEK CAPITAL LUNATE SIGMA SYMBOL..GREEK CAPITAL LETTER SAN
+03FD..042F    ; Lu #  [51] GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL..CYRILLIC CAPITAL LETTER YA
+0460          ; Lu #       CYRILLIC CAPITAL LETTER OMEGA
+0462          ; Lu #       CYRILLIC CAPITAL LETTER YAT
+0464          ; Lu #       CYRILLIC CAPITAL LETTER IOTIFIED E
+0466          ; Lu #       CYRILLIC CAPITAL LETTER LITTLE YUS
+0468          ; Lu #       CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+046A          ; Lu #       CYRILLIC CAPITAL LETTER BIG YUS
+046C          ; Lu #       CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+046E          ; Lu #       CYRILLIC CAPITAL LETTER KSI
+0470          ; Lu #       CYRILLIC CAPITAL LETTER PSI
+0472          ; Lu #       CYRILLIC CAPITAL LETTER FITA
+0474          ; Lu #       CYRILLIC CAPITAL LETTER IZHITSA
+0476          ; Lu #       CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0478          ; Lu #       CYRILLIC CAPITAL LETTER UK
+047A          ; Lu #       CYRILLIC CAPITAL LETTER ROUND OMEGA
+047C          ; Lu #       CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+047E          ; Lu #       CYRILLIC CAPITAL LETTER OT
+0480          ; Lu #       CYRILLIC CAPITAL LETTER KOPPA
+048A          ; Lu #       CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
+048C          ; Lu #       CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+048E          ; Lu #       CYRILLIC CAPITAL LETTER ER WITH TICK
+0490          ; Lu #       CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0492          ; Lu #       CYRILLIC CAPITAL LETTER GHE WITH STROKE
+0494          ; Lu #       CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+0496          ; Lu #       CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+0498          ; Lu #       CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+049A          ; Lu #       CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+049C          ; Lu #       CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+049E          ; Lu #       CYRILLIC CAPITAL LETTER KA WITH STROKE
+04A0          ; Lu #       CYRILLIC CAPITAL LETTER BASHKIR KA
+04A2          ; Lu #       CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+04A4          ; Lu #       CYRILLIC CAPITAL LIGATURE EN GHE
+04A6          ; Lu #       CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+04A8          ; Lu #       CYRILLIC CAPITAL LETTER ABKHASIAN HA
+04AA          ; Lu #       CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+04AC          ; Lu #       CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+04AE          ; Lu #       CYRILLIC CAPITAL LETTER STRAIGHT U
+04B0          ; Lu #       CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+04B2          ; Lu #       CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+04B4          ; Lu #       CYRILLIC CAPITAL LIGATURE TE TSE
+04B6          ; Lu #       CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+04B8          ; Lu #       CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+04BA          ; Lu #       CYRILLIC CAPITAL LETTER SHHA
+04BC          ; Lu #       CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+04BE          ; Lu #       CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+04C0..04C1    ; Lu #   [2] CYRILLIC LETTER PALOCHKA..CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+04C3          ; Lu #       CYRILLIC CAPITAL LETTER KA WITH HOOK
+04C5          ; Lu #       CYRILLIC CAPITAL LETTER EL WITH TAIL
+04C7          ; Lu #       CYRILLIC CAPITAL LETTER EN WITH HOOK
+04C9          ; Lu #       CYRILLIC CAPITAL LETTER EN WITH TAIL
+04CB          ; Lu #       CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+04CD          ; Lu #       CYRILLIC CAPITAL LETTER EM WITH TAIL
+04D0          ; Lu #       CYRILLIC CAPITAL LETTER A WITH BREVE
+04D2          ; Lu #       CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04D4          ; Lu #       CYRILLIC CAPITAL LIGATURE A IE
+04D6          ; Lu #       CYRILLIC CAPITAL LETTER IE WITH BREVE
+04D8          ; Lu #       CYRILLIC CAPITAL LETTER SCHWA
+04DA          ; Lu #       CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+04DC          ; Lu #       CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DE          ; Lu #       CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04E0          ; Lu #       CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+04E2          ; Lu #       CYRILLIC CAPITAL LETTER I WITH MACRON
+04E4          ; Lu #       CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+04E6          ; Lu #       CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04E8          ; Lu #       CYRILLIC CAPITAL LETTER BARRED O
+04EA          ; Lu #       CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+04EC          ; Lu #       CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+04EE          ; Lu #       CYRILLIC CAPITAL LETTER U WITH MACRON
+04F0          ; Lu #       CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F2          ; Lu #       CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F4          ; Lu #       CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F6          ; Lu #       CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
+04F8          ; Lu #       CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04FA          ; Lu #       CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
+04FC          ; Lu #       CYRILLIC CAPITAL LETTER HA WITH HOOK
+04FE          ; Lu #       CYRILLIC CAPITAL LETTER HA WITH STROKE
+0500          ; Lu #       CYRILLIC CAPITAL LETTER KOMI DE
+0502          ; Lu #       CYRILLIC CAPITAL LETTER KOMI DJE
+0504          ; Lu #       CYRILLIC CAPITAL LETTER KOMI ZJE
+0506          ; Lu #       CYRILLIC CAPITAL LETTER KOMI DZJE
+0508          ; Lu #       CYRILLIC CAPITAL LETTER KOMI LJE
+050A          ; Lu #       CYRILLIC CAPITAL LETTER KOMI NJE
+050C          ; Lu #       CYRILLIC CAPITAL LETTER KOMI SJE
+050E          ; Lu #       CYRILLIC CAPITAL LETTER KOMI TJE
+0510          ; Lu #       CYRILLIC CAPITAL LETTER REVERSED ZE
+0512          ; Lu #       CYRILLIC CAPITAL LETTER EL WITH HOOK
+0531..0556    ; Lu #  [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+10A0..10C5    ; Lu #  [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+1E00          ; Lu #       LATIN CAPITAL LETTER A WITH RING BELOW
+1E02          ; Lu #       LATIN CAPITAL LETTER B WITH DOT ABOVE
+1E04          ; Lu #       LATIN CAPITAL LETTER B WITH DOT BELOW
+1E06          ; Lu #       LATIN CAPITAL LETTER B WITH LINE BELOW
+1E08          ; Lu #       LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+1E0A          ; Lu #       LATIN CAPITAL LETTER D WITH DOT ABOVE
+1E0C          ; Lu #       LATIN CAPITAL LETTER D WITH DOT BELOW
+1E0E          ; Lu #       LATIN CAPITAL LETTER D WITH LINE BELOW
+1E10          ; Lu #       LATIN CAPITAL LETTER D WITH CEDILLA
+1E12          ; Lu #       LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+1E14          ; Lu #       LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+1E16          ; Lu #       LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+1E18          ; Lu #       LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+1E1A          ; Lu #       LATIN CAPITAL LETTER E WITH TILDE BELOW
+1E1C          ; Lu #       LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+1E1E          ; Lu #       LATIN CAPITAL LETTER F WITH DOT ABOVE
+1E20          ; Lu #       LATIN CAPITAL LETTER G WITH MACRON
+1E22          ; Lu #       LATIN CAPITAL LETTER H WITH DOT ABOVE
+1E24          ; Lu #       LATIN CAPITAL LETTER H WITH DOT BELOW
+1E26          ; Lu #       LATIN CAPITAL LETTER H WITH DIAERESIS
+1E28          ; Lu #       LATIN CAPITAL LETTER H WITH CEDILLA
+1E2A          ; Lu #       LATIN CAPITAL LETTER H WITH BREVE BELOW
+1E2C          ; Lu #       LATIN CAPITAL LETTER I WITH TILDE BELOW
+1E2E          ; Lu #       LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+1E30          ; Lu #       LATIN CAPITAL LETTER K WITH ACUTE
+1E32          ; Lu #       LATIN CAPITAL LETTER K WITH DOT BELOW
+1E34          ; Lu #       LATIN CAPITAL LETTER K WITH LINE BELOW
+1E36          ; Lu #       LATIN CAPITAL LETTER L WITH DOT BELOW
+1E38          ; Lu #       LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+1E3A          ; Lu #       LATIN CAPITAL LETTER L WITH LINE BELOW
+1E3C          ; Lu #       LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+1E3E          ; Lu #       LATIN CAPITAL LETTER M WITH ACUTE
+1E40          ; Lu #       LATIN CAPITAL LETTER M WITH DOT ABOVE
+1E42          ; Lu #       LATIN CAPITAL LETTER M WITH DOT BELOW
+1E44          ; Lu #       LATIN CAPITAL LETTER N WITH DOT ABOVE
+1E46          ; Lu #       LATIN CAPITAL LETTER N WITH DOT BELOW
+1E48          ; Lu #       LATIN CAPITAL LETTER N WITH LINE BELOW
+1E4A          ; Lu #       LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+1E4C          ; Lu #       LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+1E4E          ; Lu #       LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+1E50          ; Lu #       LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+1E52          ; Lu #       LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+1E54          ; Lu #       LATIN CAPITAL LETTER P WITH ACUTE
+1E56          ; Lu #       LATIN CAPITAL LETTER P WITH DOT ABOVE
+1E58          ; Lu #       LATIN CAPITAL LETTER R WITH DOT ABOVE
+1E5A          ; Lu #       LATIN CAPITAL LETTER R WITH DOT BELOW
+1E5C          ; Lu #       LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+1E5E          ; Lu #       LATIN CAPITAL LETTER R WITH LINE BELOW
+1E60          ; Lu #       LATIN CAPITAL LETTER S WITH DOT ABOVE
+1E62          ; Lu #       LATIN CAPITAL LETTER S WITH DOT BELOW
+1E64          ; Lu #       LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+1E66          ; Lu #       LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+1E68          ; Lu #       LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E6A          ; Lu #       LATIN CAPITAL LETTER T WITH DOT ABOVE
+1E6C          ; Lu #       LATIN CAPITAL LETTER T WITH DOT BELOW
+1E6E          ; Lu #       LATIN CAPITAL LETTER T WITH LINE BELOW
+1E70          ; Lu #       LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+1E72          ; Lu #       LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+1E74          ; Lu #       LATIN CAPITAL LETTER U WITH TILDE BELOW
+1E76          ; Lu #       LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+1E78          ; Lu #       LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+1E7A          ; Lu #       LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+1E7C          ; Lu #       LATIN CAPITAL LETTER V WITH TILDE
+1E7E          ; Lu #       LATIN CAPITAL LETTER V WITH DOT BELOW
+1E80          ; Lu #       LATIN CAPITAL LETTER W WITH GRAVE
+1E82          ; Lu #       LATIN CAPITAL LETTER W WITH ACUTE
+1E84          ; Lu #       LATIN CAPITAL LETTER W WITH DIAERESIS
+1E86          ; Lu #       LATIN CAPITAL LETTER W WITH DOT ABOVE
+1E88          ; Lu #       LATIN CAPITAL LETTER W WITH DOT BELOW
+1E8A          ; Lu #       LATIN CAPITAL LETTER X WITH DOT ABOVE
+1E8C          ; Lu #       LATIN CAPITAL LETTER X WITH DIAERESIS
+1E8E          ; Lu #       LATIN CAPITAL LETTER Y WITH DOT ABOVE
+1E90          ; Lu #       LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+1E92          ; Lu #       LATIN CAPITAL LETTER Z WITH DOT BELOW
+1E94          ; Lu #       LATIN CAPITAL LETTER Z WITH LINE BELOW
+1EA0          ; Lu #       LATIN CAPITAL LETTER A WITH DOT BELOW
+1EA2          ; Lu #       LATIN CAPITAL LETTER A WITH HOOK ABOVE
+1EA4          ; Lu #       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA6          ; Lu #       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA8          ; Lu #       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAA          ; Lu #       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAC          ; Lu #       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAE          ; Lu #       LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1EB0          ; Lu #       LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1EB2          ; Lu #       LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+1EB4          ; Lu #       LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1EB6          ; Lu #       LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+1EB8          ; Lu #       LATIN CAPITAL LETTER E WITH DOT BELOW
+1EBA          ; Lu #       LATIN CAPITAL LETTER E WITH HOOK ABOVE
+1EBC          ; Lu #       LATIN CAPITAL LETTER E WITH TILDE
+1EBE          ; Lu #       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC0          ; Lu #       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC2          ; Lu #       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC4          ; Lu #       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC6          ; Lu #       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC8          ; Lu #       LATIN CAPITAL LETTER I WITH HOOK ABOVE
+1ECA          ; Lu #       LATIN CAPITAL LETTER I WITH DOT BELOW
+1ECC          ; Lu #       LATIN CAPITAL LETTER O WITH DOT BELOW
+1ECE          ; Lu #       LATIN CAPITAL LETTER O WITH HOOK ABOVE
+1ED0          ; Lu #       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED2          ; Lu #       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED4          ; Lu #       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED6          ; Lu #       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED8          ; Lu #       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1EDA          ; Lu #       LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+1EDC          ; Lu #       LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+1EDE          ; Lu #       LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+1EE0          ; Lu #       LATIN CAPITAL LETTER O WITH HORN AND TILDE
+1EE2          ; Lu #       LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+1EE4          ; Lu #       LATIN CAPITAL LETTER U WITH DOT BELOW
+1EE6          ; Lu #       LATIN CAPITAL LETTER U WITH HOOK ABOVE
+1EE8          ; Lu #       LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+1EEA          ; Lu #       LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+1EEC          ; Lu #       LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+1EEE          ; Lu #       LATIN CAPITAL LETTER U WITH HORN AND TILDE
+1EF0          ; Lu #       LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+1EF2          ; Lu #       LATIN CAPITAL LETTER Y WITH GRAVE
+1EF4          ; Lu #       LATIN CAPITAL LETTER Y WITH DOT BELOW
+1EF6          ; Lu #       LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+1EF8          ; Lu #       LATIN CAPITAL LETTER Y WITH TILDE
+1F08..1F0F    ; Lu #   [8] GREEK CAPITAL LETTER ALPHA WITH PSILI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F18..1F1D    ; Lu #   [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F28..1F2F    ; Lu #   [8] GREEK CAPITAL LETTER ETA WITH PSILI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+1F38..1F3F    ; Lu #   [8] GREEK CAPITAL LETTER IOTA WITH PSILI..GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F48..1F4D    ; Lu #   [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F59          ; Lu #       GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B          ; Lu #       GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D          ; Lu #       GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F          ; Lu #       GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F68..1F6F    ; Lu #   [8] GREEK CAPITAL LETTER OMEGA WITH PSILI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1FB8..1FBB    ; Lu #   [4] GREEK CAPITAL LETTER ALPHA WITH VRACHY..GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FC8..1FCB    ; Lu #   [4] GREEK CAPITAL LETTER EPSILON WITH VARIA..GREEK CAPITAL LETTER ETA WITH OXIA
+1FD8..1FDB    ; Lu #   [4] GREEK CAPITAL LETTER IOTA WITH VRACHY..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FE8..1FEC    ; Lu #   [5] GREEK CAPITAL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+1FF8..1FFB    ; Lu #   [4] GREEK CAPITAL LETTER OMICRON WITH VARIA..GREEK CAPITAL LETTER OMEGA WITH OXIA
+2102          ; Lu #       DOUBLE-STRUCK CAPITAL C
+2107          ; Lu #       EULER CONSTANT
+210B..210D    ; Lu #   [3] SCRIPT CAPITAL H..DOUBLE-STRUCK CAPITAL H
+2110..2112    ; Lu #   [3] SCRIPT CAPITAL I..SCRIPT CAPITAL L
+2115          ; Lu #       DOUBLE-STRUCK CAPITAL N
+2119..211D    ; Lu #   [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+2124          ; Lu #       DOUBLE-STRUCK CAPITAL Z
+2126          ; Lu #       OHM SIGN
+2128          ; Lu #       BLACK-LETTER CAPITAL Z
+212A..212D    ; Lu #   [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+2130..2133    ; Lu #   [4] SCRIPT CAPITAL E..SCRIPT CAPITAL M
+213E..213F    ; Lu #   [2] DOUBLE-STRUCK CAPITAL GAMMA..DOUBLE-STRUCK CAPITAL PI
+2145          ; Lu #       DOUBLE-STRUCK ITALIC CAPITAL D
+2183          ; Lu #       ROMAN NUMERAL REVERSED ONE HUNDRED
+2C00..2C2E    ; Lu #  [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
+2C60          ; Lu #       LATIN CAPITAL LETTER L WITH DOUBLE BAR
+2C62..2C64    ; Lu #   [3] LATIN CAPITAL LETTER L WITH MIDDLE TILDE..LATIN CAPITAL LETTER R WITH TAIL
+2C67          ; Lu #       LATIN CAPITAL LETTER H WITH DESCENDER
+2C69          ; Lu #       LATIN CAPITAL LETTER K WITH DESCENDER
+2C6B          ; Lu #       LATIN CAPITAL LETTER Z WITH DESCENDER
+2C75          ; Lu #       LATIN CAPITAL LETTER HALF H
+2C80          ; Lu #       COPTIC CAPITAL LETTER ALFA
+2C82          ; Lu #       COPTIC CAPITAL LETTER VIDA
+2C84          ; Lu #       COPTIC CAPITAL LETTER GAMMA
+2C86          ; Lu #       COPTIC CAPITAL LETTER DALDA
+2C88          ; Lu #       COPTIC CAPITAL LETTER EIE
+2C8A          ; Lu #       COPTIC CAPITAL LETTER SOU
+2C8C          ; Lu #       COPTIC CAPITAL LETTER ZATA
+2C8E          ; Lu #       COPTIC CAPITAL LETTER HATE
+2C90          ; Lu #       COPTIC CAPITAL LETTER THETHE
+2C92          ; Lu #       COPTIC CAPITAL LETTER IAUDA
+2C94          ; Lu #       COPTIC CAPITAL LETTER KAPA
+2C96          ; Lu #       COPTIC CAPITAL LETTER LAULA
+2C98          ; Lu #       COPTIC CAPITAL LETTER MI
+2C9A          ; Lu #       COPTIC CAPITAL LETTER NI
+2C9C          ; Lu #       COPTIC CAPITAL LETTER KSI
+2C9E          ; Lu #       COPTIC CAPITAL LETTER O
+2CA0          ; Lu #       COPTIC CAPITAL LETTER PI
+2CA2          ; Lu #       COPTIC CAPITAL LETTER RO
+2CA4          ; Lu #       COPTIC CAPITAL LETTER SIMA
+2CA6          ; Lu #       COPTIC CAPITAL LETTER TAU
+2CA8          ; Lu #       COPTIC CAPITAL LETTER UA
+2CAA          ; Lu #       COPTIC CAPITAL LETTER FI
+2CAC          ; Lu #       COPTIC CAPITAL LETTER KHI
+2CAE          ; Lu #       COPTIC CAPITAL LETTER PSI
+2CB0          ; Lu #       COPTIC CAPITAL LETTER OOU
+2CB2          ; Lu #       COPTIC CAPITAL LETTER DIALECT-P ALEF
+2CB4          ; Lu #       COPTIC CAPITAL LETTER OLD COPTIC AIN
+2CB6          ; Lu #       COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
+2CB8          ; Lu #       COPTIC CAPITAL LETTER DIALECT-P KAPA
+2CBA          ; Lu #       COPTIC CAPITAL LETTER DIALECT-P NI
+2CBC          ; Lu #       COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
+2CBE          ; Lu #       COPTIC CAPITAL LETTER OLD COPTIC OOU
+2CC0          ; Lu #       COPTIC CAPITAL LETTER SAMPI
+2CC2          ; Lu #       COPTIC CAPITAL LETTER CROSSED SHEI
+2CC4          ; Lu #       COPTIC CAPITAL LETTER OLD COPTIC SHEI
+2CC6          ; Lu #       COPTIC CAPITAL LETTER OLD COPTIC ESH
+2CC8          ; Lu #       COPTIC CAPITAL LETTER AKHMIMIC KHEI
+2CCA          ; Lu #       COPTIC CAPITAL LETTER DIALECT-P HORI
+2CCC          ; Lu #       COPTIC CAPITAL LETTER OLD COPTIC HORI
+2CCE          ; Lu #       COPTIC CAPITAL LETTER OLD COPTIC HA
+2CD0          ; Lu #       COPTIC CAPITAL LETTER L-SHAPED HA
+2CD2          ; Lu #       COPTIC CAPITAL LETTER OLD COPTIC HEI
+2CD4          ; Lu #       COPTIC CAPITAL LETTER OLD COPTIC HAT
+2CD6          ; Lu #       COPTIC CAPITAL LETTER OLD COPTIC GANGIA
+2CD8          ; Lu #       COPTIC CAPITAL LETTER OLD COPTIC DJA
+2CDA          ; Lu #       COPTIC CAPITAL LETTER OLD COPTIC SHIMA
+2CDC          ; Lu #       COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
+2CDE          ; Lu #       COPTIC CAPITAL LETTER OLD NUBIAN NGI
+2CE0          ; Lu #       COPTIC CAPITAL LETTER OLD NUBIAN NYI
+2CE2          ; Lu #       COPTIC CAPITAL LETTER OLD NUBIAN WAU
+FF21..FF3A    ; Lu #  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+10400..10427  ; Lu #  [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW
+1D400..1D419  ; Lu #  [26] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL BOLD CAPITAL Z
+1D434..1D44D  ; Lu #  [26] MATHEMATICAL ITALIC CAPITAL A..MATHEMATICAL ITALIC CAPITAL Z
+1D468..1D481  ; Lu #  [26] MATHEMATICAL BOLD ITALIC CAPITAL A..MATHEMATICAL BOLD ITALIC CAPITAL Z
+1D49C         ; Lu #       MATHEMATICAL SCRIPT CAPITAL A
+1D49E..1D49F  ; Lu #   [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+1D4A2         ; Lu #       MATHEMATICAL SCRIPT CAPITAL G
+1D4A5..1D4A6  ; Lu #   [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+1D4A9..1D4AC  ; Lu #   [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE..1D4B5  ; Lu #   [8] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT CAPITAL Z
+1D4D0..1D4E9  ; Lu #  [26] MATHEMATICAL BOLD SCRIPT CAPITAL A..MATHEMATICAL BOLD SCRIPT CAPITAL Z
+1D504..1D505  ; Lu #   [2] MATHEMATICAL FRAKTUR CAPITAL A..MATHEMATICAL FRAKTUR CAPITAL B
+1D507..1D50A  ; Lu #   [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+1D50D..1D514  ; Lu #   [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+1D516..1D51C  ; Lu #   [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+1D538..1D539  ; Lu #   [2] MATHEMATICAL DOUBLE-STRUCK CAPITAL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B..1D53E  ; Lu #   [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540..1D544  ; Lu #   [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546         ; Lu #       MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A..1D550  ; Lu #   [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D56C..1D585  ; Lu #  [26] MATHEMATICAL BOLD FRAKTUR CAPITAL A..MATHEMATICAL BOLD FRAKTUR CAPITAL Z
+1D5A0..1D5B9  ; Lu #  [26] MATHEMATICAL SANS-SERIF CAPITAL A..MATHEMATICAL SANS-SERIF CAPITAL Z
+1D5D4..1D5ED  ; Lu #  [26] MATHEMATICAL SANS-SERIF BOLD CAPITAL A..MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
+1D608..1D621  ; Lu #  [26] MATHEMATICAL SANS-SERIF ITALIC CAPITAL A..MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
+1D63C..1D655  ; Lu #  [26] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
+1D670..1D689  ; Lu #  [26] MATHEMATICAL MONOSPACE CAPITAL A..MATHEMATICAL MONOSPACE CAPITAL Z
+1D6A8..1D6C0  ; Lu #  [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+1D6E2..1D6FA  ; Lu #  [25] MATHEMATICAL ITALIC CAPITAL ALPHA..MATHEMATICAL ITALIC CAPITAL OMEGA
+1D71C..1D734  ; Lu #  [25] MATHEMATICAL BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D756..1D76E  ; Lu #  [25] MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D790..1D7A8  ; Lu #  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7CA         ; Lu #       MATHEMATICAL BOLD CAPITAL DIGAMMA
+
+# Total code points: 1320
+
+# ================================================
+
+# General_Category=Lowercase_Letter
+
+0061..007A    ; Ll #  [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
+00AA          ; Ll #       FEMININE ORDINAL INDICATOR
+00B5          ; Ll #       MICRO SIGN
+00BA          ; Ll #       MASCULINE ORDINAL INDICATOR
+00DF..00F6    ; Ll #  [24] LATIN SMALL LETTER SHARP S..LATIN SMALL LETTER O WITH DIAERESIS
+00F8..00FF    ; Ll #   [8] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER Y WITH DIAERESIS
+0101          ; Ll #       LATIN SMALL LETTER A WITH MACRON
+0103          ; Ll #       LATIN SMALL LETTER A WITH BREVE
+0105          ; Ll #       LATIN SMALL LETTER A WITH OGONEK
+0107          ; Ll #       LATIN SMALL LETTER C WITH ACUTE
+0109          ; Ll #       LATIN SMALL LETTER C WITH CIRCUMFLEX
+010B          ; Ll #       LATIN SMALL LETTER C WITH DOT ABOVE
+010D          ; Ll #       LATIN SMALL LETTER C WITH CARON
+010F          ; Ll #       LATIN SMALL LETTER D WITH CARON
+0111          ; Ll #       LATIN SMALL LETTER D WITH STROKE
+0113          ; Ll #       LATIN SMALL LETTER E WITH MACRON
+0115          ; Ll #       LATIN SMALL LETTER E WITH BREVE
+0117          ; Ll #       LATIN SMALL LETTER E WITH DOT ABOVE
+0119          ; Ll #       LATIN SMALL LETTER E WITH OGONEK
+011B          ; Ll #       LATIN SMALL LETTER E WITH CARON
+011D          ; Ll #       LATIN SMALL LETTER G WITH CIRCUMFLEX
+011F          ; Ll #       LATIN SMALL LETTER G WITH BREVE
+0121          ; Ll #       LATIN SMALL LETTER G WITH DOT ABOVE
+0123          ; Ll #       LATIN SMALL LETTER G WITH CEDILLA
+0125          ; Ll #       LATIN SMALL LETTER H WITH CIRCUMFLEX
+0127          ; Ll #       LATIN SMALL LETTER H WITH STROKE
+0129          ; Ll #       LATIN SMALL LETTER I WITH TILDE
+012B          ; Ll #       LATIN SMALL LETTER I WITH MACRON
+012D          ; Ll #       LATIN SMALL LETTER I WITH BREVE
+012F          ; Ll #       LATIN SMALL LETTER I WITH OGONEK
+0131          ; Ll #       LATIN SMALL LETTER DOTLESS I
+0133          ; Ll #       LATIN SMALL LIGATURE IJ
+0135          ; Ll #       LATIN SMALL LETTER J WITH CIRCUMFLEX
+0137..0138    ; Ll #   [2] LATIN SMALL LETTER K WITH CEDILLA..LATIN SMALL LETTER KRA
+013A          ; Ll #       LATIN SMALL LETTER L WITH ACUTE
+013C          ; Ll #       LATIN SMALL LETTER L WITH CEDILLA
+013E          ; Ll #       LATIN SMALL LETTER L WITH CARON
+0140          ; Ll #       LATIN SMALL LETTER L WITH MIDDLE DOT
+0142          ; Ll #       LATIN SMALL LETTER L WITH STROKE
+0144          ; Ll #       LATIN SMALL LETTER N WITH ACUTE
+0146          ; Ll #       LATIN SMALL LETTER N WITH CEDILLA
+0148..0149    ; Ll #   [2] LATIN SMALL LETTER N WITH CARON..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014B          ; Ll #       LATIN SMALL LETTER ENG
+014D          ; Ll #       LATIN SMALL LETTER O WITH MACRON
+014F          ; Ll #       LATIN SMALL LETTER O WITH BREVE
+0151          ; Ll #       LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0153          ; Ll #       LATIN SMALL LIGATURE OE
+0155          ; Ll #       LATIN SMALL LETTER R WITH ACUTE
+0157          ; Ll #       LATIN SMALL LETTER R WITH CEDILLA
+0159          ; Ll #       LATIN SMALL LETTER R WITH CARON
+015B          ; Ll #       LATIN SMALL LETTER S WITH ACUTE
+015D          ; Ll #       LATIN SMALL LETTER S WITH CIRCUMFLEX
+015F          ; Ll #       LATIN SMALL LETTER S WITH CEDILLA
+0161          ; Ll #       LATIN SMALL LETTER S WITH CARON
+0163          ; Ll #       LATIN SMALL LETTER T WITH CEDILLA
+0165          ; Ll #       LATIN SMALL LETTER T WITH CARON
+0167          ; Ll #       LATIN SMALL LETTER T WITH STROKE
+0169          ; Ll #       LATIN SMALL LETTER U WITH TILDE
+016B          ; Ll #       LATIN SMALL LETTER U WITH MACRON
+016D          ; Ll #       LATIN SMALL LETTER U WITH BREVE
+016F          ; Ll #       LATIN SMALL LETTER U WITH RING ABOVE
+0171          ; Ll #       LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0173          ; Ll #       LATIN SMALL LETTER U WITH OGONEK
+0175          ; Ll #       LATIN SMALL LETTER W WITH CIRCUMFLEX
+0177          ; Ll #       LATIN SMALL LETTER Y WITH CIRCUMFLEX
+017A          ; Ll #       LATIN SMALL LETTER Z WITH ACUTE
+017C          ; Ll #       LATIN SMALL LETTER Z WITH DOT ABOVE
+017E..0180    ; Ll #   [3] LATIN SMALL LETTER Z WITH CARON..LATIN SMALL LETTER B WITH STROKE
+0183          ; Ll #       LATIN SMALL LETTER B WITH TOPBAR
+0185          ; Ll #       LATIN SMALL LETTER TONE SIX
+0188          ; Ll #       LATIN SMALL LETTER C WITH HOOK
+018C..018D    ; Ll #   [2] LATIN SMALL LETTER D WITH TOPBAR..LATIN SMALL LETTER TURNED DELTA
+0192          ; Ll #       LATIN SMALL LETTER F WITH HOOK
+0195          ; Ll #       LATIN SMALL LETTER HV
+0199..019B    ; Ll #   [3] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER LAMBDA WITH STROKE
+019E          ; Ll #       LATIN SMALL LETTER N WITH LONG RIGHT LEG
+01A1          ; Ll #       LATIN SMALL LETTER O WITH HORN
+01A3          ; Ll #       LATIN SMALL LETTER OI
+01A5          ; Ll #       LATIN SMALL LETTER P WITH HOOK
+01A8          ; Ll #       LATIN SMALL LETTER TONE TWO
+01AA..01AB    ; Ll #   [2] LATIN LETTER REVERSED ESH LOOP..LATIN SMALL LETTER T WITH PALATAL HOOK
+01AD          ; Ll #       LATIN SMALL LETTER T WITH HOOK
+01B0          ; Ll #       LATIN SMALL LETTER U WITH HORN
+01B4          ; Ll #       LATIN SMALL LETTER Y WITH HOOK
+01B6          ; Ll #       LATIN SMALL LETTER Z WITH STROKE
+01B9..01BA    ; Ll #   [2] LATIN SMALL LETTER EZH REVERSED..LATIN SMALL LETTER EZH WITH TAIL
+01BD..01BF    ; Ll #   [3] LATIN SMALL LETTER TONE FIVE..LATIN LETTER WYNN
+01C6          ; Ll #       LATIN SMALL LETTER DZ WITH CARON
+01C9          ; Ll #       LATIN SMALL LETTER LJ
+01CC          ; Ll #       LATIN SMALL LETTER NJ
+01CE          ; Ll #       LATIN SMALL LETTER A WITH CARON
+01D0          ; Ll #       LATIN SMALL LETTER I WITH CARON
+01D2          ; Ll #       LATIN SMALL LETTER O WITH CARON
+01D4          ; Ll #       LATIN SMALL LETTER U WITH CARON
+01D6          ; Ll #       LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D8          ; Ll #       LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01DA          ; Ll #       LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01DC..01DD    ; Ll #   [2] LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE..LATIN SMALL LETTER TURNED E
+01DF          ; Ll #       LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01E1          ; Ll #       LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+01E3          ; Ll #       LATIN SMALL LETTER AE WITH MACRON
+01E5          ; Ll #       LATIN SMALL LETTER G WITH STROKE
+01E7          ; Ll #       LATIN SMALL LETTER G WITH CARON
+01E9          ; Ll #       LATIN SMALL LETTER K WITH CARON
+01EB          ; Ll #       LATIN SMALL LETTER O WITH OGONEK
+01ED          ; Ll #       LATIN SMALL LETTER O WITH OGONEK AND MACRON
+01EF..01F0    ; Ll #   [2] LATIN SMALL LETTER EZH WITH CARON..LATIN SMALL LETTER J WITH CARON
+01F3          ; Ll #       LATIN SMALL LETTER DZ
+01F5          ; Ll #       LATIN SMALL LETTER G WITH ACUTE
+01F9          ; Ll #       LATIN SMALL LETTER N WITH GRAVE
+01FB          ; Ll #       LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FD          ; Ll #       LATIN SMALL LETTER AE WITH ACUTE
+01FF          ; Ll #       LATIN SMALL LETTER O WITH STROKE AND ACUTE
+0201          ; Ll #       LATIN SMALL LETTER A WITH DOUBLE GRAVE
+0203          ; Ll #       LATIN SMALL LETTER A WITH INVERTED BREVE
+0205          ; Ll #       LATIN SMALL LETTER E WITH DOUBLE GRAVE
+0207          ; Ll #       LATIN SMALL LETTER E WITH INVERTED BREVE
+0209          ; Ll #       LATIN SMALL LETTER I WITH DOUBLE GRAVE
+020B          ; Ll #       LATIN SMALL LETTER I WITH INVERTED BREVE
+020D          ; Ll #       LATIN SMALL LETTER O WITH DOUBLE GRAVE
+020F          ; Ll #       LATIN SMALL LETTER O WITH INVERTED BREVE
+0211          ; Ll #       LATIN SMALL LETTER R WITH DOUBLE GRAVE
+0213          ; Ll #       LATIN SMALL LETTER R WITH INVERTED BREVE
+0215          ; Ll #       LATIN SMALL LETTER U WITH DOUBLE GRAVE
+0217          ; Ll #       LATIN SMALL LETTER U WITH INVERTED BREVE
+0219          ; Ll #       LATIN SMALL LETTER S WITH COMMA BELOW
+021B          ; Ll #       LATIN SMALL LETTER T WITH COMMA BELOW
+021D          ; Ll #       LATIN SMALL LETTER YOGH
+021F          ; Ll #       LATIN SMALL LETTER H WITH CARON
+0221          ; Ll #       LATIN SMALL LETTER D WITH CURL
+0223          ; Ll #       LATIN SMALL LETTER OU
+0225          ; Ll #       LATIN SMALL LETTER Z WITH HOOK
+0227          ; Ll #       LATIN SMALL LETTER A WITH DOT ABOVE
+0229          ; Ll #       LATIN SMALL LETTER E WITH CEDILLA
+022B          ; Ll #       LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022D          ; Ll #       LATIN SMALL LETTER O WITH TILDE AND MACRON
+022F          ; Ll #       LATIN SMALL LETTER O WITH DOT ABOVE
+0231          ; Ll #       LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+0233..0239    ; Ll #   [7] LATIN SMALL LETTER Y WITH MACRON..LATIN SMALL LETTER QP DIGRAPH
+023C          ; Ll #       LATIN SMALL LETTER C WITH STROKE
+023F..0240    ; Ll #   [2] LATIN SMALL LETTER S WITH SWASH TAIL..LATIN SMALL LETTER Z WITH SWASH TAIL
+0242          ; Ll #       LATIN SMALL LETTER GLOTTAL STOP
+0247          ; Ll #       LATIN SMALL LETTER E WITH STROKE
+0249          ; Ll #       LATIN SMALL LETTER J WITH STROKE
+024B          ; Ll #       LATIN SMALL LETTER Q WITH HOOK TAIL
+024D          ; Ll #       LATIN SMALL LETTER R WITH STROKE
+024F..0293    ; Ll #  [69] LATIN SMALL LETTER Y WITH STROKE..LATIN SMALL LETTER EZH WITH CURL
+0295..02AF    ; Ll #  [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+037B..037D    ; Ll #   [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+0390          ; Ll #       GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03AC..03CE    ; Ll #  [35] GREEK SMALL LETTER ALPHA WITH TONOS..GREEK SMALL LETTER OMEGA WITH TONOS
+03D0..03D1    ; Ll #   [2] GREEK BETA SYMBOL..GREEK THETA SYMBOL
+03D5..03D7    ; Ll #   [3] GREEK PHI SYMBOL..GREEK KAI SYMBOL
+03D9          ; Ll #       GREEK SMALL LETTER ARCHAIC KOPPA
+03DB          ; Ll #       GREEK SMALL LETTER STIGMA
+03DD          ; Ll #       GREEK SMALL LETTER DIGAMMA
+03DF          ; Ll #       GREEK SMALL LETTER KOPPA
+03E1          ; Ll #       GREEK SMALL LETTER SAMPI
+03E3          ; Ll #       COPTIC SMALL LETTER SHEI
+03E5          ; Ll #       COPTIC SMALL LETTER FEI
+03E7          ; Ll #       COPTIC SMALL LETTER KHEI
+03E9          ; Ll #       COPTIC SMALL LETTER HORI
+03EB          ; Ll #       COPTIC SMALL LETTER GANGIA
+03ED          ; Ll #       COPTIC SMALL LETTER SHIMA
+03EF..03F3    ; Ll #   [5] COPTIC SMALL LETTER DEI..GREEK LETTER YOT
+03F5          ; Ll #       GREEK LUNATE EPSILON SYMBOL
+03F8          ; Ll #       GREEK SMALL LETTER SHO
+03FB..03FC    ; Ll #   [2] GREEK SMALL LETTER SAN..GREEK RHO WITH STROKE SYMBOL
+0430..045F    ; Ll #  [48] CYRILLIC SMALL LETTER A..CYRILLIC SMALL LETTER DZHE
+0461          ; Ll #       CYRILLIC SMALL LETTER OMEGA
+0463          ; Ll #       CYRILLIC SMALL LETTER YAT
+0465          ; Ll #       CYRILLIC SMALL LETTER IOTIFIED E
+0467          ; Ll #       CYRILLIC SMALL LETTER LITTLE YUS
+0469          ; Ll #       CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
+046B          ; Ll #       CYRILLIC SMALL LETTER BIG YUS
+046D          ; Ll #       CYRILLIC SMALL LETTER IOTIFIED BIG YUS
+046F          ; Ll #       CYRILLIC SMALL LETTER KSI
+0471          ; Ll #       CYRILLIC SMALL LETTER PSI
+0473          ; Ll #       CYRILLIC SMALL LETTER FITA
+0475          ; Ll #       CYRILLIC SMALL LETTER IZHITSA
+0477          ; Ll #       CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0479          ; Ll #       CYRILLIC SMALL LETTER UK
+047B          ; Ll #       CYRILLIC SMALL LETTER ROUND OMEGA
+047D          ; Ll #       CYRILLIC SMALL LETTER OMEGA WITH TITLO
+047F          ; Ll #       CYRILLIC SMALL LETTER OT
+0481          ; Ll #       CYRILLIC SMALL LETTER KOPPA
+048B          ; Ll #       CYRILLIC SMALL LETTER SHORT I WITH TAIL
+048D          ; Ll #       CYRILLIC SMALL LETTER SEMISOFT SIGN
+048F          ; Ll #       CYRILLIC SMALL LETTER ER WITH TICK
+0491          ; Ll #       CYRILLIC SMALL LETTER GHE WITH UPTURN
+0493          ; Ll #       CYRILLIC SMALL LETTER GHE WITH STROKE
+0495          ; Ll #       CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
+0497          ; Ll #       CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+0499          ; Ll #       CYRILLIC SMALL LETTER ZE WITH DESCENDER
+049B          ; Ll #       CYRILLIC SMALL LETTER KA WITH DESCENDER
+049D          ; Ll #       CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+049F          ; Ll #       CYRILLIC SMALL LETTER KA WITH STROKE
+04A1          ; Ll #       CYRILLIC SMALL LETTER BASHKIR KA
+04A3          ; Ll #       CYRILLIC SMALL LETTER EN WITH DESCENDER
+04A5          ; Ll #       CYRILLIC SMALL LIGATURE EN GHE
+04A7          ; Ll #       CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
+04A9          ; Ll #       CYRILLIC SMALL LETTER ABKHASIAN HA
+04AB          ; Ll #       CYRILLIC SMALL LETTER ES WITH DESCENDER
+04AD          ; Ll #       CYRILLIC SMALL LETTER TE WITH DESCENDER
+04AF          ; Ll #       CYRILLIC SMALL LETTER STRAIGHT U
+04B1          ; Ll #       CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+04B3          ; Ll #       CYRILLIC SMALL LETTER HA WITH DESCENDER
+04B5          ; Ll #       CYRILLIC SMALL LIGATURE TE TSE
+04B7          ; Ll #       CYRILLIC SMALL LETTER CHE WITH DESCENDER
+04B9          ; Ll #       CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
+04BB          ; Ll #       CYRILLIC SMALL LETTER SHHA
+04BD          ; Ll #       CYRILLIC SMALL LETTER ABKHASIAN CHE
+04BF          ; Ll #       CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
+04C2          ; Ll #       CYRILLIC SMALL LETTER ZHE WITH BREVE
+04C4          ; Ll #       CYRILLIC SMALL LETTER KA WITH HOOK
+04C6          ; Ll #       CYRILLIC SMALL LETTER EL WITH TAIL
+04C8          ; Ll #       CYRILLIC SMALL LETTER EN WITH HOOK
+04CA          ; Ll #       CYRILLIC SMALL LETTER EN WITH TAIL
+04CC          ; Ll #       CYRILLIC SMALL LETTER KHAKASSIAN CHE
+04CE..04CF    ; Ll #   [2] CYRILLIC SMALL LETTER EM WITH TAIL..CYRILLIC SMALL LETTER PALOCHKA
+04D1          ; Ll #       CYRILLIC SMALL LETTER A WITH BREVE
+04D3          ; Ll #       CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D5          ; Ll #       CYRILLIC SMALL LIGATURE A IE
+04D7          ; Ll #       CYRILLIC SMALL LETTER IE WITH BREVE
+04D9          ; Ll #       CYRILLIC SMALL LETTER SCHWA
+04DB          ; Ll #       CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DD          ; Ll #       CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DF          ; Ll #       CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E1          ; Ll #       CYRILLIC SMALL LETTER ABKHASIAN DZE
+04E3          ; Ll #       CYRILLIC SMALL LETTER I WITH MACRON
+04E5          ; Ll #       CYRILLIC SMALL LETTER I WITH DIAERESIS
+04E7          ; Ll #       CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E9          ; Ll #       CYRILLIC SMALL LETTER BARRED O
+04EB          ; Ll #       CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04ED          ; Ll #       CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EF          ; Ll #       CYRILLIC SMALL LETTER U WITH MACRON
+04F1          ; Ll #       CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F3          ; Ll #       CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F5          ; Ll #       CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F7          ; Ll #       CYRILLIC SMALL LETTER GHE WITH DESCENDER
+04F9          ; Ll #       CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04FB          ; Ll #       CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK
+04FD          ; Ll #       CYRILLIC SMALL LETTER HA WITH HOOK
+04FF          ; Ll #       CYRILLIC SMALL LETTER HA WITH STROKE
+0501          ; Ll #       CYRILLIC SMALL LETTER KOMI DE
+0503          ; Ll #       CYRILLIC SMALL LETTER KOMI DJE
+0505          ; Ll #       CYRILLIC SMALL LETTER KOMI ZJE
+0507          ; Ll #       CYRILLIC SMALL LETTER KOMI DZJE
+0509          ; Ll #       CYRILLIC SMALL LETTER KOMI LJE
+050B          ; Ll #       CYRILLIC SMALL LETTER KOMI NJE
+050D          ; Ll #       CYRILLIC SMALL LETTER KOMI SJE
+050F          ; Ll #       CYRILLIC SMALL LETTER KOMI TJE
+0511          ; Ll #       CYRILLIC SMALL LETTER REVERSED ZE
+0513          ; Ll #       CYRILLIC SMALL LETTER EL WITH HOOK
+0561..0587    ; Ll #  [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
+1D00..1D2B    ; Ll #  [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
+1D62..1D77    ; Ll #  [22] LATIN SUBSCRIPT SMALL LETTER I..LATIN SMALL LETTER TURNED G
+1D79..1D9A    ; Ll #  [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
+1E01          ; Ll #       LATIN SMALL LETTER A WITH RING BELOW
+1E03          ; Ll #       LATIN SMALL LETTER B WITH DOT ABOVE
+1E05          ; Ll #       LATIN SMALL LETTER B WITH DOT BELOW
+1E07          ; Ll #       LATIN SMALL LETTER B WITH LINE BELOW
+1E09          ; Ll #       LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+1E0B          ; Ll #       LATIN SMALL LETTER D WITH DOT ABOVE
+1E0D          ; Ll #       LATIN SMALL LETTER D WITH DOT BELOW
+1E0F          ; Ll #       LATIN SMALL LETTER D WITH LINE BELOW
+1E11          ; Ll #       LATIN SMALL LETTER D WITH CEDILLA
+1E13          ; Ll #       LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
+1E15          ; Ll #       LATIN SMALL LETTER E WITH MACRON AND GRAVE
+1E17          ; Ll #       LATIN SMALL LETTER E WITH MACRON AND ACUTE
+1E19          ; Ll #       LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
+1E1B          ; Ll #       LATIN SMALL LETTER E WITH TILDE BELOW
+1E1D          ; Ll #       LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+1E1F          ; Ll #       LATIN SMALL LETTER F WITH DOT ABOVE
+1E21          ; Ll #       LATIN SMALL LETTER G WITH MACRON
+1E23          ; Ll #       LATIN SMALL LETTER H WITH DOT ABOVE
+1E25          ; Ll #       LATIN SMALL LETTER H WITH DOT BELOW
+1E27          ; Ll #       LATIN SMALL LETTER H WITH DIAERESIS
+1E29          ; Ll #       LATIN SMALL LETTER H WITH CEDILLA
+1E2B          ; Ll #       LATIN SMALL LETTER H WITH BREVE BELOW
+1E2D          ; Ll #       LATIN SMALL LETTER I WITH TILDE BELOW
+1E2F          ; Ll #       LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+1E31          ; Ll #       LATIN SMALL LETTER K WITH ACUTE
+1E33          ; Ll #       LATIN SMALL LETTER K WITH DOT BELOW
+1E35          ; Ll #       LATIN SMALL LETTER K WITH LINE BELOW
+1E37          ; Ll #       LATIN SMALL LETTER L WITH DOT BELOW
+1E39          ; Ll #       LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+1E3B          ; Ll #       LATIN SMALL LETTER L WITH LINE BELOW
+1E3D          ; Ll #       LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
+1E3F          ; Ll #       LATIN SMALL LETTER M WITH ACUTE
+1E41          ; Ll #       LATIN SMALL LETTER M WITH DOT ABOVE
+1E43          ; Ll #       LATIN SMALL LETTER M WITH DOT BELOW
+1E45          ; Ll #       LATIN SMALL LETTER N WITH DOT ABOVE
+1E47          ; Ll #       LATIN SMALL LETTER N WITH DOT BELOW
+1E49          ; Ll #       LATIN SMALL LETTER N WITH LINE BELOW
+1E4B          ; Ll #       LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
+1E4D          ; Ll #       LATIN SMALL LETTER O WITH TILDE AND ACUTE
+1E4F          ; Ll #       LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+1E51          ; Ll #       LATIN SMALL LETTER O WITH MACRON AND GRAVE
+1E53          ; Ll #       LATIN SMALL LETTER O WITH MACRON AND ACUTE
+1E55          ; Ll #       LATIN SMALL LETTER P WITH ACUTE
+1E57          ; Ll #       LATIN SMALL LETTER P WITH DOT ABOVE
+1E59          ; Ll #       LATIN SMALL LETTER R WITH DOT ABOVE
+1E5B          ; Ll #       LATIN SMALL LETTER R WITH DOT BELOW
+1E5D          ; Ll #       LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+1E5F          ; Ll #       LATIN SMALL LETTER R WITH LINE BELOW
+1E61          ; Ll #       LATIN SMALL LETTER S WITH DOT ABOVE
+1E63          ; Ll #       LATIN SMALL LETTER S WITH DOT BELOW
+1E65          ; Ll #       LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+1E67          ; Ll #       LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+1E69          ; Ll #       LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E6B          ; Ll #       LATIN SMALL LETTER T WITH DOT ABOVE
+1E6D          ; Ll #       LATIN SMALL LETTER T WITH DOT BELOW
+1E6F          ; Ll #       LATIN SMALL LETTER T WITH LINE BELOW
+1E71          ; Ll #       LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
+1E73          ; Ll #       LATIN SMALL LETTER U WITH DIAERESIS BELOW
+1E75          ; Ll #       LATIN SMALL LETTER U WITH TILDE BELOW
+1E77          ; Ll #       LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
+1E79          ; Ll #       LATIN SMALL LETTER U WITH TILDE AND ACUTE
+1E7B          ; Ll #       LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+1E7D          ; Ll #       LATIN SMALL LETTER V WITH TILDE
+1E7F          ; Ll #       LATIN SMALL LETTER V WITH DOT BELOW
+1E81          ; Ll #       LATIN SMALL LETTER W WITH GRAVE
+1E83          ; Ll #       LATIN SMALL LETTER W WITH ACUTE
+1E85          ; Ll #       LATIN SMALL LETTER W WITH DIAERESIS
+1E87          ; Ll #       LATIN SMALL LETTER W WITH DOT ABOVE
+1E89          ; Ll #       LATIN SMALL LETTER W WITH DOT BELOW
+1E8B          ; Ll #       LATIN SMALL LETTER X WITH DOT ABOVE
+1E8D          ; Ll #       LATIN SMALL LETTER X WITH DIAERESIS
+1E8F          ; Ll #       LATIN SMALL LETTER Y WITH DOT ABOVE
+1E91          ; Ll #       LATIN SMALL LETTER Z WITH CIRCUMFLEX
+1E93          ; Ll #       LATIN SMALL LETTER Z WITH DOT BELOW
+1E95..1E9B    ; Ll #   [7] LATIN SMALL LETTER Z WITH LINE BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA1          ; Ll #       LATIN SMALL LETTER A WITH DOT BELOW
+1EA3          ; Ll #       LATIN SMALL LETTER A WITH HOOK ABOVE
+1EA5          ; Ll #       LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA7          ; Ll #       LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA9          ; Ll #       LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAB          ; Ll #       LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAD          ; Ll #       LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAF          ; Ll #       LATIN SMALL LETTER A WITH BREVE AND ACUTE
+1EB1          ; Ll #       LATIN SMALL LETTER A WITH BREVE AND GRAVE
+1EB3          ; Ll #       LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+1EB5          ; Ll #       LATIN SMALL LETTER A WITH BREVE AND TILDE
+1EB7          ; Ll #       LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+1EB9          ; Ll #       LATIN SMALL LETTER E WITH DOT BELOW
+1EBB          ; Ll #       LATIN SMALL LETTER E WITH HOOK ABOVE
+1EBD          ; Ll #       LATIN SMALL LETTER E WITH TILDE
+1EBF          ; Ll #       LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC1          ; Ll #       LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC3          ; Ll #       LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC5          ; Ll #       LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC7          ; Ll #       LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC9          ; Ll #       LATIN SMALL LETTER I WITH HOOK ABOVE
+1ECB          ; Ll #       LATIN SMALL LETTER I WITH DOT BELOW
+1ECD          ; Ll #       LATIN SMALL LETTER O WITH DOT BELOW
+1ECF          ; Ll #       LATIN SMALL LETTER O WITH HOOK ABOVE
+1ED1          ; Ll #       LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED3          ; Ll #       LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED5          ; Ll #       LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED7          ; Ll #       LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED9          ; Ll #       LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1EDB          ; Ll #       LATIN SMALL LETTER O WITH HORN AND ACUTE
+1EDD          ; Ll #       LATIN SMALL LETTER O WITH HORN AND GRAVE
+1EDF          ; Ll #       LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+1EE1          ; Ll #       LATIN SMALL LETTER O WITH HORN AND TILDE
+1EE3          ; Ll #       LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+1EE5          ; Ll #       LATIN SMALL LETTER U WITH DOT BELOW
+1EE7          ; Ll #       LATIN SMALL LETTER U WITH HOOK ABOVE
+1EE9          ; Ll #       LATIN SMALL LETTER U WITH HORN AND ACUTE
+1EEB          ; Ll #       LATIN SMALL LETTER U WITH HORN AND GRAVE
+1EED          ; Ll #       LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+1EEF          ; Ll #       LATIN SMALL LETTER U WITH HORN AND TILDE
+1EF1          ; Ll #       LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+1EF3          ; Ll #       LATIN SMALL LETTER Y WITH GRAVE
+1EF5          ; Ll #       LATIN SMALL LETTER Y WITH DOT BELOW
+1EF7          ; Ll #       LATIN SMALL LETTER Y WITH HOOK ABOVE
+1EF9          ; Ll #       LATIN SMALL LETTER Y WITH TILDE
+1F00..1F07    ; Ll #   [8] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F10..1F15    ; Ll #   [6] GREEK SMALL LETTER EPSILON WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F27    ; Ll #   [8] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+1F30..1F37    ; Ll #   [8] GREEK SMALL LETTER IOTA WITH PSILI..GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F40..1F45    ; Ll #   [6] GREEK SMALL LETTER OMICRON WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57    ; Ll #   [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F60..1F67    ; Ll #   [8] GREEK SMALL LETTER OMEGA WITH PSILI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F70..1F7D    ; Ll #  [14] GREEK SMALL LETTER ALPHA WITH VARIA..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1F87    ; Ll #   [8] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F90..1F97    ; Ll #   [8] GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA0..1FA7    ; Ll #   [8] GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FB0..1FB4    ; Ll #   [5] GREEK SMALL LETTER ALPHA WITH VRACHY..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FB7    ; Ll #   [2] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FBE          ; Ll #       GREEK PROSGEGRAMMENI
+1FC2..1FC4    ; Ll #   [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FC7    ; Ll #   [2] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FD0..1FD3    ; Ll #   [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FD7    ; Ll #   [2] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FE0..1FE7    ; Ll #   [8] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FF2..1FF4    ; Ll #   [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FF7    ; Ll #   [2] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+2071          ; Ll #       SUPERSCRIPT LATIN SMALL LETTER I
+207F          ; Ll #       SUPERSCRIPT LATIN SMALL LETTER N
+210A          ; Ll #       SCRIPT SMALL G
+210E..210F    ; Ll #   [2] PLANCK CONSTANT..PLANCK CONSTANT OVER TWO PI
+2113          ; Ll #       SCRIPT SMALL L
+212F          ; Ll #       SCRIPT SMALL E
+2134          ; Ll #       SCRIPT SMALL O
+2139          ; Ll #       INFORMATION SOURCE
+213C..213D    ; Ll #   [2] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK SMALL GAMMA
+2146..2149    ; Ll #   [4] DOUBLE-STRUCK ITALIC SMALL D..DOUBLE-STRUCK ITALIC SMALL J
+214E          ; Ll #       TURNED SMALL F
+2184          ; Ll #       LATIN SMALL LETTER REVERSED C
+2C30..2C5E    ; Ll #  [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE
+2C61          ; Ll #       LATIN SMALL LETTER L WITH DOUBLE BAR
+2C65..2C66    ; Ll #   [2] LATIN SMALL LETTER A WITH STROKE..LATIN SMALL LETTER T WITH DIAGONAL STROKE
+2C68          ; Ll #       LATIN SMALL LETTER H WITH DESCENDER
+2C6A          ; Ll #       LATIN SMALL LETTER K WITH DESCENDER
+2C6C          ; Ll #       LATIN SMALL LETTER Z WITH DESCENDER
+2C74          ; Ll #       LATIN SMALL LETTER V WITH CURL
+2C76..2C77    ; Ll #   [2] LATIN SMALL LETTER HALF H..LATIN SMALL LETTER TAILLESS PHI
+2C81          ; Ll #       COPTIC SMALL LETTER ALFA
+2C83          ; Ll #       COPTIC SMALL LETTER VIDA
+2C85          ; Ll #       COPTIC SMALL LETTER GAMMA
+2C87          ; Ll #       COPTIC SMALL LETTER DALDA
+2C89          ; Ll #       COPTIC SMALL LETTER EIE
+2C8B          ; Ll #       COPTIC SMALL LETTER SOU
+2C8D          ; Ll #       COPTIC SMALL LETTER ZATA
+2C8F          ; Ll #       COPTIC SMALL LETTER HATE
+2C91          ; Ll #       COPTIC SMALL LETTER THETHE
+2C93          ; Ll #       COPTIC SMALL LETTER IAUDA
+2C95          ; Ll #       COPTIC SMALL LETTER KAPA
+2C97          ; Ll #       COPTIC SMALL LETTER LAULA
+2C99          ; Ll #       COPTIC SMALL LETTER MI
+2C9B          ; Ll #       COPTIC SMALL LETTER NI
+2C9D          ; Ll #       COPTIC SMALL LETTER KSI
+2C9F          ; Ll #       COPTIC SMALL LETTER O
+2CA1          ; Ll #       COPTIC SMALL LETTER PI
+2CA3          ; Ll #       COPTIC SMALL LETTER RO
+2CA5          ; Ll #       COPTIC SMALL LETTER SIMA
+2CA7          ; Ll #       COPTIC SMALL LETTER TAU
+2CA9          ; Ll #       COPTIC SMALL LETTER UA
+2CAB          ; Ll #       COPTIC SMALL LETTER FI
+2CAD          ; Ll #       COPTIC SMALL LETTER KHI
+2CAF          ; Ll #       COPTIC SMALL LETTER PSI
+2CB1          ; Ll #       COPTIC SMALL LETTER OOU
+2CB3          ; Ll #       COPTIC SMALL LETTER DIALECT-P ALEF
+2CB5          ; Ll #       COPTIC SMALL LETTER OLD COPTIC AIN
+2CB7          ; Ll #       COPTIC SMALL LETTER CRYPTOGRAMMIC EIE
+2CB9          ; Ll #       COPTIC SMALL LETTER DIALECT-P KAPA
+2CBB          ; Ll #       COPTIC SMALL LETTER DIALECT-P NI
+2CBD          ; Ll #       COPTIC SMALL LETTER CRYPTOGRAMMIC NI
+2CBF          ; Ll #       COPTIC SMALL LETTER OLD COPTIC OOU
+2CC1          ; Ll #       COPTIC SMALL LETTER SAMPI
+2CC3          ; Ll #       COPTIC SMALL LETTER CROSSED SHEI
+2CC5          ; Ll #       COPTIC SMALL LETTER OLD COPTIC SHEI
+2CC7          ; Ll #       COPTIC SMALL LETTER OLD COPTIC ESH
+2CC9          ; Ll #       COPTIC SMALL LETTER AKHMIMIC KHEI
+2CCB          ; Ll #       COPTIC SMALL LETTER DIALECT-P HORI
+2CCD          ; Ll #       COPTIC SMALL LETTER OLD COPTIC HORI
+2CCF          ; Ll #       COPTIC SMALL LETTER OLD COPTIC HA
+2CD1          ; Ll #       COPTIC SMALL LETTER L-SHAPED HA
+2CD3          ; Ll #       COPTIC SMALL LETTER OLD COPTIC HEI
+2CD5          ; Ll #       COPTIC SMALL LETTER OLD COPTIC HAT
+2CD7          ; Ll #       COPTIC SMALL LETTER OLD COPTIC GANGIA
+2CD9          ; Ll #       COPTIC SMALL LETTER OLD COPTIC DJA
+2CDB          ; Ll #       COPTIC SMALL LETTER OLD COPTIC SHIMA
+2CDD          ; Ll #       COPTIC SMALL LETTER OLD NUBIAN SHIMA
+2CDF          ; Ll #       COPTIC SMALL LETTER OLD NUBIAN NGI
+2CE1          ; Ll #       COPTIC SMALL LETTER OLD NUBIAN NYI
+2CE3..2CE4    ; Ll #   [2] COPTIC SMALL LETTER OLD NUBIAN WAU..COPTIC SYMBOL KAI
+2D00..2D25    ; Ll #  [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
+FB00..FB06    ; Ll #   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FB13..FB17    ; Ll #   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+FF41..FF5A    ; Ll #  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+10428..1044F  ; Ll #  [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW
+1D41A..1D433  ; Ll #  [26] MATHEMATICAL BOLD SMALL A..MATHEMATICAL BOLD SMALL Z
+1D44E..1D454  ; Ll #   [7] MATHEMATICAL ITALIC SMALL A..MATHEMATICAL ITALIC SMALL G
+1D456..1D467  ; Ll #  [18] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL ITALIC SMALL Z
+1D482..1D49B  ; Ll #  [26] MATHEMATICAL BOLD ITALIC SMALL A..MATHEMATICAL BOLD ITALIC SMALL Z
+1D4B6..1D4B9  ; Ll #   [4] MATHEMATICAL SCRIPT SMALL A..MATHEMATICAL SCRIPT SMALL D
+1D4BB         ; Ll #       MATHEMATICAL SCRIPT SMALL F
+1D4BD..1D4C3  ; Ll #   [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+1D4C5..1D4CF  ; Ll #  [11] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL SCRIPT SMALL Z
+1D4EA..1D503  ; Ll #  [26] MATHEMATICAL BOLD SCRIPT SMALL A..MATHEMATICAL BOLD SCRIPT SMALL Z
+1D51E..1D537  ; Ll #  [26] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL FRAKTUR SMALL Z
+1D552..1D56B  ; Ll #  [26] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL DOUBLE-STRUCK SMALL Z
+1D586..1D59F  ; Ll #  [26] MATHEMATICAL BOLD FRAKTUR SMALL A..MATHEMATICAL BOLD FRAKTUR SMALL Z
+1D5BA..1D5D3  ; Ll #  [26] MATHEMATICAL SANS-SERIF SMALL A..MATHEMATICAL SANS-SERIF SMALL Z
+1D5EE..1D607  ; Ll #  [26] MATHEMATICAL SANS-SERIF BOLD SMALL A..MATHEMATICAL SANS-SERIF BOLD SMALL Z
+1D622..1D63B  ; Ll #  [26] MATHEMATICAL SANS-SERIF ITALIC SMALL A..MATHEMATICAL SANS-SERIF ITALIC SMALL Z
+1D656..1D66F  ; Ll #  [26] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
+1D68A..1D6A5  ; Ll #  [28] MATHEMATICAL MONOSPACE SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+1D6C2..1D6DA  ; Ll #  [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+1D6DC..1D6E1  ; Ll #   [6] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL BOLD PI SYMBOL
+1D6FC..1D714  ; Ll #  [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+1D716..1D71B  ; Ll #   [6] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL ITALIC PI SYMBOL
+1D736..1D74E  ; Ll #  [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D750..1D755  ; Ll #   [6] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC PI SYMBOL
+1D770..1D788  ; Ll #  [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D78A..1D78F  ; Ll #   [6] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
+1D7AA..1D7C2  ; Ll #  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+1D7C4..1D7C9  ; Ll #   [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
+1D7CB         ; Ll #       MATHEMATICAL BOLD SMALL DIGAMMA
+
+# Total code points: 1634
+
+# ================================================
+
+# General_Category=Titlecase_Letter
+
+01C5          ; Lt #       LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+01C8          ; Lt #       LATIN CAPITAL LETTER L WITH SMALL LETTER J
+01CB          ; Lt #       LATIN CAPITAL LETTER N WITH SMALL LETTER J
+01F2          ; Lt #       LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+1F88..1F8F    ; Lt #   [8] GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F98..1F9F    ; Lt #   [8] GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA8..1FAF    ; Lt #   [8] GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FBC          ; Lt #       GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FCC          ; Lt #       GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FFC          ; Lt #       GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+
+# Total code points: 31
+
+# ================================================
+
+# General_Category=Modifier_Letter
+
+02B0..02C1    ; Lm #  [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP
+02C6..02D1    ; Lm #  [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
+02E0..02E4    ; Lm #   [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+02EE          ; Lm #       MODIFIER LETTER DOUBLE APOSTROPHE
+037A          ; Lm #       GREEK YPOGEGRAMMENI
+0559          ; Lm #       ARMENIAN MODIFIER LETTER LEFT HALF RING
+0640          ; Lm #       ARABIC TATWEEL
+06E5..06E6    ; Lm #   [2] ARABIC SMALL WAW..ARABIC SMALL YEH
+07F4..07F5    ; Lm #   [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
+07FA          ; Lm #       NKO LAJANYALAN
+0E46          ; Lm #       THAI CHARACTER MAIYAMOK
+0EC6          ; Lm #       LAO KO LA
+10FC          ; Lm #       MODIFIER LETTER GEORGIAN NAR
+17D7          ; Lm #       KHMER SIGN LEK TOO
+1843          ; Lm #       MONGOLIAN LETTER TODO LONG VOWEL SIGN
+1D2C..1D61    ; Lm #  [54] MODIFIER LETTER CAPITAL A..MODIFIER LETTER SMALL CHI
+1D78          ; Lm #       MODIFIER LETTER CYRILLIC EN
+1D9B..1DBF    ; Lm #  [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+2090..2094    ; Lm #   [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA
+2D6F          ; Lm #       TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+3005          ; Lm #       IDEOGRAPHIC ITERATION MARK
+3031..3035    ; Lm #   [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
+303B          ; Lm #       VERTICAL IDEOGRAPHIC ITERATION MARK
+309D..309E    ; Lm #   [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
+30FC..30FE    ; Lm #   [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK
+A015          ; Lm #       YI SYLLABLE WU
+A717..A71A    ; Lm #   [4] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOWER RIGHT CORNER ANGLE
+FF70          ; Lm #       HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF9E..FF9F    ; Lm #   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+
+# Total code points: 167
+
+# ================================================
+
+# General_Category=Other_Letter
+
+01BB          ; Lo #       LATIN LETTER TWO WITH STROKE
+01C0..01C3    ; Lo #   [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK
+0294          ; Lo #       LATIN LETTER GLOTTAL STOP
+05D0..05EA    ; Lo #  [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
+05F0..05F2    ; Lo #   [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD
+0621..063A    ; Lo #  [26] ARABIC LETTER HAMZA..ARABIC LETTER GHAIN
+0641..064A    ; Lo #  [10] ARABIC LETTER FEH..ARABIC LETTER YEH
+066E..066F    ; Lo #   [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
+0671..06D3    ; Lo #  [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+06D5          ; Lo #       ARABIC LETTER AE
+06EE..06EF    ; Lo #   [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
+06FA..06FC    ; Lo #   [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW
+06FF          ; Lo #       ARABIC LETTER HEH WITH INVERTED V
+0710          ; Lo #       SYRIAC LETTER ALAPH
+0712..072F    ; Lo #  [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH
+074D..076D    ; Lo #  [33] SYRIAC LETTER SOGDIAN ZHAIN..ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE
+0780..07A5    ; Lo #  [38] THAANA LETTER HAA..THAANA LETTER WAAVU
+07B1          ; Lo #       THAANA LETTER NAA
+07CA..07EA    ; Lo #  [33] NKO LETTER A..NKO LETTER JONA RA
+0904..0939    ; Lo #  [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
+093D          ; Lo #       DEVANAGARI SIGN AVAGRAHA
+0950          ; Lo #       DEVANAGARI OM
+0958..0961    ; Lo #  [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
+097B..097F    ; Lo #   [5] DEVANAGARI LETTER GGA..DEVANAGARI LETTER BBA
+0985..098C    ; Lo #   [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L
+098F..0990    ; Lo #   [2] BENGALI LETTER E..BENGALI LETTER AI
+0993..09A8    ; Lo #  [22] BENGALI LETTER O..BENGALI LETTER NA
+09AA..09B0    ; Lo #   [7] BENGALI LETTER PA..BENGALI LETTER RA
+09B2          ; Lo #       BENGALI LETTER LA
+09B6..09B9    ; Lo #   [4] BENGALI LETTER SHA..BENGALI LETTER HA
+09BD          ; Lo #       BENGALI SIGN AVAGRAHA
+09CE          ; Lo #       BENGALI LETTER KHANDA TA
+09DC..09DD    ; Lo #   [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF..09E1    ; Lo #   [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL
+09F0..09F1    ; Lo #   [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL
+0A05..0A0A    ; Lo #   [6] GURMUKHI LETTER A..GURMUKHI LETTER UU
+0A0F..0A10    ; Lo #   [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI
+0A13..0A28    ; Lo #  [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA
+0A2A..0A30    ; Lo #   [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA
+0A32..0A33    ; Lo #   [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA
+0A35..0A36    ; Lo #   [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA
+0A38..0A39    ; Lo #   [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA
+0A59..0A5C    ; Lo #   [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA
+0A5E          ; Lo #       GURMUKHI LETTER FA
+0A72..0A74    ; Lo #   [3] GURMUKHI IRI..GURMUKHI EK ONKAR
+0A85..0A8D    ; Lo #   [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E
+0A8F..0A91    ; Lo #   [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O
+0A93..0AA8    ; Lo #  [22] GUJARATI LETTER O..GUJARATI LETTER NA
+0AAA..0AB0    ; Lo #   [7] GUJARATI LETTER PA..GUJARATI LETTER RA
+0AB2..0AB3    ; Lo #   [2] GUJARATI LETTER LA..GUJARATI LETTER LLA
+0AB5..0AB9    ; Lo #   [5] GUJARATI LETTER VA..GUJARATI LETTER HA
+0ABD          ; Lo #       GUJARATI SIGN AVAGRAHA
+0AD0          ; Lo #       GUJARATI OM
+0AE0..0AE1    ; Lo #   [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL
+0B05..0B0C    ; Lo #   [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L
+0B0F..0B10    ; Lo #   [2] ORIYA LETTER E..ORIYA LETTER AI
+0B13..0B28    ; Lo #  [22] ORIYA LETTER O..ORIYA LETTER NA
+0B2A..0B30    ; Lo #   [7] ORIYA LETTER PA..ORIYA LETTER RA
+0B32..0B33    ; Lo #   [2] ORIYA LETTER LA..ORIYA LETTER LLA
+0B35..0B39    ; Lo #   [5] ORIYA LETTER VA..ORIYA LETTER HA
+0B3D          ; Lo #       ORIYA SIGN AVAGRAHA
+0B5C..0B5D    ; Lo #   [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B5F..0B61    ; Lo #   [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
+0B71          ; Lo #       ORIYA LETTER WA
+0B83          ; Lo #       TAMIL SIGN VISARGA
+0B85..0B8A    ; Lo #   [6] TAMIL LETTER A..TAMIL LETTER UU
+0B8E..0B90    ; Lo #   [3] TAMIL LETTER E..TAMIL LETTER AI
+0B92..0B95    ; Lo #   [4] TAMIL LETTER O..TAMIL LETTER KA
+0B99..0B9A    ; Lo #   [2] TAMIL LETTER NGA..TAMIL LETTER CA
+0B9C          ; Lo #       TAMIL LETTER JA
+0B9E..0B9F    ; Lo #   [2] TAMIL LETTER NYA..TAMIL LETTER TTA
+0BA3..0BA4    ; Lo #   [2] TAMIL LETTER NNA..TAMIL LETTER TA
+0BA8..0BAA    ; Lo #   [3] TAMIL LETTER NA..TAMIL LETTER PA
+0BAE..0BB9    ; Lo #  [12] TAMIL LETTER MA..TAMIL LETTER HA
+0C05..0C0C    ; Lo #   [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L
+0C0E..0C10    ; Lo #   [3] TELUGU LETTER E..TELUGU LETTER AI
+0C12..0C28    ; Lo #  [23] TELUGU LETTER O..TELUGU LETTER NA
+0C2A..0C33    ; Lo #  [10] TELUGU LETTER PA..TELUGU LETTER LLA
+0C35..0C39    ; Lo #   [5] TELUGU LETTER VA..TELUGU LETTER HA
+0C60..0C61    ; Lo #   [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
+0C85..0C8C    ; Lo #   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
+0C8E..0C90    ; Lo #   [3] KANNADA LETTER E..KANNADA LETTER AI
+0C92..0CA8    ; Lo #  [23] KANNADA LETTER O..KANNADA LETTER NA
+0CAA..0CB3    ; Lo #  [10] KANNADA LETTER PA..KANNADA LETTER LLA
+0CB5..0CB9    ; Lo #   [5] KANNADA LETTER VA..KANNADA LETTER HA
+0CBD          ; Lo #       KANNADA SIGN AVAGRAHA
+0CDE          ; Lo #       KANNADA LETTER FA
+0CE0..0CE1    ; Lo #   [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
+0D05..0D0C    ; Lo #   [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L
+0D0E..0D10    ; Lo #   [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
+0D12..0D28    ; Lo #  [23] MALAYALAM LETTER O..MALAYALAM LETTER NA
+0D2A..0D39    ; Lo #  [16] MALAYALAM LETTER PA..MALAYALAM LETTER HA
+0D60..0D61    ; Lo #   [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL
+0D85..0D96    ; Lo #  [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
+0D9A..0DB1    ; Lo #  [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
+0DB3..0DBB    ; Lo #   [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA
+0DBD          ; Lo #       SINHALA LETTER DANTAJA LAYANNA
+0DC0..0DC6    ; Lo #   [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA
+0E01..0E30    ; Lo #  [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A
+0E32..0E33    ; Lo #   [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM
+0E40..0E45    ; Lo #   [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO
+0E81..0E82    ; Lo #   [2] LAO LETTER KO..LAO LETTER KHO SUNG
+0E84          ; Lo #       LAO LETTER KHO TAM
+0E87..0E88    ; Lo #   [2] LAO LETTER NGO..LAO LETTER CO
+0E8A          ; Lo #       LAO LETTER SO TAM
+0E8D          ; Lo #       LAO LETTER NYO
+0E94..0E97    ; Lo #   [4] LAO LETTER DO..LAO LETTER THO TAM
+0E99..0E9F    ; Lo #   [7] LAO LETTER NO..LAO LETTER FO SUNG
+0EA1..0EA3    ; Lo #   [3] LAO LETTER MO..LAO LETTER LO LING
+0EA5          ; Lo #       LAO LETTER LO LOOT
+0EA7          ; Lo #       LAO LETTER WO
+0EAA..0EAB    ; Lo #   [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG
+0EAD..0EB0    ; Lo #   [4] LAO LETTER O..LAO VOWEL SIGN A
+0EB2..0EB3    ; Lo #   [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM
+0EBD          ; Lo #       LAO SEMIVOWEL SIGN NYO
+0EC0..0EC4    ; Lo #   [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
+0EDC..0EDD    ; Lo #   [2] LAO HO NO..LAO HO MO
+0F00          ; Lo #       TIBETAN SYLLABLE OM
+0F40..0F47    ; Lo #   [8] TIBETAN LETTER KA..TIBETAN LETTER JA
+0F49..0F6A    ; Lo #  [34] TIBETAN LETTER NYA..TIBETAN LETTER FIXED-FORM RA
+0F88..0F8B    ; Lo #   [4] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN GRU MED RGYINGS
+1000..1021    ; Lo #  [34] MYANMAR LETTER KA..MYANMAR LETTER A
+1023..1027    ; Lo #   [5] MYANMAR LETTER I..MYANMAR LETTER E
+1029..102A    ; Lo #   [2] MYANMAR LETTER O..MYANMAR LETTER AU
+1050..1055    ; Lo #   [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL
+10D0..10FA    ; Lo #  [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
+1100..1159    ; Lo #  [90] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH
+115F..11A2    ; Lo #  [68] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA
+11A8..11F9    ; Lo #  [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH
+1200..1248    ; Lo #  [73] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE QWA
+124A..124D    ; Lo #   [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
+1250..1256    ; Lo #   [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
+1258          ; Lo #       ETHIOPIC SYLLABLE QHWA
+125A..125D    ; Lo #   [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE
+1260..1288    ; Lo #  [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA
+128A..128D    ; Lo #   [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE
+1290..12B0    ; Lo #  [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA
+12B2..12B5    ; Lo #   [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE
+12B8..12BE    ; Lo #   [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO
+12C0          ; Lo #       ETHIOPIC SYLLABLE KXWA
+12C2..12C5    ; Lo #   [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE
+12C8..12D6    ; Lo #  [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O
+12D8..1310    ; Lo #  [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA
+1312..1315    ; Lo #   [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
+1318..135A    ; Lo #  [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA
+1380..138F    ; Lo #  [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE
+13A0..13F4    ; Lo #  [85] CHEROKEE LETTER A..CHEROKEE LETTER YV
+1401..166C    ; Lo # [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA
+166F..1676    ; Lo #   [8] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS NNGAA
+1681..169A    ; Lo #  [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH
+16A0..16EA    ; Lo #  [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X
+1700..170C    ; Lo #  [13] TAGALOG LETTER A..TAGALOG LETTER YA
+170E..1711    ; Lo #   [4] TAGALOG LETTER LA..TAGALOG LETTER HA
+1720..1731    ; Lo #  [18] HANUNOO LETTER A..HANUNOO LETTER HA
+1740..1751    ; Lo #  [18] BUHID LETTER A..BUHID LETTER HA
+1760..176C    ; Lo #  [13] TAGBANWA LETTER A..TAGBANWA LETTER YA
+176E..1770    ; Lo #   [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA
+1780..17B3    ; Lo #  [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU
+17DC          ; Lo #       KHMER SIGN AVAKRAHASANYA
+1820..1842    ; Lo #  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
+1844..1877    ; Lo #  [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
+1880..18A8    ; Lo #  [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+1900..191C    ; Lo #  [29] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER HA
+1950..196D    ; Lo #  [30] TAI LE LETTER KA..TAI LE LETTER AI
+1970..1974    ; Lo #   [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6
+1980..19A9    ; Lo #  [42] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW XVA
+19C1..19C7    ; Lo #   [7] NEW TAI LUE LETTER FINAL V..NEW TAI LUE LETTER FINAL B
+1A00..1A16    ; Lo #  [23] BUGINESE LETTER KA..BUGINESE LETTER HA
+1B05..1B33    ; Lo #  [47] BALINESE LETTER AKARA..BALINESE LETTER HA
+1B45..1B4B    ; Lo #   [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK
+2135..2138    ; Lo #   [4] ALEF SYMBOL..DALET SYMBOL
+2D30..2D65    ; Lo #  [54] TIFINAGH LETTER YA..TIFINAGH LETTER YAZZ
+2D80..2D96    ; Lo #  [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE
+2DA0..2DA6    ; Lo #   [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO
+2DA8..2DAE    ; Lo #   [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO
+2DB0..2DB6    ; Lo #   [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO
+2DB8..2DBE    ; Lo #   [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO
+2DC0..2DC6    ; Lo #   [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO
+2DC8..2DCE    ; Lo #   [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
+2DD0..2DD6    ; Lo #   [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
+2DD8..2DDE    ; Lo #   [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
+3006          ; Lo #       IDEOGRAPHIC CLOSING MARK
+303C          ; Lo #       MASU MARK
+3041..3096    ; Lo #  [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE
+309F          ; Lo #       HIRAGANA DIGRAPH YORI
+30A1..30FA    ; Lo #  [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO
+30FF          ; Lo #       KATAKANA DIGRAPH KOTO
+3105..312C    ; Lo #  [40] BOPOMOFO LETTER B..BOPOMOFO LETTER GN
+3131..318E    ; Lo #  [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+31A0..31B7    ; Lo #  [24] BOPOMOFO LETTER BU..BOPOMOFO FINAL LETTER H
+31F0..31FF    ; Lo #  [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
+3400..4DB5    ; Lo # [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
+4E00..9FBB    ; Lo # [20924] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FBB
+A000..A014    ; Lo #  [21] YI SYLLABLE IT..YI SYLLABLE E
+A016..A48C    ; Lo # [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
+A800..A801    ; Lo #   [2] SYLOTI NAGRI LETTER A..SYLOTI NAGRI LETTER I
+A803..A805    ; Lo #   [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O
+A807..A80A    ; Lo #   [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO
+A80C..A822    ; Lo #  [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO
+A840..A873    ; Lo #  [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU
+AC00..D7A3    ; Lo # [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+F900..FA2D    ; Lo # [302] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A    ; Lo #  [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9    ; Lo # [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB1D          ; Lo #       HEBREW LETTER YOD WITH HIRIQ
+FB1F..FB28    ; Lo #  [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+FB2A..FB36    ; Lo #  [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C    ; Lo #   [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E          ; Lo #       HEBREW LETTER MEM WITH DAGESH
+FB40..FB41    ; Lo #   [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44    ; Lo #   [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FBB1    ; Lo # [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3..FD3D    ; Lo # [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50..FD8F    ; Lo #  [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7    ; Lo #  [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB    ; Lo #  [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FE70..FE74    ; Lo #   [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM
+FE76..FEFC    ; Lo # [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FF66..FF6F    ; Lo #  [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+FF71..FF9D    ; Lo #  [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+FFA0..FFBE    ; Lo #  [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+FFC2..FFC7    ; Lo #   [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+FFCA..FFCF    ; Lo #   [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+FFD2..FFD7    ; Lo #   [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+FFDA..FFDC    ; Lo #   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+10000..1000B  ; Lo #  [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE
+1000D..10026  ; Lo #  [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO
+10028..1003A  ; Lo #  [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO
+1003C..1003D  ; Lo #   [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE
+1003F..1004D  ; Lo #  [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO
+10050..1005D  ; Lo #  [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089
+10080..100FA  ; Lo # [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305
+10300..1031E  ; Lo #  [31] OLD ITALIC LETTER A..OLD ITALIC LETTER UU
+10330..10340  ; Lo #  [17] GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA
+10342..10349  ; Lo #   [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL
+10380..1039D  ; Lo #  [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU
+103A0..103C3  ; Lo #  [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA
+103C8..103CF  ; Lo #   [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH
+10450..1049D  ; Lo #  [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
+10800..10805  ; Lo #   [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA
+10808         ; Lo #       CYPRIOT SYLLABLE JO
+1080A..10835  ; Lo #  [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO
+10837..10838  ; Lo #   [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE
+1083C         ; Lo #       CYPRIOT SYLLABLE ZA
+1083F         ; Lo #       CYPRIOT SYLLABLE ZO
+10900..10915  ; Lo #  [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU
+10A00         ; Lo #       KHAROSHTHI LETTER A
+10A10..10A13  ; Lo #   [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA
+10A15..10A17  ; Lo #   [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
+10A19..10A33  ; Lo #  [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA
+12000..1236E  ; Lo # [879] CUNEIFORM SIGN A..CUNEIFORM SIGN ZUM
+20000..2A6D6  ; Lo # [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
+2F800..2FA1D  ; Lo # [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 89344
+
+# ================================================
+
+# General_Category=Nonspacing_Mark
+
+0300..036F    ; Mn # [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
+0483..0486    ; Mn #   [4] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC PSILI PNEUMATA
+0591..05BD    ; Mn #  [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG
+05BF          ; Mn #       HEBREW POINT RAFE
+05C1..05C2    ; Mn #   [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
+05C4..05C5    ; Mn #   [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
+05C7          ; Mn #       HEBREW POINT QAMATS QATAN
+0610..0615    ; Mn #   [6] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL HIGH TAH
+064B..065E    ; Mn #  [20] ARABIC FATHATAN..ARABIC FATHA WITH TWO DOTS
+0670          ; Mn #       ARABIC LETTER SUPERSCRIPT ALEF
+06D6..06DC    ; Mn #   [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
+06DF..06E4    ; Mn #   [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA
+06E7..06E8    ; Mn #   [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
+06EA..06ED    ; Mn #   [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
+0711          ; Mn #       SYRIAC LETTER SUPERSCRIPT ALAPH
+0730..074A    ; Mn #  [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
+07A6..07B0    ; Mn #  [11] THAANA ABAFILI..THAANA SUKUN
+07EB..07F3    ; Mn #   [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
+0901..0902    ; Mn #   [2] DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN ANUSVARA
+093C          ; Mn #       DEVANAGARI SIGN NUKTA
+0941..0948    ; Mn #   [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
+094D          ; Mn #       DEVANAGARI SIGN VIRAMA
+0951..0954    ; Mn #   [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT
+0962..0963    ; Mn #   [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
+0981          ; Mn #       BENGALI SIGN CANDRABINDU
+09BC          ; Mn #       BENGALI SIGN NUKTA
+09C1..09C4    ; Mn #   [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
+09CD          ; Mn #       BENGALI SIGN VIRAMA
+09E2..09E3    ; Mn #   [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
+0A01..0A02    ; Mn #   [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
+0A3C          ; Mn #       GURMUKHI SIGN NUKTA
+0A41..0A42    ; Mn #   [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
+0A47..0A48    ; Mn #   [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
+0A4B..0A4D    ; Mn #   [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
+0A70..0A71    ; Mn #   [2] GURMUKHI TIPPI..GURMUKHI ADDAK
+0A81..0A82    ; Mn #   [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
+0ABC          ; Mn #       GUJARATI SIGN NUKTA
+0AC1..0AC5    ; Mn #   [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
+0AC7..0AC8    ; Mn #   [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
+0ACD          ; Mn #       GUJARATI SIGN VIRAMA
+0AE2..0AE3    ; Mn #   [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
+0B01          ; Mn #       ORIYA SIGN CANDRABINDU
+0B3C          ; Mn #       ORIYA SIGN NUKTA
+0B3F          ; Mn #       ORIYA VOWEL SIGN I
+0B41..0B43    ; Mn #   [3] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC R
+0B4D          ; Mn #       ORIYA SIGN VIRAMA
+0B56          ; Mn #       ORIYA AI LENGTH MARK
+0B82          ; Mn #       TAMIL SIGN ANUSVARA
+0BC0          ; Mn #       TAMIL VOWEL SIGN II
+0BCD          ; Mn #       TAMIL SIGN VIRAMA
+0C3E..0C40    ; Mn #   [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
+0C46..0C48    ; Mn #   [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
+0C4A..0C4D    ; Mn #   [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
+0C55..0C56    ; Mn #   [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
+0CBC          ; Mn #       KANNADA SIGN NUKTA
+0CBF          ; Mn #       KANNADA VOWEL SIGN I
+0CC6          ; Mn #       KANNADA VOWEL SIGN E
+0CCC..0CCD    ; Mn #   [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
+0CE2..0CE3    ; Mn #   [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
+0D41..0D43    ; Mn #   [3] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC R
+0D4D          ; Mn #       MALAYALAM SIGN VIRAMA
+0DCA          ; Mn #       SINHALA SIGN AL-LAKUNA
+0DD2..0DD4    ; Mn #   [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
+0DD6          ; Mn #       SINHALA VOWEL SIGN DIGA PAA-PILLA
+0E31          ; Mn #       THAI CHARACTER MAI HAN-AKAT
+0E34..0E3A    ; Mn #   [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
+0E47..0E4E    ; Mn #   [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
+0EB1          ; Mn #       LAO VOWEL SIGN MAI KAN
+0EB4..0EB9    ; Mn #   [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU
+0EBB..0EBC    ; Mn #   [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO
+0EC8..0ECD    ; Mn #   [6] LAO TONE MAI EK..LAO NIGGAHITA
+0F18..0F19    ; Mn #   [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+0F35          ; Mn #       TIBETAN MARK NGAS BZUNG NYI ZLA
+0F37          ; Mn #       TIBETAN MARK NGAS BZUNG SGOR RTAGS
+0F39          ; Mn #       TIBETAN MARK TSA -PHRU
+0F71..0F7E    ; Mn #  [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
+0F80..0F84    ; Mn #   [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
+0F86..0F87    ; Mn #   [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
+0F90..0F97    ; Mn #   [8] TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER JA
+0F99..0FBC    ; Mn #  [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
+0FC6          ; Mn #       TIBETAN SYMBOL PADMA GDAN
+102D..1030    ; Mn #   [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
+1032          ; Mn #       MYANMAR VOWEL SIGN AI
+1036..1037    ; Mn #   [2] MYANMAR SIGN ANUSVARA..MYANMAR SIGN DOT BELOW
+1039          ; Mn #       MYANMAR SIGN VIRAMA
+1058..1059    ; Mn #   [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
+135F          ; Mn #       ETHIOPIC COMBINING GEMINATION MARK
+1712..1714    ; Mn #   [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
+1732..1734    ; Mn #   [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD
+1752..1753    ; Mn #   [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
+1772..1773    ; Mn #   [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
+17B7..17BD    ; Mn #   [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
+17C6          ; Mn #       KHMER SIGN NIKAHIT
+17C9..17D3    ; Mn #  [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
+17DD          ; Mn #       KHMER SIGN ATTHACAN
+180B..180D    ; Mn #   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+18A9          ; Mn #       MONGOLIAN LETTER ALI GALI DAGALGA
+1920..1922    ; Mn #   [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
+1927..1928    ; Mn #   [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
+1932          ; Mn #       LIMBU SMALL LETTER ANUSVARA
+1939..193B    ; Mn #   [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
+1A17..1A18    ; Mn #   [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
+1B00..1B03    ; Mn #   [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
+1B34          ; Mn #       BALINESE SIGN REREKAN
+1B36..1B3A    ; Mn #   [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
+1B3C          ; Mn #       BALINESE VOWEL SIGN LA LENGA
+1B42          ; Mn #       BALINESE VOWEL SIGN PEPET
+1B6B..1B73    ; Mn #   [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
+1DC0..1DCA    ; Mn #  [11] COMBINING DOTTED GRAVE ACCENT..COMBINING LATIN SMALL LETTER R BELOW
+1DFE..1DFF    ; Mn #   [2] COMBINING LEFT ARROWHEAD ABOVE..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+20D0..20DC    ; Mn #  [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
+20E1          ; Mn #       COMBINING LEFT RIGHT ARROW ABOVE
+20E5..20EF    ; Mn #  [11] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING RIGHT ARROW BELOW
+302A..302F    ; Mn #   [6] IDEOGRAPHIC LEVEL TONE MARK..HANGUL DOUBLE DOT TONE MARK
+3099..309A    ; Mn #   [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+A806          ; Mn #       SYLOTI NAGRI SIGN HASANTA
+A80B          ; Mn #       SYLOTI NAGRI SIGN ANUSVARA
+A825..A826    ; Mn #   [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
+FB1E          ; Mn #       HEBREW POINT JUDEO-SPANISH VARIKA
+FE00..FE0F    ; Mn #  [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+FE20..FE23    ; Mn #   [4] COMBINING LIGATURE LEFT HALF..COMBINING DOUBLE TILDE RIGHT HALF
+10A01..10A03  ; Mn #   [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
+10A05..10A06  ; Mn #   [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
+10A0C..10A0F  ; Mn #   [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
+10A38..10A3A  ; Mn #   [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
+10A3F         ; Mn #       KHAROSHTHI VIRAMA
+1D167..1D169  ; Mn #   [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
+1D17B..1D182  ; Mn #   [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
+1D185..1D18B  ; Mn #   [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
+1D1AA..1D1AD  ; Mn #   [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
+1D242..1D244  ; Mn #   [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
+E0100..E01EF  ; Mn # [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+
+# Total code points: 880
+
+# ================================================
+
+# General_Category=Enclosing_Mark
+
+0488..0489    ; Me #   [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
+06DE          ; Me #       ARABIC START OF RUB EL HIZB
+20DD..20E0    ; Me #   [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
+20E2..20E4    ; Me #   [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
+
+# Total code points: 10
+
+# ================================================
+
+# General_Category=Spacing_Mark
+
+0903          ; Mc #       DEVANAGARI SIGN VISARGA
+093E..0940    ; Mc #   [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
+0949..094C    ; Mc #   [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
+0982..0983    ; Mc #   [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
+09BE..09C0    ; Mc #   [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II
+09C7..09C8    ; Mc #   [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
+09CB..09CC    ; Mc #   [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09D7          ; Mc #       BENGALI AU LENGTH MARK
+0A03          ; Mc #       GURMUKHI SIGN VISARGA
+0A3E..0A40    ; Mc #   [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
+0A83          ; Mc #       GUJARATI SIGN VISARGA
+0ABE..0AC0    ; Mc #   [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
+0AC9          ; Mc #       GUJARATI VOWEL SIGN CANDRA O
+0ACB..0ACC    ; Mc #   [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
+0B02..0B03    ; Mc #   [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
+0B3E          ; Mc #       ORIYA VOWEL SIGN AA
+0B40          ; Mc #       ORIYA VOWEL SIGN II
+0B47..0B48    ; Mc #   [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
+0B4B..0B4C    ; Mc #   [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0B57          ; Mc #       ORIYA AU LENGTH MARK
+0BBE..0BBF    ; Mc #   [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I
+0BC1..0BC2    ; Mc #   [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
+0BC6..0BC8    ; Mc #   [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
+0BCA..0BCC    ; Mc #   [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0BD7          ; Mc #       TAMIL AU LENGTH MARK
+0C01..0C03    ; Mc #   [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
+0C41..0C44    ; Mc #   [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
+0C82..0C83    ; Mc #   [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
+0CBE          ; Mc #       KANNADA VOWEL SIGN AA
+0CC0..0CC4    ; Mc #   [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR
+0CC7..0CC8    ; Mc #   [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB    ; Mc #   [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0CD5..0CD6    ; Mc #   [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+0D02..0D03    ; Mc #   [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
+0D3E..0D40    ; Mc #   [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II
+0D46..0D48    ; Mc #   [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
+0D4A..0D4C    ; Mc #   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0D57          ; Mc #       MALAYALAM AU LENGTH MARK
+0D82..0D83    ; Mc #   [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
+0DCF..0DD1    ; Mc #   [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
+0DD8..0DDF    ; Mc #   [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA
+0DF2..0DF3    ; Mc #   [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
+0F3E..0F3F    ; Mc #   [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES
+0F7F          ; Mc #       TIBETAN SIGN RNAM BCAD
+102C          ; Mc #       MYANMAR VOWEL SIGN AA
+1031          ; Mc #       MYANMAR VOWEL SIGN E
+1038          ; Mc #       MYANMAR SIGN VISARGA
+1056..1057    ; Mc #   [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
+17B6          ; Mc #       KHMER VOWEL SIGN AA
+17BE..17C5    ; Mc #   [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
+17C7..17C8    ; Mc #   [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
+1923..1926    ; Mc #   [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
+1929..192B    ; Mc #   [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
+1930..1931    ; Mc #   [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
+1933..1938    ; Mc #   [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
+19B0..19C0    ; Mc #  [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY
+19C8..19C9    ; Mc #   [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2
+1A19..1A1B    ; Mc #   [3] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN AE
+1B04          ; Mc #       BALINESE SIGN BISAH
+1B35          ; Mc #       BALINESE VOWEL SIGN TEDUNG
+1B3B          ; Mc #       BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D..1B41    ; Mc #   [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43..1B44    ; Mc #   [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
+A802          ; Mc #       SYLOTI NAGRI SIGN DVISVARA
+A823..A824    ; Mc #   [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
+A827          ; Mc #       SYLOTI NAGRI VOWEL SIGN OO
+1D165..1D166  ; Mc #   [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
+1D16D..1D172  ; Mc #   [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5
+
+# Total code points: 175
+
+# ================================================
+
+# General_Category=Decimal_Number
+
+0030..0039    ; Nd #  [10] DIGIT ZERO..DIGIT NINE
+0660..0669    ; Nd #  [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
+06F0..06F9    ; Nd #  [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE
+07C0..07C9    ; Nd #  [10] NKO DIGIT ZERO..NKO DIGIT NINE
+0966..096F    ; Nd #  [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
+09E6..09EF    ; Nd #  [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE
+0A66..0A6F    ; Nd #  [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE
+0AE6..0AEF    ; Nd #  [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
+0B66..0B6F    ; Nd #  [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE
+0BE6..0BEF    ; Nd #  [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE
+0C66..0C6F    ; Nd #  [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
+0CE6..0CEF    ; Nd #  [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
+0D66..0D6F    ; Nd #  [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
+0E50..0E59    ; Nd #  [10] THAI DIGIT ZERO..THAI DIGIT NINE
+0ED0..0ED9    ; Nd #  [10] LAO DIGIT ZERO..LAO DIGIT NINE
+0F20..0F29    ; Nd #  [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE
+1040..1049    ; Nd #  [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
+17E0..17E9    ; Nd #  [10] KHMER DIGIT ZERO..KHMER DIGIT NINE
+1810..1819    ; Nd #  [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
+1946..194F    ; Nd #  [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE
+19D0..19D9    ; Nd #  [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
+1B50..1B59    ; Nd #  [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
+FF10..FF19    ; Nd #  [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
+104A0..104A9  ; Nd #  [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+1D7CE..1D7FF  ; Nd #  [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+
+# Total code points: 290
+
+# ================================================
+
+# General_Category=Letter_Number
+
+16EE..16F0    ; Nl #   [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
+2160..2182    ; Nl #  [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND
+3007          ; Nl #       IDEOGRAPHIC NUMBER ZERO
+3021..3029    ; Nl #   [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
+3038..303A    ; Nl #   [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+10140..10174  ; Nl #  [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS
+10341         ; Nl #       GOTHIC LETTER NINETY
+1034A         ; Nl #       GOTHIC LETTER NINE HUNDRED
+103D1..103D5  ; Nl #   [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
+12400..12462  ; Nl #  [99] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER
+
+# Total code points: 210
+
+# ================================================
+
+# General_Category=Other_Number
+
+00B2..00B3    ; No #   [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE
+00B9          ; No #       SUPERSCRIPT ONE
+00BC..00BE    ; No #   [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+09F4..09F9    ; No #   [6] BENGALI CURRENCY NUMERATOR ONE..BENGALI CURRENCY DENOMINATOR SIXTEEN
+0BF0..0BF2    ; No #   [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND
+0F2A..0F33    ; No #  [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO
+1369..137C    ; No #  [20] ETHIOPIC DIGIT ONE..ETHIOPIC NUMBER TEN THOUSAND
+17F0..17F9    ; No #  [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON
+2070          ; No #       SUPERSCRIPT ZERO
+2074..2079    ; No #   [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE
+2080..2089    ; No #  [10] SUBSCRIPT ZERO..SUBSCRIPT NINE
+2153..215F    ; No #  [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE
+2460..249B    ; No #  [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
+24EA..24FF    ; No #  [22] CIRCLED DIGIT ZERO..NEGATIVE CIRCLED DIGIT ZERO
+2776..2793    ; No #  [30] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
+2CFD          ; No #       COPTIC FRACTION ONE HALF
+3192..3195    ; No #   [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
+3220..3229    ; No #  [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+3251..325F    ; No #  [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+3280..3289    ; No #  [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
+32B1..32BF    ; No #  [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+10107..10133  ; No #  [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND
+10175..10178  ; No #   [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN
+1018A         ; No #       GREEK ZERO SIGN
+10320..10323  ; No #   [4] OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY
+10916..10919  ; No #   [4] PHOENICIAN NUMBER ONE..PHOENICIAN NUMBER ONE HUNDRED
+10A40..10A47  ; No #   [8] KHAROSHTHI DIGIT ONE..KHAROSHTHI NUMBER ONE THOUSAND
+1D360..1D371  ; No #  [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE
+
+# Total code points: 336
+
+# ================================================
+
+# General_Category=Space_Separator
+
+0020          ; Zs #       SPACE
+00A0          ; Zs #       NO-BREAK SPACE
+1680          ; Zs #       OGHAM SPACE MARK
+180E          ; Zs #       MONGOLIAN VOWEL SEPARATOR
+2000..200A    ; Zs #  [11] EN QUAD..HAIR SPACE
+202F          ; Zs #       NARROW NO-BREAK SPACE
+205F          ; Zs #       MEDIUM MATHEMATICAL SPACE
+3000          ; Zs #       IDEOGRAPHIC SPACE
+
+# Total code points: 18
+
+# ================================================
+
+# General_Category=Line_Separator
+
+2028          ; Zl #       LINE SEPARATOR
+
+# Total code points: 1
+
+# ================================================
+
+# General_Category=Paragraph_Separator
+
+2029          ; Zp #       PARAGRAPH SEPARATOR
+
+# Total code points: 1
+
+# ================================================
+
+# General_Category=Control
+
+0000..001F    ; Cc #  [32] <control-0000>..<control-001F>
+007F..009F    ; Cc #  [33] <control-007F>..<control-009F>
+
+# Total code points: 65
+
+# ================================================
+
+# General_Category=Format
+
+00AD          ; Cf #       SOFT HYPHEN
+0600..0603    ; Cf #   [4] ARABIC NUMBER SIGN..ARABIC SIGN SAFHA
+06DD          ; Cf #       ARABIC END OF AYAH
+070F          ; Cf #       SYRIAC ABBREVIATION MARK
+17B4..17B5    ; Cf #   [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+200B..200F    ; Cf #   [5] ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK
+202A..202E    ; Cf #   [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
+2060..2063    ; Cf #   [4] WORD JOINER..INVISIBLE SEPARATOR
+206A..206F    ; Cf #   [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES
+FEFF          ; Cf #       ZERO WIDTH NO-BREAK SPACE
+FFF9..FFFB    ; Cf #   [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
+1D173..1D17A  ; Cf #   [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
+E0001         ; Cf #       LANGUAGE TAG
+E0020..E007F  ; Cf #  [96] TAG SPACE..CANCEL TAG
+
+# Total code points: 138
+
+# ================================================
+
+# General_Category=Private_Use
+
+E000..F8FF    ; Co # [6400] <private-use-E000>..<private-use-F8FF>
+F0000..FFFFD  ; Co # [65534] <private-use-F0000>..<private-use-FFFFD>
+100000..10FFFD; Co # [65534] <private-use-100000>..<private-use-10FFFD>
+
+# Total code points: 137468
+
+# ================================================
+
+# General_Category=Surrogate
+
+D800..DFFF    ; Cs # [2048] <surrogate-D800>..<surrogate-DFFF>
+
+# Total code points: 2048
+
+# ================================================
+
+# General_Category=Dash_Punctuation
+
+002D          ; Pd #       HYPHEN-MINUS
+058A          ; Pd #       ARMENIAN HYPHEN
+1806          ; Pd #       MONGOLIAN TODO SOFT HYPHEN
+2010..2015    ; Pd #   [6] HYPHEN..HORIZONTAL BAR
+2E17          ; Pd #       DOUBLE OBLIQUE HYPHEN
+301C          ; Pd #       WAVE DASH
+3030          ; Pd #       WAVY DASH
+30A0          ; Pd #       KATAKANA-HIRAGANA DOUBLE HYPHEN
+FE31..FE32    ; Pd #   [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
+FE58          ; Pd #       SMALL EM DASH
+FE63          ; Pd #       SMALL HYPHEN-MINUS
+FF0D          ; Pd #       FULLWIDTH HYPHEN-MINUS
+
+# Total code points: 18
+
+# ================================================
+
+# General_Category=Open_Punctuation
+
+0028          ; Ps #       LEFT PARENTHESIS
+005B          ; Ps #       LEFT SQUARE BRACKET
+007B          ; Ps #       LEFT CURLY BRACKET
+0F3A          ; Ps #       TIBETAN MARK GUG RTAGS GYON
+0F3C          ; Ps #       TIBETAN MARK ANG KHANG GYON
+169B          ; Ps #       OGHAM FEATHER MARK
+201A          ; Ps #       SINGLE LOW-9 QUOTATION MARK
+201E          ; Ps #       DOUBLE LOW-9 QUOTATION MARK
+2045          ; Ps #       LEFT SQUARE BRACKET WITH QUILL
+207D          ; Ps #       SUPERSCRIPT LEFT PARENTHESIS
+208D          ; Ps #       SUBSCRIPT LEFT PARENTHESIS
+2329          ; Ps #       LEFT-POINTING ANGLE BRACKET
+2768          ; Ps #       MEDIUM LEFT PARENTHESIS ORNAMENT
+276A          ; Ps #       MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
+276C          ; Ps #       MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
+276E          ; Ps #       HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
+2770          ; Ps #       HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
+2772          ; Ps #       LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
+2774          ; Ps #       MEDIUM LEFT CURLY BRACKET ORNAMENT
+27C5          ; Ps #       LEFT S-SHAPED BAG DELIMITER
+27E6          ; Ps #       MATHEMATICAL LEFT WHITE SQUARE BRACKET
+27E8          ; Ps #       MATHEMATICAL LEFT ANGLE BRACKET
+27EA          ; Ps #       MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
+2983          ; Ps #       LEFT WHITE CURLY BRACKET
+2985          ; Ps #       LEFT WHITE PARENTHESIS
+2987          ; Ps #       Z NOTATION LEFT IMAGE BRACKET
+2989          ; Ps #       Z NOTATION LEFT BINDING BRACKET
+298B          ; Ps #       LEFT SQUARE BRACKET WITH UNDERBAR
+298D          ; Ps #       LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
+298F          ; Ps #       LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+2991          ; Ps #       LEFT ANGLE BRACKET WITH DOT
+2993          ; Ps #       LEFT ARC LESS-THAN BRACKET
+2995          ; Ps #       DOUBLE LEFT ARC GREATER-THAN BRACKET
+2997          ; Ps #       LEFT BLACK TORTOISE SHELL BRACKET
+29D8          ; Ps #       LEFT WIGGLY FENCE
+29DA          ; Ps #       LEFT DOUBLE WIGGLY FENCE
+29FC          ; Ps #       LEFT-POINTING CURVED ANGLE BRACKET
+3008          ; Ps #       LEFT ANGLE BRACKET
+300A          ; Ps #       LEFT DOUBLE ANGLE BRACKET
+300C          ; Ps #       LEFT CORNER BRACKET
+300E          ; Ps #       LEFT WHITE CORNER BRACKET
+3010          ; Ps #       LEFT BLACK LENTICULAR BRACKET
+3014          ; Ps #       LEFT TORTOISE SHELL BRACKET
+3016          ; Ps #       LEFT WHITE LENTICULAR BRACKET
+3018          ; Ps #       LEFT WHITE TORTOISE SHELL BRACKET
+301A          ; Ps #       LEFT WHITE SQUARE BRACKET
+301D          ; Ps #       REVERSED DOUBLE PRIME QUOTATION MARK
+FD3E          ; Ps #       ORNATE LEFT PARENTHESIS
+FE17          ; Ps #       PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+FE35          ; Ps #       PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+FE37          ; Ps #       PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+FE39          ; Ps #       PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+FE3B          ; Ps #       PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+FE3D          ; Ps #       PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+FE3F          ; Ps #       PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+FE41          ; Ps #       PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+FE43          ; Ps #       PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+FE47          ; Ps #       PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+FE59          ; Ps #       SMALL LEFT PARENTHESIS
+FE5B          ; Ps #       SMALL LEFT CURLY BRACKET
+FE5D          ; Ps #       SMALL LEFT TORTOISE SHELL BRACKET
+FF08          ; Ps #       FULLWIDTH LEFT PARENTHESIS
+FF3B          ; Ps #       FULLWIDTH LEFT SQUARE BRACKET
+FF5B          ; Ps #       FULLWIDTH LEFT CURLY BRACKET
+FF5F          ; Ps #       FULLWIDTH LEFT WHITE PARENTHESIS
+FF62          ; Ps #       HALFWIDTH LEFT CORNER BRACKET
+
+# Total code points: 66
+
+# ================================================
+
+# General_Category=Close_Punctuation
+
+0029          ; Pe #       RIGHT PARENTHESIS
+005D          ; Pe #       RIGHT SQUARE BRACKET
+007D          ; Pe #       RIGHT CURLY BRACKET
+0F3B          ; Pe #       TIBETAN MARK GUG RTAGS GYAS
+0F3D          ; Pe #       TIBETAN MARK ANG KHANG GYAS
+169C          ; Pe #       OGHAM REVERSED FEATHER MARK
+2046          ; Pe #       RIGHT SQUARE BRACKET WITH QUILL
+207E          ; Pe #       SUPERSCRIPT RIGHT PARENTHESIS
+208E          ; Pe #       SUBSCRIPT RIGHT PARENTHESIS
+232A          ; Pe #       RIGHT-POINTING ANGLE BRACKET
+2769          ; Pe #       MEDIUM RIGHT PARENTHESIS ORNAMENT
+276B          ; Pe #       MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
+276D          ; Pe #       MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
+276F          ; Pe #       HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
+2771          ; Pe #       HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
+2773          ; Pe #       LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
+2775          ; Pe #       MEDIUM RIGHT CURLY BRACKET ORNAMENT
+27C6          ; Pe #       RIGHT S-SHAPED BAG DELIMITER
+27E7          ; Pe #       MATHEMATICAL RIGHT WHITE SQUARE BRACKET
+27E9          ; Pe #       MATHEMATICAL RIGHT ANGLE BRACKET
+27EB          ; Pe #       MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
+2984          ; Pe #       RIGHT WHITE CURLY BRACKET
+2986          ; Pe #       RIGHT WHITE PARENTHESIS
+2988          ; Pe #       Z NOTATION RIGHT IMAGE BRACKET
+298A          ; Pe #       Z NOTATION RIGHT BINDING BRACKET
+298C          ; Pe #       RIGHT SQUARE BRACKET WITH UNDERBAR
+298E          ; Pe #       RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+2990          ; Pe #       RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
+2992          ; Pe #       RIGHT ANGLE BRACKET WITH DOT
+2994          ; Pe #       RIGHT ARC GREATER-THAN BRACKET
+2996          ; Pe #       DOUBLE RIGHT ARC LESS-THAN BRACKET
+2998          ; Pe #       RIGHT BLACK TORTOISE SHELL BRACKET
+29D9          ; Pe #       RIGHT WIGGLY FENCE
+29DB          ; Pe #       RIGHT DOUBLE WIGGLY FENCE
+29FD          ; Pe #       RIGHT-POINTING CURVED ANGLE BRACKET
+3009          ; Pe #       RIGHT ANGLE BRACKET
+300B          ; Pe #       RIGHT DOUBLE ANGLE BRACKET
+300D          ; Pe #       RIGHT CORNER BRACKET
+300F          ; Pe #       RIGHT WHITE CORNER BRACKET
+3011          ; Pe #       RIGHT BLACK LENTICULAR BRACKET
+3015          ; Pe #       RIGHT TORTOISE SHELL BRACKET
+3017          ; Pe #       RIGHT WHITE LENTICULAR BRACKET
+3019          ; Pe #       RIGHT WHITE TORTOISE SHELL BRACKET
+301B          ; Pe #       RIGHT WHITE SQUARE BRACKET
+301E..301F    ; Pe #   [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK
+FD3F          ; Pe #       ORNATE RIGHT PARENTHESIS
+FE18          ; Pe #       PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+FE36          ; Pe #       PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+FE38          ; Pe #       PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+FE3A          ; Pe #       PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+FE3C          ; Pe #       PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+FE3E          ; Pe #       PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+FE40          ; Pe #       PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+FE42          ; Pe #       PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+FE44          ; Pe #       PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+FE48          ; Pe #       PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+FE5A          ; Pe #       SMALL RIGHT PARENTHESIS
+FE5C          ; Pe #       SMALL RIGHT CURLY BRACKET
+FE5E          ; Pe #       SMALL RIGHT TORTOISE SHELL BRACKET
+FF09          ; Pe #       FULLWIDTH RIGHT PARENTHESIS
+FF3D          ; Pe #       FULLWIDTH RIGHT SQUARE BRACKET
+FF5D          ; Pe #       FULLWIDTH RIGHT CURLY BRACKET
+FF60          ; Pe #       FULLWIDTH RIGHT WHITE PARENTHESIS
+FF63          ; Pe #       HALFWIDTH RIGHT CORNER BRACKET
+
+# Total code points: 65
+
+# ================================================
+
+# General_Category=Connector_Punctuation
+
+005F          ; Pc #       LOW LINE
+203F..2040    ; Pc #   [2] UNDERTIE..CHARACTER TIE
+2054          ; Pc #       INVERTED UNDERTIE
+FE33..FE34    ; Pc #   [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE4D..FE4F    ; Pc #   [3] DASHED LOW LINE..WAVY LOW LINE
+FF3F          ; Pc #       FULLWIDTH LOW LINE
+
+# Total code points: 10
+
+# ================================================
+
+# General_Category=Other_Punctuation
+
+0021..0023    ; Po #   [3] EXCLAMATION MARK..NUMBER SIGN
+0025..0027    ; Po #   [3] PERCENT SIGN..APOSTROPHE
+002A          ; Po #       ASTERISK
+002C          ; Po #       COMMA
+002E..002F    ; Po #   [2] FULL STOP..SOLIDUS
+003A..003B    ; Po #   [2] COLON..SEMICOLON
+003F..0040    ; Po #   [2] QUESTION MARK..COMMERCIAL AT
+005C          ; Po #       REVERSE SOLIDUS
+00A1          ; Po #       INVERTED EXCLAMATION MARK
+00B7          ; Po #       MIDDLE DOT
+00BF          ; Po #       INVERTED QUESTION MARK
+037E          ; Po #       GREEK QUESTION MARK
+0387          ; Po #       GREEK ANO TELEIA
+055A..055F    ; Po #   [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK
+0589          ; Po #       ARMENIAN FULL STOP
+05BE          ; Po #       HEBREW PUNCTUATION MAQAF
+05C0          ; Po #       HEBREW PUNCTUATION PASEQ
+05C3          ; Po #       HEBREW PUNCTUATION SOF PASUQ
+05C6          ; Po #       HEBREW PUNCTUATION NUN HAFUKHA
+05F3..05F4    ; Po #   [2] HEBREW PUNCTUATION GERESH..HEBREW PUNCTUATION GERSHAYIM
+060C..060D    ; Po #   [2] ARABIC COMMA..ARABIC DATE SEPARATOR
+061B          ; Po #       ARABIC SEMICOLON
+061E..061F    ; Po #   [2] ARABIC TRIPLE DOT PUNCTUATION MARK..ARABIC QUESTION MARK
+066A..066D    ; Po #   [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR
+06D4          ; Po #       ARABIC FULL STOP
+0700..070D    ; Po #  [14] SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS
+07F7..07F9    ; Po #   [3] NKO SYMBOL GBAKURUNEN..NKO EXCLAMATION MARK
+0964..0965    ; Po #   [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
+0970          ; Po #       DEVANAGARI ABBREVIATION SIGN
+0DF4          ; Po #       SINHALA PUNCTUATION KUNDDALIYA
+0E4F          ; Po #       THAI CHARACTER FONGMAN
+0E5A..0E5B    ; Po #   [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT
+0F04..0F12    ; Po #  [15] TIBETAN MARK INITIAL YIG MGO MDUN MA..TIBETAN MARK RGYA GRAM SHAD
+0F85          ; Po #       TIBETAN MARK PALUTA
+0FD0..0FD1    ; Po #   [2] TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK MNYAM YIG GI MGO RGYAN
+104A..104F    ; Po #   [6] MYANMAR SIGN LITTLE SECTION..MYANMAR SYMBOL GENITIVE
+10FB          ; Po #       GEORGIAN PARAGRAPH SEPARATOR
+1361..1368    ; Po #   [8] ETHIOPIC WORDSPACE..ETHIOPIC PARAGRAPH SEPARATOR
+166D..166E    ; Po #   [2] CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP
+16EB..16ED    ; Po #   [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION
+1735..1736    ; Po #   [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
+17D4..17D6    ; Po #   [3] KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH
+17D8..17DA    ; Po #   [3] KHMER SIGN BEYYAL..KHMER SIGN KOOMUUT
+1800..1805    ; Po #   [6] MONGOLIAN BIRGA..MONGOLIAN FOUR DOTS
+1807..180A    ; Po #   [4] MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU
+1944..1945    ; Po #   [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK
+19DE..19DF    ; Po #   [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV
+1A1E..1A1F    ; Po #   [2] BUGINESE PALLAWA..BUGINESE END OF SECTION
+1B5A..1B60    ; Po #   [7] BALINESE PANTI..BALINESE PAMENENG
+2016..2017    ; Po #   [2] DOUBLE VERTICAL LINE..DOUBLE LOW LINE
+2020..2027    ; Po #   [8] DAGGER..HYPHENATION POINT
+2030..2038    ; Po #   [9] PER MILLE SIGN..CARET
+203B..203E    ; Po #   [4] REFERENCE MARK..OVERLINE
+2041..2043    ; Po #   [3] CARET INSERTION POINT..HYPHEN BULLET
+2047..2051    ; Po #  [11] DOUBLE QUESTION MARK..TWO ASTERISKS ALIGNED VERTICALLY
+2053          ; Po #       SWUNG DASH
+2055..205E    ; Po #  [10] FLOWER PUNCTUATION MARK..VERTICAL FOUR DOTS
+2CF9..2CFC    ; Po #   [4] COPTIC OLD NUBIAN FULL STOP..COPTIC OLD NUBIAN VERSE DIVIDER
+2CFE..2CFF    ; Po #   [2] COPTIC FULL STOP..COPTIC MORPHOLOGICAL DIVIDER
+2E00..2E01    ; Po #   [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
+2E06..2E08    ; Po #   [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER
+2E0B          ; Po #       RAISED SQUARE
+2E0E..2E16    ; Po #   [9] EDITORIAL CORONIS..DOTTED RIGHT-POINTING ANGLE
+3001..3003    ; Po #   [3] IDEOGRAPHIC COMMA..DITTO MARK
+303D          ; Po #       PART ALTERNATION MARK
+30FB          ; Po #       KATAKANA MIDDLE DOT
+A874..A877    ; Po #   [4] PHAGS-PA SINGLE HEAD MARK..PHAGS-PA MARK DOUBLE SHAD
+FE10..FE16    ; Po #   [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK
+FE19          ; Po #       PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE30          ; Po #       PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE45..FE46    ; Po #   [2] SESAME DOT..WHITE SESAME DOT
+FE49..FE4C    ; Po #   [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+FE50..FE52    ; Po #   [3] SMALL COMMA..SMALL FULL STOP
+FE54..FE57    ; Po #   [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK
+FE5F..FE61    ; Po #   [3] SMALL NUMBER SIGN..SMALL ASTERISK
+FE68          ; Po #       SMALL REVERSE SOLIDUS
+FE6A..FE6B    ; Po #   [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT
+FF01..FF03    ; Po #   [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN
+FF05..FF07    ; Po #   [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE
+FF0A          ; Po #       FULLWIDTH ASTERISK
+FF0C          ; Po #       FULLWIDTH COMMA
+FF0E..FF0F    ; Po #   [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS
+FF1A..FF1B    ; Po #   [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON
+FF1F..FF20    ; Po #   [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT
+FF3C          ; Po #       FULLWIDTH REVERSE SOLIDUS
+FF61          ; Po #       HALFWIDTH IDEOGRAPHIC FULL STOP
+FF64..FF65    ; Po #   [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
+10100..10101  ; Po #   [2] AEGEAN WORD SEPARATOR LINE..AEGEAN WORD SEPARATOR DOT
+1039F         ; Po #       UGARITIC WORD DIVIDER
+103D0         ; Po #       OLD PERSIAN WORD DIVIDER
+1091F         ; Po #       PHOENICIAN WORD SEPARATOR
+10A50..10A58  ; Po #   [9] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES
+12470..12473  ; Po #   [4] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON
+
+# Total code points: 278
+
+# ================================================
+
+# General_Category=Math_Symbol
+
+002B          ; Sm #       PLUS SIGN
+003C..003E    ; Sm #   [3] LESS-THAN SIGN..GREATER-THAN SIGN
+007C          ; Sm #       VERTICAL LINE
+007E          ; Sm #       TILDE
+00AC          ; Sm #       NOT SIGN
+00B1          ; Sm #       PLUS-MINUS SIGN
+00D7          ; Sm #       MULTIPLICATION SIGN
+00F7          ; Sm #       DIVISION SIGN
+03F6          ; Sm #       GREEK REVERSED LUNATE EPSILON SYMBOL
+2044          ; Sm #       FRACTION SLASH
+2052          ; Sm #       COMMERCIAL MINUS SIGN
+207A..207C    ; Sm #   [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
+208A..208C    ; Sm #   [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
+2140..2144    ; Sm #   [5] DOUBLE-STRUCK N-ARY SUMMATION..TURNED SANS-SERIF CAPITAL Y
+214B          ; Sm #       TURNED AMPERSAND
+2190..2194    ; Sm #   [5] LEFTWARDS ARROW..LEFT RIGHT ARROW
+219A..219B    ; Sm #   [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+21A0          ; Sm #       RIGHTWARDS TWO HEADED ARROW
+21A3          ; Sm #       RIGHTWARDS ARROW WITH TAIL
+21A6          ; Sm #       RIGHTWARDS ARROW FROM BAR
+21AE          ; Sm #       LEFT RIGHT ARROW WITH STROKE
+21CE..21CF    ; Sm #   [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+21D2          ; Sm #       RIGHTWARDS DOUBLE ARROW
+21D4          ; Sm #       LEFT RIGHT DOUBLE ARROW
+21F4..22FF    ; Sm # [268] RIGHT ARROW WITH SMALL CIRCLE..Z NOTATION BAG MEMBERSHIP
+2308..230B    ; Sm #   [4] LEFT CEILING..RIGHT FLOOR
+2320..2321    ; Sm #   [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL
+237C          ; Sm #       RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
+239B..23B3    ; Sm #  [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
+23DC..23E1    ; Sm #   [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
+25B7          ; Sm #       WHITE RIGHT-POINTING TRIANGLE
+25C1          ; Sm #       WHITE LEFT-POINTING TRIANGLE
+25F8..25FF    ; Sm #   [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE
+266F          ; Sm #       MUSIC SHARP SIGN
+27C0..27C4    ; Sm #   [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET
+27C7..27CA    ; Sm #   [4] OR WITH DOT INSIDE..VERTICAL BAR WITH HORIZONTAL STROKE
+27D0..27E5    ; Sm #  [22] WHITE DIAMOND WITH CENTRED DOT..WHITE SQUARE WITH RIGHTWARDS TICK
+27F0..27FF    ; Sm #  [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW
+2900..2982    ; Sm # [131] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..Z NOTATION TYPE COLON
+2999..29D7    ; Sm #  [63] DOTTED FENCE..BLACK HOURGLASS
+29DC..29FB    ; Sm #  [32] INCOMPLETE INFINITY..TRIPLE PLUS
+29FE..2AFF    ; Sm # [258] TINY..N-ARY WHITE VERTICAL BAR
+FB29          ; Sm #       HEBREW LETTER ALTERNATIVE PLUS SIGN
+FE62          ; Sm #       SMALL PLUS SIGN
+FE64..FE66    ; Sm #   [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
+FF0B          ; Sm #       FULLWIDTH PLUS SIGN
+FF1C..FF1E    ; Sm #   [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN
+FF5C          ; Sm #       FULLWIDTH VERTICAL LINE
+FF5E          ; Sm #       FULLWIDTH TILDE
+FFE2          ; Sm #       FULLWIDTH NOT SIGN
+FFE9..FFEC    ; Sm #   [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
+1D6C1         ; Sm #       MATHEMATICAL BOLD NABLA
+1D6DB         ; Sm #       MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+1D6FB         ; Sm #       MATHEMATICAL ITALIC NABLA
+1D715         ; Sm #       MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+1D735         ; Sm #       MATHEMATICAL BOLD ITALIC NABLA
+1D74F         ; Sm #       MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+1D76F         ; Sm #       MATHEMATICAL SANS-SERIF BOLD NABLA
+1D789         ; Sm #       MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+1D7A9         ; Sm #       MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+1D7C3         ; Sm #       MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+
+# Total code points: 914
+
+# ================================================
+
+# General_Category=Currency_Symbol
+
+0024          ; Sc #       DOLLAR SIGN
+00A2..00A5    ; Sc #   [4] CENT SIGN..YEN SIGN
+060B          ; Sc #       AFGHANI SIGN
+09F2..09F3    ; Sc #   [2] BENGALI RUPEE MARK..BENGALI RUPEE SIGN
+0AF1          ; Sc #       GUJARATI RUPEE SIGN
+0BF9          ; Sc #       TAMIL RUPEE SIGN
+0E3F          ; Sc #       THAI CURRENCY SYMBOL BAHT
+17DB          ; Sc #       KHMER CURRENCY SYMBOL RIEL
+20A0..20B5    ; Sc #  [22] EURO-CURRENCY SIGN..CEDI SIGN
+FDFC          ; Sc #       RIAL SIGN
+FE69          ; Sc #       SMALL DOLLAR SIGN
+FF04          ; Sc #       FULLWIDTH DOLLAR SIGN
+FFE0..FFE1    ; Sc #   [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN
+FFE5..FFE6    ; Sc #   [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
+
+# Total code points: 41
+
+# ================================================
+
+# General_Category=Modifier_Symbol
+
+005E          ; Sk #       CIRCUMFLEX ACCENT
+0060          ; Sk #       GRAVE ACCENT
+00A8          ; Sk #       DIAERESIS
+00AF          ; Sk #       MACRON
+00B4          ; Sk #       ACUTE ACCENT
+00B8          ; Sk #       CEDILLA
+02C2..02C5    ; Sk #   [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD
+02D2..02DF    ; Sk #  [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT
+02E5..02ED    ; Sk #   [9] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER UNASPIRATED
+02EF..02FF    ; Sk #  [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW
+0374..0375    ; Sk #   [2] GREEK NUMERAL SIGN..GREEK LOWER NUMERAL SIGN
+0384..0385    ; Sk #   [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+1FBD          ; Sk #       GREEK KORONIS
+1FBF..1FC1    ; Sk #   [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+1FCD..1FCF    ; Sk #   [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FDD..1FDF    ; Sk #   [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FED..1FEF    ; Sk #   [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
+1FFD..1FFE    ; Sk #   [2] GREEK OXIA..GREEK DASIA
+309B..309C    ; Sk #   [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+A700..A716    ; Sk #  [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
+A720..A721    ; Sk #   [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE
+FF3E          ; Sk #       FULLWIDTH CIRCUMFLEX ACCENT
+FF40          ; Sk #       FULLWIDTH GRAVE ACCENT
+FFE3          ; Sk #       FULLWIDTH MACRON
+
+# Total code points: 99
+
+# ================================================
+
+# General_Category=Other_Symbol
+
+00A6..00A7    ; So #   [2] BROKEN BAR..SECTION SIGN
+00A9          ; So #       COPYRIGHT SIGN
+00AE          ; So #       REGISTERED SIGN
+00B0          ; So #       DEGREE SIGN
+00B6          ; So #       PILCROW SIGN
+0482          ; So #       CYRILLIC THOUSANDS SIGN
+060E..060F    ; So #   [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA
+06E9          ; So #       ARABIC PLACE OF SAJDAH
+06FD..06FE    ; So #   [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN
+07F6          ; So #       NKO SYMBOL OO DENNEN
+09FA          ; So #       BENGALI ISSHAR
+0B70          ; So #       ORIYA ISSHAR
+0BF3..0BF8    ; So #   [6] TAMIL DAY SIGN..TAMIL AS ABOVE SIGN
+0BFA          ; So #       TAMIL NUMBER SIGN
+0CF1..0CF2    ; So #   [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
+0F01..0F03    ; So #   [3] TIBETAN MARK GTER YIG MGO TRUNCATED A..TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA
+0F13..0F17    ; So #   [5] TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN..TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS
+0F1A..0F1F    ; So #   [6] TIBETAN SIGN RDEL DKAR GCIG..TIBETAN SIGN RDEL DKAR RDEL NAG
+0F34          ; So #       TIBETAN MARK BSDUS RTAGS
+0F36          ; So #       TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN
+0F38          ; So #       TIBETAN MARK CHE MGO
+0FBE..0FC5    ; So #   [8] TIBETAN KU RU KHA..TIBETAN SYMBOL RDO RJE
+0FC7..0FCC    ; So #   [6] TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL
+0FCF          ; So #       TIBETAN SIGN RDEL NAG GSUM
+1360          ; So #       ETHIOPIC SECTION MARK
+1390..1399    ; So #  [10] ETHIOPIC TONAL MARK YIZET..ETHIOPIC TONAL MARK KURT
+1940          ; So #       LIMBU SIGN LOO
+19E0..19FF    ; So #  [32] KHMER SYMBOL PATHAMASAT..KHMER SYMBOL DAP-PRAM ROC
+1B61..1B6A    ; So #  [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE
+1B74..1B7C    ; So #   [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
+2100..2101    ; So #   [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+2103..2106    ; So #   [4] DEGREE CELSIUS..CADA UNA
+2108..2109    ; So #   [2] SCRUPLE..DEGREE FAHRENHEIT
+2114          ; So #       L B BAR SYMBOL
+2116..2118    ; So #   [3] NUMERO SIGN..SCRIPT CAPITAL P
+211E..2123    ; So #   [6] PRESCRIPTION TAKE..VERSICLE
+2125          ; So #       OUNCE SIGN
+2127          ; So #       INVERTED OHM SIGN
+2129          ; So #       TURNED GREEK SMALL LETTER IOTA
+212E          ; So #       ESTIMATED SYMBOL
+213A..213B    ; So #   [2] ROTATED CAPITAL Q..FACSIMILE SIGN
+214A          ; So #       PROPERTY LINE
+214C..214D    ; So #   [2] PER SIGN..AKTIESELSKAB
+2195..2199    ; So #   [5] UP DOWN ARROW..SOUTH WEST ARROW
+219C..219F    ; So #   [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW
+21A1..21A2    ; So #   [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL
+21A4..21A5    ; So #   [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR
+21A7..21AD    ; So #   [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW
+21AF..21CD    ; So #  [31] DOWNWARDS ZIGZAG ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE
+21D0..21D1    ; So #   [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW
+21D3          ; So #       DOWNWARDS DOUBLE ARROW
+21D5..21F3    ; So #  [31] UP DOWN DOUBLE ARROW..UP DOWN WHITE ARROW
+2300..2307    ; So #   [8] DIAMETER SIGN..WAVY LINE
+230C..231F    ; So #  [20] BOTTOM RIGHT CROP..BOTTOM RIGHT CORNER
+2322..2328    ; So #   [7] FROWN..KEYBOARD
+232B..237B    ; So #  [81] ERASE TO THE LEFT..NOT CHECK MARK
+237D..239A    ; So #  [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL
+23B4..23DB    ; So #  [40] TOP SQUARE BRACKET..FUSE
+23E2..23E7    ; So #   [6] WHITE TRAPEZIUM..ELECTRICAL INTERSECTION
+2400..2426    ; So #  [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
+2440..244A    ; So #  [11] OCR HOOK..OCR DOUBLE BACKSLASH
+249C..24E9    ; So #  [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
+2500..25B6    ; So # [183] BOX DRAWINGS LIGHT HORIZONTAL..BLACK RIGHT-POINTING TRIANGLE
+25B8..25C0    ; So #   [9] BLACK RIGHT-POINTING SMALL TRIANGLE..BLACK LEFT-POINTING TRIANGLE
+25C2..25F7    ; So #  [54] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE CIRCLE WITH UPPER RIGHT QUADRANT
+2600..266E    ; So # [111] BLACK SUN WITH RAYS..MUSIC NATURAL SIGN
+2670..269C    ; So #  [45] WEST SYRIAC CROSS..FLEUR-DE-LIS
+26A0..26B2    ; So #  [19] WARNING SIGN..NEUTER
+2701..2704    ; So #   [4] UPPER BLADE SCISSORS..WHITE SCISSORS
+2706..2709    ; So #   [4] TELEPHONE LOCATION SIGN..ENVELOPE
+270C..2727    ; So #  [28] VICTORY HAND..WHITE FOUR POINTED STAR
+2729..274B    ; So #  [35] STRESS OUTLINED WHITE STAR..HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274D          ; So #       SHADOWED WHITE CIRCLE
+274F..2752    ; So #   [4] LOWER RIGHT DROP-SHADOWED WHITE SQUARE..UPPER RIGHT SHADOWED WHITE SQUARE
+2756          ; So #       BLACK DIAMOND MINUS WHITE X
+2758..275E    ; So #   [7] LIGHT VERTICAL BAR..HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
+2761..2767    ; So #   [7] CURVED STEM PARAGRAPH SIGN ORNAMENT..ROTATED FLORAL HEART BULLET
+2794          ; So #       HEAVY WIDE-HEADED RIGHTWARDS ARROW
+2798..27AF    ; So #  [24] HEAVY SOUTH EAST ARROW..NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B1..27BE    ; So #  [14] NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW..OPEN-OUTLINED RIGHTWARDS ARROW
+2800..28FF    ; So # [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678
+2B00..2B1A    ; So #  [27] NORTH EAST WHITE ARROW..DOTTED SQUARE
+2B20..2B23    ; So #   [4] WHITE PENTAGON..HORIZONTAL BLACK HEXAGON
+2CE5..2CEA    ; So #   [6] COPTIC SYMBOL MI RO..COPTIC SYMBOL SHIMA SIMA
+2E80..2E99    ; So #  [26] CJK RADICAL REPEAT..CJK RADICAL RAP
+2E9B..2EF3    ; So #  [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
+2F00..2FD5    ; So # [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
+2FF0..2FFB    ; So #  [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
+3004          ; So #       JAPANESE INDUSTRIAL STANDARD SYMBOL
+3012..3013    ; So #   [2] POSTAL MARK..GETA MARK
+3020          ; So #       POSTAL MARK FACE
+3036..3037    ; So #   [2] CIRCLED POSTAL MARK..IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
+303E..303F    ; So #   [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE
+3190..3191    ; So #   [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK
+3196..319F    ; So #  [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
+31C0..31CF    ; So #  [16] CJK STROKE T..CJK STROKE N
+3200..321E    ; So #  [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+322A..3243    ; So #  [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
+3250          ; So #       PARTNERSHIP SIGN
+3260..327F    ; So #  [32] CIRCLED HANGUL KIYEOK..KOREAN STANDARD SYMBOL
+328A..32B0    ; So #  [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
+32C0..32FE    ; So #  [63] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..CIRCLED KATAKANA WO
+3300..33FF    ; So # [256] SQUARE APAATO..SQUARE GAL
+4DC0..4DFF    ; So #  [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
+A490..A4C6    ; So #  [55] YI RADICAL QOT..YI RADICAL KE
+A828..A82B    ; So #   [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4
+FDFD          ; So #       ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
+FFE4          ; So #       FULLWIDTH BROKEN BAR
+FFE8          ; So #       HALFWIDTH FORMS LIGHT VERTICAL
+FFED..FFEE    ; So #   [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
+FFFC..FFFD    ; So #   [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
+10102         ; So #       AEGEAN CHECK MARK
+10137..1013F  ; So #   [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT
+10179..10189  ; So #  [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN
+1D000..1D0F5  ; So # [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
+1D100..1D126  ; So #  [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2
+1D12A..1D164  ; So #  [59] MUSICAL SYMBOL DOUBLE SHARP..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D16A..1D16C  ; So #   [3] MUSICAL SYMBOL FINGERED TREMOLO-1..MUSICAL SYMBOL FINGERED TREMOLO-3
+1D183..1D184  ; So #   [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN
+1D18C..1D1A9  ; So #  [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH
+1D1AE..1D1DD  ; So #  [48] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL PES SUBPUNCTIS
+1D200..1D241  ; So #  [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54
+1D245         ; So #       GREEK MUSICAL LEIMMA
+1D300..1D356  ; So #  [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
+
+# Total code points: 2958
+
+# ================================================
+
+# General_Category=Initial_Punctuation
+
+00AB          ; Pi #       LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+2018          ; Pi #       LEFT SINGLE QUOTATION MARK
+201B..201C    ; Pi #   [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK
+201F          ; Pi #       DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+2039          ; Pi #       SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+2E02          ; Pi #       LEFT SUBSTITUTION BRACKET
+2E04          ; Pi #       LEFT DOTTED SUBSTITUTION BRACKET
+2E09          ; Pi #       LEFT TRANSPOSITION BRACKET
+2E0C          ; Pi #       LEFT RAISED OMISSION BRACKET
+2E1C          ; Pi #       LEFT LOW PARAPHRASE BRACKET
+
+# Total code points: 11
+
+# ================================================
+
+# General_Category=Final_Punctuation
+
+00BB          ; Pf #       RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+2019          ; Pf #       RIGHT SINGLE QUOTATION MARK
+201D          ; Pf #       RIGHT DOUBLE QUOTATION MARK
+203A          ; Pf #       SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+2E03          ; Pf #       RIGHT SUBSTITUTION BRACKET
+2E05          ; Pf #       RIGHT DOTTED SUBSTITUTION BRACKET
+2E0A          ; Pf #       RIGHT TRANSPOSITION BRACKET
+2E0D          ; Pf #       RIGHT RAISED OMISSION BRACKET
+2E1D          ; Pf #       RIGHT LOW PARAPHRASE BRACKET
+
+# Total code points: 9
+
+# EOF


Modified: code/trunk/pcre_compile.c
===================================================================
--- code/trunk/pcre_compile.c    2008-05-07 16:39:17 UTC (rev 348)
+++ code/trunk/pcre_compile.c    2008-07-02 18:42:11 UTC (rev 349)
@@ -2015,7 +2015,7 @@
 unsigned int c, othercase, next;


for (c = *cptr; c <= d; c++)
- { if ((othercase = _pcre_ucp_othercase(c)) != NOTACHAR) break; }
+ { if ((othercase = UCD_OTHERCASE(c)) != c) break; }

if (c > d) return FALSE;

@@ -2024,7 +2024,7 @@

for (++c; c <= d; c++)
{
- if (_pcre_ucp_othercase(c) != next) break;
+ if (UCD_OTHERCASE(c) != next) break;
next++;
}

@@ -2152,7 +2152,7 @@
     unsigned int othercase;
     if (next < 128) othercase = cd->fcc[next]; else
 #ifdef SUPPORT_UCP
-    othercase = _pcre_ucp_othercase((unsigned int)next);
+    othercase = UCD_OTHERCASE((unsigned int)next);
 #else
     othercase = NOTACHAR;
 #endif
@@ -2173,7 +2173,7 @@
     unsigned int othercase;
     if (next < 128) othercase = cd->fcc[next]; else
 #ifdef SUPPORT_UCP
-    othercase = _pcre_ucp_othercase(next);
+    othercase = UCD_OTHERCASE(next);
 #else
     othercase = NOTACHAR;
 #endif
@@ -3339,7 +3339,7 @@
         if ((options & PCRE_CASELESS) != 0)
           {
           unsigned int othercase;
-          if ((othercase = _pcre_ucp_othercase(c)) != NOTACHAR)
+          if ((othercase = UCD_OTHERCASE(c)) != c)
             {
             *class_utf8data++ = XCL_SINGLE;
             class_utf8data += _pcre_ord2utf8(othercase, class_utf8data);


Modified: code/trunk/pcre_dfa_exec.c
===================================================================
--- code/trunk/pcre_dfa_exec.c    2008-05-07 16:39:17 UTC (rev 348)
+++ code/trunk/pcre_dfa_exec.c    2008-07-02 18:42:11 UTC (rev 349)
@@ -512,9 +512,6 @@
     const uschar *code;
     int state_offset = current_state->offset;
     int count, codevalue;
-#ifdef SUPPORT_UCP
-    int chartype, script;
-#endif


 #ifdef DEBUG
     printf ("%.*sProcessing state %d c=", rlevel*2-2, SP, state_offset);
@@ -825,7 +822,7 @@
       if (clen > 0)
         {
         BOOL OK;
-        int category = _pcre_ucp_findprop(c, &chartype, &script);
+        const ucd_record * prop = GET_UCD(c);
         switch(code[1])
           {
           case PT_ANY:
@@ -833,19 +830,19 @@
           break;


           case PT_LAMP:
-          OK = chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt;
+          OK = prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || prop->chartype == ucp_Lt;
           break;


           case PT_GC:
-          OK = category == code[2];
+          OK = ucp_gentype[prop->chartype] == code[2];
           break;


           case PT_PC:
-          OK = chartype == code[2];
+          OK = prop->chartype == code[2];
           break;


           case PT_SC:
-          OK = script == code[2];
+          OK = prop->script == code[2];
           break;


           /* Should never occur, but keep compilers from grumbling. */
@@ -994,7 +991,7 @@
       if (clen > 0)
         {
         BOOL OK;
-        int category = _pcre_ucp_findprop(c, &chartype, &script);
+        const ucd_record * prop = GET_UCD(c);
         switch(code[2])
           {
           case PT_ANY:
@@ -1002,19 +999,19 @@
           break;


           case PT_LAMP:
-          OK = chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt;
+          OK = prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || prop->chartype == ucp_Lt;
           break;


           case PT_GC:
-          OK = category == code[3];
+          OK = ucp_gentype[prop->chartype] == code[3];
           break;


           case PT_PC:
-          OK = chartype == code[3];
+          OK = prop->chartype == code[3];
           break;


           case PT_SC:
-          OK = script == code[3];
+          OK = prop->script == code[3];
           break;


           /* Should never occur, but keep compilers from grumbling. */
@@ -1043,7 +1040,7 @@
       case OP_EXTUNI_EXTRA + OP_TYPEPOSPLUS:
       count = current_state->count;  /* Already matched */
       if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }
-      if (clen > 0 && _pcre_ucp_findprop(c, &chartype, &script) != ucp_M)
+      if (clen > 0 && UCD_CATEGORY(c) != ucp_M)
         {
         const uschar *nptr = ptr + clen;
         int ncount = 0;
@@ -1057,7 +1054,7 @@
           int nd;
           int ndlen = 1;
           GETCHARLEN(nd, nptr, ndlen);
-          if (_pcre_ucp_findprop(nd, &chartype, &script) != ucp_M) break;
+          if (UCD_CATEGORY(nd) != ucp_M) break;
           ncount++;
           nptr += ndlen;
           }
@@ -1216,7 +1213,7 @@
       if (clen > 0)
         {
         BOOL OK;
-        int category = _pcre_ucp_findprop(c, &chartype, &script);
+        const ucd_record * prop = GET_UCD(c);
         switch(code[2])
           {
           case PT_ANY:
@@ -1224,19 +1221,19 @@
           break;


           case PT_LAMP:
-          OK = chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt;
+          OK = prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || prop->chartype == ucp_Lt;
           break;


           case PT_GC:
-          OK = category == code[3];
+          OK = ucp_gentype[prop->chartype] == code[3];
           break;


           case PT_PC:
-          OK = chartype == code[3];
+          OK = prop->chartype == code[3];
           break;


           case PT_SC:
-          OK = script == code[3];
+          OK = prop->script == code[3];
           break;


           /* Should never occur, but keep compilers from grumbling. */
@@ -1274,7 +1271,7 @@
       QS2:


       ADD_ACTIVE(state_offset + 2, 0);
-      if (clen > 0 && _pcre_ucp_findprop(c, &chartype, &script) != ucp_M)
+      if (clen > 0 && UCD_CATEGORY(c) != ucp_M)
         {
         const uschar *nptr = ptr + clen;
         int ncount = 0;
@@ -1289,7 +1286,7 @@
           int nd;
           int ndlen = 1;
           GETCHARLEN(nd, nptr, ndlen);
-          if (_pcre_ucp_findprop(nd, &chartype, &script) != ucp_M) break;
+          if (UCD_CATEGORY(nd) != ucp_M) break;
           ncount++;
           nptr += ndlen;
           }
@@ -1463,7 +1460,7 @@
       if (clen > 0)
         {
         BOOL OK;
-        int category = _pcre_ucp_findprop(c, &chartype, &script);
+        const ucd_record * prop = GET_UCD(c);
         switch(code[4])
           {
           case PT_ANY:
@@ -1471,19 +1468,19 @@
           break;


           case PT_LAMP:
-          OK = chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt;
+          OK = prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || prop->chartype == ucp_Lt;
           break;


           case PT_GC:
-          OK = category == code[5];
+          OK = ucp_gentype[prop->chartype] == code[5];
           break;


           case PT_PC:
-          OK = chartype == code[5];
+          OK = prop->chartype == code[5];
           break;


           case PT_SC:
-          OK = script == code[5];
+          OK = prop->script == code[5];
           break;


           /* Should never occur, but keep compilers from grumbling. */
@@ -1516,7 +1513,7 @@
       if (codevalue != OP_EXTUNI_EXTRA + OP_TYPEEXACT)
         { ADD_ACTIVE(state_offset + 4, 0); }
       count = current_state->count;  /* Number already matched */
-      if (clen > 0 && _pcre_ucp_findprop(c, &chartype, &script) != ucp_M)
+      if (clen > 0 && UCD_CATEGORY(c) != ucp_M)
         {
         const uschar *nptr = ptr + clen;
         int ncount = 0;
@@ -1530,7 +1527,7 @@
           int nd;
           int ndlen = 1;
           GETCHARLEN(nd, nptr, ndlen);
-          if (_pcre_ucp_findprop(nd, &chartype, &script) != ucp_M) break;
+          if (UCD_CATEGORY(nd) != ucp_M) break;
           ncount++;
           nptr += ndlen;
           }
@@ -1710,7 +1707,7 @@
           other case of the character. */


 #ifdef SUPPORT_UCP
-          othercase = _pcre_ucp_othercase(c);
+          othercase = UCD_OTHERCASE(c);
 #else
           othercase = NOTACHAR;
 #endif
@@ -1735,7 +1732,7 @@
       to wait for them to pass before continuing. */


       case OP_EXTUNI:
-      if (clen > 0 && _pcre_ucp_findprop(c, &chartype, &script) != ucp_M)
+      if (clen > 0 && UCD_CATEGORY(c) != ucp_M)
         {
         const uschar *nptr = ptr + clen;
         int ncount = 0;
@@ -1743,7 +1740,7 @@
           {
           int nclen = 1;
           GETCHARLEN(c, nptr, nclen);
-          if (_pcre_ucp_findprop(c, &chartype, &script) != ucp_M) break;
+          if (UCD_CATEGORY(c) != ucp_M) break;
           ncount++;
           nptr += nclen;
           }
@@ -1911,7 +1908,7 @@
           if (utf8 && d >= 128)
             {
 #ifdef SUPPORT_UCP
-            otherd = _pcre_ucp_othercase(d);
+            otherd = UCD_OTHERCASE(d);
 #endif  /* SUPPORT_UCP */
             }
           else
@@ -1949,7 +1946,7 @@
           if (utf8 && d >= 128)
             {
 #ifdef SUPPORT_UCP
-            otherd = _pcre_ucp_othercase(d);
+            otherd = UCD_OTHERCASE(d);
 #endif  /* SUPPORT_UCP */
             }
           else
@@ -1985,7 +1982,7 @@
           if (utf8 && d >= 128)
             {
 #ifdef SUPPORT_UCP
-            otherd = _pcre_ucp_othercase(d);
+            otherd = UCD_OTHERCASE(d);
 #endif  /* SUPPORT_UCP */
             }
           else
@@ -2017,7 +2014,7 @@
           if (utf8 && d >= 128)
             {
 #ifdef SUPPORT_UCP
-            otherd = _pcre_ucp_othercase(d);
+            otherd = UCD_OTHERCASE(d);
 #endif  /* SUPPORT_UCP */
             }
           else
@@ -2052,7 +2049,7 @@
           if (utf8 && d >= 128)
             {
 #ifdef SUPPORT_UCP
-            otherd = _pcre_ucp_othercase(d);
+            otherd = UCD_OTHERCASE(d);
 #endif  /* SUPPORT_UCP */
             }
           else


Modified: code/trunk/pcre_exec.c
===================================================================
--- code/trunk/pcre_exec.c    2008-05-07 16:39:17 UTC (rev 348)
+++ code/trunk/pcre_exec.c    2008-07-02 18:42:11 UTC (rev 349)
@@ -1653,8 +1653,7 @@
     if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
     GETCHARINCTEST(c, eptr);
       {
-      int chartype, script;
-      int category = _pcre_ucp_findprop(c, &chartype, &script);
+      const ucd_record * prop = GET_UCD(c);


       switch(ecode[1])
         {
@@ -1663,24 +1662,24 @@
         break;


         case PT_LAMP:
-        if ((chartype == ucp_Lu ||
-             chartype == ucp_Ll ||
-             chartype == ucp_Lt) == (op == OP_NOTPROP))
+        if ((prop->chartype == ucp_Lu ||
+             prop->chartype == ucp_Ll ||
+             prop->chartype == ucp_Lt) == (op == OP_NOTPROP))
           RRETURN(MATCH_NOMATCH);
          break;


         case PT_GC:
-        if ((ecode[2] != category) == (op == OP_PROP))
+        if ((ecode[2] != ucp_gentype[prop->chartype]) == (op == OP_PROP))
           RRETURN(MATCH_NOMATCH);
         break;


         case PT_PC:
-        if ((ecode[2] != chartype) == (op == OP_PROP))
+        if ((ecode[2] != prop->chartype) == (op == OP_PROP))
           RRETURN(MATCH_NOMATCH);
         break;


         case PT_SC:
-        if ((ecode[2] != script) == (op == OP_PROP))
+        if ((ecode[2] != prop->script) == (op == OP_PROP))
           RRETURN(MATCH_NOMATCH);
         break;


@@ -1699,8 +1698,7 @@
     if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
     GETCHARINCTEST(c, eptr);
       {
-      int chartype, script;
-      int category = _pcre_ucp_findprop(c, &chartype, &script);
+      int category = UCD_CATEGORY(c);
       if (category == ucp_M) RRETURN(MATCH_NOMATCH);
       while (eptr < md->end_subject)
         {
@@ -1709,7 +1707,7 @@
           {
           GETCHARLEN(c, eptr, len);
           }
-        category = _pcre_ucp_findprop(c, &chartype, &script);
+        category = UCD_CATEGORY(c);
         if (category != ucp_M) break;
         eptr += len;
         }
@@ -2174,7 +2172,7 @@
         if (fc != dc)
           {
 #ifdef SUPPORT_UCP
-          if (dc != _pcre_ucp_othercase(fc))
+          if (dc != UCD_OTHERCASE(fc))
 #endif
             RRETURN(MATCH_NOMATCH);
           }
@@ -2265,7 +2263,7 @@
 #ifdef SUPPORT_UCP
         unsigned int othercase;
         if ((ims & PCRE_CASELESS) != 0 &&
-            (othercase = _pcre_ucp_othercase(fc)) != NOTACHAR)
+            (othercase = UCD_OTHERCASE(fc)) != fc)
           oclength = _pcre_ord2utf8(othercase, occhars);
         else oclength = 0;
 #endif  /* SUPPORT_UCP */
@@ -2870,7 +2868,7 @@
             {
             if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
             GETCHARINCTEST(c, eptr);
-            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            prop_chartype = UCD_CHARTYPE(c);
             if ((prop_chartype == ucp_Lu ||
                  prop_chartype == ucp_Ll ||
                  prop_chartype == ucp_Lt) == prop_fail_result)
@@ -2883,7 +2881,7 @@
             {
             if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
             GETCHARINCTEST(c, eptr);
-            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            prop_category = UCD_CATEGORY(c);
             if ((prop_category == prop_value) == prop_fail_result)
               RRETURN(MATCH_NOMATCH);
             }
@@ -2894,7 +2892,7 @@
             {
             if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
             GETCHARINCTEST(c, eptr);
-            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            prop_chartype = UCD_CHARTYPE(c);
             if ((prop_chartype == prop_value) == prop_fail_result)
               RRETURN(MATCH_NOMATCH);
             }
@@ -2905,7 +2903,7 @@
             {
             if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
             GETCHARINCTEST(c, eptr);
-            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            prop_script = UCD_SCRIPT(c);
             if ((prop_script == prop_value) == prop_fail_result)
               RRETURN(MATCH_NOMATCH);
             }
@@ -2924,7 +2922,7 @@
         for (i = 1; i <= min; i++)
           {
           GETCHARINCTEST(c, eptr);
-          prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+          prop_category = UCD_CATEGORY(c);
           if (prop_category == ucp_M) RRETURN(MATCH_NOMATCH);
           while (eptr < md->end_subject)
             {
@@ -2933,7 +2931,7 @@
               {
               GETCHARLEN(c, eptr, len);
               }
-            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            prop_category = UCD_CATEGORY(c);
             if (prop_category != ucp_M) break;
             eptr += len;
             }
@@ -3349,7 +3347,7 @@
             if (rrc != MATCH_NOMATCH) RRETURN(rrc);
             if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
             GETCHARINC(c, eptr);
-            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            prop_chartype = UCD_CHARTYPE(c);
             if ((prop_chartype == ucp_Lu ||
                  prop_chartype == ucp_Ll ||
                  prop_chartype == ucp_Lt) == prop_fail_result)
@@ -3364,7 +3362,7 @@
             if (rrc != MATCH_NOMATCH) RRETURN(rrc);
             if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
             GETCHARINC(c, eptr);
-            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            prop_category = UCD_CATEGORY(c);
             if ((prop_category == prop_value) == prop_fail_result)
               RRETURN(MATCH_NOMATCH);
             }
@@ -3377,7 +3375,7 @@
             if (rrc != MATCH_NOMATCH) RRETURN(rrc);
             if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
             GETCHARINC(c, eptr);
-            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            prop_chartype = UCD_CHARTYPE(c);
             if ((prop_chartype == prop_value) == prop_fail_result)
               RRETURN(MATCH_NOMATCH);
             }
@@ -3390,7 +3388,7 @@
             if (rrc != MATCH_NOMATCH) RRETURN(rrc);
             if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
             GETCHARINC(c, eptr);
-            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            prop_script = UCD_SCRIPT(c);
             if ((prop_script == prop_value) == prop_fail_result)
               RRETURN(MATCH_NOMATCH);
             }
@@ -3412,7 +3410,7 @@
           if (rrc != MATCH_NOMATCH) RRETURN(rrc);
           if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
           GETCHARINCTEST(c, eptr);
-          prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+          prop_category = UCD_CATEGORY(c);
           if (prop_category == ucp_M) RRETURN(MATCH_NOMATCH);
           while (eptr < md->end_subject)
             {
@@ -3421,7 +3419,7 @@
               {
               GETCHARLEN(c, eptr, len);
               }
-            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            prop_category = UCD_CATEGORY(c);
             if (prop_category != ucp_M) break;
             eptr += len;
             }
@@ -3739,7 +3737,7 @@
             int len = 1;
             if (eptr >= md->end_subject) break;
             GETCHARLEN(c, eptr, len);
-            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            prop_chartype = UCD_CHARTYPE(c);
             if ((prop_chartype == ucp_Lu ||
                  prop_chartype == ucp_Ll ||
                  prop_chartype == ucp_Lt) == prop_fail_result)
@@ -3754,7 +3752,7 @@
             int len = 1;
             if (eptr >= md->end_subject) break;
             GETCHARLEN(c, eptr, len);
-            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            prop_category = UCD_CATEGORY(c);
             if ((prop_category == prop_value) == prop_fail_result)
               break;
             eptr+= len;
@@ -3767,7 +3765,7 @@
             int len = 1;
             if (eptr >= md->end_subject) break;
             GETCHARLEN(c, eptr, len);
-            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            prop_chartype = UCD_CHARTYPE(c);
             if ((prop_chartype == prop_value) == prop_fail_result)
               break;
             eptr+= len;
@@ -3780,7 +3778,7 @@
             int len = 1;
             if (eptr >= md->end_subject) break;
             GETCHARLEN(c, eptr, len);
-            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            prop_script = UCD_SCRIPT(c);
             if ((prop_script == prop_value) == prop_fail_result)
               break;
             eptr+= len;
@@ -3809,7 +3807,7 @@
           {
           if (eptr >= md->end_subject) break;
           GETCHARINCTEST(c, eptr);
-          prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+          prop_category = UCD_CATEGORY(c);
           if (prop_category == ucp_M) break;
           while (eptr < md->end_subject)
             {
@@ -3818,7 +3816,7 @@
               {
               GETCHARLEN(c, eptr, len);
               }
-            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            prop_category = UCD_CATEGORY(c);
             if (prop_category != ucp_M) break;
             eptr += len;
             }
@@ -3840,7 +3838,7 @@
               BACKCHAR(eptr);
               GETCHARLEN(c, eptr, len);
               }
-            prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+            prop_category = UCD_CATEGORY(c);
             if (prop_category != ucp_M) break;
             eptr--;
             }


Modified: code/trunk/pcre_internal.h
===================================================================
--- code/trunk/pcre_internal.h    2008-05-07 16:39:17 UTC (rev 348)
+++ code/trunk/pcre_internal.h    2008-07-02 18:42:11 UTC (rev 349)
@@ -140,16 +140,20 @@


#if USHRT_MAX == 65535
typedef unsigned short pcre_uint16;
+ typedef short pcre_int16;
#elif UINT_MAX == 65535
typedef unsigned int pcre_uint16;
+ typedef int pcre_int16;
#else
#error Cannot determine a type for 16-bit unsigned integers
#endif

 #if UINT_MAX == 4294967295
   typedef unsigned int pcre_uint32;
+  typedef int pcre_int32;
 #elif ULONG_MAX == 4294967295
   typedef unsigned long int pcre_uint32;
+  typedef long int pcre_int32;
 #else
   #error Cannot determine a type for 32-bit unsigned integers
 #endif
@@ -1126,13 +1130,36 @@
 extern int          _pcre_ord2utf8(int, uschar *);
 extern real_pcre   *_pcre_try_flipped(const real_pcre *, real_pcre *,
                       const pcre_study_data *, pcre_study_data *);
-extern int          _pcre_ucp_findprop(const unsigned int, int *, int *);
-extern unsigned int _pcre_ucp_othercase(const unsigned int);
 extern int          _pcre_valid_utf8(const uschar *, int);
 extern BOOL         _pcre_was_newline(const uschar *, int, const uschar *,
                       int *, BOOL);
 extern BOOL         _pcre_xclass(int, const uschar *);


+
+/* Unicode character database (UCD) */
+
+typedef struct {
+  uschar script;
+  uschar chartype;
+  pcre_int16 other_case;
+} ucd_record;
+
+extern const ucd_record  ucd_records[];
+extern const uschar      ucd_stage1[];
+extern const pcre_uint16 ucd_stage2[];
+extern const int ucp_gentype[];
+
+/* UCD access macros */
+
+#define UCD_BLOCK_SIZE 128
+#define GET_UCD(ch) (ucd_records + ucd_stage2[ucd_stage1[(ch) / UCD_BLOCK_SIZE] * \
+        UCD_BLOCK_SIZE + ch % UCD_BLOCK_SIZE])
+
+#define UCD_CHARTYPE(ch)  GET_UCD(ch)->chartype
+#define UCD_SCRIPT(ch)    GET_UCD(ch)->script
+#define UCD_CATEGORY(ch)  ucp_gentype[UCD_CHARTYPE(ch)]
+#define UCD_OTHERCASE(ch) (ch + GET_UCD(ch)->other_case) 
+
 #endif


/* End of pcre_internal.h */

Modified: code/trunk/pcre_ord2utf8.c
===================================================================
--- code/trunk/pcre_ord2utf8.c    2008-05-07 16:39:17 UTC (rev 348)
+++ code/trunk/pcre_ord2utf8.c    2008-07-02 18:42:11 UTC (rev 349)
@@ -82,4 +82,17 @@
 #endif      /* called when SUPPORT_UTF8 is not defined. */
 }


+/* Table to translate from particular type value to the general value. */
+
+const int ucp_gentype[] = {
+  ucp_C, ucp_C, ucp_C, ucp_C, ucp_C,  /* Cc, Cf, Cn, Co, Cs */
+  ucp_L, ucp_L, ucp_L, ucp_L, ucp_L,  /* Ll, Lu, Lm, Lo, Lt */
+  ucp_M, ucp_M, ucp_M,                /* Mc, Me, Mn */
+  ucp_N, ucp_N, ucp_N,                /* Nd, Nl, No */
+  ucp_P, ucp_P, ucp_P, ucp_P, ucp_P,  /* Pc, Pd, Pe, Pf, Pi */
+  ucp_P, ucp_P,                       /* Ps, Po */
+  ucp_S, ucp_S, ucp_S, ucp_S,         /* Sc, Sk, Sm, So */
+  ucp_Z, ucp_Z, ucp_Z                 /* Zl, Zp, Zs */
+};
+
 /* End of pcre_ord2utf8.c */


Added: code/trunk/pcre_ucd.c
===================================================================
--- code/trunk/pcre_ucd.c                            (rev 0)
+++ code/trunk/pcre_ucd.c    2008-07-02 18:42:11 UTC (rev 349)
@@ -0,0 +1,2412 @@
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include "pcre_internal.h"
+
+/* Unicode character database. */
+/* This file was autogenerated by MultiStage2.py script. */
+/* Total size: 47416 bytes, block size: 128. */
+const ucd_record ucd_records[] = { /* 1592 bytes */
+  {     9,      0,      0, }, /*   0 */
+  {     9,     29,      0, }, /*   1 */
+  {     9,     21,      0, }, /*   2 */
+  {     9,     23,      0, }, /*   3 */
+  {     9,     22,      0, }, /*   4 */
+  {     9,     18,      0, }, /*   5 */
+  {     9,     25,      0, }, /*   6 */
+  {     9,     17,      0, }, /*   7 */
+  {     9,     13,      0, }, /*   8 */
+  {    33,      9,     32, }, /*   9 */
+  {     9,     24,      0, }, /*  10 */
+  {     9,     16,      0, }, /*  11 */
+  {    33,      5,    -32, }, /*  12 */
+  {     9,     26,      0, }, /*  13 */
+  {    33,      5,      0, }, /*  14 */
+  {     9,     20,      0, }, /*  15 */
+  {     9,      1,      0, }, /*  16 */
+  {     9,     15,      0, }, /*  17 */
+  {     9,      5,    743, }, /*  18 */
+  {     9,     19,      0, }, /*  19 */
+  {    33,      5,    121, }, /*  20 */
+  {    33,      9,      1, }, /*  21 */
+  {    33,      5,     -1, }, /*  22 */
+  {    33,      9,   -199, }, /*  23 */
+  {    33,      5,   -232, }, /*  24 */
+  {    33,      9,   -121, }, /*  25 */
+  {    33,      5,   -300, }, /*  26 */
+  {    33,      5,    195, }, /*  27 */
+  {    33,      9,    210, }, /*  28 */
+  {    33,      9,    206, }, /*  29 */
+  {    33,      9,    205, }, /*  30 */
+  {    33,      9,     79, }, /*  31 */
+  {    33,      9,    202, }, /*  32 */
+  {    33,      9,    203, }, /*  33 */
+  {    33,      9,    207, }, /*  34 */
+  {    33,      5,     97, }, /*  35 */
+  {    33,      9,    211, }, /*  36 */
+  {    33,      9,    209, }, /*  37 */
+  {    33,      5,    163, }, /*  38 */
+  {    33,      9,    213, }, /*  39 */
+  {    33,      5,    130, }, /*  40 */
+  {    33,      9,    214, }, /*  41 */
+  {    33,      9,    218, }, /*  42 */
+  {    33,      9,    217, }, /*  43 */
+  {    33,      9,    219, }, /*  44 */
+  {    33,      7,      0, }, /*  45 */
+  {    33,      5,     56, }, /*  46 */
+  {    33,      9,      2, }, /*  47 */
+  {    33,      8,     -1, }, /*  48 */
+  {    33,      5,     -2, }, /*  49 */
+  {    33,      5,    -79, }, /*  50 */
+  {    33,      9,    -97, }, /*  51 */
+  {    33,      9,    -56, }, /*  52 */
+  {    33,      9,   -130, }, /*  53 */
+  {    33,      9,  10795, }, /*  54 */
+  {    33,      9,   -163, }, /*  55 */
+  {    33,      9,  10792, }, /*  56 */
+  {    33,      9,   -195, }, /*  57 */
+  {    33,      9,     69, }, /*  58 */
+  {    33,      9,     71, }, /*  59 */
+  {    33,      5,   -210, }, /*  60 */
+  {    33,      5,   -206, }, /*  61 */
+  {    33,      5,   -205, }, /*  62 */
+  {    33,      5,   -202, }, /*  63 */
+  {    33,      5,   -203, }, /*  64 */
+  {    33,      5,   -207, }, /*  65 */
+  {    33,      5,   -209, }, /*  66 */
+  {    33,      5,   -211, }, /*  67 */
+  {    33,      5,  10743, }, /*  68 */
+  {    33,      5,   -213, }, /*  69 */
+  {    33,      5,   -214, }, /*  70 */
+  {    33,      5,  10727, }, /*  71 */
+  {    33,      5,   -218, }, /*  72 */
+  {    33,      5,    -69, }, /*  73 */
+  {    33,      5,   -217, }, /*  74 */
+  {    33,      5,    -71, }, /*  75 */
+  {    33,      5,   -219, }, /*  76 */
+  {    33,      6,      0, }, /*  77 */
+  {     9,      6,      0, }, /*  78 */
+  {    27,     12,      0, }, /*  79 */
+  {    27,     12,     84, }, /*  80 */
+  {     9,      2,      0, }, /*  81 */
+  {    19,     24,      0, }, /*  82 */
+  {    19,      6,      0, }, /*  83 */
+  {    19,      5,    130, }, /*  84 */
+  {    19,      9,     38, }, /*  85 */
+  {    19,      9,     37, }, /*  86 */
+  {    19,      9,     64, }, /*  87 */
+  {    19,      9,     63, }, /*  88 */
+  {    19,      5,      0, }, /*  89 */
+  {    19,      9,     32, }, /*  90 */
+  {    19,      5,    -38, }, /*  91 */
+  {    19,      5,    -37, }, /*  92 */
+  {    19,      5,    -32, }, /*  93 */
+  {    19,      5,    -31, }, /*  94 */
+  {    19,      5,    -64, }, /*  95 */
+  {    19,      5,    -63, }, /*  96 */
+  {    19,      5,    -62, }, /*  97 */
+  {    19,      5,    -57, }, /*  98 */
+  {    19,      9,      0, }, /*  99 */
+  {    19,      5,    -47, }, /* 100 */
+  {    19,      5,    -54, }, /* 101 */
+  {    19,      9,      1, }, /* 102 */
+  {    19,      5,     -1, }, /* 103 */
+  {    10,      9,      1, }, /* 104 */
+  {    10,      5,     -1, }, /* 105 */
+  {    19,      5,    -86, }, /* 106 */
+  {    19,      5,    -80, }, /* 107 */
+  {    19,      5,      7, }, /* 108 */
+  {    19,      9,    -60, }, /* 109 */
+  {    19,      5,    -96, }, /* 110 */
+  {    19,     25,      0, }, /* 111 */
+  {    19,      9,     -7, }, /* 112 */
+  {    19,      9,   -130, }, /* 113 */
+  {    12,      9,     80, }, /* 114 */
+  {    12,      9,     32, }, /* 115 */
+  {    12,      5,    -32, }, /* 116 */
+  {    12,      5,    -80, }, /* 117 */
+  {    12,      9,      1, }, /* 118 */
+  {    12,      5,     -1, }, /* 119 */
+  {    12,     26,      0, }, /* 120 */
+  {    12,     12,      0, }, /* 121 */
+  {    12,     11,      0, }, /* 122 */
+  {    12,      9,     15, }, /* 123 */
+  {    12,      5,    -15, }, /* 124 */
+  {     1,      9,     48, }, /* 125 */
+  {     1,      6,      0, }, /* 126 */
+  {     1,     21,      0, }, /* 127 */
+  {     1,      5,    -48, }, /* 128 */
+  {     1,      5,      0, }, /* 129 */
+  {     1,     17,      0, }, /* 130 */
+  {    25,     12,      0, }, /* 131 */
+  {    25,     21,      0, }, /* 132 */
+  {    25,      7,      0, }, /* 133 */
+  {     0,     23,      0, }, /* 134 */
+  {     0,     21,      0, }, /* 135 */
+  {     0,     26,      0, }, /* 136 */
+  {     0,     12,      0, }, /* 137 */
+  {     0,      7,      0, }, /* 138 */
+  {     0,     11,      0, }, /* 139 */
+  {     0,      6,      0, }, /* 140 */
+  {     0,     13,      0, }, /* 141 */
+  {    49,     21,      0, }, /* 142 */
+  {    49,      1,      0, }, /* 143 */
+  {    49,      7,      0, }, /* 144 */
+  {    49,     12,      0, }, /* 145 */
+  {    55,      7,      0, }, /* 146 */
+  {    55,     12,      0, }, /* 147 */
+  {    63,     13,      0, }, /* 148 */
+  {    63,      7,      0, }, /* 149 */
+  {    63,     12,      0, }, /* 150 */
+  {    63,      6,      0, }, /* 151 */
+  {    63,     26,      0, }, /* 152 */
+  {    63,     21,      0, }, /* 153 */
+  {    14,     12,      0, }, /* 154 */
+  {    14,     10,      0, }, /* 155 */
+  {    14,      7,      0, }, /* 156 */
+  {    14,     13,      0, }, /* 157 */
+  {     2,     12,      0, }, /* 158 */
+  {     2,     10,      0, }, /* 159 */
+  {     2,      7,      0, }, /* 160 */
+  {     2,     13,      0, }, /* 161 */
+  {     2,     23,      0, }, /* 162 */
+  {     2,     15,      0, }, /* 163 */
+  {     2,     26,      0, }, /* 164 */
+  {    21,     12,      0, }, /* 165 */
+  {    21,     10,      0, }, /* 166 */
+  {    21,      7,      0, }, /* 167 */
+  {    21,     13,      0, }, /* 168 */
+  {    20,     12,      0, }, /* 169 */
+  {    20,     10,      0, }, /* 170 */
+  {    20,      7,      0, }, /* 171 */
+  {    20,     13,      0, }, /* 172 */
+  {    20,     23,      0, }, /* 173 */
+  {    43,     12,      0, }, /* 174 */
+  {    43,     10,      0, }, /* 175 */
+  {    43,      7,      0, }, /* 176 */
+  {    43,     13,      0, }, /* 177 */
+  {    43,     26,      0, }, /* 178 */
+  {    53,     12,      0, }, /* 179 */
+  {    53,      7,      0, }, /* 180 */
+  {    53,     10,      0, }, /* 181 */
+  {    53,     13,      0, }, /* 182 */
+  {    53,     15,      0, }, /* 183 */
+  {    53,     26,      0, }, /* 184 */
+  {    53,     23,      0, }, /* 185 */
+  {    54,     10,      0, }, /* 186 */
+  {    54,      7,      0, }, /* 187 */
+  {    54,     12,      0, }, /* 188 */
+  {    54,     13,      0, }, /* 189 */
+  {    28,     10,      0, }, /* 190 */
+  {    28,      7,      0, }, /* 191 */
+  {    28,     12,      0, }, /* 192 */
+  {    28,     13,      0, }, /* 193 */
+  {    28,     26,      0, }, /* 194 */
+  {    36,     10,      0, }, /* 195 */
+  {    36,      7,      0, }, /* 196 */
+  {    36,     12,      0, }, /* 197 */
+  {    36,     13,      0, }, /* 198 */
+  {    47,     10,      0, }, /* 199 */
+  {    47,      7,      0, }, /* 200 */
+  {    47,     12,      0, }, /* 201 */
+  {    47,     21,      0, }, /* 202 */
+  {    56,      7,      0, }, /* 203 */
+  {    56,     12,      0, }, /* 204 */
+  {    56,      6,      0, }, /* 205 */
+  {    56,     21,      0, }, /* 206 */
+  {    56,     13,      0, }, /* 207 */
+  {    32,      7,      0, }, /* 208 */
+  {    32,     12,      0, }, /* 209 */
+  {    32,      6,      0, }, /* 210 */
+  {    32,     13,      0, }, /* 211 */
+  {    57,      7,      0, }, /* 212 */
+  {    57,     26,      0, }, /* 213 */
+  {    57,     21,      0, }, /* 214 */
+  {    57,     12,      0, }, /* 215 */
+  {    57,     13,      0, }, /* 216 */
+  {    57,     15,      0, }, /* 217 */
+  {    57,     22,      0, }, /* 218 */
+  {    57,     18,      0, }, /* 219 */
+  {    57,     10,      0, }, /* 220 */
+  {    38,      7,      0, }, /* 221 */
+  {    38,     10,      0, }, /* 222 */
+  {    38,     12,      0, }, /* 223 */
+  {    38,     13,      0, }, /* 224 */
+  {    38,     21,      0, }, /* 225 */
+  {    16,      9,   7264, }, /* 226 */
+  {    16,      7,      0, }, /* 227 */
+  {    16,      6,      0, }, /* 228 */
+  {    23,      7,      0, }, /* 229 */
+  {    15,      7,      0, }, /* 230 */
+  {    15,     12,      0, }, /* 231 */
+  {    15,     26,      0, }, /* 232 */
+  {    15,     21,      0, }, /* 233 */
+  {    15,     15,      0, }, /* 234 */
+  {     8,      7,      0, }, /* 235 */
+  {     7,      7,      0, }, /* 236 */
+  {     7,     21,      0, }, /* 237 */
+  {    40,     29,      0, }, /* 238 */
+  {    40,      7,      0, }, /* 239 */
+  {    40,     22,      0, }, /* 240 */
+  {    40,     18,      0, }, /* 241 */
+  {    45,      7,      0, }, /* 242 */
+  {    45,     14,      0, }, /* 243 */
+  {    50,      7,      0, }, /* 244 */
+  {    50,     12,      0, }, /* 245 */
+  {    24,      7,      0, }, /* 246 */
+  {    24,     12,      0, }, /* 247 */
+  {     6,      7,      0, }, /* 248 */
+  {     6,     12,      0, }, /* 249 */
+  {    51,      7,      0, }, /* 250 */
+  {    51,     12,      0, }, /* 251 */
+  {    31,      7,      0, }, /* 252 */
+  {    31,      1,      0, }, /* 253 */
+  {    31,     10,      0, }, /* 254 */
+  {    31,     12,      0, }, /* 255 */
+  {    31,     21,      0, }, /* 256 */
+  {    31,      6,      0, }, /* 257 */
+  {    31,     23,      0, }, /* 258 */
+  {    31,     13,      0, }, /* 259 */
+  {    31,     15,      0, }, /* 260 */
+  {    37,     21,      0, }, /* 261 */
+  {    37,     17,      0, }, /* 262 */
+  {    37,     12,      0, }, /* 263 */
+  {    37,     29,      0, }, /* 264 */
+  {    37,     13,      0, }, /* 265 */
+  {    37,      7,      0, }, /* 266 */
+  {    37,      6,      0, }, /* 267 */
+  {    34,      7,      0, }, /* 268 */
+  {    34,     12,      0, }, /* 269 */
+  {    34,     10,      0, }, /* 270 */
+  {    34,     26,      0, }, /* 271 */
+  {    34,     21,      0, }, /* 272 */
+  {    34,     13,      0, }, /* 273 */
+  {    52,      7,      0, }, /* 274 */
+  {    39,      7,      0, }, /* 275 */
+  {    39,     10,      0, }, /* 276 */
+  {    39,     13,      0, }, /* 277 */
+  {    39,     21,      0, }, /* 278 */
+  {    31,     26,      0, }, /* 279 */
+  {     5,      7,      0, }, /* 280 */
+  {     5,     12,      0, }, /* 281 */
+  {     5,     10,      0, }, /* 282 */
+  {     5,     21,      0, }, /* 283 */
+  {    61,     12,      0, }, /* 284 */
+  {    61,     10,      0, }, /* 285 */
+  {    61,      7,      0, }, /* 286 */
+  {    61,     13,      0, }, /* 287 */
+  {    61,     21,      0, }, /* 288 */
+  {    61,     26,      0, }, /* 289 */
+  {    12,      5,      0, }, /* 290 */
+  {    12,      6,      0, }, /* 291 */
+  {    33,      5,   3814, }, /* 292 */
+  {    33,      5,    -59, }, /* 293 */
+  {    19,      5,      8, }, /* 294 */
+  {    19,      9,     -8, }, /* 295 */
+  {    19,      5,     74, }, /* 296 */
+  {    19,      5,     86, }, /* 297 */
+  {    19,      5,    100, }, /* 298 */
+  {    19,      5,    128, }, /* 299 */
+  {    19,      5,    112, }, /* 300 */
+  {    19,      5,    126, }, /* 301 */
+  {    19,      8,     -8, }, /* 302 */
+  {    19,      5,      9, }, /* 303 */
+  {    19,      9,    -74, }, /* 304 */
+  {    19,      8,     -9, }, /* 305 */
+  {    19,      5,  -7205, }, /* 306 */
+  {    19,      9,    -86, }, /* 307 */
+  {    19,      9,   -100, }, /* 308 */
+  {    19,      9,   -112, }, /* 309 */
+  {    19,      9,   -128, }, /* 310 */
+  {    19,      9,   -126, }, /* 311 */
+  {    27,      1,      0, }, /* 312 */
+  {     9,     27,      0, }, /* 313 */
+  {     9,     28,      0, }, /* 314 */
+  {    27,     11,      0, }, /* 315 */
+  {     9,      9,      0, }, /* 316 */
+  {     9,      5,      0, }, /* 317 */
+  {    19,      9,  -7517, }, /* 318 */
+  {    33,      9,  -8383, }, /* 319 */
+  {    33,      9,  -8262, }, /* 320 */
+  {    33,      9,     28, }, /* 321 */
+  {     9,      7,      0, }, /* 322 */
+  {    33,      5,    -28, }, /* 323 */
+  {     9,     14,     16, }, /* 324 */
+  {     9,     14,    -16, }, /* 325 */
+  {     9,     14,      0, }, /* 326 */
+  {     9,      9,      1, }, /* 327 */
+  {     9,     26,     26, }, /* 328 */
+  {     9,     26,    -26, }, /* 329 */
+  {     4,     26,      0, }, /* 330 */
+  {    17,      9,     48, }, /* 331 */
+  {    17,      5,    -48, }, /* 332 */
+  {    33,      9, -10743, }, /* 333 */
+  {    33,      9,  -3814, }, /* 334 */
+  {    33,      9, -10727, }, /* 335 */
+  {    33,      5, -10795, }, /* 336 */
+  {    33,      5, -10792, }, /* 337 */
+  {    10,      5,      0, }, /* 338 */
+  {    10,     26,      0, }, /* 339 */
+  {    10,     21,      0, }, /* 340 */
+  {    10,     15,      0, }, /* 341 */
+  {    16,      5,  -7264, }, /* 342 */
+  {    58,      7,      0, }, /* 343 */
+  {    58,      6,      0, }, /* 344 */
+  {    22,     26,      0, }, /* 345 */
+  {    22,      6,      0, }, /* 346 */
+  {    22,     14,      0, }, /* 347 */
+  {    26,      7,      0, }, /* 348 */
+  {    26,      6,      0, }, /* 349 */
+  {    29,      7,      0, }, /* 350 */
+  {    29,      6,      0, }, /* 351 */
+  {     3,      7,      0, }, /* 352 */
+  {    23,     26,      0, }, /* 353 */
+  {    22,      7,      0, }, /* 354 */
+  {    60,      7,      0, }, /* 355 */
+  {    60,      6,      0, }, /* 356 */
+  {    60,     26,      0, }, /* 357 */
+  {    48,      7,      0, }, /* 358 */
+  {    48,     10,      0, }, /* 359 */
+  {    48,     12,      0, }, /* 360 */
+  {    48,     26,      0, }, /* 361 */
+  {    64,      7,      0, }, /* 362 */
+  {    64,     21,      0, }, /* 363 */
+  {     9,      4,      0, }, /* 364 */
+  {     9,      3,      0, }, /* 365 */
+  {    25,     25,      0, }, /* 366 */
+  {    35,      7,      0, }, /* 367 */
+  {    19,     14,      0, }, /* 368 */
+  {    19,     15,      0, }, /* 369 */
+  {    19,     26,      0, }, /* 370 */
+  {    41,      7,      0, }, /* 371 */
+  {    41,     15,      0, }, /* 372 */
+  {    18,      7,      0, }, /* 373 */
+  {    18,     14,      0, }, /* 374 */
+  {    59,      7,      0, }, /* 375 */
+  {    59,     21,      0, }, /* 376 */
+  {    42,      7,      0, }, /* 377 */
+  {    42,     21,      0, }, /* 378 */
+  {    42,     14,      0, }, /* 379 */
+  {    13,      9,     40, }, /* 380 */
+  {    13,      5,    -40, }, /* 381 */
+  {    46,      7,      0, }, /* 382 */
+  {    44,      7,      0, }, /* 383 */
+  {    44,     13,      0, }, /* 384 */
+  {    11,      7,      0, }, /* 385 */
+  {    65,      7,      0, }, /* 386 */
+  {    65,     15,      0, }, /* 387 */
+  {    65,     21,      0, }, /* 388 */
+  {    30,      7,      0, }, /* 389 */
+  {    30,     12,      0, }, /* 390 */
+  {    30,     15,      0, }, /* 391 */
+  {    30,     21,      0, }, /* 392 */
+  {    62,      7,      0, }, /* 393 */
+  {    62,     14,      0, }, /* 394 */
+  {    62,     21,      0, }, /* 395 */
+  {     9,     10,      0, }, /* 396 */
+  {    19,     12,      0, }, /* 397 */
+};
+
+const uschar ucd_stage1[] = { /* 8704 bytes */
+  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, /* U+0000 */
+ 16, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, /* U+0800 */
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 40, 40, 41, 42, 43, 44, /* U+1000 */
+ 45, 46, 47, 48, 49, 16, 50, 16, 16, 16, 51, 52, 53, 54, 55, 56, /* U+1800 */
+ 57, 58, 59, 60, 61, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, /* U+2000 */
+ 72, 72, 61, 73, 61, 61, 74, 16, 75, 76, 77, 78, 79, 80, 81, 82, /* U+2800 */
+ 83, 84, 85, 86, 87, 88, 66, 66, 89, 89, 89, 89, 89, 89, 89, 89, /* U+3000 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+3800 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+4000 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 90, 89, 89, 89, 89, /* U+4800 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+5000 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+5800 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+6000 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+6800 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+7000 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+7800 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+8000 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+8800 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+9000 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, /* U+9800 */
+ 92, 93, 93, 93, 93, 93, 93, 93, 93, 94, 16, 16, 16, 16, 95, 16, /* U+A000 */
+ 96, 16, 16, 16, 16, 16, 16, 16, 97, 97, 97, 97, 97, 97, 97, 97, /* U+A800 */
+ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, /* U+B000 */
+ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, /* U+B800 */
+ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, /* U+C000 */
+ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, /* U+C800 */
+ 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, /* U+D000 */
+ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, /* U+D800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+E000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+E800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F000 */
+100,100, 89, 89,101,102,103,104,105,105,106,107,108,109,110,111, /* U+F800 */
+112,113,114,115, 16, 16,116,117,118,119, 16, 16, 16, 16, 16, 16, /* U+10000 */
+120, 16,121, 16,122, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+10800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+11000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+11800 */
+123,123,123,123,123,123,124, 16,125, 16, 16, 16, 16, 16, 16, 16, /* U+12000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+12800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+13000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+13800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+14000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+14800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+15000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+15800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+16000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+16800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+17000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+17800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+18000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+18800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+19000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+19800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1A000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1A800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1B000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1B800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1C000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1C800 */
+ 66,126,127,128,129, 16,130, 16,131,132,133,134,135,136,137,138, /* U+1D000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1D800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1E000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1E800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1F000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+1F800 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+20000 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+20800 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+21000 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+21800 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+22000 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+22800 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+23000 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+23800 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+24000 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+24800 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+25000 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+25800 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+26000 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+26800 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+27000 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+27800 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+28000 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+28800 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+29000 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, /* U+29800 */
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,139, 16, 16, /* U+2A000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2A800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2B000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2B800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2C000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2C800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2D000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2D800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2E000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2E800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2F000 */
+ 89, 89, 89, 89,140, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+2F800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+30000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+30800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+31000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+31800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+32000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+32800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+33000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+33800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+34000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+34800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+35000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+35800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+36000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+36800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+37000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+37800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+38000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+38800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+39000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+39800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3A000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3A800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3B000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3B800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3C000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3C800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3D000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3D800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3E000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3E800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3F000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+3F800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+40000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+40800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+41000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+41800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+42000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+42800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+43000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+43800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+44000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+44800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+45000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+45800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+46000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+46800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+47000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+47800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+48000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+48800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+49000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+49800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4A000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4A800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4B000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4B800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4C000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4C800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4D000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4D800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4E000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4E800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4F000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+4F800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+50000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+50800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+51000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+51800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+52000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+52800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+53000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+53800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+54000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+54800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+55000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+55800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+56000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+56800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+57000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+57800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+58000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+58800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+59000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+59800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5A000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5A800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5B000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5B800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5C000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5C800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5D000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5D800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5E000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5E800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5F000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+5F800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+60000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+60800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+61000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+61800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+62000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+62800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+63000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+63800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+64000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+64800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+65000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+65800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+66000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+66800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+67000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+67800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+68000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+68800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+69000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+69800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6A000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6A800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6B000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6B800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6C000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6C800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6D000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6D800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6E000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6E800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6F000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+6F800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+70000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+70800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+71000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+71800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+72000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+72800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+73000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+73800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+74000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+74800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+75000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+75800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+76000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+76800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+77000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+77800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+78000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+78800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+79000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+79800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7A000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7A800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7B000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7B800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7C000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7C800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7D000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7D800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7E000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7E800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7F000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+7F800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+80000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+80800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+81000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+81800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+82000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+82800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+83000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+83800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+84000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+84800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+85000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+85800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+86000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+86800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+87000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+87800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+88000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+88800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+89000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+89800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8A000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8A800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8B000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8B800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8C000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8C800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8D000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8D800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8E000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8E800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8F000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+8F800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+90000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+90800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+91000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+91800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+92000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+92800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+93000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+93800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+94000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+94800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+95000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+95800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+96000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+96800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+97000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+97800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+98000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+98800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+99000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+99800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9A000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9A800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9B000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9B800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9C000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9C800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9D000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9D800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9E000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9E800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9F000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+9F800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A0000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A0800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A1000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A1800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A2000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A2800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A3000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A3800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A4000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A4800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A5000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A5800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A6000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A6800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A7000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A7800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A8000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A8800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A9000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+A9800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AA000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AA800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AB000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AB800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AC000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AC800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AD000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AD800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AE000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AE800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AF000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+AF800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B0000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B0800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B1000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B1800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B2000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B2800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B3000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B3800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B4000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B4800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B5000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B5800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B6000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B6800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B7000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B7800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B8000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B8800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B9000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+B9800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BA000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BA800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BB000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BB800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BC000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BC800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BD000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BD800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BE000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BE800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BF000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+BF800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C0000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C0800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C1000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C1800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C2000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C2800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C3000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C3800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C4000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C4800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C5000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C5800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C6000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C6800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C7000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C7800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C8000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C8800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C9000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+C9800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CA000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CA800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CB000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CB800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CC000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CC800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CD000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CD800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CE000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CE800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CF000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+CF800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D0000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D0800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D1000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D1800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D2000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D2800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D3000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D3800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D4000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D4800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D5000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D5800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D6000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D6800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D7000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D7800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D8000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D8800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D9000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+D9800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DA000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DA800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DB000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DB800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DC000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DC800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DD000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DD800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DE000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DE800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DF000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+DF800 */
+141, 16,142,143, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E0000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E0800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E1000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E1800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E2000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E2800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E3000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E3800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E4000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E4800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E5000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E5800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E6000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E6800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E7000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E7800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E8000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E8800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E9000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+E9800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EA000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EA800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EB000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EB800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EC000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EC800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+ED000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+ED800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EE000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EE800 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EF000 */
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, /* U+EF800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F0000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F0800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F1000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F1800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F2000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F2800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F3000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F3800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F4000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F4800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F5000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F5800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F6000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F6800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F7000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F7800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F8000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F8800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F9000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+F9800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+FA000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+FA800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+FB000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+FB800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+FC000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+FC800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+FD000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+FD800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+FE000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+FE800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+FF000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,144, /* U+FF800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+100000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+100800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+101000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+101800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+102000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+102800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+103000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+103800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+104000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+104800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+105000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+105800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+106000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+106800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+107000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+107800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+108000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+108800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+109000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+109800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+10A000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+10A800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+10B000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+10B800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+10C000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+10C800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+10D000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+10D800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+10E000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+10E800 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, /* U+10F000 */
+100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,144, /* U+10F800 */
+};
+
+const pcre_uint16 ucd_stage2[] = { /* 37120 bytes, block = 128 */
+/* block 0 */
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  1,  2,  2,  2,  3,  2,  2,  2,  4,  5,  2,  6,  2,  7,  2,  2,
+  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  2,  2,  6,  6,  6,  2,
+  2,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  4,  2,  5, 10, 11,
+ 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,  4,  6,  5,  6,  0,
+
+/* block 1 */
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+  1,  2,  3,  3,  3,  3, 13, 13, 10, 13, 14, 15,  6, 16, 13, 10,
+ 13,  6, 17, 17, 10, 18, 13,  2, 10, 17, 14, 19, 17, 17, 17,  2,
+  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+  9,  9,  9,  9,  9,  9,  9,  6,  9,  9,  9,  9,  9,  9,  9, 14,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12,  6, 12, 12, 12, 12, 12, 12, 12, 20,
+
+/* block 2 */
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 23, 24, 21, 22, 21, 22, 21, 22, 14, 21, 22, 21, 22, 21, 22, 21,
+ 22, 21, 22, 21, 22, 21, 22, 21, 22, 14, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 25, 21, 22, 21, 22, 21, 22, 26,
+
+/* block 3 */
+ 27, 28, 21, 22, 21, 22, 29, 21, 22, 30, 30, 21, 22, 14, 31, 32,
+ 33, 21, 22, 30, 34, 35, 36, 37, 21, 22, 38, 14, 36, 39, 40, 41,
+ 21, 22, 21, 22, 21, 22, 42, 21, 22, 42, 14, 14, 21, 22, 42, 21,
+ 22, 43, 43, 21, 22, 21, 22, 44, 21, 22, 14, 45, 21, 22, 14, 46,
+ 45, 45, 45, 45, 47, 48, 49, 47, 48, 49, 47, 48, 49, 21, 22, 21,
+ 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 50, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 14, 47, 48, 49, 21, 22, 51, 52, 21, 22, 21, 22, 21, 22, 21, 22,
+
+/* block 4 */
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 53, 14, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 14, 14, 14, 14, 14, 14, 54, 21, 22, 55, 56, 14,
+ 14, 21, 22, 57, 58, 59, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 14, 14, 14, 60, 61, 14, 62, 62, 14, 63, 14, 64, 14, 14, 14, 14,
+ 62, 14, 14, 65, 14, 14, 14, 14, 66, 67, 14, 68, 14, 14, 14, 67,
+ 14, 14, 69, 14, 14, 70, 14, 14, 14, 14, 14, 14, 14, 71, 14, 14,
+
+/* block 5 */
+ 72, 14, 14, 72, 14, 14, 14, 14, 72, 73, 74, 74, 75, 14, 14, 14,
+ 14, 14, 76, 14, 45, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 10, 10, 10, 10, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 77, 77, 77, 77, 77, 10, 10, 10, 10, 10, 10, 10, 10, 10, 78, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+
+/* block 6 */
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 80, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 81, 81, 81, 81, 82, 82, 81, 81, 81, 81, 83, 84, 84, 84,  2, 81,
+
+/* block 7 */
+ 81, 81, 81, 81, 82, 82, 85,  2, 86, 86, 86, 81, 87, 81, 88, 88,
+ 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
+ 90, 90, 81, 90, 90, 90, 90, 90, 90, 90, 90, 90, 91, 92, 92, 92,
+ 89, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 94, 93, 93, 93, 93, 93, 93, 93, 93, 93, 95, 96, 96, 81,
+ 97, 98, 99, 99, 99,100,101, 89,102,103,102,103,102,103,102,103,
+102,103,104,105,104,105,104,105,104,105,104,105,104,105,104,105,
+106,107,108, 89,109,110,111,102,103,112,102,103, 89,113,113,113,
+
+/* block 8 */
+114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,
+115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,
+115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,
+116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,
+116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,
+117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,
+118,119,118,119,118,119,118,119,118,119,118,119,118,119,118,119,
+118,119,118,119,118,119,118,119,118,119,118,119,118,119,118,119,
+
+/* block 9 */
+118,119,120,121,121,121,121, 81,122,122,118,119,118,119,118,119,
+118,119,118,119,118,119,118,119,118,119,118,119,118,119,118,119,
+118,119,118,119,118,119,118,119,118,119,118,119,118,119,118,119,
+118,119,118,119,118,119,118,119,118,119,118,119,118,119,118,119,
+123,118,119,118,119,118,119,118,119,118,119,118,119,118,119,124,
+118,119,118,119,118,119,118,119,118,119,118,119,118,119,118,119,
+118,119,118,119,118,119,118,119,118,119,118,119,118,119,118,119,
+118,119,118,119,118,119,118,119,118,119,118,119,118,119,118,119,
+
+/* block 10 */
+118,119,118,119,118,119,118,119,118,119,118,119,118,119,118,119,
+118,119,118,119, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,
+125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,
+125,125,125,125,125,125,125, 81, 81,126,127,127,127,127,127,127,
+ 81,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
+128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
+
+/* block 11 */
+128,128,128,128,128,128,128,129, 81,  2,130, 81, 81, 81, 81, 81,
+ 81,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,
+131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,
+131,131,131,131,131,131,131,131,131,131,131,131,131,131,132,131,
+132,131,131,132,131,131,132,131, 81, 81, 81, 81, 81, 81, 81, 81,
+133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,
+133,133,133,133,133,133,133,133,133,133,133, 81, 81, 81, 81, 81,
+133,133,133,132,132, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 12 */
+ 16, 16, 16, 16, 81, 81, 81, 81, 81, 81, 81,134,  2,135,136,136,
+137,137,137,137,137,137, 81, 81, 81, 81, 81,  2, 81, 81,135,  2,
+ 81,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138, 81, 81, 81, 81, 81,
+ 78,138,138,138,138,138,138,138,138,138,138, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79,137,137,137,137,137,137,137,137,137, 81,
+  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,135,135,135,135,138,138,
+ 79,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+
+/* block 13 */
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,135,138,137,137,137,137,137,137,137, 16,139,137,
+137,137,137,137,137,140,140,137,137,136,137,137,137,137,138,138,
+141,141,141,141,141,141,141,141,141,141,138,138,138,136,136,138,
+
+/* block 14 */
+142,142,142,142,142,142,142,142,142,142,142,142,142,142, 81,143,
+144,145,144,144,144,144,144,144,144,144,144,144,144,144,144,144,
+144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,
+145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,
+145,145,145,145,145,145,145,145,145,145,145, 81, 81,144,144,144,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 15 */
+146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,
+146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,
+146,146,146,146,146,146,147,147,147,147,147,147,147,147,147,147,
+147,146, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+148,148,148,148,148,148,148,148,148,148,149,149,149,149,149,149,
+149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,
+149,149,149,149,149,149,149,149,149,149,149,150,150,150,150,150,
+150,150,150,150,151,151,152,153,153,153,151, 81, 81, 81, 81, 81,
+
+/* block 16 */
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 17 */
+ 81,154,154,155,156,156,156,156,156,156,156,156,156,156,156,156,
+156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,
+156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,
+156,156,156,156,156,156,156,156,156,156, 81, 81,154,156,155,155,
+155,154,154,154,154,154,154,154,154,155,155,155,155,154, 81, 81,
+156,154,154,154,154, 81, 81, 81,156,156,156,156,156,156,156,156,
+156,156,154,154,  2,  2,157,157,157,157,157,157,157,157,157,157,
+  2, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,156,156,156,156,156,
+
+/* block 18 */
+ 81,158,159,159, 81,160,160,160,160,160,160,160,160, 81, 81,160,
+160, 81, 81,160,160,160,160,160,160,160,160,160,160,160,160,160,
+160,160,160,160,160,160,160,160,160, 81,160,160,160,160,160,160,
+160, 81,160, 81, 81, 81,160,160,160,160, 81, 81,158,160,159,159,
+159,158,158,158,158, 81, 81,159,159, 81, 81,159,159,158,160, 81,
+ 81, 81, 81, 81, 81, 81, 81,159, 81, 81, 81, 81,160,160, 81,160,
+160,160,158,158, 81, 81,161,161,161,161,161,161,161,161,161,161,
+160,160,162,162,163,163,163,163,163,163,164, 81, 81, 81, 81, 81,
+
+/* block 19 */
+ 81,165,165,166, 81,167,167,167,167,167,167, 81, 81, 81, 81,167,
+167, 81, 81,167,167,167,167,167,167,167,167,167,167,167,167,167,
+167,167,167,167,167,167,167,167,167, 81,167,167,167,167,167,167,
+167, 81,167,167, 81,167,167, 81,167,167, 81, 81,165, 81,166,166,
+166,165,165, 81, 81, 81, 81,165,165, 81, 81,165,165,165, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81,167,167,167,167, 81,167, 81,
+ 81, 81, 81, 81, 81, 81,168,168,168,168,168,168,168,168,168,168,
+165,165,167,167,167, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 20 */
+ 81,169,169,170, 81,171,171,171,171,171,171,171,171,171, 81,171,
+171,171, 81,171,171,171,171,171,171,171,171,171,171,171,171,171,
+171,171,171,171,171,171,171,171,171, 81,171,171,171,171,171,171,
+171, 81,171,171, 81,171,171,171,171,171, 81, 81,169,171,170,170,
+170,169,169,169,169,169, 81,169,169,170, 81,170,170,169, 81, 81,
+171, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+171,171,169,169, 81, 81,172,172,172,172,172,172,172,172,172,172,
+ 81,173, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 21 */
+ 81,174,175,175, 81,176,176,176,176,176,176,176,176, 81, 81,176,
+176, 81, 81,176,176,176,176,176,176,176,176,176,176,176,176,176,
+176,176,176,176,176,176,176,176,176, 81,176,176,176,176,176,176,
+176, 81,176,176, 81,176,176,176,176,176, 81, 81,174,176,175,174,
+175,174,174,174, 81, 81, 81,175,175, 81, 81,175,175,174, 81, 81,
+ 81, 81, 81, 81, 81, 81,174,175, 81, 81, 81, 81,176,176, 81,176,
+176,176, 81, 81, 81, 81,177,177,177,177,177,177,177,177,177,177,
+178,176, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 22 */
+ 81, 81,179,180, 81,180,180,180,180,180,180, 81, 81, 81,180,180,
+180, 81,180,180,180,180, 81, 81, 81,180,180, 81,180, 81,180,180,
+ 81, 81, 81,180,180, 81, 81, 81,180,180,180, 81, 81, 81,180,180,
+180,180,180,180,180,180,180,180,180,180, 81, 81, 81, 81,181,181,
+179,181,181, 81, 81, 81,181,181,181, 81,181,181,181,179, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81,181, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81,182,182,182,182,182,182,182,182,182,182,
+183,183,183,184,184,184,184,184,184,185,184, 81, 81, 81, 81, 81,
+
+/* block 23 */
+ 81,186,186,186, 81,187,187,187,187,187,187,187,187, 81,187,187,
+187, 81,187,187,187,187,187,187,187,187,187,187,187,187,187,187,
+187,187,187,187,187,187,187,187,187, 81,187,187,187,187,187,187,
+187,187,187,187, 81,187,187,187,187,187, 81, 81, 81, 81,188,188,
+188,186,186,186,186, 81,188,188,188, 81,188,188,188,188, 81, 81,
+ 81, 81, 81, 81, 81,188,188, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+187,187, 81, 81, 81, 81,189,189,189,189,189,189,189,189,189,189,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 24 */
+ 81, 81,190,190, 81,191,191,191,191,191,191,191,191, 81,191,191,
+191, 81,191,191,191,191,191,191,191,191,191,191,191,191,191,191,
+191,191,191,191,191,191,191,191,191, 81,191,191,191,191,191,191,
+191,191,191,191, 81,191,191,191,191,191, 81, 81,192,191,190,192,
+190,190,190,190,190, 81,192,190,190, 81,190,190,192,192, 81, 81,
+ 81, 81, 81, 81, 81,190,190, 81, 81, 81, 81, 81, 81, 81,191, 81,
+191,191,192,192, 81, 81,193,193,193,193,193,193,193,193,193,193,
+ 81,194,194, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 25 */
+ 81, 81,195,195, 81,196,196,196,196,196,196,196,196, 81,196,196,
+196, 81,196,196,196,196,196,196,196,196,196,196,196,196,196,196,
+196,196,196,196,196,196,196,196,196, 81,196,196,196,196,196,196,
+196,196,196,196,196,196,196,196,196,196, 81, 81, 81, 81,195,195,
+195,197,197,197, 81, 81,195,195,195, 81,195,195,195,197, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81,195, 81, 81, 81, 81, 81, 81, 81, 81,
+196,196, 81, 81, 81, 81,198,198,198,198,198,198,198,198,198,198,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 26 */
+ 81, 81,199,199, 81,200,200,200,200,200,200,200,200,200,200,200,
+200,200,200,200,200,200,200, 81, 81, 81,200,200,200,200,200,200,
+200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,
+200,200, 81,200,200,200,200,200,200,200,200,200, 81,200, 81, 81,
+200,200,200,200,200,200,200, 81, 81, 81,201, 81, 81, 81, 81,199,
+199,199,201,201,201, 81,201, 81,199,199,199,199,199,199,199,199,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81,199,199,202, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 27 */
+ 81,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,
+203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,
+203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,
+203,204,203,203,204,204,204,204,204,204,204, 81, 81, 81, 81,  3,
+203,203,203,203,203,203,205,204,204,204,204,204,204,204,204,206,
+207,207,207,207,207,207,207,207,207,207,206,206, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 28 */
+ 81,208,208, 81,208, 81, 81,208,208, 81,208, 81, 81,208, 81, 81,
+ 81, 81, 81, 81,208,208,208,208, 81,208,208,208,208,208,208,208,
+ 81,208,208,208, 81,208, 81,208, 81, 81,208,208, 81,208,208,208,
+208,209,208,208,209,209,209,209,209,209, 81,209,209,208, 81, 81,
+208,208,208,208,208, 81,210, 81,209,209,209,209,209,209, 81, 81,
+211,211,211,211,211,211,211,211,211,211, 81, 81,208,208, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 29 */
+212,213,213,213,214,214,214,214,214,214,214,214,214,214,214,214,
+214,214,214,213,213,213,213,213,215,215,213,213,213,213,213,213,
+216,216,216,216,216,216,216,216,216,216,217,217,217,217,217,217,
+217,217,217,217,213,215,213,215,213,215,218,219,218,219,220,220,
+212,212,212,212,212,212,212,212, 81,212,212,212,212,212,212,212,
+212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,
+212,212,212,212,212,212,212,212,212,212,212, 81, 81, 81, 81, 81,
+ 81,215,215,215,215,215,215,215,215,215,215,215,215,215,215,220,
+
+/* block 30 */
+215,215,215,215,215,214,215,215,212,212,212,212, 81, 81, 81, 81,
+215,215,215,215,215,215,215,215, 81,215,215,215,215,215,215,215,
+215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,
+215,215,215,215,215,215,215,215,215,215,215,215,215, 81,213,213,
+213,213,213,213,213,213,215,213,213,213,213,213,213, 81, 81,213,
+214,214, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 31 */
+221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,
+221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,
+221,221, 81,221,221,221,221,221, 81,221,221, 81,222,223,223,223,
+223,222,223, 81, 81, 81,223,223,222,223, 81, 81, 81, 81, 81, 81,
+224,224,224,224,224,224,224,224,224,224,225,225,225,225,225,225,
+221,221,221,221,221,221,222,222,223,223, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 32 */
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+226,226,226,226,226,226,226,226,226,226,226,226,226,226,226,226,
+226,226,226,226,226,226,226,226,226,226,226,226,226,226,226,226,
+226,226,226,226,226,226, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+227,227,227,227,227,227,227,227,227,227,227,227,227,227,227,227,
+227,227,227,227,227,227,227,227,227,227,227,227,227,227,227,227,
+227,227,227,227,227,227,227,227,227,227,227,  2,228, 81, 81, 81,
+
+/* block 33 */
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229, 81, 81, 81, 81, 81,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+
+/* block 34 */
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229, 81, 81, 81, 81, 81,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229, 81, 81, 81, 81, 81, 81,
+
+/* block 35 */
+230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,
+230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,
+230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,
+230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,
+230,230,230,230,230,230,230,230,230, 81,230,230,230,230, 81, 81,
+230,230,230,230,230,230,230, 81,230, 81,230,230,230,230, 81, 81,
+230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,
+230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,
+
+/* block 36 */
+230,230,230,230,230,230,230,230,230, 81,230,230,230,230, 81, 81,
+230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,
+230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,
+230, 81,230,230,230,230, 81, 81,230,230,230,230,230,230,230, 81,
+230, 81,230,230,230,230, 81, 81,230,230,230,230,230,230,230,230,
+230,230,230,230,230,230,230, 81,230,230,230,230,230,230,230,230,
+230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,
+230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,
+
+/* block 37 */
+230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,
+230, 81,230,230,230,230, 81, 81,230,230,230,230,230,230,230,230,
+230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,
+230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,
+230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,
+230,230,230,230,230,230,230,230,230,230,230, 81, 81, 81, 81,231,
+232,233,233,233,233,233,233,233,233,234,234,234,234,234,234,234,
+234,234,234,234,234,234,234,234,234,234,234,234,234, 81, 81, 81,
+
+/* block 38 */
+230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,
+232,232,232,232,232,232,232,232,232,232, 81, 81, 81, 81, 81, 81,
+235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,
+235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,
+235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,
+235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,
+235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,
+235,235,235,235,235, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 39 */
+ 81,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+
+/* block 40 */
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+
+/* block 41 */
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
+236,236,236,236,236,236,236,236,236,236,236,236,236,237,237,236,
+236,236,236,236,236,236,236, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 42 */
+238,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,
+239,239,239,239,239,239,239,239,239,239,239,240,241, 81, 81, 81,
+242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,
+242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,
+242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,
+242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,
+242,242,242,242,242,242,242,242,242,242,242,  2,  2,  2,243,243,
+243, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 43 */
+244,244,244,244,244,244,244,244,244,244,244,244,244, 81,244,244,
+244,244,245,245,245, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,
+246,246,247,247,247,  2,  2, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,
+248,248,249,249, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+250,250,250,250,250,250,250,250,250,250,250,250,250, 81,250,250,
+250, 81,251,251, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 44 */
+252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,
+252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,
+252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,
+252,252,252,252,253,253,254,255,255,255,255,255,255,255,254,254,
+254,254,254,254,254,254,255,254,254,255,255,255,255,255,255,255,
+255,255,255,255,256,256,256,257,256,256,256,258,252,255, 81, 81,
+259,259,259,259,259,259,259,259,259,259, 81, 81, 81, 81, 81, 81,
+260,260,260,260,260,260,260,260,260,260, 81, 81, 81, 81, 81, 81,
+
+/* block 45 */
+261,261,  2,  2,261,  2,262,261,261,261,261,263,263,263,264, 81,
+265,265,265,265,265,265,265,265,265,265, 81, 81, 81, 81, 81, 81,
+266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,
+266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,
+266,266,266,267,266,266,266,266,266,266,266,266,266,266,266,266,
+266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,
+266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,
+266,266,266,266,266,266,266,266, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 46 */
+266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,
+266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,
+266,266,266,266,266,266,266,266,266,263, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 47 */
+268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,
+268,268,268,268,268,268,268,268,268,268,268,268,268, 81, 81, 81,
+269,269,269,270,270,270,270,269,269,270,270,270, 81, 81, 81, 81,
+270,270,269,270,270,270,270,270,270,269,269,269, 81, 81, 81, 81,
+271, 81, 81, 81,272,272,273,273,273,273,273,273,273,273,273,273,
+274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,
+274,274,274,274,274,274,274,274,274,274,274,274,274,274, 81, 81,
+274,274,274,274,274, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 48 */
+275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,
+275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,
+275,275,275,275,275,275,275,275,275,275, 81, 81, 81, 81, 81, 81,
+276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,
+276,275,275,275,275,275,275,275,276,276, 81, 81, 81, 81, 81, 81,
+277,277,277,277,277,277,277,277,277,277, 81, 81, 81, 81,278,278,
+279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,
+279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,
+
+/* block 49 */
+280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,
+280,280,280,280,280,280,280,281,281,282,282,282, 81, 81,283,283,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 50 */
+284,284,284,284,285,286,286,286,286,286,286,286,286,286,286,286,
+286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,
+286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,
+286,286,286,286,284,285,284,284,284,284,284,285,284,285,285,285,
+285,285,284,285,285,286,286,286,286,286,286,286, 81, 81, 81, 81,
+287,287,287,287,287,287,287,287,287,287,288,288,288,288,288,288,
+288,289,289,289,289,289,289,289,289,289,289,284,284,284,284,284,
+284,284,284,284,289,289,289,289,289,289,289,289,289, 81, 81, 81,
+
+/* block 51 */
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 89, 89, 89, 89, 89,290, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 83, 83, 83,
+ 83, 83, 14, 14, 14, 14, 89, 89, 89, 89, 89, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14,291, 14, 14, 14, 14,292, 14, 14,
+
+/* block 52 */
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 83,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 79, 79,
+
+/* block 53 */
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+
+/* block 54 */
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 14, 14, 14, 14, 14,293, 81, 81, 81, 81,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22,
+ 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 81, 81, 81, 81, 81, 81,
+
+/* block 55 */
+294,294,294,294,294,294,294,294,295,295,295,295,295,295,295,295,
+294,294,294,294,294,294, 81, 81,295,295,295,295,295,295, 81, 81,
+294,294,294,294,294,294,294,294,295,295,295,295,295,295,295,295,
+294,294,294,294,294,294,294,294,295,295,295,295,295,295,295,295,
+294,294,294,294,294,294, 81, 81,295,295,295,295,295,295, 81, 81,
+ 89,294, 89,294, 89,294, 89,294, 81,295, 81,295, 81,295, 81,295,
+294,294,294,294,294,294,294,294,295,295,295,295,295,295,295,295,
+296,296,297,297,297,297,298,298,299,299,300,300,301,301, 81, 81,
+
+/* block 56 */
+294,294,294,294,294,294,294,294,302,302,302,302,302,302,302,302,
+294,294,294,294,294,294,294,294,302,302,302,302,302,302,302,302,
+294,294,294,294,294,294,294,294,302,302,302,302,302,302,302,302,
+294,294, 89,303, 89, 81, 89, 89,295,295,304,304,305, 82,306, 82,
+ 82, 82, 89,303, 89, 81, 89, 89,307,307,307,307,305, 82, 82, 82,
+294,294, 89, 89, 81, 81, 89, 89,295,295,308,308, 81, 82, 82, 82,
+294,294, 89, 89, 89,108, 89, 89,295,295,309,309,112, 82, 82, 82,
+ 81, 81, 89,303, 89, 81, 89, 89,310,310,311,311,305, 82, 82, 81,
+
+/* block 57 */
+  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 16,312,312, 16, 16,
+  7,  7,  7,  7,  7,  7,  2,  2, 15, 19,  4, 15, 15, 19,  4, 15,
+  2,  2,  2,  2,  2,  2,  2,  2,313,314, 16, 16, 16, 16, 16,  1,
+  2,  2,  2,  2,  2,  2,  2,  2,  2, 15, 19,  2,  2,  2,  2, 11,
+ 11,  2,  2,  2,  6,  4,  5,  2,  2,  2,  2,  2,  2,  2,  2,  2,
+  2,  2,  6,  2, 11,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  1,
+ 16, 16, 16, 16, 81, 81, 81, 81, 81, 81, 16, 16, 16, 16, 16, 16,
+ 17, 14, 81, 81, 17, 17, 17, 17, 17, 17,  6,  6,  6,  4,  5, 14,
+
+/* block 58 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,  6,  6,  6,  4,  5, 81,
+ 77, 77, 77, 77, 77, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
+  3,  3,  3,  3,  3,  3, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,315,315,315,
+315, 79,315,315,315, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 59 */
+ 13, 13,316, 13, 13, 13, 13,316, 13, 13,317,316,316,316,317,317,
+316,316,316,317, 13,316, 13, 13, 13,316,316,316,316,316, 13, 13,
+ 13, 13, 13, 13,316, 13,318, 13,316, 13,319,320,316,316, 13,317,
+316,316,321,316,317,322,322,322,322,317, 13, 13,317,317,316,316,
+  6,  6,  6,  6,  6,316,317,317,317,317, 13,  6, 13, 13,323, 81,
+ 81, 81, 81, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+324,324,324,324,324,324,324,324,324,324,324,324,324,324,324,324,
+325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,
+
+/* block 60 */
+326,326,326,327, 22, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+  6,  6,  6,  6,  6, 13, 13, 13, 13, 13,  6,  6, 13, 13, 13, 13,
+  6, 13, 13,  6, 13, 13,  6, 13, 13, 13, 13, 13, 13, 13,  6, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  6,  6,
+ 13, 13,  6, 13,  6, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+
+/* block 61 */
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+
+/* block 62 */
+ 13, 13, 13, 13, 13, 13, 13, 13,  6,  6,  6,  6, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+  6,  6, 13, 13, 13, 13, 13, 13, 13,  4,  5, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  6, 13, 13, 13,
+
+/* block 63 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  6,  6,  6,  6,
+  6,  6, 13, 13, 13, 13, 13, 13, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 64 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+
+/* block 65 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13,328,328,328,328,328,328,328,328,328,328,
+328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,
+329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,
+329,329,329,329,329,329,329,329,329,329, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+
+/* block 66 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+
+/* block 67 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13,  6, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13,  6, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13,  6,  6,  6,  6,  6,  6,  6,  6,
+
+/* block 68 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  6,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+
+/* block 69 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 81, 81, 81,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 70 */
+ 81, 13, 13, 13, 13, 81, 13, 13, 13, 13, 81, 81, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 81, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 81, 13, 81, 13,
+ 13, 13, 13, 81, 81, 81, 13, 81, 13, 13, 13, 13, 13, 13, 13, 81,
+ 81, 13, 13, 13, 13, 13, 13, 13,  4,  5,  4,  5,  4,  5,  4,  5,
+  4,  5,  4,  5,  4,  5, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+
+/* block 71 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 13, 81, 81, 81, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 81, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 81,
+  6,  6,  6,  6,  6,  4,  5,  6,  6,  6,  6, 81, 81, 81, 81, 81,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  4,  5,  4,  5,  4,  5, 81, 81, 81, 81,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+
+/* block 72 */
+330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,
+330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,
+330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,
+330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,
+330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,
+330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,
+330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,
+330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,
+
+/* block 73 */
+  6,  6,  6,  4,  5,  4,  5,  4,  5,  4,  5,  4,  5,  4,  5,  4,
+  5,  4,  5,  4,  5,  4,  5,  4,  5,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  4,  5,  4,  5,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
+  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  4,  5,  6,  6,
+
+/* block 74 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 81, 81, 81, 81, 81,
+ 13, 13, 13, 13, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 75 */
+331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,
+331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,
+331,331,331,331,331,331,331,331,331,331,331,331,331,331,331, 81,
+332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,
+332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,
+332,332,332,332,332,332,332,332,332,332,332,332,332,332,332, 81,
+ 21, 22,333,334,335,336,337, 21, 22, 21, 22, 21, 22, 81, 81, 81,
+ 81, 81, 81, 81, 14, 21, 22, 14, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 76 */
+104,105,104,105,104,105,104,105,104,105,104,105,104,105,104,105,
+104,105,104,105,104,105,104,105,104,105,104,105,104,105,104,105,
+104,105,104,105,104,105,104,105,104,105,104,105,104,105,104,105,
+104,105,104,105,104,105,104,105,104,105,104,105,104,105,104,105,
+104,105,104,105,104,105,104,105,104,105,104,105,104,105,104,105,
+104,105,104,105,104,105,104,105,104,105,104,105,104,105,104,105,
+104,105,104,105,338,339,339,339,339,339,339, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81,340,340,340,340,341,340,340,
+
+/* block 77 */
+342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,
+342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,
+342,342,342,342,342,342, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,
+343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,
+343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,
+343,343,343,343,343,343, 81, 81, 81, 81, 81, 81, 81, 81, 81,344,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 78 */
+230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,
+230,230,230,230,230,230,230, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+230,230,230,230,230,230,230, 81,230,230,230,230,230,230,230, 81,
+230,230,230,230,230,230,230, 81,230,230,230,230,230,230,230, 81,
+230,230,230,230,230,230,230, 81,230,230,230,230,230,230,230, 81,
+230,230,230,230,230,230,230, 81,230,230,230,230,230,230,230, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 79 */
+  2,  2, 15, 19, 15, 19,  2,  2,  2, 15, 19,  2, 15, 19,  2,  2,
+  2,  2,  2,  2,  2,  2,  2,  7, 81, 81, 81, 81, 15, 19, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 80 */
+345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,
+345,345,345,345,345,345,345,345,345,345, 81,345,345,345,345,345,
+345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,
+345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,
+345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,
+345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,
+345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,
+345,345,345,345, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 81 */
+345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,
+345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,
+345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,
+345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,
+345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,
+345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,
+345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,
+345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,
+
+/* block 82 */
+345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,
+345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,
+345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,
+345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,
+345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,
+345,345,345,345,345,345, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 81, 81, 81, 81,
+
+/* block 83 */
+  1,  2,  2,  2, 13,346,322,347,  4,  5,  4,  5,  4,  5,  4,  5,
+  4,  5, 13, 13,  4,  5,  4,  5,  4,  5,  4,  5,  7,  4,  5,  5,
+ 13,347,347,347,347,347,347,347,347,347, 79, 79, 79, 79, 79, 79,
+  7, 78, 78, 78, 78, 78, 13, 13,347,347,347,346,322,  2, 13, 13,
+ 81,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,
+348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,
+348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,
+348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,
+
+/* block 84 */
+348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,
+348,348,348,348,348,348,348, 81, 81, 79, 79, 10, 10,349,349,348,
+  7,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,
+350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,
+350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,
+350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,
+350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,
+350,350,350,350,350,350,350,350,350,350,350,  2, 78,351,351,350,
+
+/* block 85 */
+ 81, 81, 81, 81, 81,352,352,352,352,352,352,352,352,352,352,352,
+352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,
+352,352,352,352,352,352,352,352,352,352,352,352,352, 81, 81, 81,
+ 81,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+
+/* block 86 */
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, 81,
+ 13, 13, 17, 17, 17, 17, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,
+352,352,352,352,352,352,352,352, 81, 81, 81, 81, 81, 81, 81, 81,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,
+
+/* block 87 */
+353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,
+353,353,353,353,353,353,353,353,353,353,353,353,353,353,353, 81,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 13, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,
+353,353,353,353,353,353,353,353,353,353,353,353,353,353, 13, 13,
+
+/* block 88 */
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 81,
+
+/* block 89 */
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+
+/* block 90 */
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+
+/* block 91 */
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 92 */
+355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,
+355,355,355,355,355,356,355,355,355,355,355,355,355,355,355,355,
+355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,
+355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,
+355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,
+355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,
+355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,
+355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,
+
+/* block 93 */
+355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,
+355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,
+355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,
+355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,
+355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,
+355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,
+355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,
+355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,
+
+/* block 94 */
+355,355,355,355,355,355,355,355,355,355,355,355,355, 81, 81, 81,
+357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,
+357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,
+357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,
+357,357,357,357,357,357,357, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 95 */
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 78, 78, 78, 78, 81, 81, 81, 81, 81,
+ 10, 10, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 96 */
+358,358,359,358,358,358,360,358,358,358,358,360,358,358,358,358,
+358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,
+358,358,358,359,359,360,360,359,361,361,361,361, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,
+362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,
+362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,
+362,362,362,362,363,363,363,363, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 97 */
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+
+/* block 98 */
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 99 */
+364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,
+364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,
+364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,
+364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,
+364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,
+364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,
+364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,
+364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,
+
+/* block 100 */
+365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,
+365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,
+365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,
+365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,
+365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,
+365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,
+365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,
+365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,
+
+/* block 101 */
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354, 81, 81,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354, 81, 81, 81, 81, 81,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+
+/* block 102 */
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 103 */
+ 14, 14, 14, 14, 14, 14, 14, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81,129,129,129,129,129, 81, 81, 81, 81, 81,133,131,133,
+133,133,133,133,133,133,133,133,133,366,133,133,133,133,133,133,
+133,133,133,133,133,133,133, 81,133,133,133,133,133, 81,133, 81,
+133,133, 81,133,133, 81,133,133,133,133,133,133,133,133,133,133,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+
+/* block 104 */
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+
+/* block 105 */
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+
+/* block 106 */
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,  4,  5,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+
+/* block 107 */
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+ 81, 81,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+138,138,138,138,138,138,138,138,138,138,138,138,134, 13, 81, 81,
+
+/* block 108 */
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+  2,  2,  2,  2,  2,  2,  2,  4,  5,  2, 81, 81, 81, 81, 81, 81,
+ 79, 79, 79, 79, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+  2,  7,  7, 11, 11,  4,  5,  4,  5,  4,  5,  4,  5,  4,  5,  4,
+  5,  4,  5,  4,  5,  2,  2,  4,  5,  2,  2,  2,  2, 11, 11, 11,
+  2,  2,  2, 81,  2,  2,  2,  2,  7,  4,  5,  4,  5,  4,  5,  2,
+  2,  2,  6,  7,  6,  6,  6, 81,  2,  3,  2,  2, 81, 81, 81, 81,
+138,138,138,138,138, 81,138,138,138,138,138,138,138,138,138,138,
+
+/* block 109 */
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,
+138,138,138,138,138,138,138,138,138,138,138,138,138, 81, 81, 16,
+
+/* block 110 */
+ 81,  2,  2,  2,  3,  2,  2,  2,  4,  5,  2,  6,  2,  7,  2,  2,
+  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  2,  2,  6,  6,  6,  2,
+  2,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  4,  2,  5, 10, 11,
+ 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,  4,  6,  5,  6,  4,
+  5,  2,  4,  5,  2,  2,350,350,350,350,350,350,350,350,350,350,
+ 78,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,
+
+/* block 111 */
+350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,
+350,350,350,350,350,350,350,350,350,350,350,350,350,350, 78, 78,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
+229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, 81,
+ 81, 81,229,229,229,229,229,229, 81, 81,229,229,229,229,229,229,
+ 81, 81,229,229,229,229,229,229, 81, 81,229,229,229, 81, 81, 81,
+  3,  3,  6, 10, 13,  3,  3, 81, 13,  6,  6,  6,  6, 13, 13, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 16, 16, 16, 13, 13, 81, 81,
+
+/* block 112 */
+367,367,367,367,367,367,367,367,367,367,367,367, 81,367,367,367,
+367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,
+367,367,367,367,367,367,367, 81,367,367,367,367,367,367,367,367,
+367,367,367,367,367,367,367,367,367,367,367, 81,367,367, 81,367,
+367,367,367,367,367,367,367,367,367,367,367,367,367,367, 81, 81,
+367,367,367,367,367,367,367,367,367,367,367,367,367,367, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 113 */
+367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,
+367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,
+367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,
+367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,
+367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,
+367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,
+367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,
+367,367,367,367,367,367,367,367,367,367,367, 81, 81, 81, 81, 81,
+
+/* block 114 */
+  2,  2, 13, 81, 81, 81, 81, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 81, 81, 81, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,
+368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,
+368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,
+368,368,368,368,368,369,369,369,369,370,370,370,370,370,370,370,
+
+/* block 115 */
+370,370,370,370,370,370,370,370,370,370,369, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 116 */
+371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,
+371,371,371,371,371,371,371,371,371,371,371,371,371,371,371, 81,
+372,372,372,372, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,
+373,374,373,373,373,373,373,373,373,373,374, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 117 */
+375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,
+375,375,375,375,375,375,375,375,375,375,375,375,375,375, 81,376,
+377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,
+377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,
+377,377,377,377, 81, 81, 81, 81,377,377,377,377,377,377,377,377,
+378,379,379,379,379,379, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 118 */
+380,380,380,380,380,380,380,380,380,380,380,380,380,380,380,380,
+380,380,380,380,380,380,380,380,380,380,380,380,380,380,380,380,
+380,380,380,380,380,380,380,380,381,381,381,381,381,381,381,381,
+381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,
+381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,
+382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,
+382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,
+382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,
+
+/* block 119 */
+383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,
+383,383,383,383,383,383,383,383,383,383,383,383,383,383, 81, 81,
+384,384,384,384,384,384,384,384,384,384, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 120 */
+385,385,385,385,385,385, 81, 81,385, 81,385,385,385,385,385,385,
+385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,
+385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,
+385,385,385,385,385,385, 81,385,385, 81, 81, 81,385, 81, 81,385,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 121 */
+386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,
+386,386,386,386,386,386,387,387,387,387, 81, 81, 81, 81, 81,388,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 122 */
+389,390,390,390, 81,390,390, 81, 81, 81, 81, 81,390,390,390,390,
+389,389,389,389, 81,389,389,389, 81,389,389,389,389,389,389,389,
+389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,
+389,389,389,389, 81, 81, 81, 81,390,390,390, 81, 81, 81, 81,390,
+391,391,391,391,391,391,391,391, 81, 81, 81, 81, 81, 81, 81, 81,
+392,392,392,392,392,392,392,392,392, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 123 */
+393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,
+393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,
+393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,
+393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,
+393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,
+393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,
+393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,
+393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,
+
+/* block 124 */
+393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,
+393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,
+393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,
+393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,
+393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,
+393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,
+393,393,393,393,393,393,393,393,393,393,393,393,393,393,393, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 125 */
+394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,
+394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,
+394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,
+394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,
+394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,
+394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,
+394,394,394, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+395,395,395,395, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 126 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 127 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 81, 81, 81, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13,396,396, 79, 79, 79, 13, 13, 13,396,396,396,
+396,396,396, 16, 16, 16, 16, 16, 16, 16, 16, 79, 79, 79, 79, 79,
+
+/* block 128 */
+ 79, 79, 79, 13, 13, 79, 79, 79, 79, 79, 79, 79, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 79, 79, 79, 79, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 129 */
+370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,
+370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,
+370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,
+370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,
+370,370,397,397,397,370, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 130 */
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 131 */
+316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,
+316,316,316,316,316,316,316,316,316,316,317,317,317,317,317,317,
+317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,
+317,317,317,317,316,316,316,316,316,316,316,316,316,316,316,316,
+316,316,316,316,316,316,316,316,316,316,316,316,316,316,317,317,
+317,317,317,317,317, 81,317,317,317,317,317,317,317,317,317,317,
+317,317,317,317,317,317,317,317,316,316,316,316,316,316,316,316,
+316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,
+
+/* block 132 */
+316,316,317,317,317,317,317,317,317,317,317,317,317,317,317,317,
+317,317,317,317,317,317,317,317,317,317,317,317,316, 81,316,316,
+ 81, 81,316, 81, 81,316,316, 81, 81,316,316,316,316, 81,316,316,
+316,316,316,316,316,316,317,317,317,317, 81,317, 81,317,317,317,
+317,317,317,317, 81,317,317,317,317,317,317,317,317,317,317,317,
+316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,
+316,316,316,316,316,316,316,316,316,316,317,317,317,317,317,317,
+317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,
+
+/* block 133 */
+317,317,317,317,316,316, 81,316,316,316,316, 81, 81,316,316,316,
+316,316,316,316,316, 81,316,316,316,316,316,316,316, 81,317,317,
+317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,
+317,317,317,317,317,317,317,317,316,316, 81,316,316,316,316, 81,
+316,316,316,316,316, 81,316, 81, 81, 81,316,316,316,316,316,316,
+316, 81,317,317,317,317,317,317,317,317,317,317,317,317,317,317,
+317,317,317,317,317,317,317,317,317,317,317,317,316,316,316,316,
+316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,
+
+/* block 134 */
+316,316,316,316,316,316,317,317,317,317,317,317,317,317,317,317,
+317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,
+316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,
+316,316,316,316,316,316,316,316,316,316,317,317,317,317,317,317,
+317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,
+317,317,317,317,316,316,316,316,316,316,316,316,316,316,316,316,
+316,316,316,316,316,316,316,316,316,316,316,316,316,316,317,317,
+317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,
+
+/* block 135 */
+317,317,317,317,317,317,317,317,316,316,316,316,316,316,316,316,
+316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,
+316,316,317,317,317,317,317,317,317,317,317,317,317,317,317,317,
+317,317,317,317,317,317,317,317,317,317,317,317,316,316,316,316,
+316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,
+316,316,316,316,316,316,317,317,317,317,317,317,317,317,317,317,
+317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,
+316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,
+
+/* block 136 */
+316,316,316,316,316,316,316,316,316,316,317,317,317,317,317,317,
+317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,
+317,317,317,317,317,317, 81, 81,316,316,316,316,316,316,316,316,
+316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,
+316,  6,317,317,317,317,317,317,317,317,317,317,317,317,317,317,
+317,317,317,317,317,317,317,317,317,317,317,  6,317,317,317,317,
+317,317,316,316,316,316,316,316,316,316,316,316,316,316,316,316,
+316,316,316,316,316,316,316,316,316,316,316,  6,317,317,317,317,
+
+/* block 137 */
+317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,
+317,317,317,317,317,  6,317,317,317,317,317,317,316,316,316,316,
+316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,
+316,316,316,316,316,  6,317,317,317,317,317,317,317,317,317,317,
+317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,  6,
+317,317,317,317,317,317,316,316,316,316,316,316,316,316,316,316,
+316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,  6,
+317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,
+
+/* block 138 */
+317,317,317,317,317,317,317,317,317,  6,317,317,317,317,317,317,
+316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,
+316,316,316,316,316,316,316,316,316,  6,317,317,317,317,317,317,
+317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,
+317,317,317,  6,317,317,317,317,317,317,316,317, 81, 81,  8,  8,
+  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+
+/* block 139 */
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 140 */
+354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,
+354,354,354,354,354,354,354,354,354,354,354,354,354,354, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 141 */
+ 81, 16, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+
+/* block 142 */
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+
+/* block 143 */
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+
+/* block 144 */
+365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,
+365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,
+365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,
+365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,
+365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,
+365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,
+365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,
+365,365,365,365,365,365,365,365,365,365,365,365,365,365, 81, 81,
+
+};
+
+#if UCD_BLOCK_SIZE != 128
+#error Please correct UCD_BLOCK_SIZE in pcre_internal.h
+#endif


Modified: code/trunk/pcre_xclass.c
===================================================================
--- code/trunk/pcre_xclass.c    2008-05-07 16:39:17 UTC (rev 348)
+++ code/trunk/pcre_xclass.c    2008-07-02 18:42:11 UTC (rev 349)
@@ -104,8 +104,7 @@
 #ifdef SUPPORT_UCP
   else  /* XCL_PROP & XCL_NOTPROP */
     {
-    int chartype, script;
-    int category = _pcre_ucp_findprop(c, &chartype, &script);
+    const ucd_record * prop = GET_UCD(c);


     switch(*data)
       {
@@ -114,20 +113,20 @@
       break;


       case PT_LAMP:
-      if ((chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt) ==
+      if ((prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || prop->chartype == ucp_Lt) ==
           (t == XCL_PROP)) return !negated;
       break;


       case PT_GC:
-      if ((data[1] == category) == (t == XCL_PROP)) return !negated;
+      if ((data[1] == ucp_gentype[prop->chartype]) == (t == XCL_PROP)) return !negated;
       break;


       case PT_PC:
-      if ((data[1] == chartype) == (t == XCL_PROP)) return !negated;
+      if ((data[1] == prop->chartype) == (t == XCL_PROP)) return !negated;
       break;


       case PT_SC:
-      if ((data[1] == script) == (t == XCL_PROP)) return !negated;
+      if ((data[1] == prop->script) == (t == XCL_PROP)) return !negated;
       break;


       /* This should never occur, but compilers may mutter if there is no


Modified: code/trunk/testdata/testinput6
===================================================================
--- code/trunk/testdata/testinput6    2008-05-07 16:39:17 UTC (rev 348)
+++ code/trunk/testdata/testinput6    2008-07-02 18:42:11 UTC (rev 349)
@@ -763,7 +763,7 @@
     \x{1b00}\x{12000}\x{7c0}\x{a840}\x{10900}


/The next two are special cases where the lengths of the different cases of the
-same character differ. The first went wrong with heap fram storage; the 2nd
+same character differ. The first went wrong with heap frame storage; the 2nd
was broken in all cases./

/^\x{023a}+?(\x{0130}+)/8i
@@ -907,4 +907,10 @@

/\p{Cc}{2}+/8BZ

+/\x{c0}+\x{116}+/8i
+    \x{c0}\x{e0}\x{116}\x{117}
+
+/[\x{c0}\x{116}]+/8i
+    \x{c0}\x{e0}\x{116}\x{117}
+
 / End of testinput6 /


Modified: code/trunk/testdata/testinput9
===================================================================
--- code/trunk/testdata/testinput9    2008-05-07 16:39:17 UTC (rev 348)
+++ code/trunk/testdata/testinput9    2008-07-02 18:42:11 UTC (rev 349)
@@ -819,6 +819,12 @@
 /^\x{023a}+([^X])/8i
   \x{023a}\x{2c65}X


+/\x{c0}+\x{116}+/8i
+    \x{c0}\x{e0}\x{116}\x{117}
+
+/[\x{c0}\x{116}]+/8i
+    \x{c0}\x{e0}\x{116}\x{117}
+
 /Check property support in non-UTF-8 mode/


/\p{L}{4}/

Modified: code/trunk/testdata/testoutput6
===================================================================
--- code/trunk/testdata/testoutput6    2008-05-07 16:39:17 UTC (rev 348)
+++ code/trunk/testdata/testoutput6    2008-07-02 18:42:11 UTC (rev 349)
@@ -1431,7 +1431,7 @@
  0: \x{1b00}\x{12000}\x{7c0}\x{a840}\x{10900}


/The next two are special cases where the lengths of the different cases of the
-same character differ. The first went wrong with heap fram storage; the 2nd
+same character differ. The first went wrong with heap frame storage; the 2nd
was broken in all cases./

 /^\x{023a}+?(\x{0130}+)/8i
@@ -1679,4 +1679,12 @@
         End
 ------------------------------------------------------------------


+/\x{c0}+\x{116}+/8i
+    \x{c0}\x{e0}\x{116}\x{117}
+ 0: \x{c0}\x{e0}\x{116}\x{117}
+
+/[\x{c0}\x{116}]+/8i
+    \x{c0}\x{e0}\x{116}\x{117}
+ 0: \x{c0}\x{e0}\x{116}\x{117}
+
 / End of testinput6 /


Modified: code/trunk/testdata/testoutput9
===================================================================
--- code/trunk/testdata/testoutput9    2008-05-07 16:39:17 UTC (rev 348)
+++ code/trunk/testdata/testoutput9    2008-07-02 18:42:11 UTC (rev 349)
@@ -1632,6 +1632,18 @@
   \x{023a}\x{2c65}X
  0: \x{23a}\x{2c65}


+/\x{c0}+\x{116}+/8i
+    \x{c0}\x{e0}\x{116}\x{117}
+ 0: \x{c0}\x{e0}\x{116}\x{117}
+ 1: \x{c0}\x{e0}\x{116}
+
+/[\x{c0}\x{116}]+/8i
+    \x{c0}\x{e0}\x{116}\x{117}
+ 0: \x{c0}\x{e0}\x{116}\x{117}
+ 1: \x{c0}\x{e0}\x{116}
+ 2: \x{c0}\x{e0}
+ 3: \x{c0}
+
 /Check property support in non-UTF-8 mode/


/\p{L}{4}/