From 141060807ef17be8f15f6f23edeada4877c68230 Mon Sep 17 00:00:00 2001
From: Jeff Davis <jeff@j-davis.com>
Date: Mon, 30 Oct 2023 17:38:54 -0700
Subject: [PATCH v2 4/4] Add unicode case mapping tables and functions.

---
 src/common/Makefile                           |    1 +
 src/common/meson.build                        |    1 +
 src/common/unicode/Makefile                   |   15 +-
 src/common/unicode/case_test.c                |  242 ++
 .../unicode/generate-unicode_case_table.pl    |  207 ++
 src/common/unicode/meson.build                |   33 +-
 src/common/unicode_case.c                     |  104 +
 src/include/common/unicode_case.h             |   33 +
 src/include/common/unicode_case_table.h       | 3079 +++++++++++++++++
 9 files changed, 3711 insertions(+), 4 deletions(-)
 create mode 100644 src/common/unicode/case_test.c
 create mode 100644 src/common/unicode/generate-unicode_case_table.pl
 create mode 100644 src/common/unicode_case.c
 create mode 100644 src/include/common/unicode_case.h
 create mode 100644 src/include/common/unicode_case_table.h

diff --git a/src/common/Makefile b/src/common/Makefile
index ce4535d7fe..f70d0bbfd6 100644
--- a/src/common/Makefile
+++ b/src/common/Makefile
@@ -78,6 +78,7 @@ OBJS_COMMON = \
 	scram-common.o \
 	string.o \
 	stringinfo.o \
+	unicode_case.o \
 	unicode_category.o \
 	unicode_norm.o \
 	username.o \
diff --git a/src/common/meson.build b/src/common/meson.build
index 8be145c0fb..f085db3e0e 100644
--- a/src/common/meson.build
+++ b/src/common/meson.build
@@ -30,6 +30,7 @@ common_sources = files(
   'scram-common.c',
   'string.c',
   'stringinfo.c',
+  'unicode_case.c',
   'unicode_category.c',
   'unicode_norm.c',
   'username.c',
diff --git a/src/common/unicode/Makefile b/src/common/unicode/Makefile
index 27f0408d8b..62662a3e7f 100644
--- a/src/common/unicode/Makefile
+++ b/src/common/unicode/Makefile
@@ -21,20 +21,24 @@ CPPFLAGS += $(ICU_CFLAGS)
 # By default, do nothing.
 all:
 
-update-unicode: unicode_category_table.h unicode_east_asian_fw_table.h unicode_nonspacing_table.h unicode_norm_hashfunc.h unicode_norm_table.h unicode_normprops_table.h unicode_version.h
+update-unicode: unicode_case_table.h unicode_category_table.h unicode_east_asian_fw_table.h unicode_nonspacing_table.h unicode_norm_hashfunc.h unicode_norm_table.h unicode_normprops_table.h unicode_version.h
 	mv $^ $(top_srcdir)/src/include/common/
+	$(MAKE) case-check
 	$(MAKE) category-check
 	$(MAKE) normalization-check
 
 # These files are part of the Unicode Character Database. Download
 # them on demand.  The dependency on Makefile.global is for
 # UNICODE_VERSION.
-CompositionExclusions.txt DerivedCoreProperties.txt DerivedNormalizationProps.txt EastAsianWidth.txt NormalizationTest.txt PropList.txt UnicodeData.txt: $(top_builddir)/src/Makefile.global
+CompositionExclusions.txt DerivedCoreProperties.txt DerivedNormalizationProps.txt EastAsianWidth.txt NormalizationTest.txt PropList.txt UnicodeData.txt SpecialCasing.txt: $(top_builddir)/src/Makefile.global
 	$(DOWNLOAD) https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/$(@F)
 
 unicode_version.h: generate-unicode_version.pl
 	$(PERL) $< --version $(UNICODE_VERSION)
 
+unicode_case_table.h: generate-unicode_case_table.pl UnicodeData.txt SpecialCasing.txt
+	$(PERL) $<
+
 unicode_category_table.h: generate-unicode_category_table.pl DerivedCoreProperties.txt PropList.txt UnicodeData.txt
 	$(PERL) $<
 
@@ -55,12 +59,17 @@ unicode_normprops_table.h: generate-unicode_normprops_table.pl DerivedNormalizat
 	$(PERL) $^ >$@
 
 # Test suite
+case-check: case_test
+	./case_test
+
 category-check: category_test
 	./category_test
 
 normalization-check: norm_test
 	./norm_test
 
+case_test: case_test.o ../unicode_case.o | submake-common
+
 category_test: category_test.o ../unicode_category.o | submake-common
 
 norm_test: norm_test.o ../unicode_norm.o | submake-common
@@ -82,4 +91,4 @@ clean:
 	rm -f $(OBJS) category_test category_test.o norm_test norm_test.o
 
 distclean: clean
-	rm -f CompositionExclusions.txt DerivedCoreProperties.txt DerivedNormalizationProps.txt EastAsianWidth.txt NormalizationTest.txt PropList.txt UnicodeData.txt norm_test_table.h unicode_category_table.h unicode_norm_table.h
+	rm -f CompositionExclusions.txt DerivedCoreProperties.txt DerivedNormalizationProps.txt EastAsianWidth.txt NormalizationTest.txt PropList.txt SpecialCasing.txt UnicodeData.txt norm_test_table.h unicode_case_table.h unicode_category_table.h unicode_norm_table.h
diff --git a/src/common/unicode/case_test.c b/src/common/unicode/case_test.c
new file mode 100644
index 0000000000..480336b401
--- /dev/null
+++ b/src/common/unicode/case_test.c
@@ -0,0 +1,242 @@
+/*-------------------------------------------------------------------------
+ * case_test.c
+ *		Program to test Unicode case mapping functions.
+ *
+ * Portions Copyright (c) 2017-2023, PostgreSQL Global Development Group
+ *
+ * IDENTIFICATION
+ *	  src/common/unicode/case_test.c
+ *
+ *-------------------------------------------------------------------------
+ */
+#include "postgres_fe.h"
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wctype.h>
+
+#ifdef USE_ICU
+#include <unicode/uchar.h>
+#include <unicode/ustring.h>
+#endif
+#include "common/unicode_case.h"
+#include "common/unicode_category.h"
+#include "common/unicode_version.h"
+
+/*
+ * We expect that C.UTF-8 has the same CTYPE behavior as the simple unicode
+ * mappings, but that's not guaranteed. If there are failures in the libc
+ * test, that's useful information, but does not necessarily indicate a
+ * problem.
+ */
+#define LIBC_LOCALE "C.UTF-8"
+
+#ifdef USE_ICU
+
+/* use root locale for test */
+#define ICU_LOCALE "und"
+
+typedef int32_t (*ICU_Convert_Func) (UChar *dest, int32_t destCapacity,
+									 const UChar *src, int32_t srcLength,
+									 const char *locale,
+									 UErrorCode *pErrorCode);
+
+static int32_t
+u_strToTitle_default_BI(UChar *dest, int32_t destCapacity,
+						const UChar *src, int32_t srcLength,
+						const char *locale,
+						UErrorCode *pErrorCode)
+{
+	return u_strToTitle(dest, destCapacity, src, srcLength,
+						NULL, locale, pErrorCode);
+}
+
+static void
+icu_special(pg_wchar code, const pg_wchar expected[3], ICU_Convert_Func func, const char *errstr)
+{
+	int32		ubuf_orig_len;
+	int32		ubuf_mapped_len;
+	UChar		ubuf_orig[2];	/* up to two UChars per UChar32 */
+	UChar		ubuf_mapped[PG_U_MAX_CASE_EXPANSION * 2];
+	pg_wchar	icu_special[PG_U_MAX_CASE_EXPANSION] = {0};
+	UErrorCode	status;
+
+	status = U_ZERO_ERROR;
+	u_strFromUTF32(ubuf_orig, 2, &ubuf_orig_len, (UChar32 *) & code, 1,
+				   &status);
+	if (U_FAILURE(status))
+	{
+		printf("case_test: error testing codepoint 0x%06x: could not convert from UTF32: %s\n",
+			   code, u_errorName(status));
+		exit(1);
+	}
+
+	status = U_ZERO_ERROR;
+	ubuf_mapped_len = func(ubuf_mapped, PG_U_MAX_CASE_EXPANSION * 2,
+						   ubuf_orig, ubuf_orig_len, ICU_LOCALE, &status);
+	if (U_FAILURE(status))
+	{
+		printf("case_test: error converting codepoint 0x%06x to %scase: %s\n",
+			   code, errstr, u_errorName(status));
+		exit(1);
+	}
+
+	status = U_ZERO_ERROR;
+	u_strToUTF32((UChar32 *) icu_special, PG_U_MAX_CASE_EXPANSION, NULL,
+				 ubuf_mapped, ubuf_mapped_len, &status);
+	if (U_FAILURE(status))
+	{
+		printf("case_test: error testing codepoint 0x%06x: could not convert to UTF32: %s\n",
+			   code, u_errorName(status));
+		exit(1);
+	}
+
+	if (memcmp(expected, icu_special,
+			   sizeof(pg_wchar) * PG_U_MAX_CASE_EXPANSION) != 0)
+	{
+		printf("case_test: FAILURE for codepoint 0x%06x\n", code);
+		printf("case_test: Postgres special %scase mapping:	0x%06x 0x%06x 0x%06x\n", errstr,
+			   expected[0], expected[1], expected[2]);
+		printf("case_test: ICU special %scase mapping:	0x%06x 0x%06x 0x%06x\n", errstr,
+			   icu_special[0], icu_special[1], icu_special[2]);
+		exit(1);
+	}
+}
+
+static void
+icu_test_special(pg_wchar code)
+{
+	const pg_wchar *lower_special;
+	const pg_wchar *upper_special;
+	const pg_wchar *title_special;
+	pg_wchar	lower = unicode_lowercase(code, &lower_special);
+	pg_wchar	title = unicode_titlecase(code, &title_special);
+	pg_wchar	upper = unicode_uppercase(code, &upper_special);
+	pg_wchar	lower_buf[PG_U_MAX_CASE_EXPANSION] = {0};
+	pg_wchar	title_buf[PG_U_MAX_CASE_EXPANSION] = {0};
+	pg_wchar	upper_buf[PG_U_MAX_CASE_EXPANSION] = {0};
+
+	lower_buf[0] = lower;
+	title_buf[0] = title;
+	upper_buf[0] = upper;
+	if (!lower_special)
+		lower_special = lower_buf;
+	if (!title_special)
+		title_special = title_buf;
+	if (!upper_special)
+		upper_special = upper_buf;
+
+	icu_special(code, lower_special, u_strToLower, "lower");
+
+	/*
+	 * XXX: In ICU, the following character ("COMBINING GREEK YPOGEGRAMMENI")
+	 * is not titlecased as expected using u_strToTitle(). Skip for now.
+	 */
+	if (code == 0x000345)
+		printf("case_test: ICU special: skipping code point 0x%06x\n", code);
+	else
+		icu_special(code, title_special, u_strToTitle_default_BI, "title");
+
+	icu_special(code, upper_special, u_strToUpper, "upper");
+}
+
+static void
+icu_test_simple(pg_wchar code)
+{
+	pg_wchar	lower = unicode_lowercase(code, NULL);
+	pg_wchar	title = unicode_titlecase(code, NULL);
+	pg_wchar	upper = unicode_uppercase(code, NULL);
+	pg_wchar	iculower = u_tolower(code);
+	pg_wchar	icutitle = u_totitle(code);
+	pg_wchar	icuupper = u_toupper(code);
+
+	if (lower != iculower || title != icutitle || upper != icuupper)
+	{
+		printf("case_test: FAILURE for codepoint 0x%06x\n", code);
+		printf("case_test: Postgres lower/title/upper:	0x%06x/0x%06x/0x%06x\n",
+			   lower, title, upper);
+		printf("case_test: ICU lower/title/upper:		0x%06x/0x%06x/0x%06x\n",
+			   iculower, icutitle, icuupper);
+		printf("\n");
+		exit(1);
+	}
+}
+#endif
+
+static void
+libc_test_simple(pg_wchar code)
+{
+	pg_wchar	lower = unicode_lowercase(code, NULL);
+	pg_wchar	upper = unicode_uppercase(code, NULL);
+	wchar_t		libclower = towlower(code);
+	wchar_t		libcupper = towupper(code);
+
+	if (lower != libclower || upper != libcupper)
+	{
+		printf("case_test: FAILURE for codepoint 0x%06x\n", code);
+		printf("case_test: Postgres lower/upper:	0x%06x/0x%06x\n",
+			   lower, upper);
+		printf("case_test: libc lower/upper:		0x%06x/0x%06x\n",
+			   libclower, libcupper);
+		printf("\n");
+		exit(1);
+	}
+}
+
+/*
+ * Exhaustively compare case mappings with the results from libc and ICU.
+ */
+int
+main(int argc, char **argv)
+{
+	char	   *libc_locale;
+
+	libc_locale = setlocale(LC_CTYPE, LIBC_LOCALE);
+
+	printf("case_test: Postgres Unicode version:\t%s\n", PG_UNICODE_VERSION);
+#ifdef USE_ICU
+	printf("case_test: ICU Unicode version:\t\t%s\n", U_UNICODE_VERSION);
+#else
+	printf("case_test: ICU not available; skipping\n");
+#endif
+
+	if (libc_locale)
+	{
+		printf("case_test: comparing with libc locale \"%s\"\n", libc_locale);
+		for (pg_wchar code = 0; code <= 0x10ffff; code++)
+		{
+			pg_unicode_category category = unicode_category(code);
+
+			if (category != PG_U_UNASSIGNED && category != PG_U_SURROGATE)
+				libc_test_simple(code);
+		}
+		printf("case_test: libc simple mapping test successful\n");
+	}
+	else
+		printf("case_test: libc locale \"%s\" not available; skipping\n",
+			   LIBC_LOCALE);
+
+#ifdef USE_ICU
+	for (pg_wchar code = 0; code <= 0x10ffff; code++)
+	{
+		pg_unicode_category category = unicode_category(code);
+
+		if (category != PG_U_UNASSIGNED && category != PG_U_SURROGATE)
+			icu_test_simple(code);
+	}
+	printf("case_test: ICU simple mapping test successful\n");
+
+	for (pg_wchar code = 0; code <= 0x10ffff; code++)
+	{
+		pg_unicode_category category = unicode_category(code);
+
+		if (category != PG_U_UNASSIGNED && category != PG_U_SURROGATE)
+			icu_test_special(code);
+	}
+	printf("case_test: ICU special mapping test successful\n");
+#endif
+
+	exit(0);
+}
diff --git a/src/common/unicode/generate-unicode_case_table.pl b/src/common/unicode/generate-unicode_case_table.pl
new file mode 100644
index 0000000000..b0545e2ca3
--- /dev/null
+++ b/src/common/unicode/generate-unicode_case_table.pl
@@ -0,0 +1,207 @@
+#!/usr/bin/perl
+#
+# Generate Unicode character case mappings. Does not include tailoring
+# or locale-specific mappings.
+#
+# Input: UnicodeData.txt SpecialCasing.txt
+# Output: unicode_case_table.h
+#
+# Copyright (c) 2000-2023, PostgreSQL Global Development Group
+
+use strict;
+use warnings;
+use Getopt::Long;
+
+use FindBin;
+use lib "$FindBin::RealBin/../../tools/";
+
+my $output_path = '.';
+
+GetOptions('outdir:s' => \$output_path);
+
+my $output_table_file = "$output_path/unicode_case_table.h";
+
+# The maximum number of codepoints that can result from case mapping
+# of a single character. See Unicode section 5.18 "Case Mappings".
+my $MAX_CASE_EXPANSION = 3;
+
+my $FH;
+
+my %simple = ();
+
+open($FH, '<', "$output_path/UnicodeData.txt")
+  or die "Could not open $output_path/UnicodeData.txt: $!.";
+while (my $line = <$FH>)
+{
+	my @elts = split(';', $line);
+	my $code = hex($elts[0]);
+	my $simple_uppercase = hex($elts[12] =~ s/^\s+|\s+$//rg);
+	my $simple_lowercase = hex($elts[13] =~ s/^\s+|\s+$//rg);
+	my $simple_titlecase = hex($elts[14] =~ s/^\s+|\s+$//rg);
+
+	die "codepoint $code out of range" if $code > 0x10FFFF;
+	die "Simple_Lowercase $code out of range" if $simple_lowercase > 0x10FFFF;
+	die "Simple_Titlecase $code out of range" if $simple_titlecase > 0x10FFFF;
+	die "Simple_Uppercase $code out of range" if $simple_uppercase > 0x10FFFF;
+
+	if ($simple_lowercase || $simple_titlecase || $simple_uppercase)
+	{
+		$simple{$code} = {Simple_Lowercase => $simple_lowercase,
+						  Simple_Titlecase => $simple_titlecase,
+						  Simple_Uppercase => $simple_uppercase};
+	}
+}
+close $FH;
+
+# Map for special casing rules that aren't represented in the simple
+# mapping. Include only unconditional mappings; not those sensitive to
+# context or locale.
+#
+# See https://www.unicode.org/reports/tr44/#SpecialCasing.txt, or the
+# SpecialCasing.txt file itself for details.
+my %special = ();
+open($FH, '<', "$output_path/SpecialCasing.txt")
+  or die "Could not open $output_path/SpecialCasing.txt: $!.";
+while (my $line = <$FH>)
+{
+	# Stop as soon as we get to conditional mappings (unconditional
+	# mappings occur first in the file).
+	last if $line =~ /\# Conditional Mappings/;
+
+	# ignore irrelevant lines (comments, extra newlines, etc.)
+	next unless $line =~ /^[0-9A-F]+;[0-9A-F\s]+;[0-9A-F\s]+;[0-9A-F\s]+;/;
+
+	my @elts = split /;/, $line;
+	my $code = hex($elts[0]);
+
+	# Codepoint may map to multiple characters when converting
+	# case. Split each mapping on whitespace and extract the
+	# hexadecimal into an array of codepoints.
+	my @lower = map { hex $_ } (grep /[09A-F]+/, (split /\s+/, $elts[1]));
+	my @title = map { hex $_ } (grep /[09A-F]+/, (split /\s+/, $elts[2]));
+	my @upper = map { hex $_ } (grep /[09A-F]+/, (split /\s+/, $elts[3]));
+
+	# none should map to more than 3 codepoints
+	die "lowercase expansion for 0x$elts[0] exceeds maximum: '$elts[1]'"
+	  if (scalar @lower) > $MAX_CASE_EXPANSION;
+	die "titlecase expansion for 0x$elts[0] exceeds maximum: '$elts[2]'"
+	  if (scalar @title) > $MAX_CASE_EXPANSION;
+	die "uppercase expansion for 0x$elts[0] exceeds maximum: '$elts[3]'"
+	  if (scalar @upper) > $MAX_CASE_EXPANSION;
+
+	# pad arrays to a fixed length of 3
+	while (scalar @upper < $MAX_CASE_EXPANSION) { push @upper, 0x000000 };
+	while (scalar @lower < $MAX_CASE_EXPANSION) { push @lower, 0x000000 };
+	while (scalar @title < $MAX_CASE_EXPANSION) { push @title, 0x000000 };
+
+	# Characters with special mappings may not have simple mappings;
+	# ensure that an entry exists.
+	$simple{$code} ||= {Simple_Lowercase => 0x00,
+						Simple_Titlecase => 0x00,
+						Simple_Uppercase => 0x00};
+
+	$special{$code} = {Uppercase => \@upper, Lowercase => \@lower, Titlecase => \@title};
+}
+close $FH;
+
+# assign sequential array indexes to the special mappings
+my $special_idx = 0;
+foreach my $code (sort { $a <=> $b } (keys %special))
+{
+	$special{$code}{Index} = $special_idx++;
+}
+
+# Start writing out the output files
+open my $OT, '>', $output_table_file
+  or die "Could not open output file $output_table_file: $!\n";
+
+my $num_special = scalar (keys %special);
+my $num_simple = scalar (keys %simple);
+
+print $OT <<"HEADER";
+/*-------------------------------------------------------------------------
+ *
+ * unicode_case_table.h
+ *	  Case mapping and information table.
+ *
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * src/include/common/unicode_case_table.h
+ *
+ *-------------------------------------------------------------------------
+ */
+
+/*
+ * File auto-generated by src/common/unicode/generate-unicode_case_table.pl,
+ * do not edit. There is deliberately not an #ifndef PG_UNICODE_CASE_TABLE_H
+ * here.
+ */
+
+#include "mb/pg_wchar.h"
+
+typedef struct
+{
+	pg_wchar	lowercase[3];
+	pg_wchar	titlecase[3];
+	pg_wchar	uppercase[3];
+}			pg_special_case_map;
+
+typedef struct
+{
+	pg_wchar	codepoint;		/* Unicode codepoint */
+	pg_wchar	simple_lowercase;
+	pg_wchar	simple_titlecase;
+	pg_wchar	simple_uppercase;
+	const		pg_special_case_map *special_case;
+}			pg_simple_case_map;
+
+/*
+ * Special case mappings that aren't representable in the simple map.
+ * Entries are referenced from simple_case_map.
+ */
+static const pg_special_case_map special_case_map[$num_special] =
+{
+HEADER
+
+my $firsttime = 1;
+foreach my $code (sort { $a <=> $b } (keys %special))
+{
+	printf $OT ",\n" unless $firsttime;
+	$firsttime = 0;
+
+	die if scalar @{$special{$code}{Lowercase}} != $MAX_CASE_EXPANSION;
+	die if scalar @{$special{$code}{Titlecase}} != $MAX_CASE_EXPANSION;
+	die if scalar @{$special{$code}{Uppercase}} != $MAX_CASE_EXPANSION;
+	my $lower = join ", ", (map { sprintf "0x%06x", $_ } @{$special{$code}{Lowercase}});
+	my $title = join ", ", (map { sprintf "0x%06x", $_ } @{$special{$code}{Titlecase}});
+	my $upper = join ", ", (map { sprintf "0x%06x", $_ } @{$special{$code}{Uppercase}});
+	printf $OT "\t{ /* 0x%06x */ {%s}, {%s}, {%s}}", $code, $lower, $title, $upper;
+}
+
+print $OT <<"HEADER";
+
+};
+
+/* simple one-to-one case mapping table */
+static const pg_simple_case_map simple_case_map[$num_simple] =
+{
+HEADER
+
+$firsttime = 1;
+foreach my $code (sort { $a <=> $b } (keys %simple))
+{
+	printf $OT ",\n" unless $firsttime;
+	$firsttime = 0;
+
+	my $map = $simple{$code};
+	my $special_case = "NULL";
+	if (exists $special{$code})
+	{
+		$special_case = sprintf "&special_case_map[%d]", $special{$code}{Index};
+	}
+	printf $OT "\t{0x%06x, 0x%06x, 0x%06x, 0x%06x, %s}",
+		$code, $map->{Simple_Lowercase}, $map->{Simple_Titlecase}, $map->{Simple_Uppercase},
+		$special_case;
+}
+print $OT "\n};\n";
diff --git a/src/common/unicode/meson.build b/src/common/unicode/meson.build
index 3526ddb846..06faff9405 100644
--- a/src/common/unicode/meson.build
+++ b/src/common/unicode/meson.build
@@ -11,7 +11,7 @@ endif
 
 # These files are part of the Unicode Character Database. Download them on
 # demand.
-foreach f : ['CompositionExclusions.txt', 'DerivedCoreProperties.txt', 'DerivedNormalizationProps.txt', 'EastAsianWidth.txt', 'NormalizationTest.txt', 'PropList.txt', 'UnicodeData.txt']
+foreach f : ['CompositionExclusions.txt', 'DerivedCoreProperties.txt', 'DerivedNormalizationProps.txt', 'EastAsianWidth.txt', 'NormalizationTest.txt', 'PropList.txt', 'SpecialCasing.txt', 'UnicodeData.txt']
   url = unicode_baseurl.format(UNICODE_VERSION, f)
   target = custom_target(f,
     output: f,
@@ -24,6 +24,16 @@ endforeach
 
 update_unicode_targets = []
 
+update_unicode_targets += \
+  custom_target('unicode_case_table.h',
+    input: [unicode_data['UnicodeData.txt'], unicode_data['SpecialCasing.txt']],
+    output: ['unicode_case_table.h'],
+    command: [
+      perl, files('generate-unicode_case_table.pl'),
+      '--outdir', '@OUTDIR@', '@INPUT@'],
+    build_by_default: false,
+  )
+
 update_unicode_targets += \
   custom_target('unicode_category_table.h',
     input: [unicode_data['UnicodeData.txt'], unicode_data['DerivedCoreProperties.txt'], unicode_data['PropList.txt']],
@@ -92,6 +102,17 @@ norm_test_table = custom_target('norm_test_table.h',
 
 inc = include_directories('.')
 
+case_test = executable('case_test',
+  ['case_test.c'],
+  dependencies: [frontend_port_code, icu],
+  include_directories: inc,
+  link_with: [common_static, pgport_static],
+  build_by_default: false,
+  kwargs: default_bin_args + {
+    'install': false,
+  }
+)
+
 category_test = executable('category_test',
   ['category_test.c'],
   dependencies: [frontend_port_code, icu],
@@ -116,6 +137,16 @@ norm_test = executable('norm_test',
 
 update_unicode_dep = []
 
+if not meson.is_cross_build()
+  update_unicode_dep += custom_target('case_test.run',
+    output: 'case_test.run',
+    input: update_unicode_targets,
+    command: [case_test, UNICODE_VERSION],
+    build_by_default: false,
+    build_always_stale: true,
+  )
+endif
+
 if not meson.is_cross_build()
   update_unicode_dep += custom_target('category_test.run',
     output: 'category_test.run',
diff --git a/src/common/unicode_case.c b/src/common/unicode_case.c
new file mode 100644
index 0000000000..22c6e18288
--- /dev/null
+++ b/src/common/unicode_case.c
@@ -0,0 +1,104 @@
+/*-------------------------------------------------------------------------
+ * unicode_case.c
+ *		Conversion to upper or lower case.
+ *
+ * Portions Copyright (c) 2017-2023, PostgreSQL Global Development Group
+ *
+ * IDENTIFICATION
+ *	  src/common/unicode_case.c
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef FRONTEND
+#include "postgres.h"
+#else
+#include "postgres_fe.h"
+#endif
+
+#include "common/unicode_case.h"
+#include "common/unicode_case_table.h"
+
+/* binary search to find entry in simple case map, if any */
+static const pg_simple_case_map *
+find_case_map(pg_wchar ucs)
+{
+	int			min = 0;
+	int			mid;
+	int			max = lengthof(simple_case_map) - 1;
+
+	while (max >= min)
+	{
+		mid = (min + max) / 2;
+		if (ucs > simple_case_map[mid].codepoint)
+			min = mid + 1;
+		else if (ucs < simple_case_map[mid].codepoint)
+			max = mid - 1;
+		else
+			return &simple_case_map[mid];
+	}
+
+	return NULL;
+}
+
+/*
+ * Returns simple lowercase mapping for the given character, or the original
+ * character if none. Sets *special to the special case mapping, if any.
+ */
+pg_wchar
+unicode_lowercase(pg_wchar ucs, const pg_wchar **special)
+{
+	const		pg_simple_case_map *map = find_case_map(ucs);
+
+	if (special)
+	{
+		if (map && map->special_case)
+			*special = map->special_case->lowercase;
+		else
+			*special = NULL;
+	}
+	if (map && map->simple_lowercase)
+		return map->simple_lowercase;
+	return ucs;
+}
+
+/*
+ * Returns simple titlecase mapping for the given character, or the original
+ * character if none. Sets *special to the special case mapping, if any.
+ */
+pg_wchar
+unicode_titlecase(pg_wchar ucs, const pg_wchar **special)
+{
+	const		pg_simple_case_map *map = find_case_map(ucs);
+
+	if (special)
+	{
+		if (map && map->special_case)
+			*special = map->special_case->titlecase;
+		else
+			*special = NULL;
+	}
+	if (map && map->simple_titlecase)
+		return map->simple_titlecase;
+	return ucs;
+}
+
+/*
+ * Returns simple uppercase mapping for the given character, or the original
+ * character if none. Sets *special to the special case mapping, if any.
+ */
+pg_wchar
+unicode_uppercase(pg_wchar ucs, const pg_wchar **special)
+{
+	const		pg_simple_case_map *map = find_case_map(ucs);
+
+	if (special)
+	{
+		if (map && map->special_case)
+			*special = map->special_case->uppercase;
+		else
+			*special = NULL;
+	}
+	if (map && map->simple_uppercase)
+		return map->simple_uppercase;
+	return ucs;
+}
diff --git a/src/include/common/unicode_case.h b/src/include/common/unicode_case.h
new file mode 100644
index 0000000000..7b6f9e72cd
--- /dev/null
+++ b/src/include/common/unicode_case.h
@@ -0,0 +1,33 @@
+/*-------------------------------------------------------------------------
+ *
+ * unicode_case.h
+ *	  Routines for converting character case.
+ *
+ * These definitions can be used by both frontend and backend code.
+ *
+ * Copyright (c) 2017-2023, PostgreSQL Global Development Group
+ *
+ * src/include/common/unicode_case.h
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef UNICODE_CASE_H
+#define UNICODE_CASE_H
+
+#include "mb/pg_wchar.h"
+
+/*
+ * The maximum number of code points that can result from case mapping. See
+ * Unicode section 5.18, "Case Mapping". Expansion can only happen when using
+ * the special casing.
+ *
+ * NB: This is the maximum expansion of code points, which is not the same as
+ * the maximum expansion of encoded length.
+ */
+#define PG_U_MAX_CASE_EXPANSION 3
+
+pg_wchar	unicode_lowercase(pg_wchar ucs, const pg_wchar **special);
+pg_wchar	unicode_titlecase(pg_wchar ucs, const pg_wchar **special);
+pg_wchar	unicode_uppercase(pg_wchar ucs, const pg_wchar **special);
+
+#endif							/* UNICODE_CASE_H */
diff --git a/src/include/common/unicode_case_table.h b/src/include/common/unicode_case_table.h
new file mode 100644
index 0000000000..c7107861b2
--- /dev/null
+++ b/src/include/common/unicode_case_table.h
@@ -0,0 +1,3079 @@
+/*-------------------------------------------------------------------------
+ *
+ * unicode_case_table.h
+ *	  Case mapping and information table.
+ *
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * src/include/common/unicode_case_table.h
+ *
+ *-------------------------------------------------------------------------
+ */
+
+/*
+ * File auto-generated by src/common/unicode/generate-unicode_case_table.pl,
+ * do not edit. There is deliberately not an #ifndef PG_UNICODE_CASE_TABLE_H
+ * here.
+ */
+
+#include "mb/pg_wchar.h"
+
+typedef struct
+{
+	pg_wchar	lowercase[3];
+	pg_wchar	titlecase[3];
+	pg_wchar	uppercase[3];
+}			pg_special_case_map;
+
+typedef struct
+{
+	pg_wchar	codepoint;		/* Unicode codepoint */
+	pg_wchar	simple_lowercase;
+	pg_wchar	simple_titlecase;
+	pg_wchar	simple_uppercase;
+	const		pg_special_case_map *special_case;
+}			pg_simple_case_map;
+
+/*
+ * Special case mappings that aren't representable in the simple map.
+ * Entries are referenced from simple_case_map.
+ */
+static const pg_special_case_map special_case_map[103] =
+{
+	{ /* 0x0000df */ {0x0000df, 0x000000, 0x000000}, {0x000053, 0x000073, 0x000000}, {0x000053, 0x000053, 0x000000}},
+	{ /* 0x000130 */ {0x000069, 0x000307, 0x000000}, {0x000130, 0x000000, 0x000000}, {0x000130, 0x000000, 0x000000}},
+	{ /* 0x000149 */ {0x000149, 0x000000, 0x000000}, {0x0002bc, 0x00004e, 0x000000}, {0x0002bc, 0x00004e, 0x000000}},
+	{ /* 0x0001f0 */ {0x0001f0, 0x000000, 0x000000}, {0x00004a, 0x00030c, 0x000000}, {0x00004a, 0x00030c, 0x000000}},
+	{ /* 0x000390 */ {0x000390, 0x000000, 0x000000}, {0x000399, 0x000308, 0x000301}, {0x000399, 0x000308, 0x000301}},
+	{ /* 0x0003b0 */ {0x0003b0, 0x000000, 0x000000}, {0x0003a5, 0x000308, 0x000301}, {0x0003a5, 0x000308, 0x000301}},
+	{ /* 0x000587 */ {0x000587, 0x000000, 0x000000}, {0x000535, 0x000582, 0x000000}, {0x000535, 0x000552, 0x000000}},
+	{ /* 0x001e96 */ {0x001e96, 0x000000, 0x000000}, {0x000048, 0x000331, 0x000000}, {0x000048, 0x000331, 0x000000}},
+	{ /* 0x001e97 */ {0x001e97, 0x000000, 0x000000}, {0x000054, 0x000308, 0x000000}, {0x000054, 0x000308, 0x000000}},
+	{ /* 0x001e98 */ {0x001e98, 0x000000, 0x000000}, {0x000057, 0x00030a, 0x000000}, {0x000057, 0x00030a, 0x000000}},
+	{ /* 0x001e99 */ {0x001e99, 0x000000, 0x000000}, {0x000059, 0x00030a, 0x000000}, {0x000059, 0x00030a, 0x000000}},
+	{ /* 0x001e9a */ {0x001e9a, 0x000000, 0x000000}, {0x000041, 0x0002be, 0x000000}, {0x000041, 0x0002be, 0x000000}},
+	{ /* 0x001f50 */ {0x001f50, 0x000000, 0x000000}, {0x0003a5, 0x000313, 0x000000}, {0x0003a5, 0x000313, 0x000000}},
+	{ /* 0x001f52 */ {0x001f52, 0x000000, 0x000000}, {0x0003a5, 0x000313, 0x000300}, {0x0003a5, 0x000313, 0x000300}},
+	{ /* 0x001f54 */ {0x001f54, 0x000000, 0x000000}, {0x0003a5, 0x000313, 0x000301}, {0x0003a5, 0x000313, 0x000301}},
+	{ /* 0x001f56 */ {0x001f56, 0x000000, 0x000000}, {0x0003a5, 0x000313, 0x000342}, {0x0003a5, 0x000313, 0x000342}},
+	{ /* 0x001f80 */ {0x001f80, 0x000000, 0x000000}, {0x001f88, 0x000000, 0x000000}, {0x001f08, 0x000399, 0x000000}},
+	{ /* 0x001f81 */ {0x001f81, 0x000000, 0x000000}, {0x001f89, 0x000000, 0x000000}, {0x001f09, 0x000399, 0x000000}},
+	{ /* 0x001f82 */ {0x001f82, 0x000000, 0x000000}, {0x001f8a, 0x000000, 0x000000}, {0x001f0a, 0x000399, 0x000000}},
+	{ /* 0x001f83 */ {0x001f83, 0x000000, 0x000000}, {0x001f8b, 0x000000, 0x000000}, {0x001f0b, 0x000399, 0x000000}},
+	{ /* 0x001f84 */ {0x001f84, 0x000000, 0x000000}, {0x001f8c, 0x000000, 0x000000}, {0x001f0c, 0x000399, 0x000000}},
+	{ /* 0x001f85 */ {0x001f85, 0x000000, 0x000000}, {0x001f8d, 0x000000, 0x000000}, {0x001f0d, 0x000399, 0x000000}},
+	{ /* 0x001f86 */ {0x001f86, 0x000000, 0x000000}, {0x001f8e, 0x000000, 0x000000}, {0x001f0e, 0x000399, 0x000000}},
+	{ /* 0x001f87 */ {0x001f87, 0x000000, 0x000000}, {0x001f8f, 0x000000, 0x000000}, {0x001f0f, 0x000399, 0x000000}},
+	{ /* 0x001f88 */ {0x001f80, 0x000000, 0x000000}, {0x001f88, 0x000000, 0x000000}, {0x001f08, 0x000399, 0x000000}},
+	{ /* 0x001f89 */ {0x001f81, 0x000000, 0x000000}, {0x001f89, 0x000000, 0x000000}, {0x001f09, 0x000399, 0x000000}},
+	{ /* 0x001f8a */ {0x001f82, 0x000000, 0x000000}, {0x001f8a, 0x000000, 0x000000}, {0x001f0a, 0x000399, 0x000000}},
+	{ /* 0x001f8b */ {0x001f83, 0x000000, 0x000000}, {0x001f8b, 0x000000, 0x000000}, {0x001f0b, 0x000399, 0x000000}},
+	{ /* 0x001f8c */ {0x001f84, 0x000000, 0x000000}, {0x001f8c, 0x000000, 0x000000}, {0x001f0c, 0x000399, 0x000000}},
+	{ /* 0x001f8d */ {0x001f85, 0x000000, 0x000000}, {0x001f8d, 0x000000, 0x000000}, {0x001f0d, 0x000399, 0x000000}},
+	{ /* 0x001f8e */ {0x001f86, 0x000000, 0x000000}, {0x001f8e, 0x000000, 0x000000}, {0x001f0e, 0x000399, 0x000000}},
+	{ /* 0x001f8f */ {0x001f87, 0x000000, 0x000000}, {0x001f8f, 0x000000, 0x000000}, {0x001f0f, 0x000399, 0x000000}},
+	{ /* 0x001f90 */ {0x001f90, 0x000000, 0x000000}, {0x001f98, 0x000000, 0x000000}, {0x001f28, 0x000399, 0x000000}},
+	{ /* 0x001f91 */ {0x001f91, 0x000000, 0x000000}, {0x001f99, 0x000000, 0x000000}, {0x001f29, 0x000399, 0x000000}},
+	{ /* 0x001f92 */ {0x001f92, 0x000000, 0x000000}, {0x001f9a, 0x000000, 0x000000}, {0x001f2a, 0x000399, 0x000000}},
+	{ /* 0x001f93 */ {0x001f93, 0x000000, 0x000000}, {0x001f9b, 0x000000, 0x000000}, {0x001f2b, 0x000399, 0x000000}},
+	{ /* 0x001f94 */ {0x001f94, 0x000000, 0x000000}, {0x001f9c, 0x000000, 0x000000}, {0x001f2c, 0x000399, 0x000000}},
+	{ /* 0x001f95 */ {0x001f95, 0x000000, 0x000000}, {0x001f9d, 0x000000, 0x000000}, {0x001f2d, 0x000399, 0x000000}},
+	{ /* 0x001f96 */ {0x001f96, 0x000000, 0x000000}, {0x001f9e, 0x000000, 0x000000}, {0x001f2e, 0x000399, 0x000000}},
+	{ /* 0x001f97 */ {0x001f97, 0x000000, 0x000000}, {0x001f9f, 0x000000, 0x000000}, {0x001f2f, 0x000399, 0x000000}},
+	{ /* 0x001f98 */ {0x001f90, 0x000000, 0x000000}, {0x001f98, 0x000000, 0x000000}, {0x001f28, 0x000399, 0x000000}},
+	{ /* 0x001f99 */ {0x001f91, 0x000000, 0x000000}, {0x001f99, 0x000000, 0x000000}, {0x001f29, 0x000399, 0x000000}},
+	{ /* 0x001f9a */ {0x001f92, 0x000000, 0x000000}, {0x001f9a, 0x000000, 0x000000}, {0x001f2a, 0x000399, 0x000000}},
+	{ /* 0x001f9b */ {0x001f93, 0x000000, 0x000000}, {0x001f9b, 0x000000, 0x000000}, {0x001f2b, 0x000399, 0x000000}},
+	{ /* 0x001f9c */ {0x001f94, 0x000000, 0x000000}, {0x001f9c, 0x000000, 0x000000}, {0x001f2c, 0x000399, 0x000000}},
+	{ /* 0x001f9d */ {0x001f95, 0x000000, 0x000000}, {0x001f9d, 0x000000, 0x000000}, {0x001f2d, 0x000399, 0x000000}},
+	{ /* 0x001f9e */ {0x001f96, 0x000000, 0x000000}, {0x001f9e, 0x000000, 0x000000}, {0x001f2e, 0x000399, 0x000000}},
+	{ /* 0x001f9f */ {0x001f97, 0x000000, 0x000000}, {0x001f9f, 0x000000, 0x000000}, {0x001f2f, 0x000399, 0x000000}},
+	{ /* 0x001fa0 */ {0x001fa0, 0x000000, 0x000000}, {0x001fa8, 0x000000, 0x000000}, {0x001f68, 0x000399, 0x000000}},
+	{ /* 0x001fa1 */ {0x001fa1, 0x000000, 0x000000}, {0x001fa9, 0x000000, 0x000000}, {0x001f69, 0x000399, 0x000000}},
+	{ /* 0x001fa2 */ {0x001fa2, 0x000000, 0x000000}, {0x001faa, 0x000000, 0x000000}, {0x001f6a, 0x000399, 0x000000}},
+	{ /* 0x001fa3 */ {0x001fa3, 0x000000, 0x000000}, {0x001fab, 0x000000, 0x000000}, {0x001f6b, 0x000399, 0x000000}},
+	{ /* 0x001fa4 */ {0x001fa4, 0x000000, 0x000000}, {0x001fac, 0x000000, 0x000000}, {0x001f6c, 0x000399, 0x000000}},
+	{ /* 0x001fa5 */ {0x001fa5, 0x000000, 0x000000}, {0x001fad, 0x000000, 0x000000}, {0x001f6d, 0x000399, 0x000000}},
+	{ /* 0x001fa6 */ {0x001fa6, 0x000000, 0x000000}, {0x001fae, 0x000000, 0x000000}, {0x001f6e, 0x000399, 0x000000}},
+	{ /* 0x001fa7 */ {0x001fa7, 0x000000, 0x000000}, {0x001faf, 0x000000, 0x000000}, {0x001f6f, 0x000399, 0x000000}},
+	{ /* 0x001fa8 */ {0x001fa0, 0x000000, 0x000000}, {0x001fa8, 0x000000, 0x000000}, {0x001f68, 0x000399, 0x000000}},
+	{ /* 0x001fa9 */ {0x001fa1, 0x000000, 0x000000}, {0x001fa9, 0x000000, 0x000000}, {0x001f69, 0x000399, 0x000000}},
+	{ /* 0x001faa */ {0x001fa2, 0x000000, 0x000000}, {0x001faa, 0x000000, 0x000000}, {0x001f6a, 0x000399, 0x000000}},
+	{ /* 0x001fab */ {0x001fa3, 0x000000, 0x000000}, {0x001fab, 0x000000, 0x000000}, {0x001f6b, 0x000399, 0x000000}},
+	{ /* 0x001fac */ {0x001fa4, 0x000000, 0x000000}, {0x001fac, 0x000000, 0x000000}, {0x001f6c, 0x000399, 0x000000}},
+	{ /* 0x001fad */ {0x001fa5, 0x000000, 0x000000}, {0x001fad, 0x000000, 0x000000}, {0x001f6d, 0x000399, 0x000000}},
+	{ /* 0x001fae */ {0x001fa6, 0x000000, 0x000000}, {0x001fae, 0x000000, 0x000000}, {0x001f6e, 0x000399, 0x000000}},
+	{ /* 0x001faf */ {0x001fa7, 0x000000, 0x000000}, {0x001faf, 0x000000, 0x000000}, {0x001f6f, 0x000399, 0x000000}},
+	{ /* 0x001fb2 */ {0x001fb2, 0x000000, 0x000000}, {0x001fba, 0x000345, 0x000000}, {0x001fba, 0x000399, 0x000000}},
+	{ /* 0x001fb3 */ {0x001fb3, 0x000000, 0x000000}, {0x001fbc, 0x000000, 0x000000}, {0x000391, 0x000399, 0x000000}},
+	{ /* 0x001fb4 */ {0x001fb4, 0x000000, 0x000000}, {0x000386, 0x000345, 0x000000}, {0x000386, 0x000399, 0x000000}},
+	{ /* 0x001fb6 */ {0x001fb6, 0x000000, 0x000000}, {0x000391, 0x000342, 0x000000}, {0x000391, 0x000342, 0x000000}},
+	{ /* 0x001fb7 */ {0x001fb7, 0x000000, 0x000000}, {0x000391, 0x000342, 0x000345}, {0x000391, 0x000342, 0x000399}},
+	{ /* 0x001fbc */ {0x001fb3, 0x000000, 0x000000}, {0x001fbc, 0x000000, 0x000000}, {0x000391, 0x000399, 0x000000}},
+	{ /* 0x001fc2 */ {0x001fc2, 0x000000, 0x000000}, {0x001fca, 0x000345, 0x000000}, {0x001fca, 0x000399, 0x000000}},
+	{ /* 0x001fc3 */ {0x001fc3, 0x000000, 0x000000}, {0x001fcc, 0x000000, 0x000000}, {0x000397, 0x000399, 0x000000}},
+	{ /* 0x001fc4 */ {0x001fc4, 0x000000, 0x000000}, {0x000389, 0x000345, 0x000000}, {0x000389, 0x000399, 0x000000}},
+	{ /* 0x001fc6 */ {0x001fc6, 0x000000, 0x000000}, {0x000397, 0x000342, 0x000000}, {0x000397, 0x000342, 0x000000}},
+	{ /* 0x001fc7 */ {0x001fc7, 0x000000, 0x000000}, {0x000397, 0x000342, 0x000345}, {0x000397, 0x000342, 0x000399}},
+	{ /* 0x001fcc */ {0x001fc3, 0x000000, 0x000000}, {0x001fcc, 0x000000, 0x000000}, {0x000397, 0x000399, 0x000000}},
+	{ /* 0x001fd2 */ {0x001fd2, 0x000000, 0x000000}, {0x000399, 0x000308, 0x000300}, {0x000399, 0x000308, 0x000300}},
+	{ /* 0x001fd3 */ {0x001fd3, 0x000000, 0x000000}, {0x000399, 0x000308, 0x000301}, {0x000399, 0x000308, 0x000301}},
+	{ /* 0x001fd6 */ {0x001fd6, 0x000000, 0x000000}, {0x000399, 0x000342, 0x000000}, {0x000399, 0x000342, 0x000000}},
+	{ /* 0x001fd7 */ {0x001fd7, 0x000000, 0x000000}, {0x000399, 0x000308, 0x000342}, {0x000399, 0x000308, 0x000342}},
+	{ /* 0x001fe2 */ {0x001fe2, 0x000000, 0x000000}, {0x0003a5, 0x000308, 0x000300}, {0x0003a5, 0x000308, 0x000300}},
+	{ /* 0x001fe3 */ {0x001fe3, 0x000000, 0x000000}, {0x0003a5, 0x000308, 0x000301}, {0x0003a5, 0x000308, 0x000301}},
+	{ /* 0x001fe4 */ {0x001fe4, 0x000000, 0x000000}, {0x0003a1, 0x000313, 0x000000}, {0x0003a1, 0x000313, 0x000000}},
+	{ /* 0x001fe6 */ {0x001fe6, 0x000000, 0x000000}, {0x0003a5, 0x000342, 0x000000}, {0x0003a5, 0x000342, 0x000000}},
+	{ /* 0x001fe7 */ {0x001fe7, 0x000000, 0x000000}, {0x0003a5, 0x000308, 0x000342}, {0x0003a5, 0x000308, 0x000342}},
+	{ /* 0x001ff2 */ {0x001ff2, 0x000000, 0x000000}, {0x001ffa, 0x000345, 0x000000}, {0x001ffa, 0x000399, 0x000000}},
+	{ /* 0x001ff3 */ {0x001ff3, 0x000000, 0x000000}, {0x001ffc, 0x000000, 0x000000}, {0x0003a9, 0x000399, 0x000000}},
+	{ /* 0x001ff4 */ {0x001ff4, 0x000000, 0x000000}, {0x00038f, 0x000345, 0x000000}, {0x00038f, 0x000399, 0x000000}},
+	{ /* 0x001ff6 */ {0x001ff6, 0x000000, 0x000000}, {0x0003a9, 0x000342, 0x000000}, {0x0003a9, 0x000342, 0x000000}},
+	{ /* 0x001ff7 */ {0x001ff7, 0x000000, 0x000000}, {0x0003a9, 0x000342, 0x000345}, {0x0003a9, 0x000342, 0x000399}},
+	{ /* 0x001ffc */ {0x001ff3, 0x000000, 0x000000}, {0x001ffc, 0x000000, 0x000000}, {0x0003a9, 0x000399, 0x000000}},
+	{ /* 0x00fb00 */ {0x00fb00, 0x000000, 0x000000}, {0x000046, 0x000066, 0x000000}, {0x000046, 0x000046, 0x000000}},
+	{ /* 0x00fb01 */ {0x00fb01, 0x000000, 0x000000}, {0x000046, 0x000069, 0x000000}, {0x000046, 0x000049, 0x000000}},
+	{ /* 0x00fb02 */ {0x00fb02, 0x000000, 0x000000}, {0x000046, 0x00006c, 0x000000}, {0x000046, 0x00004c, 0x000000}},
+	{ /* 0x00fb03 */ {0x00fb03, 0x000000, 0x000000}, {0x000046, 0x000066, 0x000069}, {0x000046, 0x000046, 0x000049}},
+	{ /* 0x00fb04 */ {0x00fb04, 0x000000, 0x000000}, {0x000046, 0x000066, 0x00006c}, {0x000046, 0x000046, 0x00004c}},
+	{ /* 0x00fb05 */ {0x00fb05, 0x000000, 0x000000}, {0x000053, 0x000074, 0x000000}, {0x000053, 0x000054, 0x000000}},
+	{ /* 0x00fb06 */ {0x00fb06, 0x000000, 0x000000}, {0x000053, 0x000074, 0x000000}, {0x000053, 0x000054, 0x000000}},
+	{ /* 0x00fb13 */ {0x00fb13, 0x000000, 0x000000}, {0x000544, 0x000576, 0x000000}, {0x000544, 0x000546, 0x000000}},
+	{ /* 0x00fb14 */ {0x00fb14, 0x000000, 0x000000}, {0x000544, 0x000565, 0x000000}, {0x000544, 0x000535, 0x000000}},
+	{ /* 0x00fb15 */ {0x00fb15, 0x000000, 0x000000}, {0x000544, 0x00056b, 0x000000}, {0x000544, 0x00053b, 0x000000}},
+	{ /* 0x00fb16 */ {0x00fb16, 0x000000, 0x000000}, {0x00054e, 0x000576, 0x000000}, {0x00054e, 0x000546, 0x000000}},
+	{ /* 0x00fb17 */ {0x00fb17, 0x000000, 0x000000}, {0x000544, 0x00056d, 0x000000}, {0x000544, 0x00053d, 0x000000}}
+};
+
+/* simple one-to-one case mapping table */
+static const pg_simple_case_map simple_case_map[2927] =
+{
+	{0x000041, 0x000061, 0x000000, 0x000000, NULL},
+	{0x000042, 0x000062, 0x000000, 0x000000, NULL},
+	{0x000043, 0x000063, 0x000000, 0x000000, NULL},
+	{0x000044, 0x000064, 0x000000, 0x000000, NULL},
+	{0x000045, 0x000065, 0x000000, 0x000000, NULL},
+	{0x000046, 0x000066, 0x000000, 0x000000, NULL},
+	{0x000047, 0x000067, 0x000000, 0x000000, NULL},
+	{0x000048, 0x000068, 0x000000, 0x000000, NULL},
+	{0x000049, 0x000069, 0x000000, 0x000000, NULL},
+	{0x00004a, 0x00006a, 0x000000, 0x000000, NULL},
+	{0x00004b, 0x00006b, 0x000000, 0x000000, NULL},
+	{0x00004c, 0x00006c, 0x000000, 0x000000, NULL},
+	{0x00004d, 0x00006d, 0x000000, 0x000000, NULL},
+	{0x00004e, 0x00006e, 0x000000, 0x000000, NULL},
+	{0x00004f, 0x00006f, 0x000000, 0x000000, NULL},
+	{0x000050, 0x000070, 0x000000, 0x000000, NULL},
+	{0x000051, 0x000071, 0x000000, 0x000000, NULL},
+	{0x000052, 0x000072, 0x000000, 0x000000, NULL},
+	{0x000053, 0x000073, 0x000000, 0x000000, NULL},
+	{0x000054, 0x000074, 0x000000, 0x000000, NULL},
+	{0x000055, 0x000075, 0x000000, 0x000000, NULL},
+	{0x000056, 0x000076, 0x000000, 0x000000, NULL},
+	{0x000057, 0x000077, 0x000000, 0x000000, NULL},
+	{0x000058, 0x000078, 0x000000, 0x000000, NULL},
+	{0x000059, 0x000079, 0x000000, 0x000000, NULL},
+	{0x00005a, 0x00007a, 0x000000, 0x000000, NULL},
+	{0x000061, 0x000000, 0x000041, 0x000041, NULL},
+	{0x000062, 0x000000, 0x000042, 0x000042, NULL},
+	{0x000063, 0x000000, 0x000043, 0x000043, NULL},
+	{0x000064, 0x000000, 0x000044, 0x000044, NULL},
+	{0x000065, 0x000000, 0x000045, 0x000045, NULL},
+	{0x000066, 0x000000, 0x000046, 0x000046, NULL},
+	{0x000067, 0x000000, 0x000047, 0x000047, NULL},
+	{0x000068, 0x000000, 0x000048, 0x000048, NULL},
+	{0x000069, 0x000000, 0x000049, 0x000049, NULL},
+	{0x00006a, 0x000000, 0x00004a, 0x00004a, NULL},
+	{0x00006b, 0x000000, 0x00004b, 0x00004b, NULL},
+	{0x00006c, 0x000000, 0x00004c, 0x00004c, NULL},
+	{0x00006d, 0x000000, 0x00004d, 0x00004d, NULL},
+	{0x00006e, 0x000000, 0x00004e, 0x00004e, NULL},
+	{0x00006f, 0x000000, 0x00004f, 0x00004f, NULL},
+	{0x000070, 0x000000, 0x000050, 0x000050, NULL},
+	{0x000071, 0x000000, 0x000051, 0x000051, NULL},
+	{0x000072, 0x000000, 0x000052, 0x000052, NULL},
+	{0x000073, 0x000000, 0x000053, 0x000053, NULL},
+	{0x000074, 0x000000, 0x000054, 0x000054, NULL},
+	{0x000075, 0x000000, 0x000055, 0x000055, NULL},
+	{0x000076, 0x000000, 0x000056, 0x000056, NULL},
+	{0x000077, 0x000000, 0x000057, 0x000057, NULL},
+	{0x000078, 0x000000, 0x000058, 0x000058, NULL},
+	{0x000079, 0x000000, 0x000059, 0x000059, NULL},
+	{0x00007a, 0x000000, 0x00005a, 0x00005a, NULL},
+	{0x0000b5, 0x000000, 0x00039c, 0x00039c, NULL},
+	{0x0000c0, 0x0000e0, 0x000000, 0x000000, NULL},
+	{0x0000c1, 0x0000e1, 0x000000, 0x000000, NULL},
+	{0x0000c2, 0x0000e2, 0x000000, 0x000000, NULL},
+	{0x0000c3, 0x0000e3, 0x000000, 0x000000, NULL},
+	{0x0000c4, 0x0000e4, 0x000000, 0x000000, NULL},
+	{0x0000c5, 0x0000e5, 0x000000, 0x000000, NULL},
+	{0x0000c6, 0x0000e6, 0x000000, 0x000000, NULL},
+	{0x0000c7, 0x0000e7, 0x000000, 0x000000, NULL},
+	{0x0000c8, 0x0000e8, 0x000000, 0x000000, NULL},
+	{0x0000c9, 0x0000e9, 0x000000, 0x000000, NULL},
+	{0x0000ca, 0x0000ea, 0x000000, 0x000000, NULL},
+	{0x0000cb, 0x0000eb, 0x000000, 0x000000, NULL},
+	{0x0000cc, 0x0000ec, 0x000000, 0x000000, NULL},
+	{0x0000cd, 0x0000ed, 0x000000, 0x000000, NULL},
+	{0x0000ce, 0x0000ee, 0x000000, 0x000000, NULL},
+	{0x0000cf, 0x0000ef, 0x000000, 0x000000, NULL},
+	{0x0000d0, 0x0000f0, 0x000000, 0x000000, NULL},
+	{0x0000d1, 0x0000f1, 0x000000, 0x000000, NULL},
+	{0x0000d2, 0x0000f2, 0x000000, 0x000000, NULL},
+	{0x0000d3, 0x0000f3, 0x000000, 0x000000, NULL},
+	{0x0000d4, 0x0000f4, 0x000000, 0x000000, NULL},
+	{0x0000d5, 0x0000f5, 0x000000, 0x000000, NULL},
+	{0x0000d6, 0x0000f6, 0x000000, 0x000000, NULL},
+	{0x0000d8, 0x0000f8, 0x000000, 0x000000, NULL},
+	{0x0000d9, 0x0000f9, 0x000000, 0x000000, NULL},
+	{0x0000da, 0x0000fa, 0x000000, 0x000000, NULL},
+	{0x0000db, 0x0000fb, 0x000000, 0x000000, NULL},
+	{0x0000dc, 0x0000fc, 0x000000, 0x000000, NULL},
+	{0x0000dd, 0x0000fd, 0x000000, 0x000000, NULL},
+	{0x0000de, 0x0000fe, 0x000000, 0x000000, NULL},
+	{0x0000df, 0x000000, 0x000000, 0x000000, &special_case_map[0]},
+	{0x0000e0, 0x000000, 0x0000c0, 0x0000c0, NULL},
+	{0x0000e1, 0x000000, 0x0000c1, 0x0000c1, NULL},
+	{0x0000e2, 0x000000, 0x0000c2, 0x0000c2, NULL},
+	{0x0000e3, 0x000000, 0x0000c3, 0x0000c3, NULL},
+	{0x0000e4, 0x000000, 0x0000c4, 0x0000c4, NULL},
+	{0x0000e5, 0x000000, 0x0000c5, 0x0000c5, NULL},
+	{0x0000e6, 0x000000, 0x0000c6, 0x0000c6, NULL},
+	{0x0000e7, 0x000000, 0x0000c7, 0x0000c7, NULL},
+	{0x0000e8, 0x000000, 0x0000c8, 0x0000c8, NULL},
+	{0x0000e9, 0x000000, 0x0000c9, 0x0000c9, NULL},
+	{0x0000ea, 0x000000, 0x0000ca, 0x0000ca, NULL},
+	{0x0000eb, 0x000000, 0x0000cb, 0x0000cb, NULL},
+	{0x0000ec, 0x000000, 0x0000cc, 0x0000cc, NULL},
+	{0x0000ed, 0x000000, 0x0000cd, 0x0000cd, NULL},
+	{0x0000ee, 0x000000, 0x0000ce, 0x0000ce, NULL},
+	{0x0000ef, 0x000000, 0x0000cf, 0x0000cf, NULL},
+	{0x0000f0, 0x000000, 0x0000d0, 0x0000d0, NULL},
+	{0x0000f1, 0x000000, 0x0000d1, 0x0000d1, NULL},
+	{0x0000f2, 0x000000, 0x0000d2, 0x0000d2, NULL},
+	{0x0000f3, 0x000000, 0x0000d3, 0x0000d3, NULL},
+	{0x0000f4, 0x000000, 0x0000d4, 0x0000d4, NULL},
+	{0x0000f5, 0x000000, 0x0000d5, 0x0000d5, NULL},
+	{0x0000f6, 0x000000, 0x0000d6, 0x0000d6, NULL},
+	{0x0000f8, 0x000000, 0x0000d8, 0x0000d8, NULL},
+	{0x0000f9, 0x000000, 0x0000d9, 0x0000d9, NULL},
+	{0x0000fa, 0x000000, 0x0000da, 0x0000da, NULL},
+	{0x0000fb, 0x000000, 0x0000db, 0x0000db, NULL},
+	{0x0000fc, 0x000000, 0x0000dc, 0x0000dc, NULL},
+	{0x0000fd, 0x000000, 0x0000dd, 0x0000dd, NULL},
+	{0x0000fe, 0x000000, 0x0000de, 0x0000de, NULL},
+	{0x0000ff, 0x000000, 0x000178, 0x000178, NULL},
+	{0x000100, 0x000101, 0x000000, 0x000000, NULL},
+	{0x000101, 0x000000, 0x000100, 0x000100, NULL},
+	{0x000102, 0x000103, 0x000000, 0x000000, NULL},
+	{0x000103, 0x000000, 0x000102, 0x000102, NULL},
+	{0x000104, 0x000105, 0x000000, 0x000000, NULL},
+	{0x000105, 0x000000, 0x000104, 0x000104, NULL},
+	{0x000106, 0x000107, 0x000000, 0x000000, NULL},
+	{0x000107, 0x000000, 0x000106, 0x000106, NULL},
+	{0x000108, 0x000109, 0x000000, 0x000000, NULL},
+	{0x000109, 0x000000, 0x000108, 0x000108, NULL},
+	{0x00010a, 0x00010b, 0x000000, 0x000000, NULL},
+	{0x00010b, 0x000000, 0x00010a, 0x00010a, NULL},
+	{0x00010c, 0x00010d, 0x000000, 0x000000, NULL},
+	{0x00010d, 0x000000, 0x00010c, 0x00010c, NULL},
+	{0x00010e, 0x00010f, 0x000000, 0x000000, NULL},
+	{0x00010f, 0x000000, 0x00010e, 0x00010e, NULL},
+	{0x000110, 0x000111, 0x000000, 0x000000, NULL},
+	{0x000111, 0x000000, 0x000110, 0x000110, NULL},
+	{0x000112, 0x000113, 0x000000, 0x000000, NULL},
+	{0x000113, 0x000000, 0x000112, 0x000112, NULL},
+	{0x000114, 0x000115, 0x000000, 0x000000, NULL},
+	{0x000115, 0x000000, 0x000114, 0x000114, NULL},
+	{0x000116, 0x000117, 0x000000, 0x000000, NULL},
+	{0x000117, 0x000000, 0x000116, 0x000116, NULL},
+	{0x000118, 0x000119, 0x000000, 0x000000, NULL},
+	{0x000119, 0x000000, 0x000118, 0x000118, NULL},
+	{0x00011a, 0x00011b, 0x000000, 0x000000, NULL},
+	{0x00011b, 0x000000, 0x00011a, 0x00011a, NULL},
+	{0x00011c, 0x00011d, 0x000000, 0x000000, NULL},
+	{0x00011d, 0x000000, 0x00011c, 0x00011c, NULL},
+	{0x00011e, 0x00011f, 0x000000, 0x000000, NULL},
+	{0x00011f, 0x000000, 0x00011e, 0x00011e, NULL},
+	{0x000120, 0x000121, 0x000000, 0x000000, NULL},
+	{0x000121, 0x000000, 0x000120, 0x000120, NULL},
+	{0x000122, 0x000123, 0x000000, 0x000000, NULL},
+	{0x000123, 0x000000, 0x000122, 0x000122, NULL},
+	{0x000124, 0x000125, 0x000000, 0x000000, NULL},
+	{0x000125, 0x000000, 0x000124, 0x000124, NULL},
+	{0x000126, 0x000127, 0x000000, 0x000000, NULL},
+	{0x000127, 0x000000, 0x000126, 0x000126, NULL},
+	{0x000128, 0x000129, 0x000000, 0x000000, NULL},
+	{0x000129, 0x000000, 0x000128, 0x000128, NULL},
+	{0x00012a, 0x00012b, 0x000000, 0x000000, NULL},
+	{0x00012b, 0x000000, 0x00012a, 0x00012a, NULL},
+	{0x00012c, 0x00012d, 0x000000, 0x000000, NULL},
+	{0x00012d, 0x000000, 0x00012c, 0x00012c, NULL},
+	{0x00012e, 0x00012f, 0x000000, 0x000000, NULL},
+	{0x00012f, 0x000000, 0x00012e, 0x00012e, NULL},
+	{0x000130, 0x000069, 0x000000, 0x000000, &special_case_map[1]},
+	{0x000131, 0x000000, 0x000049, 0x000049, NULL},
+	{0x000132, 0x000133, 0x000000, 0x000000, NULL},
+	{0x000133, 0x000000, 0x000132, 0x000132, NULL},
+	{0x000134, 0x000135, 0x000000, 0x000000, NULL},
+	{0x000135, 0x000000, 0x000134, 0x000134, NULL},
+	{0x000136, 0x000137, 0x000000, 0x000000, NULL},
+	{0x000137, 0x000000, 0x000136, 0x000136, NULL},
+	{0x000139, 0x00013a, 0x000000, 0x000000, NULL},
+	{0x00013a, 0x000000, 0x000139, 0x000139, NULL},
+	{0x00013b, 0x00013c, 0x000000, 0x000000, NULL},
+	{0x00013c, 0x000000, 0x00013b, 0x00013b, NULL},
+	{0x00013d, 0x00013e, 0x000000, 0x000000, NULL},
+	{0x00013e, 0x000000, 0x00013d, 0x00013d, NULL},
+	{0x00013f, 0x000140, 0x000000, 0x000000, NULL},
+	{0x000140, 0x000000, 0x00013f, 0x00013f, NULL},
+	{0x000141, 0x000142, 0x000000, 0x000000, NULL},
+	{0x000142, 0x000000, 0x000141, 0x000141, NULL},
+	{0x000143, 0x000144, 0x000000, 0x000000, NULL},
+	{0x000144, 0x000000, 0x000143, 0x000143, NULL},
+	{0x000145, 0x000146, 0x000000, 0x000000, NULL},
+	{0x000146, 0x000000, 0x000145, 0x000145, NULL},
+	{0x000147, 0x000148, 0x000000, 0x000000, NULL},
+	{0x000148, 0x000000, 0x000147, 0x000147, NULL},
+	{0x000149, 0x000000, 0x000000, 0x000000, &special_case_map[2]},
+	{0x00014a, 0x00014b, 0x000000, 0x000000, NULL},
+	{0x00014b, 0x000000, 0x00014a, 0x00014a, NULL},
+	{0x00014c, 0x00014d, 0x000000, 0x000000, NULL},
+	{0x00014d, 0x000000, 0x00014c, 0x00014c, NULL},
+	{0x00014e, 0x00014f, 0x000000, 0x000000, NULL},
+	{0x00014f, 0x000000, 0x00014e, 0x00014e, NULL},
+	{0x000150, 0x000151, 0x000000, 0x000000, NULL},
+	{0x000151, 0x000000, 0x000150, 0x000150, NULL},
+	{0x000152, 0x000153, 0x000000, 0x000000, NULL},
+	{0x000153, 0x000000, 0x000152, 0x000152, NULL},
+	{0x000154, 0x000155, 0x000000, 0x000000, NULL},
+	{0x000155, 0x000000, 0x000154, 0x000154, NULL},
+	{0x000156, 0x000157, 0x000000, 0x000000, NULL},
+	{0x000157, 0x000000, 0x000156, 0x000156, NULL},
+	{0x000158, 0x000159, 0x000000, 0x000000, NULL},
+	{0x000159, 0x000000, 0x000158, 0x000158, NULL},
+	{0x00015a, 0x00015b, 0x000000, 0x000000, NULL},
+	{0x00015b, 0x000000, 0x00015a, 0x00015a, NULL},
+	{0x00015c, 0x00015d, 0x000000, 0x000000, NULL},
+	{0x00015d, 0x000000, 0x00015c, 0x00015c, NULL},
+	{0x00015e, 0x00015f, 0x000000, 0x000000, NULL},
+	{0x00015f, 0x000000, 0x00015e, 0x00015e, NULL},
+	{0x000160, 0x000161, 0x000000, 0x000000, NULL},
+	{0x000161, 0x000000, 0x000160, 0x000160, NULL},
+	{0x000162, 0x000163, 0x000000, 0x000000, NULL},
+	{0x000163, 0x000000, 0x000162, 0x000162, NULL},
+	{0x000164, 0x000165, 0x000000, 0x000000, NULL},
+	{0x000165, 0x000000, 0x000164, 0x000164, NULL},
+	{0x000166, 0x000167, 0x000000, 0x000000, NULL},
+	{0x000167, 0x000000, 0x000166, 0x000166, NULL},
+	{0x000168, 0x000169, 0x000000, 0x000000, NULL},
+	{0x000169, 0x000000, 0x000168, 0x000168, NULL},
+	{0x00016a, 0x00016b, 0x000000, 0x000000, NULL},
+	{0x00016b, 0x000000, 0x00016a, 0x00016a, NULL},
+	{0x00016c, 0x00016d, 0x000000, 0x000000, NULL},
+	{0x00016d, 0x000000, 0x00016c, 0x00016c, NULL},
+	{0x00016e, 0x00016f, 0x000000, 0x000000, NULL},
+	{0x00016f, 0x000000, 0x00016e, 0x00016e, NULL},
+	{0x000170, 0x000171, 0x000000, 0x000000, NULL},
+	{0x000171, 0x000000, 0x000170, 0x000170, NULL},
+	{0x000172, 0x000173, 0x000000, 0x000000, NULL},
+	{0x000173, 0x000000, 0x000172, 0x000172, NULL},
+	{0x000174, 0x000175, 0x000000, 0x000000, NULL},
+	{0x000175, 0x000000, 0x000174, 0x000174, NULL},
+	{0x000176, 0x000177, 0x000000, 0x000000, NULL},
+	{0x000177, 0x000000, 0x000176, 0x000176, NULL},
+	{0x000178, 0x0000ff, 0x000000, 0x000000, NULL},
+	{0x000179, 0x00017a, 0x000000, 0x000000, NULL},
+	{0x00017a, 0x000000, 0x000179, 0x000179, NULL},
+	{0x00017b, 0x00017c, 0x000000, 0x000000, NULL},
+	{0x00017c, 0x000000, 0x00017b, 0x00017b, NULL},
+	{0x00017d, 0x00017e, 0x000000, 0x000000, NULL},
+	{0x00017e, 0x000000, 0x00017d, 0x00017d, NULL},
+	{0x00017f, 0x000000, 0x000053, 0x000053, NULL},
+	{0x000180, 0x000000, 0x000243, 0x000243, NULL},
+	{0x000181, 0x000253, 0x000000, 0x000000, NULL},
+	{0x000182, 0x000183, 0x000000, 0x000000, NULL},
+	{0x000183, 0x000000, 0x000182, 0x000182, NULL},
+	{0x000184, 0x000185, 0x000000, 0x000000, NULL},
+	{0x000185, 0x000000, 0x000184, 0x000184, NULL},
+	{0x000186, 0x000254, 0x000000, 0x000000, NULL},
+	{0x000187, 0x000188, 0x000000, 0x000000, NULL},
+	{0x000188, 0x000000, 0x000187, 0x000187, NULL},
+	{0x000189, 0x000256, 0x000000, 0x000000, NULL},
+	{0x00018a, 0x000257, 0x000000, 0x000000, NULL},
+	{0x00018b, 0x00018c, 0x000000, 0x000000, NULL},
+	{0x00018c, 0x000000, 0x00018b, 0x00018b, NULL},
+	{0x00018e, 0x0001dd, 0x000000, 0x000000, NULL},
+	{0x00018f, 0x000259, 0x000000, 0x000000, NULL},
+	{0x000190, 0x00025b, 0x000000, 0x000000, NULL},
+	{0x000191, 0x000192, 0x000000, 0x000000, NULL},
+	{0x000192, 0x000000, 0x000191, 0x000191, NULL},
+	{0x000193, 0x000260, 0x000000, 0x000000, NULL},
+	{0x000194, 0x000263, 0x000000, 0x000000, NULL},
+	{0x000195, 0x000000, 0x0001f6, 0x0001f6, NULL},
+	{0x000196, 0x000269, 0x000000, 0x000000, NULL},
+	{0x000197, 0x000268, 0x000000, 0x000000, NULL},
+	{0x000198, 0x000199, 0x000000, 0x000000, NULL},
+	{0x000199, 0x000000, 0x000198, 0x000198, NULL},
+	{0x00019a, 0x000000, 0x00023d, 0x00023d, NULL},
+	{0x00019c, 0x00026f, 0x000000, 0x000000, NULL},
+	{0x00019d, 0x000272, 0x000000, 0x000000, NULL},
+	{0x00019e, 0x000000, 0x000220, 0x000220, NULL},
+	{0x00019f, 0x000275, 0x000000, 0x000000, NULL},
+	{0x0001a0, 0x0001a1, 0x000000, 0x000000, NULL},
+	{0x0001a1, 0x000000, 0x0001a0, 0x0001a0, NULL},
+	{0x0001a2, 0x0001a3, 0x000000, 0x000000, NULL},
+	{0x0001a3, 0x000000, 0x0001a2, 0x0001a2, NULL},
+	{0x0001a4, 0x0001a5, 0x000000, 0x000000, NULL},
+	{0x0001a5, 0x000000, 0x0001a4, 0x0001a4, NULL},
+	{0x0001a6, 0x000280, 0x000000, 0x000000, NULL},
+	{0x0001a7, 0x0001a8, 0x000000, 0x000000, NULL},
+	{0x0001a8, 0x000000, 0x0001a7, 0x0001a7, NULL},
+	{0x0001a9, 0x000283, 0x000000, 0x000000, NULL},
+	{0x0001ac, 0x0001ad, 0x000000, 0x000000, NULL},
+	{0x0001ad, 0x000000, 0x0001ac, 0x0001ac, NULL},
+	{0x0001ae, 0x000288, 0x000000, 0x000000, NULL},
+	{0x0001af, 0x0001b0, 0x000000, 0x000000, NULL},
+	{0x0001b0, 0x000000, 0x0001af, 0x0001af, NULL},
+	{0x0001b1, 0x00028a, 0x000000, 0x000000, NULL},
+	{0x0001b2, 0x00028b, 0x000000, 0x000000, NULL},
+	{0x0001b3, 0x0001b4, 0x000000, 0x000000, NULL},
+	{0x0001b4, 0x000000, 0x0001b3, 0x0001b3, NULL},
+	{0x0001b5, 0x0001b6, 0x000000, 0x000000, NULL},
+	{0x0001b6, 0x000000, 0x0001b5, 0x0001b5, NULL},
+	{0x0001b7, 0x000292, 0x000000, 0x000000, NULL},
+	{0x0001b8, 0x0001b9, 0x000000, 0x000000, NULL},
+	{0x0001b9, 0x000000, 0x0001b8, 0x0001b8, NULL},
+	{0x0001bc, 0x0001bd, 0x000000, 0x000000, NULL},
+	{0x0001bd, 0x000000, 0x0001bc, 0x0001bc, NULL},
+	{0x0001bf, 0x000000, 0x0001f7, 0x0001f7, NULL},
+	{0x0001c4, 0x0001c6, 0x0001c5, 0x000000, NULL},
+	{0x0001c5, 0x0001c6, 0x0001c5, 0x0001c4, NULL},
+	{0x0001c6, 0x000000, 0x0001c5, 0x0001c4, NULL},
+	{0x0001c7, 0x0001c9, 0x0001c8, 0x000000, NULL},
+	{0x0001c8, 0x0001c9, 0x0001c8, 0x0001c7, NULL},
+	{0x0001c9, 0x000000, 0x0001c8, 0x0001c7, NULL},
+	{0x0001ca, 0x0001cc, 0x0001cb, 0x000000, NULL},
+	{0x0001cb, 0x0001cc, 0x0001cb, 0x0001ca, NULL},
+	{0x0001cc, 0x000000, 0x0001cb, 0x0001ca, NULL},
+	{0x0001cd, 0x0001ce, 0x000000, 0x000000, NULL},
+	{0x0001ce, 0x000000, 0x0001cd, 0x0001cd, NULL},
+	{0x0001cf, 0x0001d0, 0x000000, 0x000000, NULL},
+	{0x0001d0, 0x000000, 0x0001cf, 0x0001cf, NULL},
+	{0x0001d1, 0x0001d2, 0x000000, 0x000000, NULL},
+	{0x0001d2, 0x000000, 0x0001d1, 0x0001d1, NULL},
+	{0x0001d3, 0x0001d4, 0x000000, 0x000000, NULL},
+	{0x0001d4, 0x000000, 0x0001d3, 0x0001d3, NULL},
+	{0x0001d5, 0x0001d6, 0x000000, 0x000000, NULL},
+	{0x0001d6, 0x000000, 0x0001d5, 0x0001d5, NULL},
+	{0x0001d7, 0x0001d8, 0x000000, 0x000000, NULL},
+	{0x0001d8, 0x000000, 0x0001d7, 0x0001d7, NULL},
+	{0x0001d9, 0x0001da, 0x000000, 0x000000, NULL},
+	{0x0001da, 0x000000, 0x0001d9, 0x0001d9, NULL},
+	{0x0001db, 0x0001dc, 0x000000, 0x000000, NULL},
+	{0x0001dc, 0x000000, 0x0001db, 0x0001db, NULL},
+	{0x0001dd, 0x000000, 0x00018e, 0x00018e, NULL},
+	{0x0001de, 0x0001df, 0x000000, 0x000000, NULL},
+	{0x0001df, 0x000000, 0x0001de, 0x0001de, NULL},
+	{0x0001e0, 0x0001e1, 0x000000, 0x000000, NULL},
+	{0x0001e1, 0x000000, 0x0001e0, 0x0001e0, NULL},
+	{0x0001e2, 0x0001e3, 0x000000, 0x000000, NULL},
+	{0x0001e3, 0x000000, 0x0001e2, 0x0001e2, NULL},
+	{0x0001e4, 0x0001e5, 0x000000, 0x000000, NULL},
+	{0x0001e5, 0x000000, 0x0001e4, 0x0001e4, NULL},
+	{0x0001e6, 0x0001e7, 0x000000, 0x000000, NULL},
+	{0x0001e7, 0x000000, 0x0001e6, 0x0001e6, NULL},
+	{0x0001e8, 0x0001e9, 0x000000, 0x000000, NULL},
+	{0x0001e9, 0x000000, 0x0001e8, 0x0001e8, NULL},
+	{0x0001ea, 0x0001eb, 0x000000, 0x000000, NULL},
+	{0x0001eb, 0x000000, 0x0001ea, 0x0001ea, NULL},
+	{0x0001ec, 0x0001ed, 0x000000, 0x000000, NULL},
+	{0x0001ed, 0x000000, 0x0001ec, 0x0001ec, NULL},
+	{0x0001ee, 0x0001ef, 0x000000, 0x000000, NULL},
+	{0x0001ef, 0x000000, 0x0001ee, 0x0001ee, NULL},
+	{0x0001f0, 0x000000, 0x000000, 0x000000, &special_case_map[3]},
+	{0x0001f1, 0x0001f3, 0x0001f2, 0x000000, NULL},
+	{0x0001f2, 0x0001f3, 0x0001f2, 0x0001f1, NULL},
+	{0x0001f3, 0x000000, 0x0001f2, 0x0001f1, NULL},
+	{0x0001f4, 0x0001f5, 0x000000, 0x000000, NULL},
+	{0x0001f5, 0x000000, 0x0001f4, 0x0001f4, NULL},
+	{0x0001f6, 0x000195, 0x000000, 0x000000, NULL},
+	{0x0001f7, 0x0001bf, 0x000000, 0x000000, NULL},
+	{0x0001f8, 0x0001f9, 0x000000, 0x000000, NULL},
+	{0x0001f9, 0x000000, 0x0001f8, 0x0001f8, NULL},
+	{0x0001fa, 0x0001fb, 0x000000, 0x000000, NULL},
+	{0x0001fb, 0x000000, 0x0001fa, 0x0001fa, NULL},
+	{0x0001fc, 0x0001fd, 0x000000, 0x000000, NULL},
+	{0x0001fd, 0x000000, 0x0001fc, 0x0001fc, NULL},
+	{0x0001fe, 0x0001ff, 0x000000, 0x000000, NULL},
+	{0x0001ff, 0x000000, 0x0001fe, 0x0001fe, NULL},
+	{0x000200, 0x000201, 0x000000, 0x000000, NULL},
+	{0x000201, 0x000000, 0x000200, 0x000200, NULL},
+	{0x000202, 0x000203, 0x000000, 0x000000, NULL},
+	{0x000203, 0x000000, 0x000202, 0x000202, NULL},
+	{0x000204, 0x000205, 0x000000, 0x000000, NULL},
+	{0x000205, 0x000000, 0x000204, 0x000204, NULL},
+	{0x000206, 0x000207, 0x000000, 0x000000, NULL},
+	{0x000207, 0x000000, 0x000206, 0x000206, NULL},
+	{0x000208, 0x000209, 0x000000, 0x000000, NULL},
+	{0x000209, 0x000000, 0x000208, 0x000208, NULL},
+	{0x00020a, 0x00020b, 0x000000, 0x000000, NULL},
+	{0x00020b, 0x000000, 0x00020a, 0x00020a, NULL},
+	{0x00020c, 0x00020d, 0x000000, 0x000000, NULL},
+	{0x00020d, 0x000000, 0x00020c, 0x00020c, NULL},
+	{0x00020e, 0x00020f, 0x000000, 0x000000, NULL},
+	{0x00020f, 0x000000, 0x00020e, 0x00020e, NULL},
+	{0x000210, 0x000211, 0x000000, 0x000000, NULL},
+	{0x000211, 0x000000, 0x000210, 0x000210, NULL},
+	{0x000212, 0x000213, 0x000000, 0x000000, NULL},
+	{0x000213, 0x000000, 0x000212, 0x000212, NULL},
+	{0x000214, 0x000215, 0x000000, 0x000000, NULL},
+	{0x000215, 0x000000, 0x000214, 0x000214, NULL},
+	{0x000216, 0x000217, 0x000000, 0x000000, NULL},
+	{0x000217, 0x000000, 0x000216, 0x000216, NULL},
+	{0x000218, 0x000219, 0x000000, 0x000000, NULL},
+	{0x000219, 0x000000, 0x000218, 0x000218, NULL},
+	{0x00021a, 0x00021b, 0x000000, 0x000000, NULL},
+	{0x00021b, 0x000000, 0x00021a, 0x00021a, NULL},
+	{0x00021c, 0x00021d, 0x000000, 0x000000, NULL},
+	{0x00021d, 0x000000, 0x00021c, 0x00021c, NULL},
+	{0x00021e, 0x00021f, 0x000000, 0x000000, NULL},
+	{0x00021f, 0x000000, 0x00021e, 0x00021e, NULL},
+	{0x000220, 0x00019e, 0x000000, 0x000000, NULL},
+	{0x000222, 0x000223, 0x000000, 0x000000, NULL},
+	{0x000223, 0x000000, 0x000222, 0x000222, NULL},
+	{0x000224, 0x000225, 0x000000, 0x000000, NULL},
+	{0x000225, 0x000000, 0x000224, 0x000224, NULL},
+	{0x000226, 0x000227, 0x000000, 0x000000, NULL},
+	{0x000227, 0x000000, 0x000226, 0x000226, NULL},
+	{0x000228, 0x000229, 0x000000, 0x000000, NULL},
+	{0x000229, 0x000000, 0x000228, 0x000228, NULL},
+	{0x00022a, 0x00022b, 0x000000, 0x000000, NULL},
+	{0x00022b, 0x000000, 0x00022a, 0x00022a, NULL},
+	{0x00022c, 0x00022d, 0x000000, 0x000000, NULL},
+	{0x00022d, 0x000000, 0x00022c, 0x00022c, NULL},
+	{0x00022e, 0x00022f, 0x000000, 0x000000, NULL},
+	{0x00022f, 0x000000, 0x00022e, 0x00022e, NULL},
+	{0x000230, 0x000231, 0x000000, 0x000000, NULL},
+	{0x000231, 0x000000, 0x000230, 0x000230, NULL},
+	{0x000232, 0x000233, 0x000000, 0x000000, NULL},
+	{0x000233, 0x000000, 0x000232, 0x000232, NULL},
+	{0x00023a, 0x002c65, 0x000000, 0x000000, NULL},
+	{0x00023b, 0x00023c, 0x000000, 0x000000, NULL},
+	{0x00023c, 0x000000, 0x00023b, 0x00023b, NULL},
+	{0x00023d, 0x00019a, 0x000000, 0x000000, NULL},
+	{0x00023e, 0x002c66, 0x000000, 0x000000, NULL},
+	{0x00023f, 0x000000, 0x002c7e, 0x002c7e, NULL},
+	{0x000240, 0x000000, 0x002c7f, 0x002c7f, NULL},
+	{0x000241, 0x000242, 0x000000, 0x000000, NULL},
+	{0x000242, 0x000000, 0x000241, 0x000241, NULL},
+	{0x000243, 0x000180, 0x000000, 0x000000, NULL},
+	{0x000244, 0x000289, 0x000000, 0x000000, NULL},
+	{0x000245, 0x00028c, 0x000000, 0x000000, NULL},
+	{0x000246, 0x000247, 0x000000, 0x000000, NULL},
+	{0x000247, 0x000000, 0x000246, 0x000246, NULL},
+	{0x000248, 0x000249, 0x000000, 0x000000, NULL},
+	{0x000249, 0x000000, 0x000248, 0x000248, NULL},
+	{0x00024a, 0x00024b, 0x000000, 0x000000, NULL},
+	{0x00024b, 0x000000, 0x00024a, 0x00024a, NULL},
+	{0x00024c, 0x00024d, 0x000000, 0x000000, NULL},
+	{0x00024d, 0x000000, 0x00024c, 0x00024c, NULL},
+	{0x00024e, 0x00024f, 0x000000, 0x000000, NULL},
+	{0x00024f, 0x000000, 0x00024e, 0x00024e, NULL},
+	{0x000250, 0x000000, 0x002c6f, 0x002c6f, NULL},
+	{0x000251, 0x000000, 0x002c6d, 0x002c6d, NULL},
+	{0x000252, 0x000000, 0x002c70, 0x002c70, NULL},
+	{0x000253, 0x000000, 0x000181, 0x000181, NULL},
+	{0x000254, 0x000000, 0x000186, 0x000186, NULL},
+	{0x000256, 0x000000, 0x000189, 0x000189, NULL},
+	{0x000257, 0x000000, 0x00018a, 0x00018a, NULL},
+	{0x000259, 0x000000, 0x00018f, 0x00018f, NULL},
+	{0x00025b, 0x000000, 0x000190, 0x000190, NULL},
+	{0x00025c, 0x000000, 0x00a7ab, 0x00a7ab, NULL},
+	{0x000260, 0x000000, 0x000193, 0x000193, NULL},
+	{0x000261, 0x000000, 0x00a7ac, 0x00a7ac, NULL},
+	{0x000263, 0x000000, 0x000194, 0x000194, NULL},
+	{0x000265, 0x000000, 0x00a78d, 0x00a78d, NULL},
+	{0x000266, 0x000000, 0x00a7aa, 0x00a7aa, NULL},
+	{0x000268, 0x000000, 0x000197, 0x000197, NULL},
+	{0x000269, 0x000000, 0x000196, 0x000196, NULL},
+	{0x00026a, 0x000000, 0x00a7ae, 0x00a7ae, NULL},
+	{0x00026b, 0x000000, 0x002c62, 0x002c62, NULL},
+	{0x00026c, 0x000000, 0x00a7ad, 0x00a7ad, NULL},
+	{0x00026f, 0x000000, 0x00019c, 0x00019c, NULL},
+	{0x000271, 0x000000, 0x002c6e, 0x002c6e, NULL},
+	{0x000272, 0x000000, 0x00019d, 0x00019d, NULL},
+	{0x000275, 0x000000, 0x00019f, 0x00019f, NULL},
+	{0x00027d, 0x000000, 0x002c64, 0x002c64, NULL},
+	{0x000280, 0x000000, 0x0001a6, 0x0001a6, NULL},
+	{0x000282, 0x000000, 0x00a7c5, 0x00a7c5, NULL},
+	{0x000283, 0x000000, 0x0001a9, 0x0001a9, NULL},
+	{0x000287, 0x000000, 0x00a7b1, 0x00a7b1, NULL},
+	{0x000288, 0x000000, 0x0001ae, 0x0001ae, NULL},
+	{0x000289, 0x000000, 0x000244, 0x000244, NULL},
+	{0x00028a, 0x000000, 0x0001b1, 0x0001b1, NULL},
+	{0x00028b, 0x000000, 0x0001b2, 0x0001b2, NULL},
+	{0x00028c, 0x000000, 0x000245, 0x000245, NULL},
+	{0x000292, 0x000000, 0x0001b7, 0x0001b7, NULL},
+	{0x00029d, 0x000000, 0x00a7b2, 0x00a7b2, NULL},
+	{0x00029e, 0x000000, 0x00a7b0, 0x00a7b0, NULL},
+	{0x000345, 0x000000, 0x000399, 0x000399, NULL},
+	{0x000370, 0x000371, 0x000000, 0x000000, NULL},
+	{0x000371, 0x000000, 0x000370, 0x000370, NULL},
+	{0x000372, 0x000373, 0x000000, 0x000000, NULL},
+	{0x000373, 0x000000, 0x000372, 0x000372, NULL},
+	{0x000376, 0x000377, 0x000000, 0x000000, NULL},
+	{0x000377, 0x000000, 0x000376, 0x000376, NULL},
+	{0x00037b, 0x000000, 0x0003fd, 0x0003fd, NULL},
+	{0x00037c, 0x000000, 0x0003fe, 0x0003fe, NULL},
+	{0x00037d, 0x000000, 0x0003ff, 0x0003ff, NULL},
+	{0x00037f, 0x0003f3, 0x000000, 0x000000, NULL},
+	{0x000386, 0x0003ac, 0x000000, 0x000000, NULL},
+	{0x000388, 0x0003ad, 0x000000, 0x000000, NULL},
+	{0x000389, 0x0003ae, 0x000000, 0x000000, NULL},
+	{0x00038a, 0x0003af, 0x000000, 0x000000, NULL},
+	{0x00038c, 0x0003cc, 0x000000, 0x000000, NULL},
+	{0x00038e, 0x0003cd, 0x000000, 0x000000, NULL},
+	{0x00038f, 0x0003ce, 0x000000, 0x000000, NULL},
+	{0x000390, 0x000000, 0x000000, 0x000000, &special_case_map[4]},
+	{0x000391, 0x0003b1, 0x000000, 0x000000, NULL},
+	{0x000392, 0x0003b2, 0x000000, 0x000000, NULL},
+	{0x000393, 0x0003b3, 0x000000, 0x000000, NULL},
+	{0x000394, 0x0003b4, 0x000000, 0x000000, NULL},
+	{0x000395, 0x0003b5, 0x000000, 0x000000, NULL},
+	{0x000396, 0x0003b6, 0x000000, 0x000000, NULL},
+	{0x000397, 0x0003b7, 0x000000, 0x000000, NULL},
+	{0x000398, 0x0003b8, 0x000000, 0x000000, NULL},
+	{0x000399, 0x0003b9, 0x000000, 0x000000, NULL},
+	{0x00039a, 0x0003ba, 0x000000, 0x000000, NULL},
+	{0x00039b, 0x0003bb, 0x000000, 0x000000, NULL},
+	{0x00039c, 0x0003bc, 0x000000, 0x000000, NULL},
+	{0x00039d, 0x0003bd, 0x000000, 0x000000, NULL},
+	{0x00039e, 0x0003be, 0x000000, 0x000000, NULL},
+	{0x00039f, 0x0003bf, 0x000000, 0x000000, NULL},
+	{0x0003a0, 0x0003c0, 0x000000, 0x000000, NULL},
+	{0x0003a1, 0x0003c1, 0x000000, 0x000000, NULL},
+	{0x0003a3, 0x0003c3, 0x000000, 0x000000, NULL},
+	{0x0003a4, 0x0003c4, 0x000000, 0x000000, NULL},
+	{0x0003a5, 0x0003c5, 0x000000, 0x000000, NULL},
+	{0x0003a6, 0x0003c6, 0x000000, 0x000000, NULL},
+	{0x0003a7, 0x0003c7, 0x000000, 0x000000, NULL},
+	{0x0003a8, 0x0003c8, 0x000000, 0x000000, NULL},
+	{0x0003a9, 0x0003c9, 0x000000, 0x000000, NULL},
+	{0x0003aa, 0x0003ca, 0x000000, 0x000000, NULL},
+	{0x0003ab, 0x0003cb, 0x000000, 0x000000, NULL},
+	{0x0003ac, 0x000000, 0x000386, 0x000386, NULL},
+	{0x0003ad, 0x000000, 0x000388, 0x000388, NULL},
+	{0x0003ae, 0x000000, 0x000389, 0x000389, NULL},
+	{0x0003af, 0x000000, 0x00038a, 0x00038a, NULL},
+	{0x0003b0, 0x000000, 0x000000, 0x000000, &special_case_map[5]},
+	{0x0003b1, 0x000000, 0x000391, 0x000391, NULL},
+	{0x0003b2, 0x000000, 0x000392, 0x000392, NULL},
+	{0x0003b3, 0x000000, 0x000393, 0x000393, NULL},
+	{0x0003b4, 0x000000, 0x000394, 0x000394, NULL},
+	{0x0003b5, 0x000000, 0x000395, 0x000395, NULL},
+	{0x0003b6, 0x000000, 0x000396, 0x000396, NULL},
+	{0x0003b7, 0x000000, 0x000397, 0x000397, NULL},
+	{0x0003b8, 0x000000, 0x000398, 0x000398, NULL},
+	{0x0003b9, 0x000000, 0x000399, 0x000399, NULL},
+	{0x0003ba, 0x000000, 0x00039a, 0x00039a, NULL},
+	{0x0003bb, 0x000000, 0x00039b, 0x00039b, NULL},
+	{0x0003bc, 0x000000, 0x00039c, 0x00039c, NULL},
+	{0x0003bd, 0x000000, 0x00039d, 0x00039d, NULL},
+	{0x0003be, 0x000000, 0x00039e, 0x00039e, NULL},
+	{0x0003bf, 0x000000, 0x00039f, 0x00039f, NULL},
+	{0x0003c0, 0x000000, 0x0003a0, 0x0003a0, NULL},
+	{0x0003c1, 0x000000, 0x0003a1, 0x0003a1, NULL},
+	{0x0003c2, 0x000000, 0x0003a3, 0x0003a3, NULL},
+	{0x0003c3, 0x000000, 0x0003a3, 0x0003a3, NULL},
+	{0x0003c4, 0x000000, 0x0003a4, 0x0003a4, NULL},
+	{0x0003c5, 0x000000, 0x0003a5, 0x0003a5, NULL},
+	{0x0003c6, 0x000000, 0x0003a6, 0x0003a6, NULL},
+	{0x0003c7, 0x000000, 0x0003a7, 0x0003a7, NULL},
+	{0x0003c8, 0x000000, 0x0003a8, 0x0003a8, NULL},
+	{0x0003c9, 0x000000, 0x0003a9, 0x0003a9, NULL},
+	{0x0003ca, 0x000000, 0x0003aa, 0x0003aa, NULL},
+	{0x0003cb, 0x000000, 0x0003ab, 0x0003ab, NULL},
+	{0x0003cc, 0x000000, 0x00038c, 0x00038c, NULL},
+	{0x0003cd, 0x000000, 0x00038e, 0x00038e, NULL},
+	{0x0003ce, 0x000000, 0x00038f, 0x00038f, NULL},
+	{0x0003cf, 0x0003d7, 0x000000, 0x000000, NULL},
+	{0x0003d0, 0x000000, 0x000392, 0x000392, NULL},
+	{0x0003d1, 0x000000, 0x000398, 0x000398, NULL},
+	{0x0003d5, 0x000000, 0x0003a6, 0x0003a6, NULL},
+	{0x0003d6, 0x000000, 0x0003a0, 0x0003a0, NULL},
+	{0x0003d7, 0x000000, 0x0003cf, 0x0003cf, NULL},
+	{0x0003d8, 0x0003d9, 0x000000, 0x000000, NULL},
+	{0x0003d9, 0x000000, 0x0003d8, 0x0003d8, NULL},
+	{0x0003da, 0x0003db, 0x000000, 0x000000, NULL},
+	{0x0003db, 0x000000, 0x0003da, 0x0003da, NULL},
+	{0x0003dc, 0x0003dd, 0x000000, 0x000000, NULL},
+	{0x0003dd, 0x000000, 0x0003dc, 0x0003dc, NULL},
+	{0x0003de, 0x0003df, 0x000000, 0x000000, NULL},
+	{0x0003df, 0x000000, 0x0003de, 0x0003de, NULL},
+	{0x0003e0, 0x0003e1, 0x000000, 0x000000, NULL},
+	{0x0003e1, 0x000000, 0x0003e0, 0x0003e0, NULL},
+	{0x0003e2, 0x0003e3, 0x000000, 0x000000, NULL},
+	{0x0003e3, 0x000000, 0x0003e2, 0x0003e2, NULL},
+	{0x0003e4, 0x0003e5, 0x000000, 0x000000, NULL},
+	{0x0003e5, 0x000000, 0x0003e4, 0x0003e4, NULL},
+	{0x0003e6, 0x0003e7, 0x000000, 0x000000, NULL},
+	{0x0003e7, 0x000000, 0x0003e6, 0x0003e6, NULL},
+	{0x0003e8, 0x0003e9, 0x000000, 0x000000, NULL},
+	{0x0003e9, 0x000000, 0x0003e8, 0x0003e8, NULL},
+	{0x0003ea, 0x0003eb, 0x000000, 0x000000, NULL},
+	{0x0003eb, 0x000000, 0x0003ea, 0x0003ea, NULL},
+	{0x0003ec, 0x0003ed, 0x000000, 0x000000, NULL},
+	{0x0003ed, 0x000000, 0x0003ec, 0x0003ec, NULL},
+	{0x0003ee, 0x0003ef, 0x000000, 0x000000, NULL},
+	{0x0003ef, 0x000000, 0x0003ee, 0x0003ee, NULL},
+	{0x0003f0, 0x000000, 0x00039a, 0x00039a, NULL},
+	{0x0003f1, 0x000000, 0x0003a1, 0x0003a1, NULL},
+	{0x0003f2, 0x000000, 0x0003f9, 0x0003f9, NULL},
+	{0x0003f3, 0x000000, 0x00037f, 0x00037f, NULL},
+	{0x0003f4, 0x0003b8, 0x000000, 0x000000, NULL},
+	{0x0003f5, 0x000000, 0x000395, 0x000395, NULL},
+	{0x0003f7, 0x0003f8, 0x000000, 0x000000, NULL},
+	{0x0003f8, 0x000000, 0x0003f7, 0x0003f7, NULL},
+	{0x0003f9, 0x0003f2, 0x000000, 0x000000, NULL},
+	{0x0003fa, 0x0003fb, 0x000000, 0x000000, NULL},
+	{0x0003fb, 0x000000, 0x0003fa, 0x0003fa, NULL},
+	{0x0003fd, 0x00037b, 0x000000, 0x000000, NULL},
+	{0x0003fe, 0x00037c, 0x000000, 0x000000, NULL},
+	{0x0003ff, 0x00037d, 0x000000, 0x000000, NULL},
+	{0x000400, 0x000450, 0x000000, 0x000000, NULL},
+	{0x000401, 0x000451, 0x000000, 0x000000, NULL},
+	{0x000402, 0x000452, 0x000000, 0x000000, NULL},
+	{0x000403, 0x000453, 0x000000, 0x000000, NULL},
+	{0x000404, 0x000454, 0x000000, 0x000000, NULL},
+	{0x000405, 0x000455, 0x000000, 0x000000, NULL},
+	{0x000406, 0x000456, 0x000000, 0x000000, NULL},
+	{0x000407, 0x000457, 0x000000, 0x000000, NULL},
+	{0x000408, 0x000458, 0x000000, 0x000000, NULL},
+	{0x000409, 0x000459, 0x000000, 0x000000, NULL},
+	{0x00040a, 0x00045a, 0x000000, 0x000000, NULL},
+	{0x00040b, 0x00045b, 0x000000, 0x000000, NULL},
+	{0x00040c, 0x00045c, 0x000000, 0x000000, NULL},
+	{0x00040d, 0x00045d, 0x000000, 0x000000, NULL},
+	{0x00040e, 0x00045e, 0x000000, 0x000000, NULL},
+	{0x00040f, 0x00045f, 0x000000, 0x000000, NULL},
+	{0x000410, 0x000430, 0x000000, 0x000000, NULL},
+	{0x000411, 0x000431, 0x000000, 0x000000, NULL},
+	{0x000412, 0x000432, 0x000000, 0x000000, NULL},
+	{0x000413, 0x000433, 0x000000, 0x000000, NULL},
+	{0x000414, 0x000434, 0x000000, 0x000000, NULL},
+	{0x000415, 0x000435, 0x000000, 0x000000, NULL},
+	{0x000416, 0x000436, 0x000000, 0x000000, NULL},
+	{0x000417, 0x000437, 0x000000, 0x000000, NULL},
+	{0x000418, 0x000438, 0x000000, 0x000000, NULL},
+	{0x000419, 0x000439, 0x000000, 0x000000, NULL},
+	{0x00041a, 0x00043a, 0x000000, 0x000000, NULL},
+	{0x00041b, 0x00043b, 0x000000, 0x000000, NULL},
+	{0x00041c, 0x00043c, 0x000000, 0x000000, NULL},
+	{0x00041d, 0x00043d, 0x000000, 0x000000, NULL},
+	{0x00041e, 0x00043e, 0x000000, 0x000000, NULL},
+	{0x00041f, 0x00043f, 0x000000, 0x000000, NULL},
+	{0x000420, 0x000440, 0x000000, 0x000000, NULL},
+	{0x000421, 0x000441, 0x000000, 0x000000, NULL},
+	{0x000422, 0x000442, 0x000000, 0x000000, NULL},
+	{0x000423, 0x000443, 0x000000, 0x000000, NULL},
+	{0x000424, 0x000444, 0x000000, 0x000000, NULL},
+	{0x000425, 0x000445, 0x000000, 0x000000, NULL},
+	{0x000426, 0x000446, 0x000000, 0x000000, NULL},
+	{0x000427, 0x000447, 0x000000, 0x000000, NULL},
+	{0x000428, 0x000448, 0x000000, 0x000000, NULL},
+	{0x000429, 0x000449, 0x000000, 0x000000, NULL},
+	{0x00042a, 0x00044a, 0x000000, 0x000000, NULL},
+	{0x00042b, 0x00044b, 0x000000, 0x000000, NULL},
+	{0x00042c, 0x00044c, 0x000000, 0x000000, NULL},
+	{0x00042d, 0x00044d, 0x000000, 0x000000, NULL},
+	{0x00042e, 0x00044e, 0x000000, 0x000000, NULL},
+	{0x00042f, 0x00044f, 0x000000, 0x000000, NULL},
+	{0x000430, 0x000000, 0x000410, 0x000410, NULL},
+	{0x000431, 0x000000, 0x000411, 0x000411, NULL},
+	{0x000432, 0x000000, 0x000412, 0x000412, NULL},
+	{0x000433, 0x000000, 0x000413, 0x000413, NULL},
+	{0x000434, 0x000000, 0x000414, 0x000414, NULL},
+	{0x000435, 0x000000, 0x000415, 0x000415, NULL},
+	{0x000436, 0x000000, 0x000416, 0x000416, NULL},
+	{0x000437, 0x000000, 0x000417, 0x000417, NULL},
+	{0x000438, 0x000000, 0x000418, 0x000418, NULL},
+	{0x000439, 0x000000, 0x000419, 0x000419, NULL},
+	{0x00043a, 0x000000, 0x00041a, 0x00041a, NULL},
+	{0x00043b, 0x000000, 0x00041b, 0x00041b, NULL},
+	{0x00043c, 0x000000, 0x00041c, 0x00041c, NULL},
+	{0x00043d, 0x000000, 0x00041d, 0x00041d, NULL},
+	{0x00043e, 0x000000, 0x00041e, 0x00041e, NULL},
+	{0x00043f, 0x000000, 0x00041f, 0x00041f, NULL},
+	{0x000440, 0x000000, 0x000420, 0x000420, NULL},
+	{0x000441, 0x000000, 0x000421, 0x000421, NULL},
+	{0x000442, 0x000000, 0x000422, 0x000422, NULL},
+	{0x000443, 0x000000, 0x000423, 0x000423, NULL},
+	{0x000444, 0x000000, 0x000424, 0x000424, NULL},
+	{0x000445, 0x000000, 0x000425, 0x000425, NULL},
+	{0x000446, 0x000000, 0x000426, 0x000426, NULL},
+	{0x000447, 0x000000, 0x000427, 0x000427, NULL},
+	{0x000448, 0x000000, 0x000428, 0x000428, NULL},
+	{0x000449, 0x000000, 0x000429, 0x000429, NULL},
+	{0x00044a, 0x000000, 0x00042a, 0x00042a, NULL},
+	{0x00044b, 0x000000, 0x00042b, 0x00042b, NULL},
+	{0x00044c, 0x000000, 0x00042c, 0x00042c, NULL},
+	{0x00044d, 0x000000, 0x00042d, 0x00042d, NULL},
+	{0x00044e, 0x000000, 0x00042e, 0x00042e, NULL},
+	{0x00044f, 0x000000, 0x00042f, 0x00042f, NULL},
+	{0x000450, 0x000000, 0x000400, 0x000400, NULL},
+	{0x000451, 0x000000, 0x000401, 0x000401, NULL},
+	{0x000452, 0x000000, 0x000402, 0x000402, NULL},
+	{0x000453, 0x000000, 0x000403, 0x000403, NULL},
+	{0x000454, 0x000000, 0x000404, 0x000404, NULL},
+	{0x000455, 0x000000, 0x000405, 0x000405, NULL},
+	{0x000456, 0x000000, 0x000406, 0x000406, NULL},
+	{0x000457, 0x000000, 0x000407, 0x000407, NULL},
+	{0x000458, 0x000000, 0x000408, 0x000408, NULL},
+	{0x000459, 0x000000, 0x000409, 0x000409, NULL},
+	{0x00045a, 0x000000, 0x00040a, 0x00040a, NULL},
+	{0x00045b, 0x000000, 0x00040b, 0x00040b, NULL},
+	{0x00045c, 0x000000, 0x00040c, 0x00040c, NULL},
+	{0x00045d, 0x000000, 0x00040d, 0x00040d, NULL},
+	{0x00045e, 0x000000, 0x00040e, 0x00040e, NULL},
+	{0x00045f, 0x000000, 0x00040f, 0x00040f, NULL},
+	{0x000460, 0x000461, 0x000000, 0x000000, NULL},
+	{0x000461, 0x000000, 0x000460, 0x000460, NULL},
+	{0x000462, 0x000463, 0x000000, 0x000000, NULL},
+	{0x000463, 0x000000, 0x000462, 0x000462, NULL},
+	{0x000464, 0x000465, 0x000000, 0x000000, NULL},
+	{0x000465, 0x000000, 0x000464, 0x000464, NULL},
+	{0x000466, 0x000467, 0x000000, 0x000000, NULL},
+	{0x000467, 0x000000, 0x000466, 0x000466, NULL},
+	{0x000468, 0x000469, 0x000000, 0x000000, NULL},
+	{0x000469, 0x000000, 0x000468, 0x000468, NULL},
+	{0x00046a, 0x00046b, 0x000000, 0x000000, NULL},
+	{0x00046b, 0x000000, 0x00046a, 0x00046a, NULL},
+	{0x00046c, 0x00046d, 0x000000, 0x000000, NULL},
+	{0x00046d, 0x000000, 0x00046c, 0x00046c, NULL},
+	{0x00046e, 0x00046f, 0x000000, 0x000000, NULL},
+	{0x00046f, 0x000000, 0x00046e, 0x00046e, NULL},
+	{0x000470, 0x000471, 0x000000, 0x000000, NULL},
+	{0x000471, 0x000000, 0x000470, 0x000470, NULL},
+	{0x000472, 0x000473, 0x000000, 0x000000, NULL},
+	{0x000473, 0x000000, 0x000472, 0x000472, NULL},
+	{0x000474, 0x000475, 0x000000, 0x000000, NULL},
+	{0x000475, 0x000000, 0x000474, 0x000474, NULL},
+	{0x000476, 0x000477, 0x000000, 0x000000, NULL},
+	{0x000477, 0x000000, 0x000476, 0x000476, NULL},
+	{0x000478, 0x000479, 0x000000, 0x000000, NULL},
+	{0x000479, 0x000000, 0x000478, 0x000478, NULL},
+	{0x00047a, 0x00047b, 0x000000, 0x000000, NULL},
+	{0x00047b, 0x000000, 0x00047a, 0x00047a, NULL},
+	{0x00047c, 0x00047d, 0x000000, 0x000000, NULL},
+	{0x00047d, 0x000000, 0x00047c, 0x00047c, NULL},
+	{0x00047e, 0x00047f, 0x000000, 0x000000, NULL},
+	{0x00047f, 0x000000, 0x00047e, 0x00047e, NULL},
+	{0x000480, 0x000481, 0x000000, 0x000000, NULL},
+	{0x000481, 0x000000, 0x000480, 0x000480, NULL},
+	{0x00048a, 0x00048b, 0x000000, 0x000000, NULL},
+	{0x00048b, 0x000000, 0x00048a, 0x00048a, NULL},
+	{0x00048c, 0x00048d, 0x000000, 0x000000, NULL},
+	{0x00048d, 0x000000, 0x00048c, 0x00048c, NULL},
+	{0x00048e, 0x00048f, 0x000000, 0x000000, NULL},
+	{0x00048f, 0x000000, 0x00048e, 0x00048e, NULL},
+	{0x000490, 0x000491, 0x000000, 0x000000, NULL},
+	{0x000491, 0x000000, 0x000490, 0x000490, NULL},
+	{0x000492, 0x000493, 0x000000, 0x000000, NULL},
+	{0x000493, 0x000000, 0x000492, 0x000492, NULL},
+	{0x000494, 0x000495, 0x000000, 0x000000, NULL},
+	{0x000495, 0x000000, 0x000494, 0x000494, NULL},
+	{0x000496, 0x000497, 0x000000, 0x000000, NULL},
+	{0x000497, 0x000000, 0x000496, 0x000496, NULL},
+	{0x000498, 0x000499, 0x000000, 0x000000, NULL},
+	{0x000499, 0x000000, 0x000498, 0x000498, NULL},
+	{0x00049a, 0x00049b, 0x000000, 0x000000, NULL},
+	{0x00049b, 0x000000, 0x00049a, 0x00049a, NULL},
+	{0x00049c, 0x00049d, 0x000000, 0x000000, NULL},
+	{0x00049d, 0x000000, 0x00049c, 0x00049c, NULL},
+	{0x00049e, 0x00049f, 0x000000, 0x000000, NULL},
+	{0x00049f, 0x000000, 0x00049e, 0x00049e, NULL},
+	{0x0004a0, 0x0004a1, 0x000000, 0x000000, NULL},
+	{0x0004a1, 0x000000, 0x0004a0, 0x0004a0, NULL},
+	{0x0004a2, 0x0004a3, 0x000000, 0x000000, NULL},
+	{0x0004a3, 0x000000, 0x0004a2, 0x0004a2, NULL},
+	{0x0004a4, 0x0004a5, 0x000000, 0x000000, NULL},
+	{0x0004a5, 0x000000, 0x0004a4, 0x0004a4, NULL},
+	{0x0004a6, 0x0004a7, 0x000000, 0x000000, NULL},
+	{0x0004a7, 0x000000, 0x0004a6, 0x0004a6, NULL},
+	{0x0004a8, 0x0004a9, 0x000000, 0x000000, NULL},
+	{0x0004a9, 0x000000, 0x0004a8, 0x0004a8, NULL},
+	{0x0004aa, 0x0004ab, 0x000000, 0x000000, NULL},
+	{0x0004ab, 0x000000, 0x0004aa, 0x0004aa, NULL},
+	{0x0004ac, 0x0004ad, 0x000000, 0x000000, NULL},
+	{0x0004ad, 0x000000, 0x0004ac, 0x0004ac, NULL},
+	{0x0004ae, 0x0004af, 0x000000, 0x000000, NULL},
+	{0x0004af, 0x000000, 0x0004ae, 0x0004ae, NULL},
+	{0x0004b0, 0x0004b1, 0x000000, 0x000000, NULL},
+	{0x0004b1, 0x000000, 0x0004b0, 0x0004b0, NULL},
+	{0x0004b2, 0x0004b3, 0x000000, 0x000000, NULL},
+	{0x0004b3, 0x000000, 0x0004b2, 0x0004b2, NULL},
+	{0x0004b4, 0x0004b5, 0x000000, 0x000000, NULL},
+	{0x0004b5, 0x000000, 0x0004b4, 0x0004b4, NULL},
+	{0x0004b6, 0x0004b7, 0x000000, 0x000000, NULL},
+	{0x0004b7, 0x000000, 0x0004b6, 0x0004b6, NULL},
+	{0x0004b8, 0x0004b9, 0x000000, 0x000000, NULL},
+	{0x0004b9, 0x000000, 0x0004b8, 0x0004b8, NULL},
+	{0x0004ba, 0x0004bb, 0x000000, 0x000000, NULL},
+	{0x0004bb, 0x000000, 0x0004ba, 0x0004ba, NULL},
+	{0x0004bc, 0x0004bd, 0x000000, 0x000000, NULL},
+	{0x0004bd, 0x000000, 0x0004bc, 0x0004bc, NULL},
+	{0x0004be, 0x0004bf, 0x000000, 0x000000, NULL},
+	{0x0004bf, 0x000000, 0x0004be, 0x0004be, NULL},
+	{0x0004c0, 0x0004cf, 0x000000, 0x000000, NULL},
+	{0x0004c1, 0x0004c2, 0x000000, 0x000000, NULL},
+	{0x0004c2, 0x000000, 0x0004c1, 0x0004c1, NULL},
+	{0x0004c3, 0x0004c4, 0x000000, 0x000000, NULL},
+	{0x0004c4, 0x000000, 0x0004c3, 0x0004c3, NULL},
+	{0x0004c5, 0x0004c6, 0x000000, 0x000000, NULL},
+	{0x0004c6, 0x000000, 0x0004c5, 0x0004c5, NULL},
+	{0x0004c7, 0x0004c8, 0x000000, 0x000000, NULL},
+	{0x0004c8, 0x000000, 0x0004c7, 0x0004c7, NULL},
+	{0x0004c9, 0x0004ca, 0x000000, 0x000000, NULL},
+	{0x0004ca, 0x000000, 0x0004c9, 0x0004c9, NULL},
+	{0x0004cb, 0x0004cc, 0x000000, 0x000000, NULL},
+	{0x0004cc, 0x000000, 0x0004cb, 0x0004cb, NULL},
+	{0x0004cd, 0x0004ce, 0x000000, 0x000000, NULL},
+	{0x0004ce, 0x000000, 0x0004cd, 0x0004cd, NULL},
+	{0x0004cf, 0x000000, 0x0004c0, 0x0004c0, NULL},
+	{0x0004d0, 0x0004d1, 0x000000, 0x000000, NULL},
+	{0x0004d1, 0x000000, 0x0004d0, 0x0004d0, NULL},
+	{0x0004d2, 0x0004d3, 0x000000, 0x000000, NULL},
+	{0x0004d3, 0x000000, 0x0004d2, 0x0004d2, NULL},
+	{0x0004d4, 0x0004d5, 0x000000, 0x000000, NULL},
+	{0x0004d5, 0x000000, 0x0004d4, 0x0004d4, NULL},
+	{0x0004d6, 0x0004d7, 0x000000, 0x000000, NULL},
+	{0x0004d7, 0x000000, 0x0004d6, 0x0004d6, NULL},
+	{0x0004d8, 0x0004d9, 0x000000, 0x000000, NULL},
+	{0x0004d9, 0x000000, 0x0004d8, 0x0004d8, NULL},
+	{0x0004da, 0x0004db, 0x000000, 0x000000, NULL},
+	{0x0004db, 0x000000, 0x0004da, 0x0004da, NULL},
+	{0x0004dc, 0x0004dd, 0x000000, 0x000000, NULL},
+	{0x0004dd, 0x000000, 0x0004dc, 0x0004dc, NULL},
+	{0x0004de, 0x0004df, 0x000000, 0x000000, NULL},
+	{0x0004df, 0x000000, 0x0004de, 0x0004de, NULL},
+	{0x0004e0, 0x0004e1, 0x000000, 0x000000, NULL},
+	{0x0004e1, 0x000000, 0x0004e0, 0x0004e0, NULL},
+	{0x0004e2, 0x0004e3, 0x000000, 0x000000, NULL},
+	{0x0004e3, 0x000000, 0x0004e2, 0x0004e2, NULL},
+	{0x0004e4, 0x0004e5, 0x000000, 0x000000, NULL},
+	{0x0004e5, 0x000000, 0x0004e4, 0x0004e4, NULL},
+	{0x0004e6, 0x0004e7, 0x000000, 0x000000, NULL},
+	{0x0004e7, 0x000000, 0x0004e6, 0x0004e6, NULL},
+	{0x0004e8, 0x0004e9, 0x000000, 0x000000, NULL},
+	{0x0004e9, 0x000000, 0x0004e8, 0x0004e8, NULL},
+	{0x0004ea, 0x0004eb, 0x000000, 0x000000, NULL},
+	{0x0004eb, 0x000000, 0x0004ea, 0x0004ea, NULL},
+	{0x0004ec, 0x0004ed, 0x000000, 0x000000, NULL},
+	{0x0004ed, 0x000000, 0x0004ec, 0x0004ec, NULL},
+	{0x0004ee, 0x0004ef, 0x000000, 0x000000, NULL},
+	{0x0004ef, 0x000000, 0x0004ee, 0x0004ee, NULL},
+	{0x0004f0, 0x0004f1, 0x000000, 0x000000, NULL},
+	{0x0004f1, 0x000000, 0x0004f0, 0x0004f0, NULL},
+	{0x0004f2, 0x0004f3, 0x000000, 0x000000, NULL},
+	{0x0004f3, 0x000000, 0x0004f2, 0x0004f2, NULL},
+	{0x0004f4, 0x0004f5, 0x000000, 0x000000, NULL},
+	{0x0004f5, 0x000000, 0x0004f4, 0x0004f4, NULL},
+	{0x0004f6, 0x0004f7, 0x000000, 0x000000, NULL},
+	{0x0004f7, 0x000000, 0x0004f6, 0x0004f6, NULL},
+	{0x0004f8, 0x0004f9, 0x000000, 0x000000, NULL},
+	{0x0004f9, 0x000000, 0x0004f8, 0x0004f8, NULL},
+	{0x0004fa, 0x0004fb, 0x000000, 0x000000, NULL},
+	{0x0004fb, 0x000000, 0x0004fa, 0x0004fa, NULL},
+	{0x0004fc, 0x0004fd, 0x000000, 0x000000, NULL},
+	{0x0004fd, 0x000000, 0x0004fc, 0x0004fc, NULL},
+	{0x0004fe, 0x0004ff, 0x000000, 0x000000, NULL},
+	{0x0004ff, 0x000000, 0x0004fe, 0x0004fe, NULL},
+	{0x000500, 0x000501, 0x000000, 0x000000, NULL},
+	{0x000501, 0x000000, 0x000500, 0x000500, NULL},
+	{0x000502, 0x000503, 0x000000, 0x000000, NULL},
+	{0x000503, 0x000000, 0x000502, 0x000502, NULL},
+	{0x000504, 0x000505, 0x000000, 0x000000, NULL},
+	{0x000505, 0x000000, 0x000504, 0x000504, NULL},
+	{0x000506, 0x000507, 0x000000, 0x000000, NULL},
+	{0x000507, 0x000000, 0x000506, 0x000506, NULL},
+	{0x000508, 0x000509, 0x000000, 0x000000, NULL},
+	{0x000509, 0x000000, 0x000508, 0x000508, NULL},
+	{0x00050a, 0x00050b, 0x000000, 0x000000, NULL},
+	{0x00050b, 0x000000, 0x00050a, 0x00050a, NULL},
+	{0x00050c, 0x00050d, 0x000000, 0x000000, NULL},
+	{0x00050d, 0x000000, 0x00050c, 0x00050c, NULL},
+	{0x00050e, 0x00050f, 0x000000, 0x000000, NULL},
+	{0x00050f, 0x000000, 0x00050e, 0x00050e, NULL},
+	{0x000510, 0x000511, 0x000000, 0x000000, NULL},
+	{0x000511, 0x000000, 0x000510, 0x000510, NULL},
+	{0x000512, 0x000513, 0x000000, 0x000000, NULL},
+	{0x000513, 0x000000, 0x000512, 0x000512, NULL},
+	{0x000514, 0x000515, 0x000000, 0x000000, NULL},
+	{0x000515, 0x000000, 0x000514, 0x000514, NULL},
+	{0x000516, 0x000517, 0x000000, 0x000000, NULL},
+	{0x000517, 0x000000, 0x000516, 0x000516, NULL},
+	{0x000518, 0x000519, 0x000000, 0x000000, NULL},
+	{0x000519, 0x000000, 0x000518, 0x000518, NULL},
+	{0x00051a, 0x00051b, 0x000000, 0x000000, NULL},
+	{0x00051b, 0x000000, 0x00051a, 0x00051a, NULL},
+	{0x00051c, 0x00051d, 0x000000, 0x000000, NULL},
+	{0x00051d, 0x000000, 0x00051c, 0x00051c, NULL},
+	{0x00051e, 0x00051f, 0x000000, 0x000000, NULL},
+	{0x00051f, 0x000000, 0x00051e, 0x00051e, NULL},
+	{0x000520, 0x000521, 0x000000, 0x000000, NULL},
+	{0x000521, 0x000000, 0x000520, 0x000520, NULL},
+	{0x000522, 0x000523, 0x000000, 0x000000, NULL},
+	{0x000523, 0x000000, 0x000522, 0x000522, NULL},
+	{0x000524, 0x000525, 0x000000, 0x000000, NULL},
+	{0x000525, 0x000000, 0x000524, 0x000524, NULL},
+	{0x000526, 0x000527, 0x000000, 0x000000, NULL},
+	{0x000527, 0x000000, 0x000526, 0x000526, NULL},
+	{0x000528, 0x000529, 0x000000, 0x000000, NULL},
+	{0x000529, 0x000000, 0x000528, 0x000528, NULL},
+	{0x00052a, 0x00052b, 0x000000, 0x000000, NULL},
+	{0x00052b, 0x000000, 0x00052a, 0x00052a, NULL},
+	{0x00052c, 0x00052d, 0x000000, 0x000000, NULL},
+	{0x00052d, 0x000000, 0x00052c, 0x00052c, NULL},
+	{0x00052e, 0x00052f, 0x000000, 0x000000, NULL},
+	{0x00052f, 0x000000, 0x00052e, 0x00052e, NULL},
+	{0x000531, 0x000561, 0x000000, 0x000000, NULL},
+	{0x000532, 0x000562, 0x000000, 0x000000, NULL},
+	{0x000533, 0x000563, 0x000000, 0x000000, NULL},
+	{0x000534, 0x000564, 0x000000, 0x000000, NULL},
+	{0x000535, 0x000565, 0x000000, 0x000000, NULL},
+	{0x000536, 0x000566, 0x000000, 0x000000, NULL},
+	{0x000537, 0x000567, 0x000000, 0x000000, NULL},
+	{0x000538, 0x000568, 0x000000, 0x000000, NULL},
+	{0x000539, 0x000569, 0x000000, 0x000000, NULL},
+	{0x00053a, 0x00056a, 0x000000, 0x000000, NULL},
+	{0x00053b, 0x00056b, 0x000000, 0x000000, NULL},
+	{0x00053c, 0x00056c, 0x000000, 0x000000, NULL},
+	{0x00053d, 0x00056d, 0x000000, 0x000000, NULL},
+	{0x00053e, 0x00056e, 0x000000, 0x000000, NULL},
+	{0x00053f, 0x00056f, 0x000000, 0x000000, NULL},
+	{0x000540, 0x000570, 0x000000, 0x000000, NULL},
+	{0x000541, 0x000571, 0x000000, 0x000000, NULL},
+	{0x000542, 0x000572, 0x000000, 0x000000, NULL},
+	{0x000543, 0x000573, 0x000000, 0x000000, NULL},
+	{0x000544, 0x000574, 0x000000, 0x000000, NULL},
+	{0x000545, 0x000575, 0x000000, 0x000000, NULL},
+	{0x000546, 0x000576, 0x000000, 0x000000, NULL},
+	{0x000547, 0x000577, 0x000000, 0x000000, NULL},
+	{0x000548, 0x000578, 0x000000, 0x000000, NULL},
+	{0x000549, 0x000579, 0x000000, 0x000000, NULL},
+	{0x00054a, 0x00057a, 0x000000, 0x000000, NULL},
+	{0x00054b, 0x00057b, 0x000000, 0x000000, NULL},
+	{0x00054c, 0x00057c, 0x000000, 0x000000, NULL},
+	{0x00054d, 0x00057d, 0x000000, 0x000000, NULL},
+	{0x00054e, 0x00057e, 0x000000, 0x000000, NULL},
+	{0x00054f, 0x00057f, 0x000000, 0x000000, NULL},
+	{0x000550, 0x000580, 0x000000, 0x000000, NULL},
+	{0x000551, 0x000581, 0x000000, 0x000000, NULL},
+	{0x000552, 0x000582, 0x000000, 0x000000, NULL},
+	{0x000553, 0x000583, 0x000000, 0x000000, NULL},
+	{0x000554, 0x000584, 0x000000, 0x000000, NULL},
+	{0x000555, 0x000585, 0x000000, 0x000000, NULL},
+	{0x000556, 0x000586, 0x000000, 0x000000, NULL},
+	{0x000561, 0x000000, 0x000531, 0x000531, NULL},
+	{0x000562, 0x000000, 0x000532, 0x000532, NULL},
+	{0x000563, 0x000000, 0x000533, 0x000533, NULL},
+	{0x000564, 0x000000, 0x000534, 0x000534, NULL},
+	{0x000565, 0x000000, 0x000535, 0x000535, NULL},
+	{0x000566, 0x000000, 0x000536, 0x000536, NULL},
+	{0x000567, 0x000000, 0x000537, 0x000537, NULL},
+	{0x000568, 0x000000, 0x000538, 0x000538, NULL},
+	{0x000569, 0x000000, 0x000539, 0x000539, NULL},
+	{0x00056a, 0x000000, 0x00053a, 0x00053a, NULL},
+	{0x00056b, 0x000000, 0x00053b, 0x00053b, NULL},
+	{0x00056c, 0x000000, 0x00053c, 0x00053c, NULL},
+	{0x00056d, 0x000000, 0x00053d, 0x00053d, NULL},
+	{0x00056e, 0x000000, 0x00053e, 0x00053e, NULL},
+	{0x00056f, 0x000000, 0x00053f, 0x00053f, NULL},
+	{0x000570, 0x000000, 0x000540, 0x000540, NULL},
+	{0x000571, 0x000000, 0x000541, 0x000541, NULL},
+	{0x000572, 0x000000, 0x000542, 0x000542, NULL},
+	{0x000573, 0x000000, 0x000543, 0x000543, NULL},
+	{0x000574, 0x000000, 0x000544, 0x000544, NULL},
+	{0x000575, 0x000000, 0x000545, 0x000545, NULL},
+	{0x000576, 0x000000, 0x000546, 0x000546, NULL},
+	{0x000577, 0x000000, 0x000547, 0x000547, NULL},
+	{0x000578, 0x000000, 0x000548, 0x000548, NULL},
+	{0x000579, 0x000000, 0x000549, 0x000549, NULL},
+	{0x00057a, 0x000000, 0x00054a, 0x00054a, NULL},
+	{0x00057b, 0x000000, 0x00054b, 0x00054b, NULL},
+	{0x00057c, 0x000000, 0x00054c, 0x00054c, NULL},
+	{0x00057d, 0x000000, 0x00054d, 0x00054d, NULL},
+	{0x00057e, 0x000000, 0x00054e, 0x00054e, NULL},
+	{0x00057f, 0x000000, 0x00054f, 0x00054f, NULL},
+	{0x000580, 0x000000, 0x000550, 0x000550, NULL},
+	{0x000581, 0x000000, 0x000551, 0x000551, NULL},
+	{0x000582, 0x000000, 0x000552, 0x000552, NULL},
+	{0x000583, 0x000000, 0x000553, 0x000553, NULL},
+	{0x000584, 0x000000, 0x000554, 0x000554, NULL},
+	{0x000585, 0x000000, 0x000555, 0x000555, NULL},
+	{0x000586, 0x000000, 0x000556, 0x000556, NULL},
+	{0x000587, 0x000000, 0x000000, 0x000000, &special_case_map[6]},
+	{0x0010a0, 0x002d00, 0x000000, 0x000000, NULL},
+	{0x0010a1, 0x002d01, 0x000000, 0x000000, NULL},
+	{0x0010a2, 0x002d02, 0x000000, 0x000000, NULL},
+	{0x0010a3, 0x002d03, 0x000000, 0x000000, NULL},
+	{0x0010a4, 0x002d04, 0x000000, 0x000000, NULL},
+	{0x0010a5, 0x002d05, 0x000000, 0x000000, NULL},
+	{0x0010a6, 0x002d06, 0x000000, 0x000000, NULL},
+	{0x0010a7, 0x002d07, 0x000000, 0x000000, NULL},
+	{0x0010a8, 0x002d08, 0x000000, 0x000000, NULL},
+	{0x0010a9, 0x002d09, 0x000000, 0x000000, NULL},
+	{0x0010aa, 0x002d0a, 0x000000, 0x000000, NULL},
+	{0x0010ab, 0x002d0b, 0x000000, 0x000000, NULL},
+	{0x0010ac, 0x002d0c, 0x000000, 0x000000, NULL},
+	{0x0010ad, 0x002d0d, 0x000000, 0x000000, NULL},
+	{0x0010ae, 0x002d0e, 0x000000, 0x000000, NULL},
+	{0x0010af, 0x002d0f, 0x000000, 0x000000, NULL},
+	{0x0010b0, 0x002d10, 0x000000, 0x000000, NULL},
+	{0x0010b1, 0x002d11, 0x000000, 0x000000, NULL},
+	{0x0010b2, 0x002d12, 0x000000, 0x000000, NULL},
+	{0x0010b3, 0x002d13, 0x000000, 0x000000, NULL},
+	{0x0010b4, 0x002d14, 0x000000, 0x000000, NULL},
+	{0x0010b5, 0x002d15, 0x000000, 0x000000, NULL},
+	{0x0010b6, 0x002d16, 0x000000, 0x000000, NULL},
+	{0x0010b7, 0x002d17, 0x000000, 0x000000, NULL},
+	{0x0010b8, 0x002d18, 0x000000, 0x000000, NULL},
+	{0x0010b9, 0x002d19, 0x000000, 0x000000, NULL},
+	{0x0010ba, 0x002d1a, 0x000000, 0x000000, NULL},
+	{0x0010bb, 0x002d1b, 0x000000, 0x000000, NULL},
+	{0x0010bc, 0x002d1c, 0x000000, 0x000000, NULL},
+	{0x0010bd, 0x002d1d, 0x000000, 0x000000, NULL},
+	{0x0010be, 0x002d1e, 0x000000, 0x000000, NULL},
+	{0x0010bf, 0x002d1f, 0x000000, 0x000000, NULL},
+	{0x0010c0, 0x002d20, 0x000000, 0x000000, NULL},
+	{0x0010c1, 0x002d21, 0x000000, 0x000000, NULL},
+	{0x0010c2, 0x002d22, 0x000000, 0x000000, NULL},
+	{0x0010c3, 0x002d23, 0x000000, 0x000000, NULL},
+	{0x0010c4, 0x002d24, 0x000000, 0x000000, NULL},
+	{0x0010c5, 0x002d25, 0x000000, 0x000000, NULL},
+	{0x0010c7, 0x002d27, 0x000000, 0x000000, NULL},
+	{0x0010cd, 0x002d2d, 0x000000, 0x000000, NULL},
+	{0x0010d0, 0x000000, 0x0010d0, 0x001c90, NULL},
+	{0x0010d1, 0x000000, 0x0010d1, 0x001c91, NULL},
+	{0x0010d2, 0x000000, 0x0010d2, 0x001c92, NULL},
+	{0x0010d3, 0x000000, 0x0010d3, 0x001c93, NULL},
+	{0x0010d4, 0x000000, 0x0010d4, 0x001c94, NULL},
+	{0x0010d5, 0x000000, 0x0010d5, 0x001c95, NULL},
+	{0x0010d6, 0x000000, 0x0010d6, 0x001c96, NULL},
+	{0x0010d7, 0x000000, 0x0010d7, 0x001c97, NULL},
+	{0x0010d8, 0x000000, 0x0010d8, 0x001c98, NULL},
+	{0x0010d9, 0x000000, 0x0010d9, 0x001c99, NULL},
+	{0x0010da, 0x000000, 0x0010da, 0x001c9a, NULL},
+	{0x0010db, 0x000000, 0x0010db, 0x001c9b, NULL},
+	{0x0010dc, 0x000000, 0x0010dc, 0x001c9c, NULL},
+	{0x0010dd, 0x000000, 0x0010dd, 0x001c9d, NULL},
+	{0x0010de, 0x000000, 0x0010de, 0x001c9e, NULL},
+	{0x0010df, 0x000000, 0x0010df, 0x001c9f, NULL},
+	{0x0010e0, 0x000000, 0x0010e0, 0x001ca0, NULL},
+	{0x0010e1, 0x000000, 0x0010e1, 0x001ca1, NULL},
+	{0x0010e2, 0x000000, 0x0010e2, 0x001ca2, NULL},
+	{0x0010e3, 0x000000, 0x0010e3, 0x001ca3, NULL},
+	{0x0010e4, 0x000000, 0x0010e4, 0x001ca4, NULL},
+	{0x0010e5, 0x000000, 0x0010e5, 0x001ca5, NULL},
+	{0x0010e6, 0x000000, 0x0010e6, 0x001ca6, NULL},
+	{0x0010e7, 0x000000, 0x0010e7, 0x001ca7, NULL},
+	{0x0010e8, 0x000000, 0x0010e8, 0x001ca8, NULL},
+	{0x0010e9, 0x000000, 0x0010e9, 0x001ca9, NULL},
+	{0x0010ea, 0x000000, 0x0010ea, 0x001caa, NULL},
+	{0x0010eb, 0x000000, 0x0010eb, 0x001cab, NULL},
+	{0x0010ec, 0x000000, 0x0010ec, 0x001cac, NULL},
+	{0x0010ed, 0x000000, 0x0010ed, 0x001cad, NULL},
+	{0x0010ee, 0x000000, 0x0010ee, 0x001cae, NULL},
+	{0x0010ef, 0x000000, 0x0010ef, 0x001caf, NULL},
+	{0x0010f0, 0x000000, 0x0010f0, 0x001cb0, NULL},
+	{0x0010f1, 0x000000, 0x0010f1, 0x001cb1, NULL},
+	{0x0010f2, 0x000000, 0x0010f2, 0x001cb2, NULL},
+	{0x0010f3, 0x000000, 0x0010f3, 0x001cb3, NULL},
+	{0x0010f4, 0x000000, 0x0010f4, 0x001cb4, NULL},
+	{0x0010f5, 0x000000, 0x0010f5, 0x001cb5, NULL},
+	{0x0010f6, 0x000000, 0x0010f6, 0x001cb6, NULL},
+	{0x0010f7, 0x000000, 0x0010f7, 0x001cb7, NULL},
+	{0x0010f8, 0x000000, 0x0010f8, 0x001cb8, NULL},
+	{0x0010f9, 0x000000, 0x0010f9, 0x001cb9, NULL},
+	{0x0010fa, 0x000000, 0x0010fa, 0x001cba, NULL},
+	{0x0010fd, 0x000000, 0x0010fd, 0x001cbd, NULL},
+	{0x0010fe, 0x000000, 0x0010fe, 0x001cbe, NULL},
+	{0x0010ff, 0x000000, 0x0010ff, 0x001cbf, NULL},
+	{0x0013a0, 0x00ab70, 0x000000, 0x000000, NULL},
+	{0x0013a1, 0x00ab71, 0x000000, 0x000000, NULL},
+	{0x0013a2, 0x00ab72, 0x000000, 0x000000, NULL},
+	{0x0013a3, 0x00ab73, 0x000000, 0x000000, NULL},
+	{0x0013a4, 0x00ab74, 0x000000, 0x000000, NULL},
+	{0x0013a5, 0x00ab75, 0x000000, 0x000000, NULL},
+	{0x0013a6, 0x00ab76, 0x000000, 0x000000, NULL},
+	{0x0013a7, 0x00ab77, 0x000000, 0x000000, NULL},
+	{0x0013a8, 0x00ab78, 0x000000, 0x000000, NULL},
+	{0x0013a9, 0x00ab79, 0x000000, 0x000000, NULL},
+	{0x0013aa, 0x00ab7a, 0x000000, 0x000000, NULL},
+	{0x0013ab, 0x00ab7b, 0x000000, 0x000000, NULL},
+	{0x0013ac, 0x00ab7c, 0x000000, 0x000000, NULL},
+	{0x0013ad, 0x00ab7d, 0x000000, 0x000000, NULL},
+	{0x0013ae, 0x00ab7e, 0x000000, 0x000000, NULL},
+	{0x0013af, 0x00ab7f, 0x000000, 0x000000, NULL},
+	{0x0013b0, 0x00ab80, 0x000000, 0x000000, NULL},
+	{0x0013b1, 0x00ab81, 0x000000, 0x000000, NULL},
+	{0x0013b2, 0x00ab82, 0x000000, 0x000000, NULL},
+	{0x0013b3, 0x00ab83, 0x000000, 0x000000, NULL},
+	{0x0013b4, 0x00ab84, 0x000000, 0x000000, NULL},
+	{0x0013b5, 0x00ab85, 0x000000, 0x000000, NULL},
+	{0x0013b6, 0x00ab86, 0x000000, 0x000000, NULL},
+	{0x0013b7, 0x00ab87, 0x000000, 0x000000, NULL},
+	{0x0013b8, 0x00ab88, 0x000000, 0x000000, NULL},
+	{0x0013b9, 0x00ab89, 0x000000, 0x000000, NULL},
+	{0x0013ba, 0x00ab8a, 0x000000, 0x000000, NULL},
+	{0x0013bb, 0x00ab8b, 0x000000, 0x000000, NULL},
+	{0x0013bc, 0x00ab8c, 0x000000, 0x000000, NULL},
+	{0x0013bd, 0x00ab8d, 0x000000, 0x000000, NULL},
+	{0x0013be, 0x00ab8e, 0x000000, 0x000000, NULL},
+	{0x0013bf, 0x00ab8f, 0x000000, 0x000000, NULL},
+	{0x0013c0, 0x00ab90, 0x000000, 0x000000, NULL},
+	{0x0013c1, 0x00ab91, 0x000000, 0x000000, NULL},
+	{0x0013c2, 0x00ab92, 0x000000, 0x000000, NULL},
+	{0x0013c3, 0x00ab93, 0x000000, 0x000000, NULL},
+	{0x0013c4, 0x00ab94, 0x000000, 0x000000, NULL},
+	{0x0013c5, 0x00ab95, 0x000000, 0x000000, NULL},
+	{0x0013c6, 0x00ab96, 0x000000, 0x000000, NULL},
+	{0x0013c7, 0x00ab97, 0x000000, 0x000000, NULL},
+	{0x0013c8, 0x00ab98, 0x000000, 0x000000, NULL},
+	{0x0013c9, 0x00ab99, 0x000000, 0x000000, NULL},
+	{0x0013ca, 0x00ab9a, 0x000000, 0x000000, NULL},
+	{0x0013cb, 0x00ab9b, 0x000000, 0x000000, NULL},
+	{0x0013cc, 0x00ab9c, 0x000000, 0x000000, NULL},
+	{0x0013cd, 0x00ab9d, 0x000000, 0x000000, NULL},
+	{0x0013ce, 0x00ab9e, 0x000000, 0x000000, NULL},
+	{0x0013cf, 0x00ab9f, 0x000000, 0x000000, NULL},
+	{0x0013d0, 0x00aba0, 0x000000, 0x000000, NULL},
+	{0x0013d1, 0x00aba1, 0x000000, 0x000000, NULL},
+	{0x0013d2, 0x00aba2, 0x000000, 0x000000, NULL},
+	{0x0013d3, 0x00aba3, 0x000000, 0x000000, NULL},
+	{0x0013d4, 0x00aba4, 0x000000, 0x000000, NULL},
+	{0x0013d5, 0x00aba5, 0x000000, 0x000000, NULL},
+	{0x0013d6, 0x00aba6, 0x000000, 0x000000, NULL},
+	{0x0013d7, 0x00aba7, 0x000000, 0x000000, NULL},
+	{0x0013d8, 0x00aba8, 0x000000, 0x000000, NULL},
+	{0x0013d9, 0x00aba9, 0x000000, 0x000000, NULL},
+	{0x0013da, 0x00abaa, 0x000000, 0x000000, NULL},
+	{0x0013db, 0x00abab, 0x000000, 0x000000, NULL},
+	{0x0013dc, 0x00abac, 0x000000, 0x000000, NULL},
+	{0x0013dd, 0x00abad, 0x000000, 0x000000, NULL},
+	{0x0013de, 0x00abae, 0x000000, 0x000000, NULL},
+	{0x0013df, 0x00abaf, 0x000000, 0x000000, NULL},
+	{0x0013e0, 0x00abb0, 0x000000, 0x000000, NULL},
+	{0x0013e1, 0x00abb1, 0x000000, 0x000000, NULL},
+	{0x0013e2, 0x00abb2, 0x000000, 0x000000, NULL},
+	{0x0013e3, 0x00abb3, 0x000000, 0x000000, NULL},
+	{0x0013e4, 0x00abb4, 0x000000, 0x000000, NULL},
+	{0x0013e5, 0x00abb5, 0x000000, 0x000000, NULL},
+	{0x0013e6, 0x00abb6, 0x000000, 0x000000, NULL},
+	{0x0013e7, 0x00abb7, 0x000000, 0x000000, NULL},
+	{0x0013e8, 0x00abb8, 0x000000, 0x000000, NULL},
+	{0x0013e9, 0x00abb9, 0x000000, 0x000000, NULL},
+	{0x0013ea, 0x00abba, 0x000000, 0x000000, NULL},
+	{0x0013eb, 0x00abbb, 0x000000, 0x000000, NULL},
+	{0x0013ec, 0x00abbc, 0x000000, 0x000000, NULL},
+	{0x0013ed, 0x00abbd, 0x000000, 0x000000, NULL},
+	{0x0013ee, 0x00abbe, 0x000000, 0x000000, NULL},
+	{0x0013ef, 0x00abbf, 0x000000, 0x000000, NULL},
+	{0x0013f0, 0x0013f8, 0x000000, 0x000000, NULL},
+	{0x0013f1, 0x0013f9, 0x000000, 0x000000, NULL},
+	{0x0013f2, 0x0013fa, 0x000000, 0x000000, NULL},
+	{0x0013f3, 0x0013fb, 0x000000, 0x000000, NULL},
+	{0x0013f4, 0x0013fc, 0x000000, 0x000000, NULL},
+	{0x0013f5, 0x0013fd, 0x000000, 0x000000, NULL},
+	{0x0013f8, 0x000000, 0x0013f0, 0x0013f0, NULL},
+	{0x0013f9, 0x000000, 0x0013f1, 0x0013f1, NULL},
+	{0x0013fa, 0x000000, 0x0013f2, 0x0013f2, NULL},
+	{0x0013fb, 0x000000, 0x0013f3, 0x0013f3, NULL},
+	{0x0013fc, 0x000000, 0x0013f4, 0x0013f4, NULL},
+	{0x0013fd, 0x000000, 0x0013f5, 0x0013f5, NULL},
+	{0x001c80, 0x000000, 0x000412, 0x000412, NULL},
+	{0x001c81, 0x000000, 0x000414, 0x000414, NULL},
+	{0x001c82, 0x000000, 0x00041e, 0x00041e, NULL},
+	{0x001c83, 0x000000, 0x000421, 0x000421, NULL},
+	{0x001c84, 0x000000, 0x000422, 0x000422, NULL},
+	{0x001c85, 0x000000, 0x000422, 0x000422, NULL},
+	{0x001c86, 0x000000, 0x00042a, 0x00042a, NULL},
+	{0x001c87, 0x000000, 0x000462, 0x000462, NULL},
+	{0x001c88, 0x000000, 0x00a64a, 0x00a64a, NULL},
+	{0x001c90, 0x0010d0, 0x000000, 0x000000, NULL},
+	{0x001c91, 0x0010d1, 0x000000, 0x000000, NULL},
+	{0x001c92, 0x0010d2, 0x000000, 0x000000, NULL},
+	{0x001c93, 0x0010d3, 0x000000, 0x000000, NULL},
+	{0x001c94, 0x0010d4, 0x000000, 0x000000, NULL},
+	{0x001c95, 0x0010d5, 0x000000, 0x000000, NULL},
+	{0x001c96, 0x0010d6, 0x000000, 0x000000, NULL},
+	{0x001c97, 0x0010d7, 0x000000, 0x000000, NULL},
+	{0x001c98, 0x0010d8, 0x000000, 0x000000, NULL},
+	{0x001c99, 0x0010d9, 0x000000, 0x000000, NULL},
+	{0x001c9a, 0x0010da, 0x000000, 0x000000, NULL},
+	{0x001c9b, 0x0010db, 0x000000, 0x000000, NULL},
+	{0x001c9c, 0x0010dc, 0x000000, 0x000000, NULL},
+	{0x001c9d, 0x0010dd, 0x000000, 0x000000, NULL},
+	{0x001c9e, 0x0010de, 0x000000, 0x000000, NULL},
+	{0x001c9f, 0x0010df, 0x000000, 0x000000, NULL},
+	{0x001ca0, 0x0010e0, 0x000000, 0x000000, NULL},
+	{0x001ca1, 0x0010e1, 0x000000, 0x000000, NULL},
+	{0x001ca2, 0x0010e2, 0x000000, 0x000000, NULL},
+	{0x001ca3, 0x0010e3, 0x000000, 0x000000, NULL},
+	{0x001ca4, 0x0010e4, 0x000000, 0x000000, NULL},
+	{0x001ca5, 0x0010e5, 0x000000, 0x000000, NULL},
+	{0x001ca6, 0x0010e6, 0x000000, 0x000000, NULL},
+	{0x001ca7, 0x0010e7, 0x000000, 0x000000, NULL},
+	{0x001ca8, 0x0010e8, 0x000000, 0x000000, NULL},
+	{0x001ca9, 0x0010e9, 0x000000, 0x000000, NULL},
+	{0x001caa, 0x0010ea, 0x000000, 0x000000, NULL},
+	{0x001cab, 0x0010eb, 0x000000, 0x000000, NULL},
+	{0x001cac, 0x0010ec, 0x000000, 0x000000, NULL},
+	{0x001cad, 0x0010ed, 0x000000, 0x000000, NULL},
+	{0x001cae, 0x0010ee, 0x000000, 0x000000, NULL},
+	{0x001caf, 0x0010ef, 0x000000, 0x000000, NULL},
+	{0x001cb0, 0x0010f0, 0x000000, 0x000000, NULL},
+	{0x001cb1, 0x0010f1, 0x000000, 0x000000, NULL},
+	{0x001cb2, 0x0010f2, 0x000000, 0x000000, NULL},
+	{0x001cb3, 0x0010f3, 0x000000, 0x000000, NULL},
+	{0x001cb4, 0x0010f4, 0x000000, 0x000000, NULL},
+	{0x001cb5, 0x0010f5, 0x000000, 0x000000, NULL},
+	{0x001cb6, 0x0010f6, 0x000000, 0x000000, NULL},
+	{0x001cb7, 0x0010f7, 0x000000, 0x000000, NULL},
+	{0x001cb8, 0x0010f8, 0x000000, 0x000000, NULL},
+	{0x001cb9, 0x0010f9, 0x000000, 0x000000, NULL},
+	{0x001cba, 0x0010fa, 0x000000, 0x000000, NULL},
+	{0x001cbd, 0x0010fd, 0x000000, 0x000000, NULL},
+	{0x001cbe, 0x0010fe, 0x000000, 0x000000, NULL},
+	{0x001cbf, 0x0010ff, 0x000000, 0x000000, NULL},
+	{0x001d79, 0x000000, 0x00a77d, 0x00a77d, NULL},
+	{0x001d7d, 0x000000, 0x002c63, 0x002c63, NULL},
+	{0x001d8e, 0x000000, 0x00a7c6, 0x00a7c6, NULL},
+	{0x001e00, 0x001e01, 0x000000, 0x000000, NULL},
+	{0x001e01, 0x000000, 0x001e00, 0x001e00, NULL},
+	{0x001e02, 0x001e03, 0x000000, 0x000000, NULL},
+	{0x001e03, 0x000000, 0x001e02, 0x001e02, NULL},
+	{0x001e04, 0x001e05, 0x000000, 0x000000, NULL},
+	{0x001e05, 0x000000, 0x001e04, 0x001e04, NULL},
+	{0x001e06, 0x001e07, 0x000000, 0x000000, NULL},
+	{0x001e07, 0x000000, 0x001e06, 0x001e06, NULL},
+	{0x001e08, 0x001e09, 0x000000, 0x000000, NULL},
+	{0x001e09, 0x000000, 0x001e08, 0x001e08, NULL},
+	{0x001e0a, 0x001e0b, 0x000000, 0x000000, NULL},
+	{0x001e0b, 0x000000, 0x001e0a, 0x001e0a, NULL},
+	{0x001e0c, 0x001e0d, 0x000000, 0x000000, NULL},
+	{0x001e0d, 0x000000, 0x001e0c, 0x001e0c, NULL},
+	{0x001e0e, 0x001e0f, 0x000000, 0x000000, NULL},
+	{0x001e0f, 0x000000, 0x001e0e, 0x001e0e, NULL},
+	{0x001e10, 0x001e11, 0x000000, 0x000000, NULL},
+	{0x001e11, 0x000000, 0x001e10, 0x001e10, NULL},
+	{0x001e12, 0x001e13, 0x000000, 0x000000, NULL},
+	{0x001e13, 0x000000, 0x001e12, 0x001e12, NULL},
+	{0x001e14, 0x001e15, 0x000000, 0x000000, NULL},
+	{0x001e15, 0x000000, 0x001e14, 0x001e14, NULL},
+	{0x001e16, 0x001e17, 0x000000, 0x000000, NULL},
+	{0x001e17, 0x000000, 0x001e16, 0x001e16, NULL},
+	{0x001e18, 0x001e19, 0x000000, 0x000000, NULL},
+	{0x001e19, 0x000000, 0x001e18, 0x001e18, NULL},
+	{0x001e1a, 0x001e1b, 0x000000, 0x000000, NULL},
+	{0x001e1b, 0x000000, 0x001e1a, 0x001e1a, NULL},
+	{0x001e1c, 0x001e1d, 0x000000, 0x000000, NULL},
+	{0x001e1d, 0x000000, 0x001e1c, 0x001e1c, NULL},
+	{0x001e1e, 0x001e1f, 0x000000, 0x000000, NULL},
+	{0x001e1f, 0x000000, 0x001e1e, 0x001e1e, NULL},
+	{0x001e20, 0x001e21, 0x000000, 0x000000, NULL},
+	{0x001e21, 0x000000, 0x001e20, 0x001e20, NULL},
+	{0x001e22, 0x001e23, 0x000000, 0x000000, NULL},
+	{0x001e23, 0x000000, 0x001e22, 0x001e22, NULL},
+	{0x001e24, 0x001e25, 0x000000, 0x000000, NULL},
+	{0x001e25, 0x000000, 0x001e24, 0x001e24, NULL},
+	{0x001e26, 0x001e27, 0x000000, 0x000000, NULL},
+	{0x001e27, 0x000000, 0x001e26, 0x001e26, NULL},
+	{0x001e28, 0x001e29, 0x000000, 0x000000, NULL},
+	{0x001e29, 0x000000, 0x001e28, 0x001e28, NULL},
+	{0x001e2a, 0x001e2b, 0x000000, 0x000000, NULL},
+	{0x001e2b, 0x000000, 0x001e2a, 0x001e2a, NULL},
+	{0x001e2c, 0x001e2d, 0x000000, 0x000000, NULL},
+	{0x001e2d, 0x000000, 0x001e2c, 0x001e2c, NULL},
+	{0x001e2e, 0x001e2f, 0x000000, 0x000000, NULL},
+	{0x001e2f, 0x000000, 0x001e2e, 0x001e2e, NULL},
+	{0x001e30, 0x001e31, 0x000000, 0x000000, NULL},
+	{0x001e31, 0x000000, 0x001e30, 0x001e30, NULL},
+	{0x001e32, 0x001e33, 0x000000, 0x000000, NULL},
+	{0x001e33, 0x000000, 0x001e32, 0x001e32, NULL},
+	{0x001e34, 0x001e35, 0x000000, 0x000000, NULL},
+	{0x001e35, 0x000000, 0x001e34, 0x001e34, NULL},
+	{0x001e36, 0x001e37, 0x000000, 0x000000, NULL},
+	{0x001e37, 0x000000, 0x001e36, 0x001e36, NULL},
+	{0x001e38, 0x001e39, 0x000000, 0x000000, NULL},
+	{0x001e39, 0x000000, 0x001e38, 0x001e38, NULL},
+	{0x001e3a, 0x001e3b, 0x000000, 0x000000, NULL},
+	{0x001e3b, 0x000000, 0x001e3a, 0x001e3a, NULL},
+	{0x001e3c, 0x001e3d, 0x000000, 0x000000, NULL},
+	{0x001e3d, 0x000000, 0x001e3c, 0x001e3c, NULL},
+	{0x001e3e, 0x001e3f, 0x000000, 0x000000, NULL},
+	{0x001e3f, 0x000000, 0x001e3e, 0x001e3e, NULL},
+	{0x001e40, 0x001e41, 0x000000, 0x000000, NULL},
+	{0x001e41, 0x000000, 0x001e40, 0x001e40, NULL},
+	{0x001e42, 0x001e43, 0x000000, 0x000000, NULL},
+	{0x001e43, 0x000000, 0x001e42, 0x001e42, NULL},
+	{0x001e44, 0x001e45, 0x000000, 0x000000, NULL},
+	{0x001e45, 0x000000, 0x001e44, 0x001e44, NULL},
+	{0x001e46, 0x001e47, 0x000000, 0x000000, NULL},
+	{0x001e47, 0x000000, 0x001e46, 0x001e46, NULL},
+	{0x001e48, 0x001e49, 0x000000, 0x000000, NULL},
+	{0x001e49, 0x000000, 0x001e48, 0x001e48, NULL},
+	{0x001e4a, 0x001e4b, 0x000000, 0x000000, NULL},
+	{0x001e4b, 0x000000, 0x001e4a, 0x001e4a, NULL},
+	{0x001e4c, 0x001e4d, 0x000000, 0x000000, NULL},
+	{0x001e4d, 0x000000, 0x001e4c, 0x001e4c, NULL},
+	{0x001e4e, 0x001e4f, 0x000000, 0x000000, NULL},
+	{0x001e4f, 0x000000, 0x001e4e, 0x001e4e, NULL},
+	{0x001e50, 0x001e51, 0x000000, 0x000000, NULL},
+	{0x001e51, 0x000000, 0x001e50, 0x001e50, NULL},
+	{0x001e52, 0x001e53, 0x000000, 0x000000, NULL},
+	{0x001e53, 0x000000, 0x001e52, 0x001e52, NULL},
+	{0x001e54, 0x001e55, 0x000000, 0x000000, NULL},
+	{0x001e55, 0x000000, 0x001e54, 0x001e54, NULL},
+	{0x001e56, 0x001e57, 0x000000, 0x000000, NULL},
+	{0x001e57, 0x000000, 0x001e56, 0x001e56, NULL},
+	{0x001e58, 0x001e59, 0x000000, 0x000000, NULL},
+	{0x001e59, 0x000000, 0x001e58, 0x001e58, NULL},
+	{0x001e5a, 0x001e5b, 0x000000, 0x000000, NULL},
+	{0x001e5b, 0x000000, 0x001e5a, 0x001e5a, NULL},
+	{0x001e5c, 0x001e5d, 0x000000, 0x000000, NULL},
+	{0x001e5d, 0x000000, 0x001e5c, 0x001e5c, NULL},
+	{0x001e5e, 0x001e5f, 0x000000, 0x000000, NULL},
+	{0x001e5f, 0x000000, 0x001e5e, 0x001e5e, NULL},
+	{0x001e60, 0x001e61, 0x000000, 0x000000, NULL},
+	{0x001e61, 0x000000, 0x001e60, 0x001e60, NULL},
+	{0x001e62, 0x001e63, 0x000000, 0x000000, NULL},
+	{0x001e63, 0x000000, 0x001e62, 0x001e62, NULL},
+	{0x001e64, 0x001e65, 0x000000, 0x000000, NULL},
+	{0x001e65, 0x000000, 0x001e64, 0x001e64, NULL},
+	{0x001e66, 0x001e67, 0x000000, 0x000000, NULL},
+	{0x001e67, 0x000000, 0x001e66, 0x001e66, NULL},
+	{0x001e68, 0x001e69, 0x000000, 0x000000, NULL},
+	{0x001e69, 0x000000, 0x001e68, 0x001e68, NULL},
+	{0x001e6a, 0x001e6b, 0x000000, 0x000000, NULL},
+	{0x001e6b, 0x000000, 0x001e6a, 0x001e6a, NULL},
+	{0x001e6c, 0x001e6d, 0x000000, 0x000000, NULL},
+	{0x001e6d, 0x000000, 0x001e6c, 0x001e6c, NULL},
+	{0x001e6e, 0x001e6f, 0x000000, 0x000000, NULL},
+	{0x001e6f, 0x000000, 0x001e6e, 0x001e6e, NULL},
+	{0x001e70, 0x001e71, 0x000000, 0x000000, NULL},
+	{0x001e71, 0x000000, 0x001e70, 0x001e70, NULL},
+	{0x001e72, 0x001e73, 0x000000, 0x000000, NULL},
+	{0x001e73, 0x000000, 0x001e72, 0x001e72, NULL},
+	{0x001e74, 0x001e75, 0x000000, 0x000000, NULL},
+	{0x001e75, 0x000000, 0x001e74, 0x001e74, NULL},
+	{0x001e76, 0x001e77, 0x000000, 0x000000, NULL},
+	{0x001e77, 0x000000, 0x001e76, 0x001e76, NULL},
+	{0x001e78, 0x001e79, 0x000000, 0x000000, NULL},
+	{0x001e79, 0x000000, 0x001e78, 0x001e78, NULL},
+	{0x001e7a, 0x001e7b, 0x000000, 0x000000, NULL},
+	{0x001e7b, 0x000000, 0x001e7a, 0x001e7a, NULL},
+	{0x001e7c, 0x001e7d, 0x000000, 0x000000, NULL},
+	{0x001e7d, 0x000000, 0x001e7c, 0x001e7c, NULL},
+	{0x001e7e, 0x001e7f, 0x000000, 0x000000, NULL},
+	{0x001e7f, 0x000000, 0x001e7e, 0x001e7e, NULL},
+	{0x001e80, 0x001e81, 0x000000, 0x000000, NULL},
+	{0x001e81, 0x000000, 0x001e80, 0x001e80, NULL},
+	{0x001e82, 0x001e83, 0x000000, 0x000000, NULL},
+	{0x001e83, 0x000000, 0x001e82, 0x001e82, NULL},
+	{0x001e84, 0x001e85, 0x000000, 0x000000, NULL},
+	{0x001e85, 0x000000, 0x001e84, 0x001e84, NULL},
+	{0x001e86, 0x001e87, 0x000000, 0x000000, NULL},
+	{0x001e87, 0x000000, 0x001e86, 0x001e86, NULL},
+	{0x001e88, 0x001e89, 0x000000, 0x000000, NULL},
+	{0x001e89, 0x000000, 0x001e88, 0x001e88, NULL},
+	{0x001e8a, 0x001e8b, 0x000000, 0x000000, NULL},
+	{0x001e8b, 0x000000, 0x001e8a, 0x001e8a, NULL},
+	{0x001e8c, 0x001e8d, 0x000000, 0x000000, NULL},
+	{0x001e8d, 0x000000, 0x001e8c, 0x001e8c, NULL},
+	{0x001e8e, 0x001e8f, 0x000000, 0x000000, NULL},
+	{0x001e8f, 0x000000, 0x001e8e, 0x001e8e, NULL},
+	{0x001e90, 0x001e91, 0x000000, 0x000000, NULL},
+	{0x001e91, 0x000000, 0x001e90, 0x001e90, NULL},
+	{0x001e92, 0x001e93, 0x000000, 0x000000, NULL},
+	{0x001e93, 0x000000, 0x001e92, 0x001e92, NULL},
+	{0x001e94, 0x001e95, 0x000000, 0x000000, NULL},
+	{0x001e95, 0x000000, 0x001e94, 0x001e94, NULL},
+	{0x001e96, 0x000000, 0x000000, 0x000000, &special_case_map[7]},
+	{0x001e97, 0x000000, 0x000000, 0x000000, &special_case_map[8]},
+	{0x001e98, 0x000000, 0x000000, 0x000000, &special_case_map[9]},
+	{0x001e99, 0x000000, 0x000000, 0x000000, &special_case_map[10]},
+	{0x001e9a, 0x000000, 0x000000, 0x000000, &special_case_map[11]},
+	{0x001e9b, 0x000000, 0x001e60, 0x001e60, NULL},
+	{0x001e9e, 0x0000df, 0x000000, 0x000000, NULL},
+	{0x001ea0, 0x001ea1, 0x000000, 0x000000, NULL},
+	{0x001ea1, 0x000000, 0x001ea0, 0x001ea0, NULL},
+	{0x001ea2, 0x001ea3, 0x000000, 0x000000, NULL},
+	{0x001ea3, 0x000000, 0x001ea2, 0x001ea2, NULL},
+	{0x001ea4, 0x001ea5, 0x000000, 0x000000, NULL},
+	{0x001ea5, 0x000000, 0x001ea4, 0x001ea4, NULL},
+	{0x001ea6, 0x001ea7, 0x000000, 0x000000, NULL},
+	{0x001ea7, 0x000000, 0x001ea6, 0x001ea6, NULL},
+	{0x001ea8, 0x001ea9, 0x000000, 0x000000, NULL},
+	{0x001ea9, 0x000000, 0x001ea8, 0x001ea8, NULL},
+	{0x001eaa, 0x001eab, 0x000000, 0x000000, NULL},
+	{0x001eab, 0x000000, 0x001eaa, 0x001eaa, NULL},
+	{0x001eac, 0x001ead, 0x000000, 0x000000, NULL},
+	{0x001ead, 0x000000, 0x001eac, 0x001eac, NULL},
+	{0x001eae, 0x001eaf, 0x000000, 0x000000, NULL},
+	{0x001eaf, 0x000000, 0x001eae, 0x001eae, NULL},
+	{0x001eb0, 0x001eb1, 0x000000, 0x000000, NULL},
+	{0x001eb1, 0x000000, 0x001eb0, 0x001eb0, NULL},
+	{0x001eb2, 0x001eb3, 0x000000, 0x000000, NULL},
+	{0x001eb3, 0x000000, 0x001eb2, 0x001eb2, NULL},
+	{0x001eb4, 0x001eb5, 0x000000, 0x000000, NULL},
+	{0x001eb5, 0x000000, 0x001eb4, 0x001eb4, NULL},
+	{0x001eb6, 0x001eb7, 0x000000, 0x000000, NULL},
+	{0x001eb7, 0x000000, 0x001eb6, 0x001eb6, NULL},
+	{0x001eb8, 0x001eb9, 0x000000, 0x000000, NULL},
+	{0x001eb9, 0x000000, 0x001eb8, 0x001eb8, NULL},
+	{0x001eba, 0x001ebb, 0x000000, 0x000000, NULL},
+	{0x001ebb, 0x000000, 0x001eba, 0x001eba, NULL},
+	{0x001ebc, 0x001ebd, 0x000000, 0x000000, NULL},
+	{0x001ebd, 0x000000, 0x001ebc, 0x001ebc, NULL},
+	{0x001ebe, 0x001ebf, 0x000000, 0x000000, NULL},
+	{0x001ebf, 0x000000, 0x001ebe, 0x001ebe, NULL},
+	{0x001ec0, 0x001ec1, 0x000000, 0x000000, NULL},
+	{0x001ec1, 0x000000, 0x001ec0, 0x001ec0, NULL},
+	{0x001ec2, 0x001ec3, 0x000000, 0x000000, NULL},
+	{0x001ec3, 0x000000, 0x001ec2, 0x001ec2, NULL},
+	{0x001ec4, 0x001ec5, 0x000000, 0x000000, NULL},
+	{0x001ec5, 0x000000, 0x001ec4, 0x001ec4, NULL},
+	{0x001ec6, 0x001ec7, 0x000000, 0x000000, NULL},
+	{0x001ec7, 0x000000, 0x001ec6, 0x001ec6, NULL},
+	{0x001ec8, 0x001ec9, 0x000000, 0x000000, NULL},
+	{0x001ec9, 0x000000, 0x001ec8, 0x001ec8, NULL},
+	{0x001eca, 0x001ecb, 0x000000, 0x000000, NULL},
+	{0x001ecb, 0x000000, 0x001eca, 0x001eca, NULL},
+	{0x001ecc, 0x001ecd, 0x000000, 0x000000, NULL},
+	{0x001ecd, 0x000000, 0x001ecc, 0x001ecc, NULL},
+	{0x001ece, 0x001ecf, 0x000000, 0x000000, NULL},
+	{0x001ecf, 0x000000, 0x001ece, 0x001ece, NULL},
+	{0x001ed0, 0x001ed1, 0x000000, 0x000000, NULL},
+	{0x001ed1, 0x000000, 0x001ed0, 0x001ed0, NULL},
+	{0x001ed2, 0x001ed3, 0x000000, 0x000000, NULL},
+	{0x001ed3, 0x000000, 0x001ed2, 0x001ed2, NULL},
+	{0x001ed4, 0x001ed5, 0x000000, 0x000000, NULL},
+	{0x001ed5, 0x000000, 0x001ed4, 0x001ed4, NULL},
+	{0x001ed6, 0x001ed7, 0x000000, 0x000000, NULL},
+	{0x001ed7, 0x000000, 0x001ed6, 0x001ed6, NULL},
+	{0x001ed8, 0x001ed9, 0x000000, 0x000000, NULL},
+	{0x001ed9, 0x000000, 0x001ed8, 0x001ed8, NULL},
+	{0x001eda, 0x001edb, 0x000000, 0x000000, NULL},
+	{0x001edb, 0x000000, 0x001eda, 0x001eda, NULL},
+	{0x001edc, 0x001edd, 0x000000, 0x000000, NULL},
+	{0x001edd, 0x000000, 0x001edc, 0x001edc, NULL},
+	{0x001ede, 0x001edf, 0x000000, 0x000000, NULL},
+	{0x001edf, 0x000000, 0x001ede, 0x001ede, NULL},
+	{0x001ee0, 0x001ee1, 0x000000, 0x000000, NULL},
+	{0x001ee1, 0x000000, 0x001ee0, 0x001ee0, NULL},
+	{0x001ee2, 0x001ee3, 0x000000, 0x000000, NULL},
+	{0x001ee3, 0x000000, 0x001ee2, 0x001ee2, NULL},
+	{0x001ee4, 0x001ee5, 0x000000, 0x000000, NULL},
+	{0x001ee5, 0x000000, 0x001ee4, 0x001ee4, NULL},
+	{0x001ee6, 0x001ee7, 0x000000, 0x000000, NULL},
+	{0x001ee7, 0x000000, 0x001ee6, 0x001ee6, NULL},
+	{0x001ee8, 0x001ee9, 0x000000, 0x000000, NULL},
+	{0x001ee9, 0x000000, 0x001ee8, 0x001ee8, NULL},
+	{0x001eea, 0x001eeb, 0x000000, 0x000000, NULL},
+	{0x001eeb, 0x000000, 0x001eea, 0x001eea, NULL},
+	{0x001eec, 0x001eed, 0x000000, 0x000000, NULL},
+	{0x001eed, 0x000000, 0x001eec, 0x001eec, NULL},
+	{0x001eee, 0x001eef, 0x000000, 0x000000, NULL},
+	{0x001eef, 0x000000, 0x001eee, 0x001eee, NULL},
+	{0x001ef0, 0x001ef1, 0x000000, 0x000000, NULL},
+	{0x001ef1, 0x000000, 0x001ef0, 0x001ef0, NULL},
+	{0x001ef2, 0x001ef3, 0x000000, 0x000000, NULL},
+	{0x001ef3, 0x000000, 0x001ef2, 0x001ef2, NULL},
+	{0x001ef4, 0x001ef5, 0x000000, 0x000000, NULL},
+	{0x001ef5, 0x000000, 0x001ef4, 0x001ef4, NULL},
+	{0x001ef6, 0x001ef7, 0x000000, 0x000000, NULL},
+	{0x001ef7, 0x000000, 0x001ef6, 0x001ef6, NULL},
+	{0x001ef8, 0x001ef9, 0x000000, 0x000000, NULL},
+	{0x001ef9, 0x000000, 0x001ef8, 0x001ef8, NULL},
+	{0x001efa, 0x001efb, 0x000000, 0x000000, NULL},
+	{0x001efb, 0x000000, 0x001efa, 0x001efa, NULL},
+	{0x001efc, 0x001efd, 0x000000, 0x000000, NULL},
+	{0x001efd, 0x000000, 0x001efc, 0x001efc, NULL},
+	{0x001efe, 0x001eff, 0x000000, 0x000000, NULL},
+	{0x001eff, 0x000000, 0x001efe, 0x001efe, NULL},
+	{0x001f00, 0x000000, 0x001f08, 0x001f08, NULL},
+	{0x001f01, 0x000000, 0x001f09, 0x001f09, NULL},
+	{0x001f02, 0x000000, 0x001f0a, 0x001f0a, NULL},
+	{0x001f03, 0x000000, 0x001f0b, 0x001f0b, NULL},
+	{0x001f04, 0x000000, 0x001f0c, 0x001f0c, NULL},
+	{0x001f05, 0x000000, 0x001f0d, 0x001f0d, NULL},
+	{0x001f06, 0x000000, 0x001f0e, 0x001f0e, NULL},
+	{0x001f07, 0x000000, 0x001f0f, 0x001f0f, NULL},
+	{0x001f08, 0x001f00, 0x000000, 0x000000, NULL},
+	{0x001f09, 0x001f01, 0x000000, 0x000000, NULL},
+	{0x001f0a, 0x001f02, 0x000000, 0x000000, NULL},
+	{0x001f0b, 0x001f03, 0x000000, 0x000000, NULL},
+	{0x001f0c, 0x001f04, 0x000000, 0x000000, NULL},
+	{0x001f0d, 0x001f05, 0x000000, 0x000000, NULL},
+	{0x001f0e, 0x001f06, 0x000000, 0x000000, NULL},
+	{0x001f0f, 0x001f07, 0x000000, 0x000000, NULL},
+	{0x001f10, 0x000000, 0x001f18, 0x001f18, NULL},
+	{0x001f11, 0x000000, 0x001f19, 0x001f19, NULL},
+	{0x001f12, 0x000000, 0x001f1a, 0x001f1a, NULL},
+	{0x001f13, 0x000000, 0x001f1b, 0x001f1b, NULL},
+	{0x001f14, 0x000000, 0x001f1c, 0x001f1c, NULL},
+	{0x001f15, 0x000000, 0x001f1d, 0x001f1d, NULL},
+	{0x001f18, 0x001f10, 0x000000, 0x000000, NULL},
+	{0x001f19, 0x001f11, 0x000000, 0x000000, NULL},
+	{0x001f1a, 0x001f12, 0x000000, 0x000000, NULL},
+	{0x001f1b, 0x001f13, 0x000000, 0x000000, NULL},
+	{0x001f1c, 0x001f14, 0x000000, 0x000000, NULL},
+	{0x001f1d, 0x001f15, 0x000000, 0x000000, NULL},
+	{0x001f20, 0x000000, 0x001f28, 0x001f28, NULL},
+	{0x001f21, 0x000000, 0x001f29, 0x001f29, NULL},
+	{0x001f22, 0x000000, 0x001f2a, 0x001f2a, NULL},
+	{0x001f23, 0x000000, 0x001f2b, 0x001f2b, NULL},
+	{0x001f24, 0x000000, 0x001f2c, 0x001f2c, NULL},
+	{0x001f25, 0x000000, 0x001f2d, 0x001f2d, NULL},
+	{0x001f26, 0x000000, 0x001f2e, 0x001f2e, NULL},
+	{0x001f27, 0x000000, 0x001f2f, 0x001f2f, NULL},
+	{0x001f28, 0x001f20, 0x000000, 0x000000, NULL},
+	{0x001f29, 0x001f21, 0x000000, 0x000000, NULL},
+	{0x001f2a, 0x001f22, 0x000000, 0x000000, NULL},
+	{0x001f2b, 0x001f23, 0x000000, 0x000000, NULL},
+	{0x001f2c, 0x001f24, 0x000000, 0x000000, NULL},
+	{0x001f2d, 0x001f25, 0x000000, 0x000000, NULL},
+	{0x001f2e, 0x001f26, 0x000000, 0x000000, NULL},
+	{0x001f2f, 0x001f27, 0x000000, 0x000000, NULL},
+	{0x001f30, 0x000000, 0x001f38, 0x001f38, NULL},
+	{0x001f31, 0x000000, 0x001f39, 0x001f39, NULL},
+	{0x001f32, 0x000000, 0x001f3a, 0x001f3a, NULL},
+	{0x001f33, 0x000000, 0x001f3b, 0x001f3b, NULL},
+	{0x001f34, 0x000000, 0x001f3c, 0x001f3c, NULL},
+	{0x001f35, 0x000000, 0x001f3d, 0x001f3d, NULL},
+	{0x001f36, 0x000000, 0x001f3e, 0x001f3e, NULL},
+	{0x001f37, 0x000000, 0x001f3f, 0x001f3f, NULL},
+	{0x001f38, 0x001f30, 0x000000, 0x000000, NULL},
+	{0x001f39, 0x001f31, 0x000000, 0x000000, NULL},
+	{0x001f3a, 0x001f32, 0x000000, 0x000000, NULL},
+	{0x001f3b, 0x001f33, 0x000000, 0x000000, NULL},
+	{0x001f3c, 0x001f34, 0x000000, 0x000000, NULL},
+	{0x001f3d, 0x001f35, 0x000000, 0x000000, NULL},
+	{0x001f3e, 0x001f36, 0x000000, 0x000000, NULL},
+	{0x001f3f, 0x001f37, 0x000000, 0x000000, NULL},
+	{0x001f40, 0x000000, 0x001f48, 0x001f48, NULL},
+	{0x001f41, 0x000000, 0x001f49, 0x001f49, NULL},
+	{0x001f42, 0x000000, 0x001f4a, 0x001f4a, NULL},
+	{0x001f43, 0x000000, 0x001f4b, 0x001f4b, NULL},
+	{0x001f44, 0x000000, 0x001f4c, 0x001f4c, NULL},
+	{0x001f45, 0x000000, 0x001f4d, 0x001f4d, NULL},
+	{0x001f48, 0x001f40, 0x000000, 0x000000, NULL},
+	{0x001f49, 0x001f41, 0x000000, 0x000000, NULL},
+	{0x001f4a, 0x001f42, 0x000000, 0x000000, NULL},
+	{0x001f4b, 0x001f43, 0x000000, 0x000000, NULL},
+	{0x001f4c, 0x001f44, 0x000000, 0x000000, NULL},
+	{0x001f4d, 0x001f45, 0x000000, 0x000000, NULL},
+	{0x001f50, 0x000000, 0x000000, 0x000000, &special_case_map[12]},
+	{0x001f51, 0x000000, 0x001f59, 0x001f59, NULL},
+	{0x001f52, 0x000000, 0x000000, 0x000000, &special_case_map[13]},
+	{0x001f53, 0x000000, 0x001f5b, 0x001f5b, NULL},
+	{0x001f54, 0x000000, 0x000000, 0x000000, &special_case_map[14]},
+	{0x001f55, 0x000000, 0x001f5d, 0x001f5d, NULL},
+	{0x001f56, 0x000000, 0x000000, 0x000000, &special_case_map[15]},
+	{0x001f57, 0x000000, 0x001f5f, 0x001f5f, NULL},
+	{0x001f59, 0x001f51, 0x000000, 0x000000, NULL},
+	{0x001f5b, 0x001f53, 0x000000, 0x000000, NULL},
+	{0x001f5d, 0x001f55, 0x000000, 0x000000, NULL},
+	{0x001f5f, 0x001f57, 0x000000, 0x000000, NULL},
+	{0x001f60, 0x000000, 0x001f68, 0x001f68, NULL},
+	{0x001f61, 0x000000, 0x001f69, 0x001f69, NULL},
+	{0x001f62, 0x000000, 0x001f6a, 0x001f6a, NULL},
+	{0x001f63, 0x000000, 0x001f6b, 0x001f6b, NULL},
+	{0x001f64, 0x000000, 0x001f6c, 0x001f6c, NULL},
+	{0x001f65, 0x000000, 0x001f6d, 0x001f6d, NULL},
+	{0x001f66, 0x000000, 0x001f6e, 0x001f6e, NULL},
+	{0x001f67, 0x000000, 0x001f6f, 0x001f6f, NULL},
+	{0x001f68, 0x001f60, 0x000000, 0x000000, NULL},
+	{0x001f69, 0x001f61, 0x000000, 0x000000, NULL},
+	{0x001f6a, 0x001f62, 0x000000, 0x000000, NULL},
+	{0x001f6b, 0x001f63, 0x000000, 0x000000, NULL},
+	{0x001f6c, 0x001f64, 0x000000, 0x000000, NULL},
+	{0x001f6d, 0x001f65, 0x000000, 0x000000, NULL},
+	{0x001f6e, 0x001f66, 0x000000, 0x000000, NULL},
+	{0x001f6f, 0x001f67, 0x000000, 0x000000, NULL},
+	{0x001f70, 0x000000, 0x001fba, 0x001fba, NULL},
+	{0x001f71, 0x000000, 0x001fbb, 0x001fbb, NULL},
+	{0x001f72, 0x000000, 0x001fc8, 0x001fc8, NULL},
+	{0x001f73, 0x000000, 0x001fc9, 0x001fc9, NULL},
+	{0x001f74, 0x000000, 0x001fca, 0x001fca, NULL},
+	{0x001f75, 0x000000, 0x001fcb, 0x001fcb, NULL},
+	{0x001f76, 0x000000, 0x001fda, 0x001fda, NULL},
+	{0x001f77, 0x000000, 0x001fdb, 0x001fdb, NULL},
+	{0x001f78, 0x000000, 0x001ff8, 0x001ff8, NULL},
+	{0x001f79, 0x000000, 0x001ff9, 0x001ff9, NULL},
+	{0x001f7a, 0x000000, 0x001fea, 0x001fea, NULL},
+	{0x001f7b, 0x000000, 0x001feb, 0x001feb, NULL},
+	{0x001f7c, 0x000000, 0x001ffa, 0x001ffa, NULL},
+	{0x001f7d, 0x000000, 0x001ffb, 0x001ffb, NULL},
+	{0x001f80, 0x000000, 0x001f88, 0x001f88, &special_case_map[16]},
+	{0x001f81, 0x000000, 0x001f89, 0x001f89, &special_case_map[17]},
+	{0x001f82, 0x000000, 0x001f8a, 0x001f8a, &special_case_map[18]},
+	{0x001f83, 0x000000, 0x001f8b, 0x001f8b, &special_case_map[19]},
+	{0x001f84, 0x000000, 0x001f8c, 0x001f8c, &special_case_map[20]},
+	{0x001f85, 0x000000, 0x001f8d, 0x001f8d, &special_case_map[21]},
+	{0x001f86, 0x000000, 0x001f8e, 0x001f8e, &special_case_map[22]},
+	{0x001f87, 0x000000, 0x001f8f, 0x001f8f, &special_case_map[23]},
+	{0x001f88, 0x001f80, 0x000000, 0x000000, &special_case_map[24]},
+	{0x001f89, 0x001f81, 0x000000, 0x000000, &special_case_map[25]},
+	{0x001f8a, 0x001f82, 0x000000, 0x000000, &special_case_map[26]},
+	{0x001f8b, 0x001f83, 0x000000, 0x000000, &special_case_map[27]},
+	{0x001f8c, 0x001f84, 0x000000, 0x000000, &special_case_map[28]},
+	{0x001f8d, 0x001f85, 0x000000, 0x000000, &special_case_map[29]},
+	{0x001f8e, 0x001f86, 0x000000, 0x000000, &special_case_map[30]},
+	{0x001f8f, 0x001f87, 0x000000, 0x000000, &special_case_map[31]},
+	{0x001f90, 0x000000, 0x001f98, 0x001f98, &special_case_map[32]},
+	{0x001f91, 0x000000, 0x001f99, 0x001f99, &special_case_map[33]},
+	{0x001f92, 0x000000, 0x001f9a, 0x001f9a, &special_case_map[34]},
+	{0x001f93, 0x000000, 0x001f9b, 0x001f9b, &special_case_map[35]},
+	{0x001f94, 0x000000, 0x001f9c, 0x001f9c, &special_case_map[36]},
+	{0x001f95, 0x000000, 0x001f9d, 0x001f9d, &special_case_map[37]},
+	{0x001f96, 0x000000, 0x001f9e, 0x001f9e, &special_case_map[38]},
+	{0x001f97, 0x000000, 0x001f9f, 0x001f9f, &special_case_map[39]},
+	{0x001f98, 0x001f90, 0x000000, 0x000000, &special_case_map[40]},
+	{0x001f99, 0x001f91, 0x000000, 0x000000, &special_case_map[41]},
+	{0x001f9a, 0x001f92, 0x000000, 0x000000, &special_case_map[42]},
+	{0x001f9b, 0x001f93, 0x000000, 0x000000, &special_case_map[43]},
+	{0x001f9c, 0x001f94, 0x000000, 0x000000, &special_case_map[44]},
+	{0x001f9d, 0x001f95, 0x000000, 0x000000, &special_case_map[45]},
+	{0x001f9e, 0x001f96, 0x000000, 0x000000, &special_case_map[46]},
+	{0x001f9f, 0x001f97, 0x000000, 0x000000, &special_case_map[47]},
+	{0x001fa0, 0x000000, 0x001fa8, 0x001fa8, &special_case_map[48]},
+	{0x001fa1, 0x000000, 0x001fa9, 0x001fa9, &special_case_map[49]},
+	{0x001fa2, 0x000000, 0x001faa, 0x001faa, &special_case_map[50]},
+	{0x001fa3, 0x000000, 0x001fab, 0x001fab, &special_case_map[51]},
+	{0x001fa4, 0x000000, 0x001fac, 0x001fac, &special_case_map[52]},
+	{0x001fa5, 0x000000, 0x001fad, 0x001fad, &special_case_map[53]},
+	{0x001fa6, 0x000000, 0x001fae, 0x001fae, &special_case_map[54]},
+	{0x001fa7, 0x000000, 0x001faf, 0x001faf, &special_case_map[55]},
+	{0x001fa8, 0x001fa0, 0x000000, 0x000000, &special_case_map[56]},
+	{0x001fa9, 0x001fa1, 0x000000, 0x000000, &special_case_map[57]},
+	{0x001faa, 0x001fa2, 0x000000, 0x000000, &special_case_map[58]},
+	{0x001fab, 0x001fa3, 0x000000, 0x000000, &special_case_map[59]},
+	{0x001fac, 0x001fa4, 0x000000, 0x000000, &special_case_map[60]},
+	{0x001fad, 0x001fa5, 0x000000, 0x000000, &special_case_map[61]},
+	{0x001fae, 0x001fa6, 0x000000, 0x000000, &special_case_map[62]},
+	{0x001faf, 0x001fa7, 0x000000, 0x000000, &special_case_map[63]},
+	{0x001fb0, 0x000000, 0x001fb8, 0x001fb8, NULL},
+	{0x001fb1, 0x000000, 0x001fb9, 0x001fb9, NULL},
+	{0x001fb2, 0x000000, 0x000000, 0x000000, &special_case_map[64]},
+	{0x001fb3, 0x000000, 0x001fbc, 0x001fbc, &special_case_map[65]},
+	{0x001fb4, 0x000000, 0x000000, 0x000000, &special_case_map[66]},
+	{0x001fb6, 0x000000, 0x000000, 0x000000, &special_case_map[67]},
+	{0x001fb7, 0x000000, 0x000000, 0x000000, &special_case_map[68]},
+	{0x001fb8, 0x001fb0, 0x000000, 0x000000, NULL},
+	{0x001fb9, 0x001fb1, 0x000000, 0x000000, NULL},
+	{0x001fba, 0x001f70, 0x000000, 0x000000, NULL},
+	{0x001fbb, 0x001f71, 0x000000, 0x000000, NULL},
+	{0x001fbc, 0x001fb3, 0x000000, 0x000000, &special_case_map[69]},
+	{0x001fbe, 0x000000, 0x000399, 0x000399, NULL},
+	{0x001fc2, 0x000000, 0x000000, 0x000000, &special_case_map[70]},
+	{0x001fc3, 0x000000, 0x001fcc, 0x001fcc, &special_case_map[71]},
+	{0x001fc4, 0x000000, 0x000000, 0x000000, &special_case_map[72]},
+	{0x001fc6, 0x000000, 0x000000, 0x000000, &special_case_map[73]},
+	{0x001fc7, 0x000000, 0x000000, 0x000000, &special_case_map[74]},
+	{0x001fc8, 0x001f72, 0x000000, 0x000000, NULL},
+	{0x001fc9, 0x001f73, 0x000000, 0x000000, NULL},
+	{0x001fca, 0x001f74, 0x000000, 0x000000, NULL},
+	{0x001fcb, 0x001f75, 0x000000, 0x000000, NULL},
+	{0x001fcc, 0x001fc3, 0x000000, 0x000000, &special_case_map[75]},
+	{0x001fd0, 0x000000, 0x001fd8, 0x001fd8, NULL},
+	{0x001fd1, 0x000000, 0x001fd9, 0x001fd9, NULL},
+	{0x001fd2, 0x000000, 0x000000, 0x000000, &special_case_map[76]},
+	{0x001fd3, 0x000000, 0x000000, 0x000000, &special_case_map[77]},
+	{0x001fd6, 0x000000, 0x000000, 0x000000, &special_case_map[78]},
+	{0x001fd7, 0x000000, 0x000000, 0x000000, &special_case_map[79]},
+	{0x001fd8, 0x001fd0, 0x000000, 0x000000, NULL},
+	{0x001fd9, 0x001fd1, 0x000000, 0x000000, NULL},
+	{0x001fda, 0x001f76, 0x000000, 0x000000, NULL},
+	{0x001fdb, 0x001f77, 0x000000, 0x000000, NULL},
+	{0x001fe0, 0x000000, 0x001fe8, 0x001fe8, NULL},
+	{0x001fe1, 0x000000, 0x001fe9, 0x001fe9, NULL},
+	{0x001fe2, 0x000000, 0x000000, 0x000000, &special_case_map[80]},
+	{0x001fe3, 0x000000, 0x000000, 0x000000, &special_case_map[81]},
+	{0x001fe4, 0x000000, 0x000000, 0x000000, &special_case_map[82]},
+	{0x001fe5, 0x000000, 0x001fec, 0x001fec, NULL},
+	{0x001fe6, 0x000000, 0x000000, 0x000000, &special_case_map[83]},
+	{0x001fe7, 0x000000, 0x000000, 0x000000, &special_case_map[84]},
+	{0x001fe8, 0x001fe0, 0x000000, 0x000000, NULL},
+	{0x001fe9, 0x001fe1, 0x000000, 0x000000, NULL},
+	{0x001fea, 0x001f7a, 0x000000, 0x000000, NULL},
+	{0x001feb, 0x001f7b, 0x000000, 0x000000, NULL},
+	{0x001fec, 0x001fe5, 0x000000, 0x000000, NULL},
+	{0x001ff2, 0x000000, 0x000000, 0x000000, &special_case_map[85]},
+	{0x001ff3, 0x000000, 0x001ffc, 0x001ffc, &special_case_map[86]},
+	{0x001ff4, 0x000000, 0x000000, 0x000000, &special_case_map[87]},
+	{0x001ff6, 0x000000, 0x000000, 0x000000, &special_case_map[88]},
+	{0x001ff7, 0x000000, 0x000000, 0x000000, &special_case_map[89]},
+	{0x001ff8, 0x001f78, 0x000000, 0x000000, NULL},
+	{0x001ff9, 0x001f79, 0x000000, 0x000000, NULL},
+	{0x001ffa, 0x001f7c, 0x000000, 0x000000, NULL},
+	{0x001ffb, 0x001f7d, 0x000000, 0x000000, NULL},
+	{0x001ffc, 0x001ff3, 0x000000, 0x000000, &special_case_map[90]},
+	{0x002126, 0x0003c9, 0x000000, 0x000000, NULL},
+	{0x00212a, 0x00006b, 0x000000, 0x000000, NULL},
+	{0x00212b, 0x0000e5, 0x000000, 0x000000, NULL},
+	{0x002132, 0x00214e, 0x000000, 0x000000, NULL},
+	{0x00214e, 0x000000, 0x002132, 0x002132, NULL},
+	{0x002160, 0x002170, 0x000000, 0x000000, NULL},
+	{0x002161, 0x002171, 0x000000, 0x000000, NULL},
+	{0x002162, 0x002172, 0x000000, 0x000000, NULL},
+	{0x002163, 0x002173, 0x000000, 0x000000, NULL},
+	{0x002164, 0x002174, 0x000000, 0x000000, NULL},
+	{0x002165, 0x002175, 0x000000, 0x000000, NULL},
+	{0x002166, 0x002176, 0x000000, 0x000000, NULL},
+	{0x002167, 0x002177, 0x000000, 0x000000, NULL},
+	{0x002168, 0x002178, 0x000000, 0x000000, NULL},
+	{0x002169, 0x002179, 0x000000, 0x000000, NULL},
+	{0x00216a, 0x00217a, 0x000000, 0x000000, NULL},
+	{0x00216b, 0x00217b, 0x000000, 0x000000, NULL},
+	{0x00216c, 0x00217c, 0x000000, 0x000000, NULL},
+	{0x00216d, 0x00217d, 0x000000, 0x000000, NULL},
+	{0x00216e, 0x00217e, 0x000000, 0x000000, NULL},
+	{0x00216f, 0x00217f, 0x000000, 0x000000, NULL},
+	{0x002170, 0x000000, 0x002160, 0x002160, NULL},
+	{0x002171, 0x000000, 0x002161, 0x002161, NULL},
+	{0x002172, 0x000000, 0x002162, 0x002162, NULL},
+	{0x002173, 0x000000, 0x002163, 0x002163, NULL},
+	{0x002174, 0x000000, 0x002164, 0x002164, NULL},
+	{0x002175, 0x000000, 0x002165, 0x002165, NULL},
+	{0x002176, 0x000000, 0x002166, 0x002166, NULL},
+	{0x002177, 0x000000, 0x002167, 0x002167, NULL},
+	{0x002178, 0x000000, 0x002168, 0x002168, NULL},
+	{0x002179, 0x000000, 0x002169, 0x002169, NULL},
+	{0x00217a, 0x000000, 0x00216a, 0x00216a, NULL},
+	{0x00217b, 0x000000, 0x00216b, 0x00216b, NULL},
+	{0x00217c, 0x000000, 0x00216c, 0x00216c, NULL},
+	{0x00217d, 0x000000, 0x00216d, 0x00216d, NULL},
+	{0x00217e, 0x000000, 0x00216e, 0x00216e, NULL},
+	{0x00217f, 0x000000, 0x00216f, 0x00216f, NULL},
+	{0x002183, 0x002184, 0x000000, 0x000000, NULL},
+	{0x002184, 0x000000, 0x002183, 0x002183, NULL},
+	{0x0024b6, 0x0024d0, 0x000000, 0x000000, NULL},
+	{0x0024b7, 0x0024d1, 0x000000, 0x000000, NULL},
+	{0x0024b8, 0x0024d2, 0x000000, 0x000000, NULL},
+	{0x0024b9, 0x0024d3, 0x000000, 0x000000, NULL},
+	{0x0024ba, 0x0024d4, 0x000000, 0x000000, NULL},
+	{0x0024bb, 0x0024d5, 0x000000, 0x000000, NULL},
+	{0x0024bc, 0x0024d6, 0x000000, 0x000000, NULL},
+	{0x0024bd, 0x0024d7, 0x000000, 0x000000, NULL},
+	{0x0024be, 0x0024d8, 0x000000, 0x000000, NULL},
+	{0x0024bf, 0x0024d9, 0x000000, 0x000000, NULL},
+	{0x0024c0, 0x0024da, 0x000000, 0x000000, NULL},
+	{0x0024c1, 0x0024db, 0x000000, 0x000000, NULL},
+	{0x0024c2, 0x0024dc, 0x000000, 0x000000, NULL},
+	{0x0024c3, 0x0024dd, 0x000000, 0x000000, NULL},
+	{0x0024c4, 0x0024de, 0x000000, 0x000000, NULL},
+	{0x0024c5, 0x0024df, 0x000000, 0x000000, NULL},
+	{0x0024c6, 0x0024e0, 0x000000, 0x000000, NULL},
+	{0x0024c7, 0x0024e1, 0x000000, 0x000000, NULL},
+	{0x0024c8, 0x0024e2, 0x000000, 0x000000, NULL},
+	{0x0024c9, 0x0024e3, 0x000000, 0x000000, NULL},
+	{0x0024ca, 0x0024e4, 0x000000, 0x000000, NULL},
+	{0x0024cb, 0x0024e5, 0x000000, 0x000000, NULL},
+	{0x0024cc, 0x0024e6, 0x000000, 0x000000, NULL},
+	{0x0024cd, 0x0024e7, 0x000000, 0x000000, NULL},
+	{0x0024ce, 0x0024e8, 0x000000, 0x000000, NULL},
+	{0x0024cf, 0x0024e9, 0x000000, 0x000000, NULL},
+	{0x0024d0, 0x000000, 0x0024b6, 0x0024b6, NULL},
+	{0x0024d1, 0x000000, 0x0024b7, 0x0024b7, NULL},
+	{0x0024d2, 0x000000, 0x0024b8, 0x0024b8, NULL},
+	{0x0024d3, 0x000000, 0x0024b9, 0x0024b9, NULL},
+	{0x0024d4, 0x000000, 0x0024ba, 0x0024ba, NULL},
+	{0x0024d5, 0x000000, 0x0024bb, 0x0024bb, NULL},
+	{0x0024d6, 0x000000, 0x0024bc, 0x0024bc, NULL},
+	{0x0024d7, 0x000000, 0x0024bd, 0x0024bd, NULL},
+	{0x0024d8, 0x000000, 0x0024be, 0x0024be, NULL},
+	{0x0024d9, 0x000000, 0x0024bf, 0x0024bf, NULL},
+	{0x0024da, 0x000000, 0x0024c0, 0x0024c0, NULL},
+	{0x0024db, 0x000000, 0x0024c1, 0x0024c1, NULL},
+	{0x0024dc, 0x000000, 0x0024c2, 0x0024c2, NULL},
+	{0x0024dd, 0x000000, 0x0024c3, 0x0024c3, NULL},
+	{0x0024de, 0x000000, 0x0024c4, 0x0024c4, NULL},
+	{0x0024df, 0x000000, 0x0024c5, 0x0024c5, NULL},
+	{0x0024e0, 0x000000, 0x0024c6, 0x0024c6, NULL},
+	{0x0024e1, 0x000000, 0x0024c7, 0x0024c7, NULL},
+	{0x0024e2, 0x000000, 0x0024c8, 0x0024c8, NULL},
+	{0x0024e3, 0x000000, 0x0024c9, 0x0024c9, NULL},
+	{0x0024e4, 0x000000, 0x0024ca, 0x0024ca, NULL},
+	{0x0024e5, 0x000000, 0x0024cb, 0x0024cb, NULL},
+	{0x0024e6, 0x000000, 0x0024cc, 0x0024cc, NULL},
+	{0x0024e7, 0x000000, 0x0024cd, 0x0024cd, NULL},
+	{0x0024e8, 0x000000, 0x0024ce, 0x0024ce, NULL},
+	{0x0024e9, 0x000000, 0x0024cf, 0x0024cf, NULL},
+	{0x002c00, 0x002c30, 0x000000, 0x000000, NULL},
+	{0x002c01, 0x002c31, 0x000000, 0x000000, NULL},
+	{0x002c02, 0x002c32, 0x000000, 0x000000, NULL},
+	{0x002c03, 0x002c33, 0x000000, 0x000000, NULL},
+	{0x002c04, 0x002c34, 0x000000, 0x000000, NULL},
+	{0x002c05, 0x002c35, 0x000000, 0x000000, NULL},
+	{0x002c06, 0x002c36, 0x000000, 0x000000, NULL},
+	{0x002c07, 0x002c37, 0x000000, 0x000000, NULL},
+	{0x002c08, 0x002c38, 0x000000, 0x000000, NULL},
+	{0x002c09, 0x002c39, 0x000000, 0x000000, NULL},
+	{0x002c0a, 0x002c3a, 0x000000, 0x000000, NULL},
+	{0x002c0b, 0x002c3b, 0x000000, 0x000000, NULL},
+	{0x002c0c, 0x002c3c, 0x000000, 0x000000, NULL},
+	{0x002c0d, 0x002c3d, 0x000000, 0x000000, NULL},
+	{0x002c0e, 0x002c3e, 0x000000, 0x000000, NULL},
+	{0x002c0f, 0x002c3f, 0x000000, 0x000000, NULL},
+	{0x002c10, 0x002c40, 0x000000, 0x000000, NULL},
+	{0x002c11, 0x002c41, 0x000000, 0x000000, NULL},
+	{0x002c12, 0x002c42, 0x000000, 0x000000, NULL},
+	{0x002c13, 0x002c43, 0x000000, 0x000000, NULL},
+	{0x002c14, 0x002c44, 0x000000, 0x000000, NULL},
+	{0x002c15, 0x002c45, 0x000000, 0x000000, NULL},
+	{0x002c16, 0x002c46, 0x000000, 0x000000, NULL},
+	{0x002c17, 0x002c47, 0x000000, 0x000000, NULL},
+	{0x002c18, 0x002c48, 0x000000, 0x000000, NULL},
+	{0x002c19, 0x002c49, 0x000000, 0x000000, NULL},
+	{0x002c1a, 0x002c4a, 0x000000, 0x000000, NULL},
+	{0x002c1b, 0x002c4b, 0x000000, 0x000000, NULL},
+	{0x002c1c, 0x002c4c, 0x000000, 0x000000, NULL},
+	{0x002c1d, 0x002c4d, 0x000000, 0x000000, NULL},
+	{0x002c1e, 0x002c4e, 0x000000, 0x000000, NULL},
+	{0x002c1f, 0x002c4f, 0x000000, 0x000000, NULL},
+	{0x002c20, 0x002c50, 0x000000, 0x000000, NULL},
+	{0x002c21, 0x002c51, 0x000000, 0x000000, NULL},
+	{0x002c22, 0x002c52, 0x000000, 0x000000, NULL},
+	{0x002c23, 0x002c53, 0x000000, 0x000000, NULL},
+	{0x002c24, 0x002c54, 0x000000, 0x000000, NULL},
+	{0x002c25, 0x002c55, 0x000000, 0x000000, NULL},
+	{0x002c26, 0x002c56, 0x000000, 0x000000, NULL},
+	{0x002c27, 0x002c57, 0x000000, 0x000000, NULL},
+	{0x002c28, 0x002c58, 0x000000, 0x000000, NULL},
+	{0x002c29, 0x002c59, 0x000000, 0x000000, NULL},
+	{0x002c2a, 0x002c5a, 0x000000, 0x000000, NULL},
+	{0x002c2b, 0x002c5b, 0x000000, 0x000000, NULL},
+	{0x002c2c, 0x002c5c, 0x000000, 0x000000, NULL},
+	{0x002c2d, 0x002c5d, 0x000000, 0x000000, NULL},
+	{0x002c2e, 0x002c5e, 0x000000, 0x000000, NULL},
+	{0x002c2f, 0x002c5f, 0x000000, 0x000000, NULL},
+	{0x002c30, 0x000000, 0x002c00, 0x002c00, NULL},
+	{0x002c31, 0x000000, 0x002c01, 0x002c01, NULL},
+	{0x002c32, 0x000000, 0x002c02, 0x002c02, NULL},
+	{0x002c33, 0x000000, 0x002c03, 0x002c03, NULL},
+	{0x002c34, 0x000000, 0x002c04, 0x002c04, NULL},
+	{0x002c35, 0x000000, 0x002c05, 0x002c05, NULL},
+	{0x002c36, 0x000000, 0x002c06, 0x002c06, NULL},
+	{0x002c37, 0x000000, 0x002c07, 0x002c07, NULL},
+	{0x002c38, 0x000000, 0x002c08, 0x002c08, NULL},
+	{0x002c39, 0x000000, 0x002c09, 0x002c09, NULL},
+	{0x002c3a, 0x000000, 0x002c0a, 0x002c0a, NULL},
+	{0x002c3b, 0x000000, 0x002c0b, 0x002c0b, NULL},
+	{0x002c3c, 0x000000, 0x002c0c, 0x002c0c, NULL},
+	{0x002c3d, 0x000000, 0x002c0d, 0x002c0d, NULL},
+	{0x002c3e, 0x000000, 0x002c0e, 0x002c0e, NULL},
+	{0x002c3f, 0x000000, 0x002c0f, 0x002c0f, NULL},
+	{0x002c40, 0x000000, 0x002c10, 0x002c10, NULL},
+	{0x002c41, 0x000000, 0x002c11, 0x002c11, NULL},
+	{0x002c42, 0x000000, 0x002c12, 0x002c12, NULL},
+	{0x002c43, 0x000000, 0x002c13, 0x002c13, NULL},
+	{0x002c44, 0x000000, 0x002c14, 0x002c14, NULL},
+	{0x002c45, 0x000000, 0x002c15, 0x002c15, NULL},
+	{0x002c46, 0x000000, 0x002c16, 0x002c16, NULL},
+	{0x002c47, 0x000000, 0x002c17, 0x002c17, NULL},
+	{0x002c48, 0x000000, 0x002c18, 0x002c18, NULL},
+	{0x002c49, 0x000000, 0x002c19, 0x002c19, NULL},
+	{0x002c4a, 0x000000, 0x002c1a, 0x002c1a, NULL},
+	{0x002c4b, 0x000000, 0x002c1b, 0x002c1b, NULL},
+	{0x002c4c, 0x000000, 0x002c1c, 0x002c1c, NULL},
+	{0x002c4d, 0x000000, 0x002c1d, 0x002c1d, NULL},
+	{0x002c4e, 0x000000, 0x002c1e, 0x002c1e, NULL},
+	{0x002c4f, 0x000000, 0x002c1f, 0x002c1f, NULL},
+	{0x002c50, 0x000000, 0x002c20, 0x002c20, NULL},
+	{0x002c51, 0x000000, 0x002c21, 0x002c21, NULL},
+	{0x002c52, 0x000000, 0x002c22, 0x002c22, NULL},
+	{0x002c53, 0x000000, 0x002c23, 0x002c23, NULL},
+	{0x002c54, 0x000000, 0x002c24, 0x002c24, NULL},
+	{0x002c55, 0x000000, 0x002c25, 0x002c25, NULL},
+	{0x002c56, 0x000000, 0x002c26, 0x002c26, NULL},
+	{0x002c57, 0x000000, 0x002c27, 0x002c27, NULL},
+	{0x002c58, 0x000000, 0x002c28, 0x002c28, NULL},
+	{0x002c59, 0x000000, 0x002c29, 0x002c29, NULL},
+	{0x002c5a, 0x000000, 0x002c2a, 0x002c2a, NULL},
+	{0x002c5b, 0x000000, 0x002c2b, 0x002c2b, NULL},
+	{0x002c5c, 0x000000, 0x002c2c, 0x002c2c, NULL},
+	{0x002c5d, 0x000000, 0x002c2d, 0x002c2d, NULL},
+	{0x002c5e, 0x000000, 0x002c2e, 0x002c2e, NULL},
+	{0x002c5f, 0x000000, 0x002c2f, 0x002c2f, NULL},
+	{0x002c60, 0x002c61, 0x000000, 0x000000, NULL},
+	{0x002c61, 0x000000, 0x002c60, 0x002c60, NULL},
+	{0x002c62, 0x00026b, 0x000000, 0x000000, NULL},
+	{0x002c63, 0x001d7d, 0x000000, 0x000000, NULL},
+	{0x002c64, 0x00027d, 0x000000, 0x000000, NULL},
+	{0x002c65, 0x000000, 0x00023a, 0x00023a, NULL},
+	{0x002c66, 0x000000, 0x00023e, 0x00023e, NULL},
+	{0x002c67, 0x002c68, 0x000000, 0x000000, NULL},
+	{0x002c68, 0x000000, 0x002c67, 0x002c67, NULL},
+	{0x002c69, 0x002c6a, 0x000000, 0x000000, NULL},
+	{0x002c6a, 0x000000, 0x002c69, 0x002c69, NULL},
+	{0x002c6b, 0x002c6c, 0x000000, 0x000000, NULL},
+	{0x002c6c, 0x000000, 0x002c6b, 0x002c6b, NULL},
+	{0x002c6d, 0x000251, 0x000000, 0x000000, NULL},
+	{0x002c6e, 0x000271, 0x000000, 0x000000, NULL},
+	{0x002c6f, 0x000250, 0x000000, 0x000000, NULL},
+	{0x002c70, 0x000252, 0x000000, 0x000000, NULL},
+	{0x002c72, 0x002c73, 0x000000, 0x000000, NULL},
+	{0x002c73, 0x000000, 0x002c72, 0x002c72, NULL},
+	{0x002c75, 0x002c76, 0x000000, 0x000000, NULL},
+	{0x002c76, 0x000000, 0x002c75, 0x002c75, NULL},
+	{0x002c7e, 0x00023f, 0x000000, 0x000000, NULL},
+	{0x002c7f, 0x000240, 0x000000, 0x000000, NULL},
+	{0x002c80, 0x002c81, 0x000000, 0x000000, NULL},
+	{0x002c81, 0x000000, 0x002c80, 0x002c80, NULL},
+	{0x002c82, 0x002c83, 0x000000, 0x000000, NULL},
+	{0x002c83, 0x000000, 0x002c82, 0x002c82, NULL},
+	{0x002c84, 0x002c85, 0x000000, 0x000000, NULL},
+	{0x002c85, 0x000000, 0x002c84, 0x002c84, NULL},
+	{0x002c86, 0x002c87, 0x000000, 0x000000, NULL},
+	{0x002c87, 0x000000, 0x002c86, 0x002c86, NULL},
+	{0x002c88, 0x002c89, 0x000000, 0x000000, NULL},
+	{0x002c89, 0x000000, 0x002c88, 0x002c88, NULL},
+	{0x002c8a, 0x002c8b, 0x000000, 0x000000, NULL},
+	{0x002c8b, 0x000000, 0x002c8a, 0x002c8a, NULL},
+	{0x002c8c, 0x002c8d, 0x000000, 0x000000, NULL},
+	{0x002c8d, 0x000000, 0x002c8c, 0x002c8c, NULL},
+	{0x002c8e, 0x002c8f, 0x000000, 0x000000, NULL},
+	{0x002c8f, 0x000000, 0x002c8e, 0x002c8e, NULL},
+	{0x002c90, 0x002c91, 0x000000, 0x000000, NULL},
+	{0x002c91, 0x000000, 0x002c90, 0x002c90, NULL},
+	{0x002c92, 0x002c93, 0x000000, 0x000000, NULL},
+	{0x002c93, 0x000000, 0x002c92, 0x002c92, NULL},
+	{0x002c94, 0x002c95, 0x000000, 0x000000, NULL},
+	{0x002c95, 0x000000, 0x002c94, 0x002c94, NULL},
+	{0x002c96, 0x002c97, 0x000000, 0x000000, NULL},
+	{0x002c97, 0x000000, 0x002c96, 0x002c96, NULL},
+	{0x002c98, 0x002c99, 0x000000, 0x000000, NULL},
+	{0x002c99, 0x000000, 0x002c98, 0x002c98, NULL},
+	{0x002c9a, 0x002c9b, 0x000000, 0x000000, NULL},
+	{0x002c9b, 0x000000, 0x002c9a, 0x002c9a, NULL},
+	{0x002c9c, 0x002c9d, 0x000000, 0x000000, NULL},
+	{0x002c9d, 0x000000, 0x002c9c, 0x002c9c, NULL},
+	{0x002c9e, 0x002c9f, 0x000000, 0x000000, NULL},
+	{0x002c9f, 0x000000, 0x002c9e, 0x002c9e, NULL},
+	{0x002ca0, 0x002ca1, 0x000000, 0x000000, NULL},
+	{0x002ca1, 0x000000, 0x002ca0, 0x002ca0, NULL},
+	{0x002ca2, 0x002ca3, 0x000000, 0x000000, NULL},
+	{0x002ca3, 0x000000, 0x002ca2, 0x002ca2, NULL},
+	{0x002ca4, 0x002ca5, 0x000000, 0x000000, NULL},
+	{0x002ca5, 0x000000, 0x002ca4, 0x002ca4, NULL},
+	{0x002ca6, 0x002ca7, 0x000000, 0x000000, NULL},
+	{0x002ca7, 0x000000, 0x002ca6, 0x002ca6, NULL},
+	{0x002ca8, 0x002ca9, 0x000000, 0x000000, NULL},
+	{0x002ca9, 0x000000, 0x002ca8, 0x002ca8, NULL},
+	{0x002caa, 0x002cab, 0x000000, 0x000000, NULL},
+	{0x002cab, 0x000000, 0x002caa, 0x002caa, NULL},
+	{0x002cac, 0x002cad, 0x000000, 0x000000, NULL},
+	{0x002cad, 0x000000, 0x002cac, 0x002cac, NULL},
+	{0x002cae, 0x002caf, 0x000000, 0x000000, NULL},
+	{0x002caf, 0x000000, 0x002cae, 0x002cae, NULL},
+	{0x002cb0, 0x002cb1, 0x000000, 0x000000, NULL},
+	{0x002cb1, 0x000000, 0x002cb0, 0x002cb0, NULL},
+	{0x002cb2, 0x002cb3, 0x000000, 0x000000, NULL},
+	{0x002cb3, 0x000000, 0x002cb2, 0x002cb2, NULL},
+	{0x002cb4, 0x002cb5, 0x000000, 0x000000, NULL},
+	{0x002cb5, 0x000000, 0x002cb4, 0x002cb4, NULL},
+	{0x002cb6, 0x002cb7, 0x000000, 0x000000, NULL},
+	{0x002cb7, 0x000000, 0x002cb6, 0x002cb6, NULL},
+	{0x002cb8, 0x002cb9, 0x000000, 0x000000, NULL},
+	{0x002cb9, 0x000000, 0x002cb8, 0x002cb8, NULL},
+	{0x002cba, 0x002cbb, 0x000000, 0x000000, NULL},
+	{0x002cbb, 0x000000, 0x002cba, 0x002cba, NULL},
+	{0x002cbc, 0x002cbd, 0x000000, 0x000000, NULL},
+	{0x002cbd, 0x000000, 0x002cbc, 0x002cbc, NULL},
+	{0x002cbe, 0x002cbf, 0x000000, 0x000000, NULL},
+	{0x002cbf, 0x000000, 0x002cbe, 0x002cbe, NULL},
+	{0x002cc0, 0x002cc1, 0x000000, 0x000000, NULL},
+	{0x002cc1, 0x000000, 0x002cc0, 0x002cc0, NULL},
+	{0x002cc2, 0x002cc3, 0x000000, 0x000000, NULL},
+	{0x002cc3, 0x000000, 0x002cc2, 0x002cc2, NULL},
+	{0x002cc4, 0x002cc5, 0x000000, 0x000000, NULL},
+	{0x002cc5, 0x000000, 0x002cc4, 0x002cc4, NULL},
+	{0x002cc6, 0x002cc7, 0x000000, 0x000000, NULL},
+	{0x002cc7, 0x000000, 0x002cc6, 0x002cc6, NULL},
+	{0x002cc8, 0x002cc9, 0x000000, 0x000000, NULL},
+	{0x002cc9, 0x000000, 0x002cc8, 0x002cc8, NULL},
+	{0x002cca, 0x002ccb, 0x000000, 0x000000, NULL},
+	{0x002ccb, 0x000000, 0x002cca, 0x002cca, NULL},
+	{0x002ccc, 0x002ccd, 0x000000, 0x000000, NULL},
+	{0x002ccd, 0x000000, 0x002ccc, 0x002ccc, NULL},
+	{0x002cce, 0x002ccf, 0x000000, 0x000000, NULL},
+	{0x002ccf, 0x000000, 0x002cce, 0x002cce, NULL},
+	{0x002cd0, 0x002cd1, 0x000000, 0x000000, NULL},
+	{0x002cd1, 0x000000, 0x002cd0, 0x002cd0, NULL},
+	{0x002cd2, 0x002cd3, 0x000000, 0x000000, NULL},
+	{0x002cd3, 0x000000, 0x002cd2, 0x002cd2, NULL},
+	{0x002cd4, 0x002cd5, 0x000000, 0x000000, NULL},
+	{0x002cd5, 0x000000, 0x002cd4, 0x002cd4, NULL},
+	{0x002cd6, 0x002cd7, 0x000000, 0x000000, NULL},
+	{0x002cd7, 0x000000, 0x002cd6, 0x002cd6, NULL},
+	{0x002cd8, 0x002cd9, 0x000000, 0x000000, NULL},
+	{0x002cd9, 0x000000, 0x002cd8, 0x002cd8, NULL},
+	{0x002cda, 0x002cdb, 0x000000, 0x000000, NULL},
+	{0x002cdb, 0x000000, 0x002cda, 0x002cda, NULL},
+	{0x002cdc, 0x002cdd, 0x000000, 0x000000, NULL},
+	{0x002cdd, 0x000000, 0x002cdc, 0x002cdc, NULL},
+	{0x002cde, 0x002cdf, 0x000000, 0x000000, NULL},
+	{0x002cdf, 0x000000, 0x002cde, 0x002cde, NULL},
+	{0x002ce0, 0x002ce1, 0x000000, 0x000000, NULL},
+	{0x002ce1, 0x000000, 0x002ce0, 0x002ce0, NULL},
+	{0x002ce2, 0x002ce3, 0x000000, 0x000000, NULL},
+	{0x002ce3, 0x000000, 0x002ce2, 0x002ce2, NULL},
+	{0x002ceb, 0x002cec, 0x000000, 0x000000, NULL},
+	{0x002cec, 0x000000, 0x002ceb, 0x002ceb, NULL},
+	{0x002ced, 0x002cee, 0x000000, 0x000000, NULL},
+	{0x002cee, 0x000000, 0x002ced, 0x002ced, NULL},
+	{0x002cf2, 0x002cf3, 0x000000, 0x000000, NULL},
+	{0x002cf3, 0x000000, 0x002cf2, 0x002cf2, NULL},
+	{0x002d00, 0x000000, 0x0010a0, 0x0010a0, NULL},
+	{0x002d01, 0x000000, 0x0010a1, 0x0010a1, NULL},
+	{0x002d02, 0x000000, 0x0010a2, 0x0010a2, NULL},
+	{0x002d03, 0x000000, 0x0010a3, 0x0010a3, NULL},
+	{0x002d04, 0x000000, 0x0010a4, 0x0010a4, NULL},
+	{0x002d05, 0x000000, 0x0010a5, 0x0010a5, NULL},
+	{0x002d06, 0x000000, 0x0010a6, 0x0010a6, NULL},
+	{0x002d07, 0x000000, 0x0010a7, 0x0010a7, NULL},
+	{0x002d08, 0x000000, 0x0010a8, 0x0010a8, NULL},
+	{0x002d09, 0x000000, 0x0010a9, 0x0010a9, NULL},
+	{0x002d0a, 0x000000, 0x0010aa, 0x0010aa, NULL},
+	{0x002d0b, 0x000000, 0x0010ab, 0x0010ab, NULL},
+	{0x002d0c, 0x000000, 0x0010ac, 0x0010ac, NULL},
+	{0x002d0d, 0x000000, 0x0010ad, 0x0010ad, NULL},
+	{0x002d0e, 0x000000, 0x0010ae, 0x0010ae, NULL},
+	{0x002d0f, 0x000000, 0x0010af, 0x0010af, NULL},
+	{0x002d10, 0x000000, 0x0010b0, 0x0010b0, NULL},
+	{0x002d11, 0x000000, 0x0010b1, 0x0010b1, NULL},
+	{0x002d12, 0x000000, 0x0010b2, 0x0010b2, NULL},
+	{0x002d13, 0x000000, 0x0010b3, 0x0010b3, NULL},
+	{0x002d14, 0x000000, 0x0010b4, 0x0010b4, NULL},
+	{0x002d15, 0x000000, 0x0010b5, 0x0010b5, NULL},
+	{0x002d16, 0x000000, 0x0010b6, 0x0010b6, NULL},
+	{0x002d17, 0x000000, 0x0010b7, 0x0010b7, NULL},
+	{0x002d18, 0x000000, 0x0010b8, 0x0010b8, NULL},
+	{0x002d19, 0x000000, 0x0010b9, 0x0010b9, NULL},
+	{0x002d1a, 0x000000, 0x0010ba, 0x0010ba, NULL},
+	{0x002d1b, 0x000000, 0x0010bb, 0x0010bb, NULL},
+	{0x002d1c, 0x000000, 0x0010bc, 0x0010bc, NULL},
+	{0x002d1d, 0x000000, 0x0010bd, 0x0010bd, NULL},
+	{0x002d1e, 0x000000, 0x0010be, 0x0010be, NULL},
+	{0x002d1f, 0x000000, 0x0010bf, 0x0010bf, NULL},
+	{0x002d20, 0x000000, 0x0010c0, 0x0010c0, NULL},
+	{0x002d21, 0x000000, 0x0010c1, 0x0010c1, NULL},
+	{0x002d22, 0x000000, 0x0010c2, 0x0010c2, NULL},
+	{0x002d23, 0x000000, 0x0010c3, 0x0010c3, NULL},
+	{0x002d24, 0x000000, 0x0010c4, 0x0010c4, NULL},
+	{0x002d25, 0x000000, 0x0010c5, 0x0010c5, NULL},
+	{0x002d27, 0x000000, 0x0010c7, 0x0010c7, NULL},
+	{0x002d2d, 0x000000, 0x0010cd, 0x0010cd, NULL},
+	{0x00a640, 0x00a641, 0x000000, 0x000000, NULL},
+	{0x00a641, 0x000000, 0x00a640, 0x00a640, NULL},
+	{0x00a642, 0x00a643, 0x000000, 0x000000, NULL},
+	{0x00a643, 0x000000, 0x00a642, 0x00a642, NULL},
+	{0x00a644, 0x00a645, 0x000000, 0x000000, NULL},
+	{0x00a645, 0x000000, 0x00a644, 0x00a644, NULL},
+	{0x00a646, 0x00a647, 0x000000, 0x000000, NULL},
+	{0x00a647, 0x000000, 0x00a646, 0x00a646, NULL},
+	{0x00a648, 0x00a649, 0x000000, 0x000000, NULL},
+	{0x00a649, 0x000000, 0x00a648, 0x00a648, NULL},
+	{0x00a64a, 0x00a64b, 0x000000, 0x000000, NULL},
+	{0x00a64b, 0x000000, 0x00a64a, 0x00a64a, NULL},
+	{0x00a64c, 0x00a64d, 0x000000, 0x000000, NULL},
+	{0x00a64d, 0x000000, 0x00a64c, 0x00a64c, NULL},
+	{0x00a64e, 0x00a64f, 0x000000, 0x000000, NULL},
+	{0x00a64f, 0x000000, 0x00a64e, 0x00a64e, NULL},
+	{0x00a650, 0x00a651, 0x000000, 0x000000, NULL},
+	{0x00a651, 0x000000, 0x00a650, 0x00a650, NULL},
+	{0x00a652, 0x00a653, 0x000000, 0x000000, NULL},
+	{0x00a653, 0x000000, 0x00a652, 0x00a652, NULL},
+	{0x00a654, 0x00a655, 0x000000, 0x000000, NULL},
+	{0x00a655, 0x000000, 0x00a654, 0x00a654, NULL},
+	{0x00a656, 0x00a657, 0x000000, 0x000000, NULL},
+	{0x00a657, 0x000000, 0x00a656, 0x00a656, NULL},
+	{0x00a658, 0x00a659, 0x000000, 0x000000, NULL},
+	{0x00a659, 0x000000, 0x00a658, 0x00a658, NULL},
+	{0x00a65a, 0x00a65b, 0x000000, 0x000000, NULL},
+	{0x00a65b, 0x000000, 0x00a65a, 0x00a65a, NULL},
+	{0x00a65c, 0x00a65d, 0x000000, 0x000000, NULL},
+	{0x00a65d, 0x000000, 0x00a65c, 0x00a65c, NULL},
+	{0x00a65e, 0x00a65f, 0x000000, 0x000000, NULL},
+	{0x00a65f, 0x000000, 0x00a65e, 0x00a65e, NULL},
+	{0x00a660, 0x00a661, 0x000000, 0x000000, NULL},
+	{0x00a661, 0x000000, 0x00a660, 0x00a660, NULL},
+	{0x00a662, 0x00a663, 0x000000, 0x000000, NULL},
+	{0x00a663, 0x000000, 0x00a662, 0x00a662, NULL},
+	{0x00a664, 0x00a665, 0x000000, 0x000000, NULL},
+	{0x00a665, 0x000000, 0x00a664, 0x00a664, NULL},
+	{0x00a666, 0x00a667, 0x000000, 0x000000, NULL},
+	{0x00a667, 0x000000, 0x00a666, 0x00a666, NULL},
+	{0x00a668, 0x00a669, 0x000000, 0x000000, NULL},
+	{0x00a669, 0x000000, 0x00a668, 0x00a668, NULL},
+	{0x00a66a, 0x00a66b, 0x000000, 0x000000, NULL},
+	{0x00a66b, 0x000000, 0x00a66a, 0x00a66a, NULL},
+	{0x00a66c, 0x00a66d, 0x000000, 0x000000, NULL},
+	{0x00a66d, 0x000000, 0x00a66c, 0x00a66c, NULL},
+	{0x00a680, 0x00a681, 0x000000, 0x000000, NULL},
+	{0x00a681, 0x000000, 0x00a680, 0x00a680, NULL},
+	{0x00a682, 0x00a683, 0x000000, 0x000000, NULL},
+	{0x00a683, 0x000000, 0x00a682, 0x00a682, NULL},
+	{0x00a684, 0x00a685, 0x000000, 0x000000, NULL},
+	{0x00a685, 0x000000, 0x00a684, 0x00a684, NULL},
+	{0x00a686, 0x00a687, 0x000000, 0x000000, NULL},
+	{0x00a687, 0x000000, 0x00a686, 0x00a686, NULL},
+	{0x00a688, 0x00a689, 0x000000, 0x000000, NULL},
+	{0x00a689, 0x000000, 0x00a688, 0x00a688, NULL},
+	{0x00a68a, 0x00a68b, 0x000000, 0x000000, NULL},
+	{0x00a68b, 0x000000, 0x00a68a, 0x00a68a, NULL},
+	{0x00a68c, 0x00a68d, 0x000000, 0x000000, NULL},
+	{0x00a68d, 0x000000, 0x00a68c, 0x00a68c, NULL},
+	{0x00a68e, 0x00a68f, 0x000000, 0x000000, NULL},
+	{0x00a68f, 0x000000, 0x00a68e, 0x00a68e, NULL},
+	{0x00a690, 0x00a691, 0x000000, 0x000000, NULL},
+	{0x00a691, 0x000000, 0x00a690, 0x00a690, NULL},
+	{0x00a692, 0x00a693, 0x000000, 0x000000, NULL},
+	{0x00a693, 0x000000, 0x00a692, 0x00a692, NULL},
+	{0x00a694, 0x00a695, 0x000000, 0x000000, NULL},
+	{0x00a695, 0x000000, 0x00a694, 0x00a694, NULL},
+	{0x00a696, 0x00a697, 0x000000, 0x000000, NULL},
+	{0x00a697, 0x000000, 0x00a696, 0x00a696, NULL},
+	{0x00a698, 0x00a699, 0x000000, 0x000000, NULL},
+	{0x00a699, 0x000000, 0x00a698, 0x00a698, NULL},
+	{0x00a69a, 0x00a69b, 0x000000, 0x000000, NULL},
+	{0x00a69b, 0x000000, 0x00a69a, 0x00a69a, NULL},
+	{0x00a722, 0x00a723, 0x000000, 0x000000, NULL},
+	{0x00a723, 0x000000, 0x00a722, 0x00a722, NULL},
+	{0x00a724, 0x00a725, 0x000000, 0x000000, NULL},
+	{0x00a725, 0x000000, 0x00a724, 0x00a724, NULL},
+	{0x00a726, 0x00a727, 0x000000, 0x000000, NULL},
+	{0x00a727, 0x000000, 0x00a726, 0x00a726, NULL},
+	{0x00a728, 0x00a729, 0x000000, 0x000000, NULL},
+	{0x00a729, 0x000000, 0x00a728, 0x00a728, NULL},
+	{0x00a72a, 0x00a72b, 0x000000, 0x000000, NULL},
+	{0x00a72b, 0x000000, 0x00a72a, 0x00a72a, NULL},
+	{0x00a72c, 0x00a72d, 0x000000, 0x000000, NULL},
+	{0x00a72d, 0x000000, 0x00a72c, 0x00a72c, NULL},
+	{0x00a72e, 0x00a72f, 0x000000, 0x000000, NULL},
+	{0x00a72f, 0x000000, 0x00a72e, 0x00a72e, NULL},
+	{0x00a732, 0x00a733, 0x000000, 0x000000, NULL},
+	{0x00a733, 0x000000, 0x00a732, 0x00a732, NULL},
+	{0x00a734, 0x00a735, 0x000000, 0x000000, NULL},
+	{0x00a735, 0x000000, 0x00a734, 0x00a734, NULL},
+	{0x00a736, 0x00a737, 0x000000, 0x000000, NULL},
+	{0x00a737, 0x000000, 0x00a736, 0x00a736, NULL},
+	{0x00a738, 0x00a739, 0x000000, 0x000000, NULL},
+	{0x00a739, 0x000000, 0x00a738, 0x00a738, NULL},
+	{0x00a73a, 0x00a73b, 0x000000, 0x000000, NULL},
+	{0x00a73b, 0x000000, 0x00a73a, 0x00a73a, NULL},
+	{0x00a73c, 0x00a73d, 0x000000, 0x000000, NULL},
+	{0x00a73d, 0x000000, 0x00a73c, 0x00a73c, NULL},
+	{0x00a73e, 0x00a73f, 0x000000, 0x000000, NULL},
+	{0x00a73f, 0x000000, 0x00a73e, 0x00a73e, NULL},
+	{0x00a740, 0x00a741, 0x000000, 0x000000, NULL},
+	{0x00a741, 0x000000, 0x00a740, 0x00a740, NULL},
+	{0x00a742, 0x00a743, 0x000000, 0x000000, NULL},
+	{0x00a743, 0x000000, 0x00a742, 0x00a742, NULL},
+	{0x00a744, 0x00a745, 0x000000, 0x000000, NULL},
+	{0x00a745, 0x000000, 0x00a744, 0x00a744, NULL},
+	{0x00a746, 0x00a747, 0x000000, 0x000000, NULL},
+	{0x00a747, 0x000000, 0x00a746, 0x00a746, NULL},
+	{0x00a748, 0x00a749, 0x000000, 0x000000, NULL},
+	{0x00a749, 0x000000, 0x00a748, 0x00a748, NULL},
+	{0x00a74a, 0x00a74b, 0x000000, 0x000000, NULL},
+	{0x00a74b, 0x000000, 0x00a74a, 0x00a74a, NULL},
+	{0x00a74c, 0x00a74d, 0x000000, 0x000000, NULL},
+	{0x00a74d, 0x000000, 0x00a74c, 0x00a74c, NULL},
+	{0x00a74e, 0x00a74f, 0x000000, 0x000000, NULL},
+	{0x00a74f, 0x000000, 0x00a74e, 0x00a74e, NULL},
+	{0x00a750, 0x00a751, 0x000000, 0x000000, NULL},
+	{0x00a751, 0x000000, 0x00a750, 0x00a750, NULL},
+	{0x00a752, 0x00a753, 0x000000, 0x000000, NULL},
+	{0x00a753, 0x000000, 0x00a752, 0x00a752, NULL},
+	{0x00a754, 0x00a755, 0x000000, 0x000000, NULL},
+	{0x00a755, 0x000000, 0x00a754, 0x00a754, NULL},
+	{0x00a756, 0x00a757, 0x000000, 0x000000, NULL},
+	{0x00a757, 0x000000, 0x00a756, 0x00a756, NULL},
+	{0x00a758, 0x00a759, 0x000000, 0x000000, NULL},
+	{0x00a759, 0x000000, 0x00a758, 0x00a758, NULL},
+	{0x00a75a, 0x00a75b, 0x000000, 0x000000, NULL},
+	{0x00a75b, 0x000000, 0x00a75a, 0x00a75a, NULL},
+	{0x00a75c, 0x00a75d, 0x000000, 0x000000, NULL},
+	{0x00a75d, 0x000000, 0x00a75c, 0x00a75c, NULL},
+	{0x00a75e, 0x00a75f, 0x000000, 0x000000, NULL},
+	{0x00a75f, 0x000000, 0x00a75e, 0x00a75e, NULL},
+	{0x00a760, 0x00a761, 0x000000, 0x000000, NULL},
+	{0x00a761, 0x000000, 0x00a760, 0x00a760, NULL},
+	{0x00a762, 0x00a763, 0x000000, 0x000000, NULL},
+	{0x00a763, 0x000000, 0x00a762, 0x00a762, NULL},
+	{0x00a764, 0x00a765, 0x000000, 0x000000, NULL},
+	{0x00a765, 0x000000, 0x00a764, 0x00a764, NULL},
+	{0x00a766, 0x00a767, 0x000000, 0x000000, NULL},
+	{0x00a767, 0x000000, 0x00a766, 0x00a766, NULL},
+	{0x00a768, 0x00a769, 0x000000, 0x000000, NULL},
+	{0x00a769, 0x000000, 0x00a768, 0x00a768, NULL},
+	{0x00a76a, 0x00a76b, 0x000000, 0x000000, NULL},
+	{0x00a76b, 0x000000, 0x00a76a, 0x00a76a, NULL},
+	{0x00a76c, 0x00a76d, 0x000000, 0x000000, NULL},
+	{0x00a76d, 0x000000, 0x00a76c, 0x00a76c, NULL},
+	{0x00a76e, 0x00a76f, 0x000000, 0x000000, NULL},
+	{0x00a76f, 0x000000, 0x00a76e, 0x00a76e, NULL},
+	{0x00a779, 0x00a77a, 0x000000, 0x000000, NULL},
+	{0x00a77a, 0x000000, 0x00a779, 0x00a779, NULL},
+	{0x00a77b, 0x00a77c, 0x000000, 0x000000, NULL},
+	{0x00a77c, 0x000000, 0x00a77b, 0x00a77b, NULL},
+	{0x00a77d, 0x001d79, 0x000000, 0x000000, NULL},
+	{0x00a77e, 0x00a77f, 0x000000, 0x000000, NULL},
+	{0x00a77f, 0x000000, 0x00a77e, 0x00a77e, NULL},
+	{0x00a780, 0x00a781, 0x000000, 0x000000, NULL},
+	{0x00a781, 0x000000, 0x00a780, 0x00a780, NULL},
+	{0x00a782, 0x00a783, 0x000000, 0x000000, NULL},
+	{0x00a783, 0x000000, 0x00a782, 0x00a782, NULL},
+	{0x00a784, 0x00a785, 0x000000, 0x000000, NULL},
+	{0x00a785, 0x000000, 0x00a784, 0x00a784, NULL},
+	{0x00a786, 0x00a787, 0x000000, 0x000000, NULL},
+	{0x00a787, 0x000000, 0x00a786, 0x00a786, NULL},
+	{0x00a78b, 0x00a78c, 0x000000, 0x000000, NULL},
+	{0x00a78c, 0x000000, 0x00a78b, 0x00a78b, NULL},
+	{0x00a78d, 0x000265, 0x000000, 0x000000, NULL},
+	{0x00a790, 0x00a791, 0x000000, 0x000000, NULL},
+	{0x00a791, 0x000000, 0x00a790, 0x00a790, NULL},
+	{0x00a792, 0x00a793, 0x000000, 0x000000, NULL},
+	{0x00a793, 0x000000, 0x00a792, 0x00a792, NULL},
+	{0x00a794, 0x000000, 0x00a7c4, 0x00a7c4, NULL},
+	{0x00a796, 0x00a797, 0x000000, 0x000000, NULL},
+	{0x00a797, 0x000000, 0x00a796, 0x00a796, NULL},
+	{0x00a798, 0x00a799, 0x000000, 0x000000, NULL},
+	{0x00a799, 0x000000, 0x00a798, 0x00a798, NULL},
+	{0x00a79a, 0x00a79b, 0x000000, 0x000000, NULL},
+	{0x00a79b, 0x000000, 0x00a79a, 0x00a79a, NULL},
+	{0x00a79c, 0x00a79d, 0x000000, 0x000000, NULL},
+	{0x00a79d, 0x000000, 0x00a79c, 0x00a79c, NULL},
+	{0x00a79e, 0x00a79f, 0x000000, 0x000000, NULL},
+	{0x00a79f, 0x000000, 0x00a79e, 0x00a79e, NULL},
+	{0x00a7a0, 0x00a7a1, 0x000000, 0x000000, NULL},
+	{0x00a7a1, 0x000000, 0x00a7a0, 0x00a7a0, NULL},
+	{0x00a7a2, 0x00a7a3, 0x000000, 0x000000, NULL},
+	{0x00a7a3, 0x000000, 0x00a7a2, 0x00a7a2, NULL},
+	{0x00a7a4, 0x00a7a5, 0x000000, 0x000000, NULL},
+	{0x00a7a5, 0x000000, 0x00a7a4, 0x00a7a4, NULL},
+	{0x00a7a6, 0x00a7a7, 0x000000, 0x000000, NULL},
+	{0x00a7a7, 0x000000, 0x00a7a6, 0x00a7a6, NULL},
+	{0x00a7a8, 0x00a7a9, 0x000000, 0x000000, NULL},
+	{0x00a7a9, 0x000000, 0x00a7a8, 0x00a7a8, NULL},
+	{0x00a7aa, 0x000266, 0x000000, 0x000000, NULL},
+	{0x00a7ab, 0x00025c, 0x000000, 0x000000, NULL},
+	{0x00a7ac, 0x000261, 0x000000, 0x000000, NULL},
+	{0x00a7ad, 0x00026c, 0x000000, 0x000000, NULL},
+	{0x00a7ae, 0x00026a, 0x000000, 0x000000, NULL},
+	{0x00a7b0, 0x00029e, 0x000000, 0x000000, NULL},
+	{0x00a7b1, 0x000287, 0x000000, 0x000000, NULL},
+	{0x00a7b2, 0x00029d, 0x000000, 0x000000, NULL},
+	{0x00a7b3, 0x00ab53, 0x000000, 0x000000, NULL},
+	{0x00a7b4, 0x00a7b5, 0x000000, 0x000000, NULL},
+	{0x00a7b5, 0x000000, 0x00a7b4, 0x00a7b4, NULL},
+	{0x00a7b6, 0x00a7b7, 0x000000, 0x000000, NULL},
+	{0x00a7b7, 0x000000, 0x00a7b6, 0x00a7b6, NULL},
+	{0x00a7b8, 0x00a7b9, 0x000000, 0x000000, NULL},
+	{0x00a7b9, 0x000000, 0x00a7b8, 0x00a7b8, NULL},
+	{0x00a7ba, 0x00a7bb, 0x000000, 0x000000, NULL},
+	{0x00a7bb, 0x000000, 0x00a7ba, 0x00a7ba, NULL},
+	{0x00a7bc, 0x00a7bd, 0x000000, 0x000000, NULL},
+	{0x00a7bd, 0x000000, 0x00a7bc, 0x00a7bc, NULL},
+	{0x00a7be, 0x00a7bf, 0x000000, 0x000000, NULL},
+	{0x00a7bf, 0x000000, 0x00a7be, 0x00a7be, NULL},
+	{0x00a7c0, 0x00a7c1, 0x000000, 0x000000, NULL},
+	{0x00a7c1, 0x000000, 0x00a7c0, 0x00a7c0, NULL},
+	{0x00a7c2, 0x00a7c3, 0x000000, 0x000000, NULL},
+	{0x00a7c3, 0x000000, 0x00a7c2, 0x00a7c2, NULL},
+	{0x00a7c4, 0x00a794, 0x000000, 0x000000, NULL},
+	{0x00a7c5, 0x000282, 0x000000, 0x000000, NULL},
+	{0x00a7c6, 0x001d8e, 0x000000, 0x000000, NULL},
+	{0x00a7c7, 0x00a7c8, 0x000000, 0x000000, NULL},
+	{0x00a7c8, 0x000000, 0x00a7c7, 0x00a7c7, NULL},
+	{0x00a7c9, 0x00a7ca, 0x000000, 0x000000, NULL},
+	{0x00a7ca, 0x000000, 0x00a7c9, 0x00a7c9, NULL},
+	{0x00a7d0, 0x00a7d1, 0x000000, 0x000000, NULL},
+	{0x00a7d1, 0x000000, 0x00a7d0, 0x00a7d0, NULL},
+	{0x00a7d6, 0x00a7d7, 0x000000, 0x000000, NULL},
+	{0x00a7d7, 0x000000, 0x00a7d6, 0x00a7d6, NULL},
+	{0x00a7d8, 0x00a7d9, 0x000000, 0x000000, NULL},
+	{0x00a7d9, 0x000000, 0x00a7d8, 0x00a7d8, NULL},
+	{0x00a7f5, 0x00a7f6, 0x000000, 0x000000, NULL},
+	{0x00a7f6, 0x000000, 0x00a7f5, 0x00a7f5, NULL},
+	{0x00ab53, 0x000000, 0x00a7b3, 0x00a7b3, NULL},
+	{0x00ab70, 0x000000, 0x0013a0, 0x0013a0, NULL},
+	{0x00ab71, 0x000000, 0x0013a1, 0x0013a1, NULL},
+	{0x00ab72, 0x000000, 0x0013a2, 0x0013a2, NULL},
+	{0x00ab73, 0x000000, 0x0013a3, 0x0013a3, NULL},
+	{0x00ab74, 0x000000, 0x0013a4, 0x0013a4, NULL},
+	{0x00ab75, 0x000000, 0x0013a5, 0x0013a5, NULL},
+	{0x00ab76, 0x000000, 0x0013a6, 0x0013a6, NULL},
+	{0x00ab77, 0x000000, 0x0013a7, 0x0013a7, NULL},
+	{0x00ab78, 0x000000, 0x0013a8, 0x0013a8, NULL},
+	{0x00ab79, 0x000000, 0x0013a9, 0x0013a9, NULL},
+	{0x00ab7a, 0x000000, 0x0013aa, 0x0013aa, NULL},
+	{0x00ab7b, 0x000000, 0x0013ab, 0x0013ab, NULL},
+	{0x00ab7c, 0x000000, 0x0013ac, 0x0013ac, NULL},
+	{0x00ab7d, 0x000000, 0x0013ad, 0x0013ad, NULL},
+	{0x00ab7e, 0x000000, 0x0013ae, 0x0013ae, NULL},
+	{0x00ab7f, 0x000000, 0x0013af, 0x0013af, NULL},
+	{0x00ab80, 0x000000, 0x0013b0, 0x0013b0, NULL},
+	{0x00ab81, 0x000000, 0x0013b1, 0x0013b1, NULL},
+	{0x00ab82, 0x000000, 0x0013b2, 0x0013b2, NULL},
+	{0x00ab83, 0x000000, 0x0013b3, 0x0013b3, NULL},
+	{0x00ab84, 0x000000, 0x0013b4, 0x0013b4, NULL},
+	{0x00ab85, 0x000000, 0x0013b5, 0x0013b5, NULL},
+	{0x00ab86, 0x000000, 0x0013b6, 0x0013b6, NULL},
+	{0x00ab87, 0x000000, 0x0013b7, 0x0013b7, NULL},
+	{0x00ab88, 0x000000, 0x0013b8, 0x0013b8, NULL},
+	{0x00ab89, 0x000000, 0x0013b9, 0x0013b9, NULL},
+	{0x00ab8a, 0x000000, 0x0013ba, 0x0013ba, NULL},
+	{0x00ab8b, 0x000000, 0x0013bb, 0x0013bb, NULL},
+	{0x00ab8c, 0x000000, 0x0013bc, 0x0013bc, NULL},
+	{0x00ab8d, 0x000000, 0x0013bd, 0x0013bd, NULL},
+	{0x00ab8e, 0x000000, 0x0013be, 0x0013be, NULL},
+	{0x00ab8f, 0x000000, 0x0013bf, 0x0013bf, NULL},
+	{0x00ab90, 0x000000, 0x0013c0, 0x0013c0, NULL},
+	{0x00ab91, 0x000000, 0x0013c1, 0x0013c1, NULL},
+	{0x00ab92, 0x000000, 0x0013c2, 0x0013c2, NULL},
+	{0x00ab93, 0x000000, 0x0013c3, 0x0013c3, NULL},
+	{0x00ab94, 0x000000, 0x0013c4, 0x0013c4, NULL},
+	{0x00ab95, 0x000000, 0x0013c5, 0x0013c5, NULL},
+	{0x00ab96, 0x000000, 0x0013c6, 0x0013c6, NULL},
+	{0x00ab97, 0x000000, 0x0013c7, 0x0013c7, NULL},
+	{0x00ab98, 0x000000, 0x0013c8, 0x0013c8, NULL},
+	{0x00ab99, 0x000000, 0x0013c9, 0x0013c9, NULL},
+	{0x00ab9a, 0x000000, 0x0013ca, 0x0013ca, NULL},
+	{0x00ab9b, 0x000000, 0x0013cb, 0x0013cb, NULL},
+	{0x00ab9c, 0x000000, 0x0013cc, 0x0013cc, NULL},
+	{0x00ab9d, 0x000000, 0x0013cd, 0x0013cd, NULL},
+	{0x00ab9e, 0x000000, 0x0013ce, 0x0013ce, NULL},
+	{0x00ab9f, 0x000000, 0x0013cf, 0x0013cf, NULL},
+	{0x00aba0, 0x000000, 0x0013d0, 0x0013d0, NULL},
+	{0x00aba1, 0x000000, 0x0013d1, 0x0013d1, NULL},
+	{0x00aba2, 0x000000, 0x0013d2, 0x0013d2, NULL},
+	{0x00aba3, 0x000000, 0x0013d3, 0x0013d3, NULL},
+	{0x00aba4, 0x000000, 0x0013d4, 0x0013d4, NULL},
+	{0x00aba5, 0x000000, 0x0013d5, 0x0013d5, NULL},
+	{0x00aba6, 0x000000, 0x0013d6, 0x0013d6, NULL},
+	{0x00aba7, 0x000000, 0x0013d7, 0x0013d7, NULL},
+	{0x00aba8, 0x000000, 0x0013d8, 0x0013d8, NULL},
+	{0x00aba9, 0x000000, 0x0013d9, 0x0013d9, NULL},
+	{0x00abaa, 0x000000, 0x0013da, 0x0013da, NULL},
+	{0x00abab, 0x000000, 0x0013db, 0x0013db, NULL},
+	{0x00abac, 0x000000, 0x0013dc, 0x0013dc, NULL},
+	{0x00abad, 0x000000, 0x0013dd, 0x0013dd, NULL},
+	{0x00abae, 0x000000, 0x0013de, 0x0013de, NULL},
+	{0x00abaf, 0x000000, 0x0013df, 0x0013df, NULL},
+	{0x00abb0, 0x000000, 0x0013e0, 0x0013e0, NULL},
+	{0x00abb1, 0x000000, 0x0013e1, 0x0013e1, NULL},
+	{0x00abb2, 0x000000, 0x0013e2, 0x0013e2, NULL},
+	{0x00abb3, 0x000000, 0x0013e3, 0x0013e3, NULL},
+	{0x00abb4, 0x000000, 0x0013e4, 0x0013e4, NULL},
+	{0x00abb5, 0x000000, 0x0013e5, 0x0013e5, NULL},
+	{0x00abb6, 0x000000, 0x0013e6, 0x0013e6, NULL},
+	{0x00abb7, 0x000000, 0x0013e7, 0x0013e7, NULL},
+	{0x00abb8, 0x000000, 0x0013e8, 0x0013e8, NULL},
+	{0x00abb9, 0x000000, 0x0013e9, 0x0013e9, NULL},
+	{0x00abba, 0x000000, 0x0013ea, 0x0013ea, NULL},
+	{0x00abbb, 0x000000, 0x0013eb, 0x0013eb, NULL},
+	{0x00abbc, 0x000000, 0x0013ec, 0x0013ec, NULL},
+	{0x00abbd, 0x000000, 0x0013ed, 0x0013ed, NULL},
+	{0x00abbe, 0x000000, 0x0013ee, 0x0013ee, NULL},
+	{0x00abbf, 0x000000, 0x0013ef, 0x0013ef, NULL},
+	{0x00fb00, 0x000000, 0x000000, 0x000000, &special_case_map[91]},
+	{0x00fb01, 0x000000, 0x000000, 0x000000, &special_case_map[92]},
+	{0x00fb02, 0x000000, 0x000000, 0x000000, &special_case_map[93]},
+	{0x00fb03, 0x000000, 0x000000, 0x000000, &special_case_map[94]},
+	{0x00fb04, 0x000000, 0x000000, 0x000000, &special_case_map[95]},
+	{0x00fb05, 0x000000, 0x000000, 0x000000, &special_case_map[96]},
+	{0x00fb06, 0x000000, 0x000000, 0x000000, &special_case_map[97]},
+	{0x00fb13, 0x000000, 0x000000, 0x000000, &special_case_map[98]},
+	{0x00fb14, 0x000000, 0x000000, 0x000000, &special_case_map[99]},
+	{0x00fb15, 0x000000, 0x000000, 0x000000, &special_case_map[100]},
+	{0x00fb16, 0x000000, 0x000000, 0x000000, &special_case_map[101]},
+	{0x00fb17, 0x000000, 0x000000, 0x000000, &special_case_map[102]},
+	{0x00ff21, 0x00ff41, 0x000000, 0x000000, NULL},
+	{0x00ff22, 0x00ff42, 0x000000, 0x000000, NULL},
+	{0x00ff23, 0x00ff43, 0x000000, 0x000000, NULL},
+	{0x00ff24, 0x00ff44, 0x000000, 0x000000, NULL},
+	{0x00ff25, 0x00ff45, 0x000000, 0x000000, NULL},
+	{0x00ff26, 0x00ff46, 0x000000, 0x000000, NULL},
+	{0x00ff27, 0x00ff47, 0x000000, 0x000000, NULL},
+	{0x00ff28, 0x00ff48, 0x000000, 0x000000, NULL},
+	{0x00ff29, 0x00ff49, 0x000000, 0x000000, NULL},
+	{0x00ff2a, 0x00ff4a, 0x000000, 0x000000, NULL},
+	{0x00ff2b, 0x00ff4b, 0x000000, 0x000000, NULL},
+	{0x00ff2c, 0x00ff4c, 0x000000, 0x000000, NULL},
+	{0x00ff2d, 0x00ff4d, 0x000000, 0x000000, NULL},
+	{0x00ff2e, 0x00ff4e, 0x000000, 0x000000, NULL},
+	{0x00ff2f, 0x00ff4f, 0x000000, 0x000000, NULL},
+	{0x00ff30, 0x00ff50, 0x000000, 0x000000, NULL},
+	{0x00ff31, 0x00ff51, 0x000000, 0x000000, NULL},
+	{0x00ff32, 0x00ff52, 0x000000, 0x000000, NULL},
+	{0x00ff33, 0x00ff53, 0x000000, 0x000000, NULL},
+	{0x00ff34, 0x00ff54, 0x000000, 0x000000, NULL},
+	{0x00ff35, 0x00ff55, 0x000000, 0x000000, NULL},
+	{0x00ff36, 0x00ff56, 0x000000, 0x000000, NULL},
+	{0x00ff37, 0x00ff57, 0x000000, 0x000000, NULL},
+	{0x00ff38, 0x00ff58, 0x000000, 0x000000, NULL},
+	{0x00ff39, 0x00ff59, 0x000000, 0x000000, NULL},
+	{0x00ff3a, 0x00ff5a, 0x000000, 0x000000, NULL},
+	{0x00ff41, 0x000000, 0x00ff21, 0x00ff21, NULL},
+	{0x00ff42, 0x000000, 0x00ff22, 0x00ff22, NULL},
+	{0x00ff43, 0x000000, 0x00ff23, 0x00ff23, NULL},
+	{0x00ff44, 0x000000, 0x00ff24, 0x00ff24, NULL},
+	{0x00ff45, 0x000000, 0x00ff25, 0x00ff25, NULL},
+	{0x00ff46, 0x000000, 0x00ff26, 0x00ff26, NULL},
+	{0x00ff47, 0x000000, 0x00ff27, 0x00ff27, NULL},
+	{0x00ff48, 0x000000, 0x00ff28, 0x00ff28, NULL},
+	{0x00ff49, 0x000000, 0x00ff29, 0x00ff29, NULL},
+	{0x00ff4a, 0x000000, 0x00ff2a, 0x00ff2a, NULL},
+	{0x00ff4b, 0x000000, 0x00ff2b, 0x00ff2b, NULL},
+	{0x00ff4c, 0x000000, 0x00ff2c, 0x00ff2c, NULL},
+	{0x00ff4d, 0x000000, 0x00ff2d, 0x00ff2d, NULL},
+	{0x00ff4e, 0x000000, 0x00ff2e, 0x00ff2e, NULL},
+	{0x00ff4f, 0x000000, 0x00ff2f, 0x00ff2f, NULL},
+	{0x00ff50, 0x000000, 0x00ff30, 0x00ff30, NULL},
+	{0x00ff51, 0x000000, 0x00ff31, 0x00ff31, NULL},
+	{0x00ff52, 0x000000, 0x00ff32, 0x00ff32, NULL},
+	{0x00ff53, 0x000000, 0x00ff33, 0x00ff33, NULL},
+	{0x00ff54, 0x000000, 0x00ff34, 0x00ff34, NULL},
+	{0x00ff55, 0x000000, 0x00ff35, 0x00ff35, NULL},
+	{0x00ff56, 0x000000, 0x00ff36, 0x00ff36, NULL},
+	{0x00ff57, 0x000000, 0x00ff37, 0x00ff37, NULL},
+	{0x00ff58, 0x000000, 0x00ff38, 0x00ff38, NULL},
+	{0x00ff59, 0x000000, 0x00ff39, 0x00ff39, NULL},
+	{0x00ff5a, 0x000000, 0x00ff3a, 0x00ff3a, NULL},
+	{0x010400, 0x010428, 0x000000, 0x000000, NULL},
+	{0x010401, 0x010429, 0x000000, 0x000000, NULL},
+	{0x010402, 0x01042a, 0x000000, 0x000000, NULL},
+	{0x010403, 0x01042b, 0x000000, 0x000000, NULL},
+	{0x010404, 0x01042c, 0x000000, 0x000000, NULL},
+	{0x010405, 0x01042d, 0x000000, 0x000000, NULL},
+	{0x010406, 0x01042e, 0x000000, 0x000000, NULL},
+	{0x010407, 0x01042f, 0x000000, 0x000000, NULL},
+	{0x010408, 0x010430, 0x000000, 0x000000, NULL},
+	{0x010409, 0x010431, 0x000000, 0x000000, NULL},
+	{0x01040a, 0x010432, 0x000000, 0x000000, NULL},
+	{0x01040b, 0x010433, 0x000000, 0x000000, NULL},
+	{0x01040c, 0x010434, 0x000000, 0x000000, NULL},
+	{0x01040d, 0x010435, 0x000000, 0x000000, NULL},
+	{0x01040e, 0x010436, 0x000000, 0x000000, NULL},
+	{0x01040f, 0x010437, 0x000000, 0x000000, NULL},
+	{0x010410, 0x010438, 0x000000, 0x000000, NULL},
+	{0x010411, 0x010439, 0x000000, 0x000000, NULL},
+	{0x010412, 0x01043a, 0x000000, 0x000000, NULL},
+	{0x010413, 0x01043b, 0x000000, 0x000000, NULL},
+	{0x010414, 0x01043c, 0x000000, 0x000000, NULL},
+	{0x010415, 0x01043d, 0x000000, 0x000000, NULL},
+	{0x010416, 0x01043e, 0x000000, 0x000000, NULL},
+	{0x010417, 0x01043f, 0x000000, 0x000000, NULL},
+	{0x010418, 0x010440, 0x000000, 0x000000, NULL},
+	{0x010419, 0x010441, 0x000000, 0x000000, NULL},
+	{0x01041a, 0x010442, 0x000000, 0x000000, NULL},
+	{0x01041b, 0x010443, 0x000000, 0x000000, NULL},
+	{0x01041c, 0x010444, 0x000000, 0x000000, NULL},
+	{0x01041d, 0x010445, 0x000000, 0x000000, NULL},
+	{0x01041e, 0x010446, 0x000000, 0x000000, NULL},
+	{0x01041f, 0x010447, 0x000000, 0x000000, NULL},
+	{0x010420, 0x010448, 0x000000, 0x000000, NULL},
+	{0x010421, 0x010449, 0x000000, 0x000000, NULL},
+	{0x010422, 0x01044a, 0x000000, 0x000000, NULL},
+	{0x010423, 0x01044b, 0x000000, 0x000000, NULL},
+	{0x010424, 0x01044c, 0x000000, 0x000000, NULL},
+	{0x010425, 0x01044d, 0x000000, 0x000000, NULL},
+	{0x010426, 0x01044e, 0x000000, 0x000000, NULL},
+	{0x010427, 0x01044f, 0x000000, 0x000000, NULL},
+	{0x010428, 0x000000, 0x010400, 0x010400, NULL},
+	{0x010429, 0x000000, 0x010401, 0x010401, NULL},
+	{0x01042a, 0x000000, 0x010402, 0x010402, NULL},
+	{0x01042b, 0x000000, 0x010403, 0x010403, NULL},
+	{0x01042c, 0x000000, 0x010404, 0x010404, NULL},
+	{0x01042d, 0x000000, 0x010405, 0x010405, NULL},
+	{0x01042e, 0x000000, 0x010406, 0x010406, NULL},
+	{0x01042f, 0x000000, 0x010407, 0x010407, NULL},
+	{0x010430, 0x000000, 0x010408, 0x010408, NULL},
+	{0x010431, 0x000000, 0x010409, 0x010409, NULL},
+	{0x010432, 0x000000, 0x01040a, 0x01040a, NULL},
+	{0x010433, 0x000000, 0x01040b, 0x01040b, NULL},
+	{0x010434, 0x000000, 0x01040c, 0x01040c, NULL},
+	{0x010435, 0x000000, 0x01040d, 0x01040d, NULL},
+	{0x010436, 0x000000, 0x01040e, 0x01040e, NULL},
+	{0x010437, 0x000000, 0x01040f, 0x01040f, NULL},
+	{0x010438, 0x000000, 0x010410, 0x010410, NULL},
+	{0x010439, 0x000000, 0x010411, 0x010411, NULL},
+	{0x01043a, 0x000000, 0x010412, 0x010412, NULL},
+	{0x01043b, 0x000000, 0x010413, 0x010413, NULL},
+	{0x01043c, 0x000000, 0x010414, 0x010414, NULL},
+	{0x01043d, 0x000000, 0x010415, 0x010415, NULL},
+	{0x01043e, 0x000000, 0x010416, 0x010416, NULL},
+	{0x01043f, 0x000000, 0x010417, 0x010417, NULL},
+	{0x010440, 0x000000, 0x010418, 0x010418, NULL},
+	{0x010441, 0x000000, 0x010419, 0x010419, NULL},
+	{0x010442, 0x000000, 0x01041a, 0x01041a, NULL},
+	{0x010443, 0x000000, 0x01041b, 0x01041b, NULL},
+	{0x010444, 0x000000, 0x01041c, 0x01041c, NULL},
+	{0x010445, 0x000000, 0x01041d, 0x01041d, NULL},
+	{0x010446, 0x000000, 0x01041e, 0x01041e, NULL},
+	{0x010447, 0x000000, 0x01041f, 0x01041f, NULL},
+	{0x010448, 0x000000, 0x010420, 0x010420, NULL},
+	{0x010449, 0x000000, 0x010421, 0x010421, NULL},
+	{0x01044a, 0x000000, 0x010422, 0x010422, NULL},
+	{0x01044b, 0x000000, 0x010423, 0x010423, NULL},
+	{0x01044c, 0x000000, 0x010424, 0x010424, NULL},
+	{0x01044d, 0x000000, 0x010425, 0x010425, NULL},
+	{0x01044e, 0x000000, 0x010426, 0x010426, NULL},
+	{0x01044f, 0x000000, 0x010427, 0x010427, NULL},
+	{0x0104b0, 0x0104d8, 0x000000, 0x000000, NULL},
+	{0x0104b1, 0x0104d9, 0x000000, 0x000000, NULL},
+	{0x0104b2, 0x0104da, 0x000000, 0x000000, NULL},
+	{0x0104b3, 0x0104db, 0x000000, 0x000000, NULL},
+	{0x0104b4, 0x0104dc, 0x000000, 0x000000, NULL},
+	{0x0104b5, 0x0104dd, 0x000000, 0x000000, NULL},
+	{0x0104b6, 0x0104de, 0x000000, 0x000000, NULL},
+	{0x0104b7, 0x0104df, 0x000000, 0x000000, NULL},
+	{0x0104b8, 0x0104e0, 0x000000, 0x000000, NULL},
+	{0x0104b9, 0x0104e1, 0x000000, 0x000000, NULL},
+	{0x0104ba, 0x0104e2, 0x000000, 0x000000, NULL},
+	{0x0104bb, 0x0104e3, 0x000000, 0x000000, NULL},
+	{0x0104bc, 0x0104e4, 0x000000, 0x000000, NULL},
+	{0x0104bd, 0x0104e5, 0x000000, 0x000000, NULL},
+	{0x0104be, 0x0104e6, 0x000000, 0x000000, NULL},
+	{0x0104bf, 0x0104e7, 0x000000, 0x000000, NULL},
+	{0x0104c0, 0x0104e8, 0x000000, 0x000000, NULL},
+	{0x0104c1, 0x0104e9, 0x000000, 0x000000, NULL},
+	{0x0104c2, 0x0104ea, 0x000000, 0x000000, NULL},
+	{0x0104c3, 0x0104eb, 0x000000, 0x000000, NULL},
+	{0x0104c4, 0x0104ec, 0x000000, 0x000000, NULL},
+	{0x0104c5, 0x0104ed, 0x000000, 0x000000, NULL},
+	{0x0104c6, 0x0104ee, 0x000000, 0x000000, NULL},
+	{0x0104c7, 0x0104ef, 0x000000, 0x000000, NULL},
+	{0x0104c8, 0x0104f0, 0x000000, 0x000000, NULL},
+	{0x0104c9, 0x0104f1, 0x000000, 0x000000, NULL},
+	{0x0104ca, 0x0104f2, 0x000000, 0x000000, NULL},
+	{0x0104cb, 0x0104f3, 0x000000, 0x000000, NULL},
+	{0x0104cc, 0x0104f4, 0x000000, 0x000000, NULL},
+	{0x0104cd, 0x0104f5, 0x000000, 0x000000, NULL},
+	{0x0104ce, 0x0104f6, 0x000000, 0x000000, NULL},
+	{0x0104cf, 0x0104f7, 0x000000, 0x000000, NULL},
+	{0x0104d0, 0x0104f8, 0x000000, 0x000000, NULL},
+	{0x0104d1, 0x0104f9, 0x000000, 0x000000, NULL},
+	{0x0104d2, 0x0104fa, 0x000000, 0x000000, NULL},
+	{0x0104d3, 0x0104fb, 0x000000, 0x000000, NULL},
+	{0x0104d8, 0x000000, 0x0104b0, 0x0104b0, NULL},
+	{0x0104d9, 0x000000, 0x0104b1, 0x0104b1, NULL},
+	{0x0104da, 0x000000, 0x0104b2, 0x0104b2, NULL},
+	{0x0104db, 0x000000, 0x0104b3, 0x0104b3, NULL},
+	{0x0104dc, 0x000000, 0x0104b4, 0x0104b4, NULL},
+	{0x0104dd, 0x000000, 0x0104b5, 0x0104b5, NULL},
+	{0x0104de, 0x000000, 0x0104b6, 0x0104b6, NULL},
+	{0x0104df, 0x000000, 0x0104b7, 0x0104b7, NULL},
+	{0x0104e0, 0x000000, 0x0104b8, 0x0104b8, NULL},
+	{0x0104e1, 0x000000, 0x0104b9, 0x0104b9, NULL},
+	{0x0104e2, 0x000000, 0x0104ba, 0x0104ba, NULL},
+	{0x0104e3, 0x000000, 0x0104bb, 0x0104bb, NULL},
+	{0x0104e4, 0x000000, 0x0104bc, 0x0104bc, NULL},
+	{0x0104e5, 0x000000, 0x0104bd, 0x0104bd, NULL},
+	{0x0104e6, 0x000000, 0x0104be, 0x0104be, NULL},
+	{0x0104e7, 0x000000, 0x0104bf, 0x0104bf, NULL},
+	{0x0104e8, 0x000000, 0x0104c0, 0x0104c0, NULL},
+	{0x0104e9, 0x000000, 0x0104c1, 0x0104c1, NULL},
+	{0x0104ea, 0x000000, 0x0104c2, 0x0104c2, NULL},
+	{0x0104eb, 0x000000, 0x0104c3, 0x0104c3, NULL},
+	{0x0104ec, 0x000000, 0x0104c4, 0x0104c4, NULL},
+	{0x0104ed, 0x000000, 0x0104c5, 0x0104c5, NULL},
+	{0x0104ee, 0x000000, 0x0104c6, 0x0104c6, NULL},
+	{0x0104ef, 0x000000, 0x0104c7, 0x0104c7, NULL},
+	{0x0104f0, 0x000000, 0x0104c8, 0x0104c8, NULL},
+	{0x0104f1, 0x000000, 0x0104c9, 0x0104c9, NULL},
+	{0x0104f2, 0x000000, 0x0104ca, 0x0104ca, NULL},
+	{0x0104f3, 0x000000, 0x0104cb, 0x0104cb, NULL},
+	{0x0104f4, 0x000000, 0x0104cc, 0x0104cc, NULL},
+	{0x0104f5, 0x000000, 0x0104cd, 0x0104cd, NULL},
+	{0x0104f6, 0x000000, 0x0104ce, 0x0104ce, NULL},
+	{0x0104f7, 0x000000, 0x0104cf, 0x0104cf, NULL},
+	{0x0104f8, 0x000000, 0x0104d0, 0x0104d0, NULL},
+	{0x0104f9, 0x000000, 0x0104d1, 0x0104d1, NULL},
+	{0x0104fa, 0x000000, 0x0104d2, 0x0104d2, NULL},
+	{0x0104fb, 0x000000, 0x0104d3, 0x0104d3, NULL},
+	{0x010570, 0x010597, 0x000000, 0x000000, NULL},
+	{0x010571, 0x010598, 0x000000, 0x000000, NULL},
+	{0x010572, 0x010599, 0x000000, 0x000000, NULL},
+	{0x010573, 0x01059a, 0x000000, 0x000000, NULL},
+	{0x010574, 0x01059b, 0x000000, 0x000000, NULL},
+	{0x010575, 0x01059c, 0x000000, 0x000000, NULL},
+	{0x010576, 0x01059d, 0x000000, 0x000000, NULL},
+	{0x010577, 0x01059e, 0x000000, 0x000000, NULL},
+	{0x010578, 0x01059f, 0x000000, 0x000000, NULL},
+	{0x010579, 0x0105a0, 0x000000, 0x000000, NULL},
+	{0x01057a, 0x0105a1, 0x000000, 0x000000, NULL},
+	{0x01057c, 0x0105a3, 0x000000, 0x000000, NULL},
+	{0x01057d, 0x0105a4, 0x000000, 0x000000, NULL},
+	{0x01057e, 0x0105a5, 0x000000, 0x000000, NULL},
+	{0x01057f, 0x0105a6, 0x000000, 0x000000, NULL},
+	{0x010580, 0x0105a7, 0x000000, 0x000000, NULL},
+	{0x010581, 0x0105a8, 0x000000, 0x000000, NULL},
+	{0x010582, 0x0105a9, 0x000000, 0x000000, NULL},
+	{0x010583, 0x0105aa, 0x000000, 0x000000, NULL},
+	{0x010584, 0x0105ab, 0x000000, 0x000000, NULL},
+	{0x010585, 0x0105ac, 0x000000, 0x000000, NULL},
+	{0x010586, 0x0105ad, 0x000000, 0x000000, NULL},
+	{0x010587, 0x0105ae, 0x000000, 0x000000, NULL},
+	{0x010588, 0x0105af, 0x000000, 0x000000, NULL},
+	{0x010589, 0x0105b0, 0x000000, 0x000000, NULL},
+	{0x01058a, 0x0105b1, 0x000000, 0x000000, NULL},
+	{0x01058c, 0x0105b3, 0x000000, 0x000000, NULL},
+	{0x01058d, 0x0105b4, 0x000000, 0x000000, NULL},
+	{0x01058e, 0x0105b5, 0x000000, 0x000000, NULL},
+	{0x01058f, 0x0105b6, 0x000000, 0x000000, NULL},
+	{0x010590, 0x0105b7, 0x000000, 0x000000, NULL},
+	{0x010591, 0x0105b8, 0x000000, 0x000000, NULL},
+	{0x010592, 0x0105b9, 0x000000, 0x000000, NULL},
+	{0x010594, 0x0105bb, 0x000000, 0x000000, NULL},
+	{0x010595, 0x0105bc, 0x000000, 0x000000, NULL},
+	{0x010597, 0x000000, 0x010570, 0x010570, NULL},
+	{0x010598, 0x000000, 0x010571, 0x010571, NULL},
+	{0x010599, 0x000000, 0x010572, 0x010572, NULL},
+	{0x01059a, 0x000000, 0x010573, 0x010573, NULL},
+	{0x01059b, 0x000000, 0x010574, 0x010574, NULL},
+	{0x01059c, 0x000000, 0x010575, 0x010575, NULL},
+	{0x01059d, 0x000000, 0x010576, 0x010576, NULL},
+	{0x01059e, 0x000000, 0x010577, 0x010577, NULL},
+	{0x01059f, 0x000000, 0x010578, 0x010578, NULL},
+	{0x0105a0, 0x000000, 0x010579, 0x010579, NULL},
+	{0x0105a1, 0x000000, 0x01057a, 0x01057a, NULL},
+	{0x0105a3, 0x000000, 0x01057c, 0x01057c, NULL},
+	{0x0105a4, 0x000000, 0x01057d, 0x01057d, NULL},
+	{0x0105a5, 0x000000, 0x01057e, 0x01057e, NULL},
+	{0x0105a6, 0x000000, 0x01057f, 0x01057f, NULL},
+	{0x0105a7, 0x000000, 0x010580, 0x010580, NULL},
+	{0x0105a8, 0x000000, 0x010581, 0x010581, NULL},
+	{0x0105a9, 0x000000, 0x010582, 0x010582, NULL},
+	{0x0105aa, 0x000000, 0x010583, 0x010583, NULL},
+	{0x0105ab, 0x000000, 0x010584, 0x010584, NULL},
+	{0x0105ac, 0x000000, 0x010585, 0x010585, NULL},
+	{0x0105ad, 0x000000, 0x010586, 0x010586, NULL},
+	{0x0105ae, 0x000000, 0x010587, 0x010587, NULL},
+	{0x0105af, 0x000000, 0x010588, 0x010588, NULL},
+	{0x0105b0, 0x000000, 0x010589, 0x010589, NULL},
+	{0x0105b1, 0x000000, 0x01058a, 0x01058a, NULL},
+	{0x0105b3, 0x000000, 0x01058c, 0x01058c, NULL},
+	{0x0105b4, 0x000000, 0x01058d, 0x01058d, NULL},
+	{0x0105b5, 0x000000, 0x01058e, 0x01058e, NULL},
+	{0x0105b6, 0x000000, 0x01058f, 0x01058f, NULL},
+	{0x0105b7, 0x000000, 0x010590, 0x010590, NULL},
+	{0x0105b8, 0x000000, 0x010591, 0x010591, NULL},
+	{0x0105b9, 0x000000, 0x010592, 0x010592, NULL},
+	{0x0105bb, 0x000000, 0x010594, 0x010594, NULL},
+	{0x0105bc, 0x000000, 0x010595, 0x010595, NULL},
+	{0x010c80, 0x010cc0, 0x000000, 0x000000, NULL},
+	{0x010c81, 0x010cc1, 0x000000, 0x000000, NULL},
+	{0x010c82, 0x010cc2, 0x000000, 0x000000, NULL},
+	{0x010c83, 0x010cc3, 0x000000, 0x000000, NULL},
+	{0x010c84, 0x010cc4, 0x000000, 0x000000, NULL},
+	{0x010c85, 0x010cc5, 0x000000, 0x000000, NULL},
+	{0x010c86, 0x010cc6, 0x000000, 0x000000, NULL},
+	{0x010c87, 0x010cc7, 0x000000, 0x000000, NULL},
+	{0x010c88, 0x010cc8, 0x000000, 0x000000, NULL},
+	{0x010c89, 0x010cc9, 0x000000, 0x000000, NULL},
+	{0x010c8a, 0x010cca, 0x000000, 0x000000, NULL},
+	{0x010c8b, 0x010ccb, 0x000000, 0x000000, NULL},
+	{0x010c8c, 0x010ccc, 0x000000, 0x000000, NULL},
+	{0x010c8d, 0x010ccd, 0x000000, 0x000000, NULL},
+	{0x010c8e, 0x010cce, 0x000000, 0x000000, NULL},
+	{0x010c8f, 0x010ccf, 0x000000, 0x000000, NULL},
+	{0x010c90, 0x010cd0, 0x000000, 0x000000, NULL},
+	{0x010c91, 0x010cd1, 0x000000, 0x000000, NULL},
+	{0x010c92, 0x010cd2, 0x000000, 0x000000, NULL},
+	{0x010c93, 0x010cd3, 0x000000, 0x000000, NULL},
+	{0x010c94, 0x010cd4, 0x000000, 0x000000, NULL},
+	{0x010c95, 0x010cd5, 0x000000, 0x000000, NULL},
+	{0x010c96, 0x010cd6, 0x000000, 0x000000, NULL},
+	{0x010c97, 0x010cd7, 0x000000, 0x000000, NULL},
+	{0x010c98, 0x010cd8, 0x000000, 0x000000, NULL},
+	{0x010c99, 0x010cd9, 0x000000, 0x000000, NULL},
+	{0x010c9a, 0x010cda, 0x000000, 0x000000, NULL},
+	{0x010c9b, 0x010cdb, 0x000000, 0x000000, NULL},
+	{0x010c9c, 0x010cdc, 0x000000, 0x000000, NULL},
+	{0x010c9d, 0x010cdd, 0x000000, 0x000000, NULL},
+	{0x010c9e, 0x010cde, 0x000000, 0x000000, NULL},
+	{0x010c9f, 0x010cdf, 0x000000, 0x000000, NULL},
+	{0x010ca0, 0x010ce0, 0x000000, 0x000000, NULL},
+	{0x010ca1, 0x010ce1, 0x000000, 0x000000, NULL},
+	{0x010ca2, 0x010ce2, 0x000000, 0x000000, NULL},
+	{0x010ca3, 0x010ce3, 0x000000, 0x000000, NULL},
+	{0x010ca4, 0x010ce4, 0x000000, 0x000000, NULL},
+	{0x010ca5, 0x010ce5, 0x000000, 0x000000, NULL},
+	{0x010ca6, 0x010ce6, 0x000000, 0x000000, NULL},
+	{0x010ca7, 0x010ce7, 0x000000, 0x000000, NULL},
+	{0x010ca8, 0x010ce8, 0x000000, 0x000000, NULL},
+	{0x010ca9, 0x010ce9, 0x000000, 0x000000, NULL},
+	{0x010caa, 0x010cea, 0x000000, 0x000000, NULL},
+	{0x010cab, 0x010ceb, 0x000000, 0x000000, NULL},
+	{0x010cac, 0x010cec, 0x000000, 0x000000, NULL},
+	{0x010cad, 0x010ced, 0x000000, 0x000000, NULL},
+	{0x010cae, 0x010cee, 0x000000, 0x000000, NULL},
+	{0x010caf, 0x010cef, 0x000000, 0x000000, NULL},
+	{0x010cb0, 0x010cf0, 0x000000, 0x000000, NULL},
+	{0x010cb1, 0x010cf1, 0x000000, 0x000000, NULL},
+	{0x010cb2, 0x010cf2, 0x000000, 0x000000, NULL},
+	{0x010cc0, 0x000000, 0x010c80, 0x010c80, NULL},
+	{0x010cc1, 0x000000, 0x010c81, 0x010c81, NULL},
+	{0x010cc2, 0x000000, 0x010c82, 0x010c82, NULL},
+	{0x010cc3, 0x000000, 0x010c83, 0x010c83, NULL},
+	{0x010cc4, 0x000000, 0x010c84, 0x010c84, NULL},
+	{0x010cc5, 0x000000, 0x010c85, 0x010c85, NULL},
+	{0x010cc6, 0x000000, 0x010c86, 0x010c86, NULL},
+	{0x010cc7, 0x000000, 0x010c87, 0x010c87, NULL},
+	{0x010cc8, 0x000000, 0x010c88, 0x010c88, NULL},
+	{0x010cc9, 0x000000, 0x010c89, 0x010c89, NULL},
+	{0x010cca, 0x000000, 0x010c8a, 0x010c8a, NULL},
+	{0x010ccb, 0x000000, 0x010c8b, 0x010c8b, NULL},
+	{0x010ccc, 0x000000, 0x010c8c, 0x010c8c, NULL},
+	{0x010ccd, 0x000000, 0x010c8d, 0x010c8d, NULL},
+	{0x010cce, 0x000000, 0x010c8e, 0x010c8e, NULL},
+	{0x010ccf, 0x000000, 0x010c8f, 0x010c8f, NULL},
+	{0x010cd0, 0x000000, 0x010c90, 0x010c90, NULL},
+	{0x010cd1, 0x000000, 0x010c91, 0x010c91, NULL},
+	{0x010cd2, 0x000000, 0x010c92, 0x010c92, NULL},
+	{0x010cd3, 0x000000, 0x010c93, 0x010c93, NULL},
+	{0x010cd4, 0x000000, 0x010c94, 0x010c94, NULL},
+	{0x010cd5, 0x000000, 0x010c95, 0x010c95, NULL},
+	{0x010cd6, 0x000000, 0x010c96, 0x010c96, NULL},
+	{0x010cd7, 0x000000, 0x010c97, 0x010c97, NULL},
+	{0x010cd8, 0x000000, 0x010c98, 0x010c98, NULL},
+	{0x010cd9, 0x000000, 0x010c99, 0x010c99, NULL},
+	{0x010cda, 0x000000, 0x010c9a, 0x010c9a, NULL},
+	{0x010cdb, 0x000000, 0x010c9b, 0x010c9b, NULL},
+	{0x010cdc, 0x000000, 0x010c9c, 0x010c9c, NULL},
+	{0x010cdd, 0x000000, 0x010c9d, 0x010c9d, NULL},
+	{0x010cde, 0x000000, 0x010c9e, 0x010c9e, NULL},
+	{0x010cdf, 0x000000, 0x010c9f, 0x010c9f, NULL},
+	{0x010ce0, 0x000000, 0x010ca0, 0x010ca0, NULL},
+	{0x010ce1, 0x000000, 0x010ca1, 0x010ca1, NULL},
+	{0x010ce2, 0x000000, 0x010ca2, 0x010ca2, NULL},
+	{0x010ce3, 0x000000, 0x010ca3, 0x010ca3, NULL},
+	{0x010ce4, 0x000000, 0x010ca4, 0x010ca4, NULL},
+	{0x010ce5, 0x000000, 0x010ca5, 0x010ca5, NULL},
+	{0x010ce6, 0x000000, 0x010ca6, 0x010ca6, NULL},
+	{0x010ce7, 0x000000, 0x010ca7, 0x010ca7, NULL},
+	{0x010ce8, 0x000000, 0x010ca8, 0x010ca8, NULL},
+	{0x010ce9, 0x000000, 0x010ca9, 0x010ca9, NULL},
+	{0x010cea, 0x000000, 0x010caa, 0x010caa, NULL},
+	{0x010ceb, 0x000000, 0x010cab, 0x010cab, NULL},
+	{0x010cec, 0x000000, 0x010cac, 0x010cac, NULL},
+	{0x010ced, 0x000000, 0x010cad, 0x010cad, NULL},
+	{0x010cee, 0x000000, 0x010cae, 0x010cae, NULL},
+	{0x010cef, 0x000000, 0x010caf, 0x010caf, NULL},
+	{0x010cf0, 0x000000, 0x010cb0, 0x010cb0, NULL},
+	{0x010cf1, 0x000000, 0x010cb1, 0x010cb1, NULL},
+	{0x010cf2, 0x000000, 0x010cb2, 0x010cb2, NULL},
+	{0x0118a0, 0x0118c0, 0x000000, 0x000000, NULL},
+	{0x0118a1, 0x0118c1, 0x000000, 0x000000, NULL},
+	{0x0118a2, 0x0118c2, 0x000000, 0x000000, NULL},
+	{0x0118a3, 0x0118c3, 0x000000, 0x000000, NULL},
+	{0x0118a4, 0x0118c4, 0x000000, 0x000000, NULL},
+	{0x0118a5, 0x0118c5, 0x000000, 0x000000, NULL},
+	{0x0118a6, 0x0118c6, 0x000000, 0x000000, NULL},
+	{0x0118a7, 0x0118c7, 0x000000, 0x000000, NULL},
+	{0x0118a8, 0x0118c8, 0x000000, 0x000000, NULL},
+	{0x0118a9, 0x0118c9, 0x000000, 0x000000, NULL},
+	{0x0118aa, 0x0118ca, 0x000000, 0x000000, NULL},
+	{0x0118ab, 0x0118cb, 0x000000, 0x000000, NULL},
+	{0x0118ac, 0x0118cc, 0x000000, 0x000000, NULL},
+	{0x0118ad, 0x0118cd, 0x000000, 0x000000, NULL},
+	{0x0118ae, 0x0118ce, 0x000000, 0x000000, NULL},
+	{0x0118af, 0x0118cf, 0x000000, 0x000000, NULL},
+	{0x0118b0, 0x0118d0, 0x000000, 0x000000, NULL},
+	{0x0118b1, 0x0118d1, 0x000000, 0x000000, NULL},
+	{0x0118b2, 0x0118d2, 0x000000, 0x000000, NULL},
+	{0x0118b3, 0x0118d3, 0x000000, 0x000000, NULL},
+	{0x0118b4, 0x0118d4, 0x000000, 0x000000, NULL},
+	{0x0118b5, 0x0118d5, 0x000000, 0x000000, NULL},
+	{0x0118b6, 0x0118d6, 0x000000, 0x000000, NULL},
+	{0x0118b7, 0x0118d7, 0x000000, 0x000000, NULL},
+	{0x0118b8, 0x0118d8, 0x000000, 0x000000, NULL},
+	{0x0118b9, 0x0118d9, 0x000000, 0x000000, NULL},
+	{0x0118ba, 0x0118da, 0x000000, 0x000000, NULL},
+	{0x0118bb, 0x0118db, 0x000000, 0x000000, NULL},
+	{0x0118bc, 0x0118dc, 0x000000, 0x000000, NULL},
+	{0x0118bd, 0x0118dd, 0x000000, 0x000000, NULL},
+	{0x0118be, 0x0118de, 0x000000, 0x000000, NULL},
+	{0x0118bf, 0x0118df, 0x000000, 0x000000, NULL},
+	{0x0118c0, 0x000000, 0x0118a0, 0x0118a0, NULL},
+	{0x0118c1, 0x000000, 0x0118a1, 0x0118a1, NULL},
+	{0x0118c2, 0x000000, 0x0118a2, 0x0118a2, NULL},
+	{0x0118c3, 0x000000, 0x0118a3, 0x0118a3, NULL},
+	{0x0118c4, 0x000000, 0x0118a4, 0x0118a4, NULL},
+	{0x0118c5, 0x000000, 0x0118a5, 0x0118a5, NULL},
+	{0x0118c6, 0x000000, 0x0118a6, 0x0118a6, NULL},
+	{0x0118c7, 0x000000, 0x0118a7, 0x0118a7, NULL},
+	{0x0118c8, 0x000000, 0x0118a8, 0x0118a8, NULL},
+	{0x0118c9, 0x000000, 0x0118a9, 0x0118a9, NULL},
+	{0x0118ca, 0x000000, 0x0118aa, 0x0118aa, NULL},
+	{0x0118cb, 0x000000, 0x0118ab, 0x0118ab, NULL},
+	{0x0118cc, 0x000000, 0x0118ac, 0x0118ac, NULL},
+	{0x0118cd, 0x000000, 0x0118ad, 0x0118ad, NULL},
+	{0x0118ce, 0x000000, 0x0118ae, 0x0118ae, NULL},
+	{0x0118cf, 0x000000, 0x0118af, 0x0118af, NULL},
+	{0x0118d0, 0x000000, 0x0118b0, 0x0118b0, NULL},
+	{0x0118d1, 0x000000, 0x0118b1, 0x0118b1, NULL},
+	{0x0118d2, 0x000000, 0x0118b2, 0x0118b2, NULL},
+	{0x0118d3, 0x000000, 0x0118b3, 0x0118b3, NULL},
+	{0x0118d4, 0x000000, 0x0118b4, 0x0118b4, NULL},
+	{0x0118d5, 0x000000, 0x0118b5, 0x0118b5, NULL},
+	{0x0118d6, 0x000000, 0x0118b6, 0x0118b6, NULL},
+	{0x0118d7, 0x000000, 0x0118b7, 0x0118b7, NULL},
+	{0x0118d8, 0x000000, 0x0118b8, 0x0118b8, NULL},
+	{0x0118d9, 0x000000, 0x0118b9, 0x0118b9, NULL},
+	{0x0118da, 0x000000, 0x0118ba, 0x0118ba, NULL},
+	{0x0118db, 0x000000, 0x0118bb, 0x0118bb, NULL},
+	{0x0118dc, 0x000000, 0x0118bc, 0x0118bc, NULL},
+	{0x0118dd, 0x000000, 0x0118bd, 0x0118bd, NULL},
+	{0x0118de, 0x000000, 0x0118be, 0x0118be, NULL},
+	{0x0118df, 0x000000, 0x0118bf, 0x0118bf, NULL},
+	{0x016e40, 0x016e60, 0x000000, 0x000000, NULL},
+	{0x016e41, 0x016e61, 0x000000, 0x000000, NULL},
+	{0x016e42, 0x016e62, 0x000000, 0x000000, NULL},
+	{0x016e43, 0x016e63, 0x000000, 0x000000, NULL},
+	{0x016e44, 0x016e64, 0x000000, 0x000000, NULL},
+	{0x016e45, 0x016e65, 0x000000, 0x000000, NULL},
+	{0x016e46, 0x016e66, 0x000000, 0x000000, NULL},
+	{0x016e47, 0x016e67, 0x000000, 0x000000, NULL},
+	{0x016e48, 0x016e68, 0x000000, 0x000000, NULL},
+	{0x016e49, 0x016e69, 0x000000, 0x000000, NULL},
+	{0x016e4a, 0x016e6a, 0x000000, 0x000000, NULL},
+	{0x016e4b, 0x016e6b, 0x000000, 0x000000, NULL},
+	{0x016e4c, 0x016e6c, 0x000000, 0x000000, NULL},
+	{0x016e4d, 0x016e6d, 0x000000, 0x000000, NULL},
+	{0x016e4e, 0x016e6e, 0x000000, 0x000000, NULL},
+	{0x016e4f, 0x016e6f, 0x000000, 0x000000, NULL},
+	{0x016e50, 0x016e70, 0x000000, 0x000000, NULL},
+	{0x016e51, 0x016e71, 0x000000, 0x000000, NULL},
+	{0x016e52, 0x016e72, 0x000000, 0x000000, NULL},
+	{0x016e53, 0x016e73, 0x000000, 0x000000, NULL},
+	{0x016e54, 0x016e74, 0x000000, 0x000000, NULL},
+	{0x016e55, 0x016e75, 0x000000, 0x000000, NULL},
+	{0x016e56, 0x016e76, 0x000000, 0x000000, NULL},
+	{0x016e57, 0x016e77, 0x000000, 0x000000, NULL},
+	{0x016e58, 0x016e78, 0x000000, 0x000000, NULL},
+	{0x016e59, 0x016e79, 0x000000, 0x000000, NULL},
+	{0x016e5a, 0x016e7a, 0x000000, 0x000000, NULL},
+	{0x016e5b, 0x016e7b, 0x000000, 0x000000, NULL},
+	{0x016e5c, 0x016e7c, 0x000000, 0x000000, NULL},
+	{0x016e5d, 0x016e7d, 0x000000, 0x000000, NULL},
+	{0x016e5e, 0x016e7e, 0x000000, 0x000000, NULL},
+	{0x016e5f, 0x016e7f, 0x000000, 0x000000, NULL},
+	{0x016e60, 0x000000, 0x016e40, 0x016e40, NULL},
+	{0x016e61, 0x000000, 0x016e41, 0x016e41, NULL},
+	{0x016e62, 0x000000, 0x016e42, 0x016e42, NULL},
+	{0x016e63, 0x000000, 0x016e43, 0x016e43, NULL},
+	{0x016e64, 0x000000, 0x016e44, 0x016e44, NULL},
+	{0x016e65, 0x000000, 0x016e45, 0x016e45, NULL},
+	{0x016e66, 0x000000, 0x016e46, 0x016e46, NULL},
+	{0x016e67, 0x000000, 0x016e47, 0x016e47, NULL},
+	{0x016e68, 0x000000, 0x016e48, 0x016e48, NULL},
+	{0x016e69, 0x000000, 0x016e49, 0x016e49, NULL},
+	{0x016e6a, 0x000000, 0x016e4a, 0x016e4a, NULL},
+	{0x016e6b, 0x000000, 0x016e4b, 0x016e4b, NULL},
+	{0x016e6c, 0x000000, 0x016e4c, 0x016e4c, NULL},
+	{0x016e6d, 0x000000, 0x016e4d, 0x016e4d, NULL},
+	{0x016e6e, 0x000000, 0x016e4e, 0x016e4e, NULL},
+	{0x016e6f, 0x000000, 0x016e4f, 0x016e4f, NULL},
+	{0x016e70, 0x000000, 0x016e50, 0x016e50, NULL},
+	{0x016e71, 0x000000, 0x016e51, 0x016e51, NULL},
+	{0x016e72, 0x000000, 0x016e52, 0x016e52, NULL},
+	{0x016e73, 0x000000, 0x016e53, 0x016e53, NULL},
+	{0x016e74, 0x000000, 0x016e54, 0x016e54, NULL},
+	{0x016e75, 0x000000, 0x016e55, 0x016e55, NULL},
+	{0x016e76, 0x000000, 0x016e56, 0x016e56, NULL},
+	{0x016e77, 0x000000, 0x016e57, 0x016e57, NULL},
+	{0x016e78, 0x000000, 0x016e58, 0x016e58, NULL},
+	{0x016e79, 0x000000, 0x016e59, 0x016e59, NULL},
+	{0x016e7a, 0x000000, 0x016e5a, 0x016e5a, NULL},
+	{0x016e7b, 0x000000, 0x016e5b, 0x016e5b, NULL},
+	{0x016e7c, 0x000000, 0x016e5c, 0x016e5c, NULL},
+	{0x016e7d, 0x000000, 0x016e5d, 0x016e5d, NULL},
+	{0x016e7e, 0x000000, 0x016e5e, 0x016e5e, NULL},
+	{0x016e7f, 0x000000, 0x016e5f, 0x016e5f, NULL},
+	{0x01e900, 0x01e922, 0x000000, 0x000000, NULL},
+	{0x01e901, 0x01e923, 0x000000, 0x000000, NULL},
+	{0x01e902, 0x01e924, 0x000000, 0x000000, NULL},
+	{0x01e903, 0x01e925, 0x000000, 0x000000, NULL},
+	{0x01e904, 0x01e926, 0x000000, 0x000000, NULL},
+	{0x01e905, 0x01e927, 0x000000, 0x000000, NULL},
+	{0x01e906, 0x01e928, 0x000000, 0x000000, NULL},
+	{0x01e907, 0x01e929, 0x000000, 0x000000, NULL},
+	{0x01e908, 0x01e92a, 0x000000, 0x000000, NULL},
+	{0x01e909, 0x01e92b, 0x000000, 0x000000, NULL},
+	{0x01e90a, 0x01e92c, 0x000000, 0x000000, NULL},
+	{0x01e90b, 0x01e92d, 0x000000, 0x000000, NULL},
+	{0x01e90c, 0x01e92e, 0x000000, 0x000000, NULL},
+	{0x01e90d, 0x01e92f, 0x000000, 0x000000, NULL},
+	{0x01e90e, 0x01e930, 0x000000, 0x000000, NULL},
+	{0x01e90f, 0x01e931, 0x000000, 0x000000, NULL},
+	{0x01e910, 0x01e932, 0x000000, 0x000000, NULL},
+	{0x01e911, 0x01e933, 0x000000, 0x000000, NULL},
+	{0x01e912, 0x01e934, 0x000000, 0x000000, NULL},
+	{0x01e913, 0x01e935, 0x000000, 0x000000, NULL},
+	{0x01e914, 0x01e936, 0x000000, 0x000000, NULL},
+	{0x01e915, 0x01e937, 0x000000, 0x000000, NULL},
+	{0x01e916, 0x01e938, 0x000000, 0x000000, NULL},
+	{0x01e917, 0x01e939, 0x000000, 0x000000, NULL},
+	{0x01e918, 0x01e93a, 0x000000, 0x000000, NULL},
+	{0x01e919, 0x01e93b, 0x000000, 0x000000, NULL},
+	{0x01e91a, 0x01e93c, 0x000000, 0x000000, NULL},
+	{0x01e91b, 0x01e93d, 0x000000, 0x000000, NULL},
+	{0x01e91c, 0x01e93e, 0x000000, 0x000000, NULL},
+	{0x01e91d, 0x01e93f, 0x000000, 0x000000, NULL},
+	{0x01e91e, 0x01e940, 0x000000, 0x000000, NULL},
+	{0x01e91f, 0x01e941, 0x000000, 0x000000, NULL},
+	{0x01e920, 0x01e942, 0x000000, 0x000000, NULL},
+	{0x01e921, 0x01e943, 0x000000, 0x000000, NULL},
+	{0x01e922, 0x000000, 0x01e900, 0x01e900, NULL},
+	{0x01e923, 0x000000, 0x01e901, 0x01e901, NULL},
+	{0x01e924, 0x000000, 0x01e902, 0x01e902, NULL},
+	{0x01e925, 0x000000, 0x01e903, 0x01e903, NULL},
+	{0x01e926, 0x000000, 0x01e904, 0x01e904, NULL},
+	{0x01e927, 0x000000, 0x01e905, 0x01e905, NULL},
+	{0x01e928, 0x000000, 0x01e906, 0x01e906, NULL},
+	{0x01e929, 0x000000, 0x01e907, 0x01e907, NULL},
+	{0x01e92a, 0x000000, 0x01e908, 0x01e908, NULL},
+	{0x01e92b, 0x000000, 0x01e909, 0x01e909, NULL},
+	{0x01e92c, 0x000000, 0x01e90a, 0x01e90a, NULL},
+	{0x01e92d, 0x000000, 0x01e90b, 0x01e90b, NULL},
+	{0x01e92e, 0x000000, 0x01e90c, 0x01e90c, NULL},
+	{0x01e92f, 0x000000, 0x01e90d, 0x01e90d, NULL},
+	{0x01e930, 0x000000, 0x01e90e, 0x01e90e, NULL},
+	{0x01e931, 0x000000, 0x01e90f, 0x01e90f, NULL},
+	{0x01e932, 0x000000, 0x01e910, 0x01e910, NULL},
+	{0x01e933, 0x000000, 0x01e911, 0x01e911, NULL},
+	{0x01e934, 0x000000, 0x01e912, 0x01e912, NULL},
+	{0x01e935, 0x000000, 0x01e913, 0x01e913, NULL},
+	{0x01e936, 0x000000, 0x01e914, 0x01e914, NULL},
+	{0x01e937, 0x000000, 0x01e915, 0x01e915, NULL},
+	{0x01e938, 0x000000, 0x01e916, 0x01e916, NULL},
+	{0x01e939, 0x000000, 0x01e917, 0x01e917, NULL},
+	{0x01e93a, 0x000000, 0x01e918, 0x01e918, NULL},
+	{0x01e93b, 0x000000, 0x01e919, 0x01e919, NULL},
+	{0x01e93c, 0x000000, 0x01e91a, 0x01e91a, NULL},
+	{0x01e93d, 0x000000, 0x01e91b, 0x01e91b, NULL},
+	{0x01e93e, 0x000000, 0x01e91c, 0x01e91c, NULL},
+	{0x01e93f, 0x000000, 0x01e91d, 0x01e91d, NULL},
+	{0x01e940, 0x000000, 0x01e91e, 0x01e91e, NULL},
+	{0x01e941, 0x000000, 0x01e91f, 0x01e91f, NULL},
+	{0x01e942, 0x000000, 0x01e920, 0x01e920, NULL},
+	{0x01e943, 0x000000, 0x01e921, 0x01e921, NULL}
+};
-- 
2.34.1

