From 2705a465e6c68ce2a7e8e43563dc6bfcb7bf9726 Mon Sep 17 00:00:00 2001 From: Adeel <3840695+am11@users.noreply.github.com> Date: Mon, 13 May 2024 00:08:03 +0300 Subject: [PATCH 01/11] Move unicodedata to minipal --- src/coreclr/pal/inc/pal.h | 4 - src/coreclr/pal/src/CMakeLists.txt | 2 +- src/coreclr/pal/src/cruntime/wchar.cpp | 1 - src/coreclr/pal/src/include/pal/unicodedata.h | 31 - src/coreclr/pal/src/locale/unicode.cpp | 143 - src/coreclr/pal/src/locale/unicodedata.cpp | 2372 ---------------- src/coreclr/pal/src/locale/unicodedata.cs | 64 - src/coreclr/pal/src/misc/fmtmessage.cpp | 2 +- src/coreclr/pal/src/safecrt/wcslwr_s.cpp | 4 +- .../pal/tests/palsuite/common/palsuite.h | 1 + src/coreclr/utilcode/sstring.cpp | 6 +- .../Updating-Unicode-Versions.md | 2 +- .../UnicodeDataGenerator.csproj | 8 + .../UnicodeDataGenerator/unicodedata.cs | 111 + src/native/minipal/unicodedata.c | 2425 +++++++++++++++++ src/native/minipal/utf8.h | 16 + 16 files changed, 2569 insertions(+), 2623 deletions(-) delete mode 100644 src/coreclr/pal/src/include/pal/unicodedata.h delete mode 100644 src/coreclr/pal/src/locale/unicodedata.cpp delete mode 100644 src/coreclr/pal/src/locale/unicodedata.cs create mode 100644 src/native/minipal/UnicodeDataGenerator/UnicodeDataGenerator.csproj create mode 100644 src/native/minipal/UnicodeDataGenerator/unicodedata.cs create mode 100644 src/native/minipal/unicodedata.c diff --git a/src/coreclr/pal/inc/pal.h b/src/coreclr/pal/inc/pal.h index 340e4933bcd31..15b435154244b 100644 --- a/src/coreclr/pal/inc/pal.h +++ b/src/coreclr/pal/inc/pal.h @@ -48,7 +48,6 @@ Module Name: #include #include #include -#include #ifdef __cplusplus extern "C++" @@ -3962,9 +3961,6 @@ PALIMPORT DLLEXPORT int __cdecl _putenv(const char *); #define ERANGE 34 -PALIMPORT WCHAR __cdecl PAL_ToUpperInvariant(WCHAR); -PALIMPORT WCHAR __cdecl PAL_ToLowerInvariant(WCHAR); - /****************PAL Perf functions for PInvoke*********************/ #if PAL_PERF PALIMPORT diff --git a/src/coreclr/pal/src/CMakeLists.txt b/src/coreclr/pal/src/CMakeLists.txt index cb3693655dcad..304481e11632e 100644 --- a/src/coreclr/pal/src/CMakeLists.txt +++ b/src/coreclr/pal/src/CMakeLists.txt @@ -144,8 +144,8 @@ set(SOURCES init/sxs.cpp loader/module.cpp locale/unicode.cpp - locale/unicodedata.cpp ${CLR_SRC_NATIVE_DIR}/minipal/utf8.c + ${CLR_SRC_NATIVE_DIR}/minipal/unicodedata.c map/common.cpp map/map.cpp map/virtual.cpp diff --git a/src/coreclr/pal/src/cruntime/wchar.cpp b/src/coreclr/pal/src/cruntime/wchar.cpp index 88340538ebca2..fb24f6e35c789 100644 --- a/src/coreclr/pal/src/cruntime/wchar.cpp +++ b/src/coreclr/pal/src/cruntime/wchar.cpp @@ -24,7 +24,6 @@ Module Name: #include "config.h" #endif -#include #include #include diff --git a/src/coreclr/pal/src/include/pal/unicodedata.h b/src/coreclr/pal/src/include/pal/unicodedata.h deleted file mode 100644 index c7e9347fe066c..0000000000000 --- a/src/coreclr/pal/src/include/pal/unicodedata.h +++ /dev/null @@ -1,31 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -#ifndef _PAL_UNICODEDATA_H_ -#define _PAL_UNICODEDATA_H_ - -#include "pal/palinternal.h" - -#ifdef __cplusplus -extern "C" -{ -#endif // __cplusplus - -#define UPPER_CASE 1 -#define LOWER_CASE 2 - -typedef struct -{ - WCHAR nUnicodeValue; - WORD nFlag; - WCHAR nOpposingCase; -} UnicodeDataRec; - -extern CONST UnicodeDataRec UnicodeData[]; -extern CONST UINT UNICODE_DATA_SIZE; - -#ifdef __cplusplus -} -#endif // __cplusplus - -#endif /* _UNICODE_DATA_H_ */ diff --git a/src/coreclr/pal/src/locale/unicode.cpp b/src/coreclr/pal/src/locale/unicode.cpp index 862f98a6b2127..e966e22821ba0 100644 --- a/src/coreclr/pal/src/locale/unicode.cpp +++ b/src/coreclr/pal/src/locale/unicode.cpp @@ -2,21 +2,11 @@ // The .NET Foundation licenses this file to you under the MIT license. /*++ - - - Module Name: - unicode.cpp Abstract: - Implementation of all functions related to Unicode support - -Revision History: - - - --*/ #include "pal/thread.hpp" @@ -27,7 +17,6 @@ Revision History: #include #include "pal/cruntime.h" #include "pal/stackstring.hpp" -#include "pal/unicodedata.h" #include #include @@ -39,138 +28,6 @@ using namespace CorUnix; SET_DEFAULT_DEBUG_CHANNEL(UNICODE); -/*++ -Function: -UnicodeDataComp -This is the comparison function used by the bsearch function to search -for unicode characters in the UnicodeData array. - -Parameter: -pnKey -The unicode character value to search for. -elem -A pointer to a UnicodeDataRec. - -Return value: -<0 if pnKey < elem->nUnicodeValue -0 if pnKey == elem->nUnicodeValue ->0 if pnKey > elem->nUnicodeValue ---*/ -static int UnicodeDataComp(const void *pnKey, const void *elem) -{ - WCHAR uValue = ((UnicodeDataRec*)elem)->nUnicodeValue; - - if (*((INT*)pnKey) < uValue) - { - return -1; - } - else if (*((INT*)pnKey) > uValue) - { - return 1; - } - else - { - return 0; - } -} - -/*++ -Function: -GetUnicodeData -This function is used to get information about a Unicode character. - -Parameters: -nUnicodeValue -The numeric value of the Unicode character to get information about. -pDataRec -The UnicodeDataRec to fill in with the data for the Unicode character. - -Return value: -TRUE if the Unicode character was found. - ---*/ -BOOL GetUnicodeData(INT nUnicodeValue, UnicodeDataRec *pDataRec) -{ - BOOL bRet; - - UnicodeDataRec *dataRec; - INT nNumOfChars = UNICODE_DATA_SIZE; - dataRec = (UnicodeDataRec *) bsearch(&nUnicodeValue, UnicodeData, nNumOfChars, - sizeof(UnicodeDataRec), UnicodeDataComp); - if (dataRec == NULL) - { - bRet = FALSE; - } - else - { - bRet = TRUE; - *pDataRec = *dataRec; - } - return bRet; -} - -char16_t -__cdecl -PAL_ToUpperInvariant( char16_t c ) -{ - UnicodeDataRec dataRec; - - PERF_ENTRY(PAL_ToUpperInvariant); - ENTRY("PAL_ToUpperInvariant (c=%d)\n", c); - - if (!GetUnicodeData(c, &dataRec)) - { - TRACE( "Unable to retrieve unicode data for the character %c.\n", c ); - LOGEXIT("PAL_ToUpperInvariant returns int %d\n", c ); - PERF_EXIT(PAL_ToUpperInvariant); - return c; - } - - if ( dataRec.nFlag != LOWER_CASE ) - { - LOGEXIT("PAL_ToUpperInvariant returns int %d\n", c ); - PERF_EXIT(PAL_ToUpperInvariant); - return c; - } - else - { - LOGEXIT("PAL_ToUpperInvariant returns int %d\n", dataRec.nOpposingCase ); - PERF_EXIT(PAL_ToUpperInvariant); - return dataRec.nOpposingCase; - } -} - -char16_t -__cdecl -PAL_ToLowerInvariant( char16_t c ) -{ - UnicodeDataRec dataRec; - - PERF_ENTRY(PAL_ToLowerInvariant); - ENTRY("PAL_ToLowerInvariant (c=%d)\n", c); - - if (!GetUnicodeData(c, &dataRec)) - { - TRACE( "Unable to retrieve unicode data for the character %c.\n", c ); - LOGEXIT("PAL_ToLowerInvariant returns int %d\n", c ); - PERF_EXIT(PAL_ToLowerInvariant); - return c; - } - - if ( dataRec.nFlag != UPPER_CASE ) - { - LOGEXIT("PAL_ToLowerInvariant returns int %d\n", c ); - PERF_EXIT(PAL_ToLowerInvariant); - return c; - } - else - { - LOGEXIT("PAL_ToLowerInvariant returns int %d\n", dataRec.nOpposingCase ); - PERF_EXIT(PAL_ToLowerInvariant); - return dataRec.nOpposingCase; - } -} - /*++ Function: GetConsoleOutputCP diff --git a/src/coreclr/pal/src/locale/unicodedata.cpp b/src/coreclr/pal/src/locale/unicodedata.cpp deleted file mode 100644 index 74ae79819bb66..0000000000000 --- a/src/coreclr/pal/src/locale/unicodedata.cpp +++ /dev/null @@ -1,2372 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -#include "pal/unicodedata.h" - -// -// THIS FILE IS GENERATED. DO NOT HAND EDIT. -// IF YOU NEED TO UPDATE UNICODE VERSION FOLLOW THE GUIDE AT src/libraries/System.Private.CoreLib/Tools/GenUnicodeProp/Updating-Unicode-Versions.md -// - -CONST UnicodeDataRec UnicodeData[] = { - { 0x41, UPPER_CASE, 0x61 }, - { 0x42, UPPER_CASE, 0x62 }, - { 0x43, UPPER_CASE, 0x63 }, - { 0x44, UPPER_CASE, 0x64 }, - { 0x45, UPPER_CASE, 0x65 }, - { 0x46, UPPER_CASE, 0x66 }, - { 0x47, UPPER_CASE, 0x67 }, - { 0x48, UPPER_CASE, 0x68 }, - { 0x49, UPPER_CASE, 0x69 }, - { 0x4A, UPPER_CASE, 0x6A }, - { 0x4B, UPPER_CASE, 0x6B }, - { 0x4C, UPPER_CASE, 0x6C }, - { 0x4D, UPPER_CASE, 0x6D }, - { 0x4E, UPPER_CASE, 0x6E }, - { 0x4F, UPPER_CASE, 0x6F }, - { 0x50, UPPER_CASE, 0x70 }, - { 0x51, UPPER_CASE, 0x71 }, - { 0x52, UPPER_CASE, 0x72 }, - { 0x53, UPPER_CASE, 0x73 }, - { 0x54, UPPER_CASE, 0x74 }, - { 0x55, UPPER_CASE, 0x75 }, - { 0x56, UPPER_CASE, 0x76 }, - { 0x57, UPPER_CASE, 0x77 }, - { 0x58, UPPER_CASE, 0x78 }, - { 0x59, UPPER_CASE, 0x79 }, - { 0x5A, UPPER_CASE, 0x7A }, - { 0x61, LOWER_CASE, 0x41 }, - { 0x62, LOWER_CASE, 0x42 }, - { 0x63, LOWER_CASE, 0x43 }, - { 0x64, LOWER_CASE, 0x44 }, - { 0x65, LOWER_CASE, 0x45 }, - { 0x66, LOWER_CASE, 0x46 }, - { 0x67, LOWER_CASE, 0x47 }, - { 0x68, LOWER_CASE, 0x48 }, - { 0x69, LOWER_CASE, 0x49 }, - { 0x6A, LOWER_CASE, 0x4A }, - { 0x6B, LOWER_CASE, 0x4B }, - { 0x6C, LOWER_CASE, 0x4C }, - { 0x6D, LOWER_CASE, 0x4D }, - { 0x6E, LOWER_CASE, 0x4E }, - { 0x6F, LOWER_CASE, 0x4F }, - { 0x70, LOWER_CASE, 0x50 }, - { 0x71, LOWER_CASE, 0x51 }, - { 0x72, LOWER_CASE, 0x52 }, - { 0x73, LOWER_CASE, 0x53 }, - { 0x74, LOWER_CASE, 0x54 }, - { 0x75, LOWER_CASE, 0x55 }, - { 0x76, LOWER_CASE, 0x56 }, - { 0x77, LOWER_CASE, 0x57 }, - { 0x78, LOWER_CASE, 0x58 }, - { 0x79, LOWER_CASE, 0x59 }, - { 0x7A, LOWER_CASE, 0x5A }, - { 0xB5, LOWER_CASE, 0x39C }, - { 0xC0, UPPER_CASE, 0xE0 }, - { 0xC1, UPPER_CASE, 0xE1 }, - { 0xC2, UPPER_CASE, 0xE2 }, - { 0xC3, UPPER_CASE, 0xE3 }, - { 0xC4, UPPER_CASE, 0xE4 }, - { 0xC5, UPPER_CASE, 0xE5 }, - { 0xC6, UPPER_CASE, 0xE6 }, - { 0xC7, UPPER_CASE, 0xE7 }, - { 0xC8, UPPER_CASE, 0xE8 }, - { 0xC9, UPPER_CASE, 0xE9 }, - { 0xCA, UPPER_CASE, 0xEA }, - { 0xCB, UPPER_CASE, 0xEB }, - { 0xCC, UPPER_CASE, 0xEC }, - { 0xCD, UPPER_CASE, 0xED }, - { 0xCE, UPPER_CASE, 0xEE }, - { 0xCF, UPPER_CASE, 0xEF }, - { 0xD0, UPPER_CASE, 0xF0 }, - { 0xD1, UPPER_CASE, 0xF1 }, - { 0xD2, UPPER_CASE, 0xF2 }, - { 0xD3, UPPER_CASE, 0xF3 }, - { 0xD4, UPPER_CASE, 0xF4 }, - { 0xD5, UPPER_CASE, 0xF5 }, - { 0xD6, UPPER_CASE, 0xF6 }, - { 0xD8, UPPER_CASE, 0xF8 }, - { 0xD9, UPPER_CASE, 0xF9 }, - { 0xDA, UPPER_CASE, 0xFA }, - { 0xDB, UPPER_CASE, 0xFB }, - { 0xDC, UPPER_CASE, 0xFC }, - { 0xDD, UPPER_CASE, 0xFD }, - { 0xDE, UPPER_CASE, 0xFE }, - { 0xE0, LOWER_CASE, 0xC0 }, - { 0xE1, LOWER_CASE, 0xC1 }, - { 0xE2, LOWER_CASE, 0xC2 }, - { 0xE3, LOWER_CASE, 0xC3 }, - { 0xE4, LOWER_CASE, 0xC4 }, - { 0xE5, LOWER_CASE, 0xC5 }, - { 0xE6, LOWER_CASE, 0xC6 }, - { 0xE7, LOWER_CASE, 0xC7 }, - { 0xE8, LOWER_CASE, 0xC8 }, - { 0xE9, LOWER_CASE, 0xC9 }, - { 0xEA, LOWER_CASE, 0xCA }, - { 0xEB, LOWER_CASE, 0xCB }, - { 0xEC, LOWER_CASE, 0xCC }, - { 0xED, LOWER_CASE, 0xCD }, - { 0xEE, LOWER_CASE, 0xCE }, - { 0xEF, LOWER_CASE, 0xCF }, - { 0xF0, LOWER_CASE, 0xD0 }, - { 0xF1, LOWER_CASE, 0xD1 }, - { 0xF2, LOWER_CASE, 0xD2 }, - { 0xF3, LOWER_CASE, 0xD3 }, - { 0xF4, LOWER_CASE, 0xD4 }, - { 0xF5, LOWER_CASE, 0xD5 }, - { 0xF6, LOWER_CASE, 0xD6 }, - { 0xF8, LOWER_CASE, 0xD8 }, - { 0xF9, LOWER_CASE, 0xD9 }, - { 0xFA, LOWER_CASE, 0xDA }, - { 0xFB, LOWER_CASE, 0xDB }, - { 0xFC, LOWER_CASE, 0xDC }, - { 0xFD, LOWER_CASE, 0xDD }, - { 0xFE, LOWER_CASE, 0xDE }, - { 0xFF, LOWER_CASE, 0x178 }, - { 0x100, UPPER_CASE, 0x101 }, - { 0x101, LOWER_CASE, 0x100 }, - { 0x102, UPPER_CASE, 0x103 }, - { 0x103, LOWER_CASE, 0x102 }, - { 0x104, UPPER_CASE, 0x105 }, - { 0x105, LOWER_CASE, 0x104 }, - { 0x106, UPPER_CASE, 0x107 }, - { 0x107, LOWER_CASE, 0x106 }, - { 0x108, UPPER_CASE, 0x109 }, - { 0x109, LOWER_CASE, 0x108 }, - { 0x10A, UPPER_CASE, 0x10B }, - { 0x10B, LOWER_CASE, 0x10A }, - { 0x10C, UPPER_CASE, 0x10D }, - { 0x10D, LOWER_CASE, 0x10C }, - { 0x10E, UPPER_CASE, 0x10F }, - { 0x10F, LOWER_CASE, 0x10E }, - { 0x110, UPPER_CASE, 0x111 }, - { 0x111, LOWER_CASE, 0x110 }, - { 0x112, UPPER_CASE, 0x113 }, - { 0x113, LOWER_CASE, 0x112 }, - { 0x114, UPPER_CASE, 0x115 }, - { 0x115, LOWER_CASE, 0x114 }, - { 0x116, UPPER_CASE, 0x117 }, - { 0x117, LOWER_CASE, 0x116 }, - { 0x118, UPPER_CASE, 0x119 }, - { 0x119, LOWER_CASE, 0x118 }, - { 0x11A, UPPER_CASE, 0x11B }, - { 0x11B, LOWER_CASE, 0x11A }, - { 0x11C, UPPER_CASE, 0x11D }, - { 0x11D, LOWER_CASE, 0x11C }, - { 0x11E, UPPER_CASE, 0x11F }, - { 0x11F, LOWER_CASE, 0x11E }, - { 0x120, UPPER_CASE, 0x121 }, - { 0x121, LOWER_CASE, 0x120 }, - { 0x122, UPPER_CASE, 0x123 }, - { 0x123, LOWER_CASE, 0x122 }, - { 0x124, UPPER_CASE, 0x125 }, - { 0x125, LOWER_CASE, 0x124 }, - { 0x126, UPPER_CASE, 0x127 }, - { 0x127, LOWER_CASE, 0x126 }, - { 0x128, UPPER_CASE, 0x129 }, - { 0x129, LOWER_CASE, 0x128 }, - { 0x12A, UPPER_CASE, 0x12B }, - { 0x12B, LOWER_CASE, 0x12A }, - { 0x12C, UPPER_CASE, 0x12D }, - { 0x12D, LOWER_CASE, 0x12C }, - { 0x12E, UPPER_CASE, 0x12F }, - { 0x12F, LOWER_CASE, 0x12E }, - { 0x130, UPPER_CASE, 0x69 }, - { 0x131, LOWER_CASE, 0x49 }, - { 0x132, UPPER_CASE, 0x133 }, - { 0x133, LOWER_CASE, 0x132 }, - { 0x134, UPPER_CASE, 0x135 }, - { 0x135, LOWER_CASE, 0x134 }, - { 0x136, UPPER_CASE, 0x137 }, - { 0x137, LOWER_CASE, 0x136 }, - { 0x139, UPPER_CASE, 0x13A }, - { 0x13A, LOWER_CASE, 0x139 }, - { 0x13B, UPPER_CASE, 0x13C }, - { 0x13C, LOWER_CASE, 0x13B }, - { 0x13D, UPPER_CASE, 0x13E }, - { 0x13E, LOWER_CASE, 0x13D }, - { 0x13F, UPPER_CASE, 0x140 }, - { 0x140, LOWER_CASE, 0x13F }, - { 0x141, UPPER_CASE, 0x142 }, - { 0x142, LOWER_CASE, 0x141 }, - { 0x143, UPPER_CASE, 0x144 }, - { 0x144, LOWER_CASE, 0x143 }, - { 0x145, UPPER_CASE, 0x146 }, - { 0x146, LOWER_CASE, 0x145 }, - { 0x147, UPPER_CASE, 0x148 }, - { 0x148, LOWER_CASE, 0x147 }, - { 0x14A, UPPER_CASE, 0x14B }, - { 0x14B, LOWER_CASE, 0x14A }, - { 0x14C, UPPER_CASE, 0x14D }, - { 0x14D, LOWER_CASE, 0x14C }, - { 0x14E, UPPER_CASE, 0x14F }, - { 0x14F, LOWER_CASE, 0x14E }, - { 0x150, UPPER_CASE, 0x151 }, - { 0x151, LOWER_CASE, 0x150 }, - { 0x152, UPPER_CASE, 0x153 }, - { 0x153, LOWER_CASE, 0x152 }, - { 0x154, UPPER_CASE, 0x155 }, - { 0x155, LOWER_CASE, 0x154 }, - { 0x156, UPPER_CASE, 0x157 }, - { 0x157, LOWER_CASE, 0x156 }, - { 0x158, UPPER_CASE, 0x159 }, - { 0x159, LOWER_CASE, 0x158 }, - { 0x15A, UPPER_CASE, 0x15B }, - { 0x15B, LOWER_CASE, 0x15A }, - { 0x15C, UPPER_CASE, 0x15D }, - { 0x15D, LOWER_CASE, 0x15C }, - { 0x15E, UPPER_CASE, 0x15F }, - { 0x15F, LOWER_CASE, 0x15E }, - { 0x160, UPPER_CASE, 0x161 }, - { 0x161, LOWER_CASE, 0x160 }, - { 0x162, UPPER_CASE, 0x163 }, - { 0x163, LOWER_CASE, 0x162 }, - { 0x164, UPPER_CASE, 0x165 }, - { 0x165, LOWER_CASE, 0x164 }, - { 0x166, UPPER_CASE, 0x167 }, - { 0x167, LOWER_CASE, 0x166 }, - { 0x168, UPPER_CASE, 0x169 }, - { 0x169, LOWER_CASE, 0x168 }, - { 0x16A, UPPER_CASE, 0x16B }, - { 0x16B, LOWER_CASE, 0x16A }, - { 0x16C, UPPER_CASE, 0x16D }, - { 0x16D, LOWER_CASE, 0x16C }, - { 0x16E, UPPER_CASE, 0x16F }, - { 0x16F, LOWER_CASE, 0x16E }, - { 0x170, UPPER_CASE, 0x171 }, - { 0x171, LOWER_CASE, 0x170 }, - { 0x172, UPPER_CASE, 0x173 }, - { 0x173, LOWER_CASE, 0x172 }, - { 0x174, UPPER_CASE, 0x175 }, - { 0x175, LOWER_CASE, 0x174 }, - { 0x176, UPPER_CASE, 0x177 }, - { 0x177, LOWER_CASE, 0x176 }, - { 0x178, UPPER_CASE, 0xFF }, - { 0x179, UPPER_CASE, 0x17A }, - { 0x17A, LOWER_CASE, 0x179 }, - { 0x17B, UPPER_CASE, 0x17C }, - { 0x17C, LOWER_CASE, 0x17B }, - { 0x17D, UPPER_CASE, 0x17E }, - { 0x17E, LOWER_CASE, 0x17D }, - { 0x17F, LOWER_CASE, 0x53 }, - { 0x180, LOWER_CASE, 0x243 }, - { 0x181, UPPER_CASE, 0x253 }, - { 0x182, UPPER_CASE, 0x183 }, - { 0x183, LOWER_CASE, 0x182 }, - { 0x184, UPPER_CASE, 0x185 }, - { 0x185, LOWER_CASE, 0x184 }, - { 0x186, UPPER_CASE, 0x254 }, - { 0x187, UPPER_CASE, 0x188 }, - { 0x188, LOWER_CASE, 0x187 }, - { 0x189, UPPER_CASE, 0x256 }, - { 0x18A, UPPER_CASE, 0x257 }, - { 0x18B, UPPER_CASE, 0x18C }, - { 0x18C, LOWER_CASE, 0x18B }, - { 0x18E, UPPER_CASE, 0x1DD }, - { 0x18F, UPPER_CASE, 0x259 }, - { 0x190, UPPER_CASE, 0x25B }, - { 0x191, UPPER_CASE, 0x192 }, - { 0x192, LOWER_CASE, 0x191 }, - { 0x193, UPPER_CASE, 0x260 }, - { 0x194, UPPER_CASE, 0x263 }, - { 0x195, LOWER_CASE, 0x1F6 }, - { 0x196, UPPER_CASE, 0x269 }, - { 0x197, UPPER_CASE, 0x268 }, - { 0x198, UPPER_CASE, 0x199 }, - { 0x199, LOWER_CASE, 0x198 }, - { 0x19A, LOWER_CASE, 0x23D }, - { 0x19C, UPPER_CASE, 0x26F }, - { 0x19D, UPPER_CASE, 0x272 }, - { 0x19E, LOWER_CASE, 0x220 }, - { 0x19F, UPPER_CASE, 0x275 }, - { 0x1A0, UPPER_CASE, 0x1A1 }, - { 0x1A1, LOWER_CASE, 0x1A0 }, - { 0x1A2, UPPER_CASE, 0x1A3 }, - { 0x1A3, LOWER_CASE, 0x1A2 }, - { 0x1A4, UPPER_CASE, 0x1A5 }, - { 0x1A5, LOWER_CASE, 0x1A4 }, - { 0x1A6, UPPER_CASE, 0x280 }, - { 0x1A7, UPPER_CASE, 0x1A8 }, - { 0x1A8, LOWER_CASE, 0x1A7 }, - { 0x1A9, UPPER_CASE, 0x283 }, - { 0x1AC, UPPER_CASE, 0x1AD }, - { 0x1AD, LOWER_CASE, 0x1AC }, - { 0x1AE, UPPER_CASE, 0x288 }, - { 0x1AF, UPPER_CASE, 0x1B0 }, - { 0x1B0, LOWER_CASE, 0x1AF }, - { 0x1B1, UPPER_CASE, 0x28A }, - { 0x1B2, UPPER_CASE, 0x28B }, - { 0x1B3, UPPER_CASE, 0x1B4 }, - { 0x1B4, LOWER_CASE, 0x1B3 }, - { 0x1B5, UPPER_CASE, 0x1B6 }, - { 0x1B6, LOWER_CASE, 0x1B5 }, - { 0x1B7, UPPER_CASE, 0x292 }, - { 0x1B8, UPPER_CASE, 0x1B9 }, - { 0x1B9, LOWER_CASE, 0x1B8 }, - { 0x1BC, UPPER_CASE, 0x1BD }, - { 0x1BD, LOWER_CASE, 0x1BC }, - { 0x1BF, LOWER_CASE, 0x1F7 }, - { 0x1C4, UPPER_CASE, 0x1C6 }, - { 0x1C5, LOWER_CASE, 0x1C4 }, - { 0x1C6, LOWER_CASE, 0x1C4 }, - { 0x1C7, UPPER_CASE, 0x1C9 }, - { 0x1C8, LOWER_CASE, 0x1C7 }, - { 0x1C9, LOWER_CASE, 0x1C7 }, - { 0x1CA, UPPER_CASE, 0x1CC }, - { 0x1CB, LOWER_CASE, 0x1CA }, - { 0x1CC, LOWER_CASE, 0x1CA }, - { 0x1CD, UPPER_CASE, 0x1CE }, - { 0x1CE, LOWER_CASE, 0x1CD }, - { 0x1CF, UPPER_CASE, 0x1D0 }, - { 0x1D0, LOWER_CASE, 0x1CF }, - { 0x1D1, UPPER_CASE, 0x1D2 }, - { 0x1D2, LOWER_CASE, 0x1D1 }, - { 0x1D3, UPPER_CASE, 0x1D4 }, - { 0x1D4, LOWER_CASE, 0x1D3 }, - { 0x1D5, UPPER_CASE, 0x1D6 }, - { 0x1D6, LOWER_CASE, 0x1D5 }, - { 0x1D7, UPPER_CASE, 0x1D8 }, - { 0x1D8, LOWER_CASE, 0x1D7 }, - { 0x1D9, UPPER_CASE, 0x1DA }, - { 0x1DA, LOWER_CASE, 0x1D9 }, - { 0x1DB, UPPER_CASE, 0x1DC }, - { 0x1DC, LOWER_CASE, 0x1DB }, - { 0x1DD, LOWER_CASE, 0x18E }, - { 0x1DE, UPPER_CASE, 0x1DF }, - { 0x1DF, LOWER_CASE, 0x1DE }, - { 0x1E0, UPPER_CASE, 0x1E1 }, - { 0x1E1, LOWER_CASE, 0x1E0 }, - { 0x1E2, UPPER_CASE, 0x1E3 }, - { 0x1E3, LOWER_CASE, 0x1E2 }, - { 0x1E4, UPPER_CASE, 0x1E5 }, - { 0x1E5, LOWER_CASE, 0x1E4 }, - { 0x1E6, UPPER_CASE, 0x1E7 }, - { 0x1E7, LOWER_CASE, 0x1E6 }, - { 0x1E8, UPPER_CASE, 0x1E9 }, - { 0x1E9, LOWER_CASE, 0x1E8 }, - { 0x1EA, UPPER_CASE, 0x1EB }, - { 0x1EB, LOWER_CASE, 0x1EA }, - { 0x1EC, UPPER_CASE, 0x1ED }, - { 0x1ED, LOWER_CASE, 0x1EC }, - { 0x1EE, UPPER_CASE, 0x1EF }, - { 0x1EF, LOWER_CASE, 0x1EE }, - { 0x1F1, UPPER_CASE, 0x1F3 }, - { 0x1F2, LOWER_CASE, 0x1F1 }, - { 0x1F3, LOWER_CASE, 0x1F1 }, - { 0x1F4, UPPER_CASE, 0x1F5 }, - { 0x1F5, LOWER_CASE, 0x1F4 }, - { 0x1F6, UPPER_CASE, 0x195 }, - { 0x1F7, UPPER_CASE, 0x1BF }, - { 0x1F8, UPPER_CASE, 0x1F9 }, - { 0x1F9, LOWER_CASE, 0x1F8 }, - { 0x1FA, UPPER_CASE, 0x1FB }, - { 0x1FB, LOWER_CASE, 0x1FA }, - { 0x1FC, UPPER_CASE, 0x1FD }, - { 0x1FD, LOWER_CASE, 0x1FC }, - { 0x1FE, UPPER_CASE, 0x1FF }, - { 0x1FF, LOWER_CASE, 0x1FE }, - { 0x200, UPPER_CASE, 0x201 }, - { 0x201, LOWER_CASE, 0x200 }, - { 0x202, UPPER_CASE, 0x203 }, - { 0x203, LOWER_CASE, 0x202 }, - { 0x204, UPPER_CASE, 0x205 }, - { 0x205, LOWER_CASE, 0x204 }, - { 0x206, UPPER_CASE, 0x207 }, - { 0x207, LOWER_CASE, 0x206 }, - { 0x208, UPPER_CASE, 0x209 }, - { 0x209, LOWER_CASE, 0x208 }, - { 0x20A, UPPER_CASE, 0x20B }, - { 0x20B, LOWER_CASE, 0x20A }, - { 0x20C, UPPER_CASE, 0x20D }, - { 0x20D, LOWER_CASE, 0x20C }, - { 0x20E, UPPER_CASE, 0x20F }, - { 0x20F, LOWER_CASE, 0x20E }, - { 0x210, UPPER_CASE, 0x211 }, - { 0x211, LOWER_CASE, 0x210 }, - { 0x212, UPPER_CASE, 0x213 }, - { 0x213, LOWER_CASE, 0x212 }, - { 0x214, UPPER_CASE, 0x215 }, - { 0x215, LOWER_CASE, 0x214 }, - { 0x216, UPPER_CASE, 0x217 }, - { 0x217, LOWER_CASE, 0x216 }, - { 0x218, UPPER_CASE, 0x219 }, - { 0x219, LOWER_CASE, 0x218 }, - { 0x21A, UPPER_CASE, 0x21B }, - { 0x21B, LOWER_CASE, 0x21A }, - { 0x21C, UPPER_CASE, 0x21D }, - { 0x21D, LOWER_CASE, 0x21C }, - { 0x21E, UPPER_CASE, 0x21F }, - { 0x21F, LOWER_CASE, 0x21E }, - { 0x220, UPPER_CASE, 0x19E }, - { 0x222, UPPER_CASE, 0x223 }, - { 0x223, LOWER_CASE, 0x222 }, - { 0x224, UPPER_CASE, 0x225 }, - { 0x225, LOWER_CASE, 0x224 }, - { 0x226, UPPER_CASE, 0x227 }, - { 0x227, LOWER_CASE, 0x226 }, - { 0x228, UPPER_CASE, 0x229 }, - { 0x229, LOWER_CASE, 0x228 }, - { 0x22A, UPPER_CASE, 0x22B }, - { 0x22B, LOWER_CASE, 0x22A }, - { 0x22C, UPPER_CASE, 0x22D }, - { 0x22D, LOWER_CASE, 0x22C }, - { 0x22E, UPPER_CASE, 0x22F }, - { 0x22F, LOWER_CASE, 0x22E }, - { 0x230, UPPER_CASE, 0x231 }, - { 0x231, LOWER_CASE, 0x230 }, - { 0x232, UPPER_CASE, 0x233 }, - { 0x233, LOWER_CASE, 0x232 }, - { 0x23A, UPPER_CASE, 0x2C65 }, - { 0x23B, UPPER_CASE, 0x23C }, - { 0x23C, LOWER_CASE, 0x23B }, - { 0x23D, UPPER_CASE, 0x19A }, - { 0x23E, UPPER_CASE, 0x2C66 }, - { 0x23F, LOWER_CASE, 0x2C7E }, - { 0x240, LOWER_CASE, 0x2C7F }, - { 0x241, UPPER_CASE, 0x242 }, - { 0x242, LOWER_CASE, 0x241 }, - { 0x243, UPPER_CASE, 0x180 }, - { 0x244, UPPER_CASE, 0x289 }, - { 0x245, UPPER_CASE, 0x28C }, - { 0x246, UPPER_CASE, 0x247 }, - { 0x247, LOWER_CASE, 0x246 }, - { 0x248, UPPER_CASE, 0x249 }, - { 0x249, LOWER_CASE, 0x248 }, - { 0x24A, UPPER_CASE, 0x24B }, - { 0x24B, LOWER_CASE, 0x24A }, - { 0x24C, UPPER_CASE, 0x24D }, - { 0x24D, LOWER_CASE, 0x24C }, - { 0x24E, UPPER_CASE, 0x24F }, - { 0x24F, LOWER_CASE, 0x24E }, - { 0x250, LOWER_CASE, 0x2C6F }, - { 0x251, LOWER_CASE, 0x2C6D }, - { 0x252, LOWER_CASE, 0x2C70 }, - { 0x253, LOWER_CASE, 0x181 }, - { 0x254, LOWER_CASE, 0x186 }, - { 0x256, LOWER_CASE, 0x189 }, - { 0x257, LOWER_CASE, 0x18A }, - { 0x259, LOWER_CASE, 0x18F }, - { 0x25B, LOWER_CASE, 0x190 }, - { 0x25C, LOWER_CASE, 0xA7AB }, - { 0x260, LOWER_CASE, 0x193 }, - { 0x261, LOWER_CASE, 0xA7AC }, - { 0x263, LOWER_CASE, 0x194 }, - { 0x265, LOWER_CASE, 0xA78D }, - { 0x266, LOWER_CASE, 0xA7AA }, - { 0x268, LOWER_CASE, 0x197 }, - { 0x269, LOWER_CASE, 0x196 }, - { 0x26A, LOWER_CASE, 0xA7AE }, - { 0x26B, LOWER_CASE, 0x2C62 }, - { 0x26C, LOWER_CASE, 0xA7AD }, - { 0x26F, LOWER_CASE, 0x19C }, - { 0x271, LOWER_CASE, 0x2C6E }, - { 0x272, LOWER_CASE, 0x19D }, - { 0x275, LOWER_CASE, 0x19F }, - { 0x27D, LOWER_CASE, 0x2C64 }, - { 0x280, LOWER_CASE, 0x1A6 }, - { 0x282, LOWER_CASE, 0xA7C5 }, - { 0x283, LOWER_CASE, 0x1A9 }, - { 0x287, LOWER_CASE, 0xA7B1 }, - { 0x288, LOWER_CASE, 0x1AE }, - { 0x289, LOWER_CASE, 0x244 }, - { 0x28A, LOWER_CASE, 0x1B1 }, - { 0x28B, LOWER_CASE, 0x1B2 }, - { 0x28C, LOWER_CASE, 0x245 }, - { 0x292, LOWER_CASE, 0x1B7 }, - { 0x29D, LOWER_CASE, 0xA7B2 }, - { 0x29E, LOWER_CASE, 0xA7B0 }, - { 0x345, LOWER_CASE, 0x399 }, - { 0x370, UPPER_CASE, 0x371 }, - { 0x371, LOWER_CASE, 0x370 }, - { 0x372, UPPER_CASE, 0x373 }, - { 0x373, LOWER_CASE, 0x372 }, - { 0x376, UPPER_CASE, 0x377 }, - { 0x377, LOWER_CASE, 0x376 }, - { 0x37B, LOWER_CASE, 0x3FD }, - { 0x37C, LOWER_CASE, 0x3FE }, - { 0x37D, LOWER_CASE, 0x3FF }, - { 0x37F, UPPER_CASE, 0x3F3 }, - { 0x386, UPPER_CASE, 0x3AC }, - { 0x388, UPPER_CASE, 0x3AD }, - { 0x389, UPPER_CASE, 0x3AE }, - { 0x38A, UPPER_CASE, 0x3AF }, - { 0x38C, UPPER_CASE, 0x3CC }, - { 0x38E, UPPER_CASE, 0x3CD }, - { 0x38F, UPPER_CASE, 0x3CE }, - { 0x391, UPPER_CASE, 0x3B1 }, - { 0x392, UPPER_CASE, 0x3B2 }, - { 0x393, UPPER_CASE, 0x3B3 }, - { 0x394, UPPER_CASE, 0x3B4 }, - { 0x395, UPPER_CASE, 0x3B5 }, - { 0x396, UPPER_CASE, 0x3B6 }, - { 0x397, UPPER_CASE, 0x3B7 }, - { 0x398, UPPER_CASE, 0x3B8 }, - { 0x399, UPPER_CASE, 0x3B9 }, - { 0x39A, UPPER_CASE, 0x3BA }, - { 0x39B, UPPER_CASE, 0x3BB }, - { 0x39C, UPPER_CASE, 0x3BC }, - { 0x39D, UPPER_CASE, 0x3BD }, - { 0x39E, UPPER_CASE, 0x3BE }, - { 0x39F, UPPER_CASE, 0x3BF }, - { 0x3A0, UPPER_CASE, 0x3C0 }, - { 0x3A1, UPPER_CASE, 0x3C1 }, - { 0x3A3, UPPER_CASE, 0x3C3 }, - { 0x3A4, UPPER_CASE, 0x3C4 }, - { 0x3A5, UPPER_CASE, 0x3C5 }, - { 0x3A6, UPPER_CASE, 0x3C6 }, - { 0x3A7, UPPER_CASE, 0x3C7 }, - { 0x3A8, UPPER_CASE, 0x3C8 }, - { 0x3A9, UPPER_CASE, 0x3C9 }, - { 0x3AA, UPPER_CASE, 0x3CA }, - { 0x3AB, UPPER_CASE, 0x3CB }, - { 0x3AC, LOWER_CASE, 0x386 }, - { 0x3AD, LOWER_CASE, 0x388 }, - { 0x3AE, LOWER_CASE, 0x389 }, - { 0x3AF, LOWER_CASE, 0x38A }, - { 0x3B1, LOWER_CASE, 0x391 }, - { 0x3B2, LOWER_CASE, 0x392 }, - { 0x3B3, LOWER_CASE, 0x393 }, - { 0x3B4, LOWER_CASE, 0x394 }, - { 0x3B5, LOWER_CASE, 0x395 }, - { 0x3B6, LOWER_CASE, 0x396 }, - { 0x3B7, LOWER_CASE, 0x397 }, - { 0x3B8, LOWER_CASE, 0x398 }, - { 0x3B9, LOWER_CASE, 0x399 }, - { 0x3BA, LOWER_CASE, 0x39A }, - { 0x3BB, LOWER_CASE, 0x39B }, - { 0x3BC, LOWER_CASE, 0x39C }, - { 0x3BD, LOWER_CASE, 0x39D }, - { 0x3BE, LOWER_CASE, 0x39E }, - { 0x3BF, LOWER_CASE, 0x39F }, - { 0x3C0, LOWER_CASE, 0x3A0 }, - { 0x3C1, LOWER_CASE, 0x3A1 }, - { 0x3C2, LOWER_CASE, 0x3A3 }, - { 0x3C3, LOWER_CASE, 0x3A3 }, - { 0x3C4, LOWER_CASE, 0x3A4 }, - { 0x3C5, LOWER_CASE, 0x3A5 }, - { 0x3C6, LOWER_CASE, 0x3A6 }, - { 0x3C7, LOWER_CASE, 0x3A7 }, - { 0x3C8, LOWER_CASE, 0x3A8 }, - { 0x3C9, LOWER_CASE, 0x3A9 }, - { 0x3CA, LOWER_CASE, 0x3AA }, - { 0x3CB, LOWER_CASE, 0x3AB }, - { 0x3CC, LOWER_CASE, 0x38C }, - { 0x3CD, LOWER_CASE, 0x38E }, - { 0x3CE, LOWER_CASE, 0x38F }, - { 0x3CF, UPPER_CASE, 0x3D7 }, - { 0x3D0, LOWER_CASE, 0x392 }, - { 0x3D1, LOWER_CASE, 0x398 }, - { 0x3D5, LOWER_CASE, 0x3A6 }, - { 0x3D6, LOWER_CASE, 0x3A0 }, - { 0x3D7, LOWER_CASE, 0x3CF }, - { 0x3D8, UPPER_CASE, 0x3D9 }, - { 0x3D9, LOWER_CASE, 0x3D8 }, - { 0x3DA, UPPER_CASE, 0x3DB }, - { 0x3DB, LOWER_CASE, 0x3DA }, - { 0x3DC, UPPER_CASE, 0x3DD }, - { 0x3DD, LOWER_CASE, 0x3DC }, - { 0x3DE, UPPER_CASE, 0x3DF }, - { 0x3DF, LOWER_CASE, 0x3DE }, - { 0x3E0, UPPER_CASE, 0x3E1 }, - { 0x3E1, LOWER_CASE, 0x3E0 }, - { 0x3E2, UPPER_CASE, 0x3E3 }, - { 0x3E3, LOWER_CASE, 0x3E2 }, - { 0x3E4, UPPER_CASE, 0x3E5 }, - { 0x3E5, LOWER_CASE, 0x3E4 }, - { 0x3E6, UPPER_CASE, 0x3E7 }, - { 0x3E7, LOWER_CASE, 0x3E6 }, - { 0x3E8, UPPER_CASE, 0x3E9 }, - { 0x3E9, LOWER_CASE, 0x3E8 }, - { 0x3EA, UPPER_CASE, 0x3EB }, - { 0x3EB, LOWER_CASE, 0x3EA }, - { 0x3EC, UPPER_CASE, 0x3ED }, - { 0x3ED, LOWER_CASE, 0x3EC }, - { 0x3EE, UPPER_CASE, 0x3EF }, - { 0x3EF, LOWER_CASE, 0x3EE }, - { 0x3F0, LOWER_CASE, 0x39A }, - { 0x3F1, LOWER_CASE, 0x3A1 }, - { 0x3F2, LOWER_CASE, 0x3F9 }, - { 0x3F3, LOWER_CASE, 0x37F }, - { 0x3F4, UPPER_CASE, 0x3B8 }, - { 0x3F5, LOWER_CASE, 0x395 }, - { 0x3F7, UPPER_CASE, 0x3F8 }, - { 0x3F8, LOWER_CASE, 0x3F7 }, - { 0x3F9, UPPER_CASE, 0x3F2 }, - { 0x3FA, UPPER_CASE, 0x3FB }, - { 0x3FB, LOWER_CASE, 0x3FA }, - { 0x3FD, UPPER_CASE, 0x37B }, - { 0x3FE, UPPER_CASE, 0x37C }, - { 0x3FF, UPPER_CASE, 0x37D }, - { 0x400, UPPER_CASE, 0x450 }, - { 0x401, UPPER_CASE, 0x451 }, - { 0x402, UPPER_CASE, 0x452 }, - { 0x403, UPPER_CASE, 0x453 }, - { 0x404, UPPER_CASE, 0x454 }, - { 0x405, UPPER_CASE, 0x455 }, - { 0x406, UPPER_CASE, 0x456 }, - { 0x407, UPPER_CASE, 0x457 }, - { 0x408, UPPER_CASE, 0x458 }, - { 0x409, UPPER_CASE, 0x459 }, - { 0x40A, UPPER_CASE, 0x45A }, - { 0x40B, UPPER_CASE, 0x45B }, - { 0x40C, UPPER_CASE, 0x45C }, - { 0x40D, UPPER_CASE, 0x45D }, - { 0x40E, UPPER_CASE, 0x45E }, - { 0x40F, UPPER_CASE, 0x45F }, - { 0x410, UPPER_CASE, 0x430 }, - { 0x411, UPPER_CASE, 0x431 }, - { 0x412, UPPER_CASE, 0x432 }, - { 0x413, UPPER_CASE, 0x433 }, - { 0x414, UPPER_CASE, 0x434 }, - { 0x415, UPPER_CASE, 0x435 }, - { 0x416, UPPER_CASE, 0x436 }, - { 0x417, UPPER_CASE, 0x437 }, - { 0x418, UPPER_CASE, 0x438 }, - { 0x419, UPPER_CASE, 0x439 }, - { 0x41A, UPPER_CASE, 0x43A }, - { 0x41B, UPPER_CASE, 0x43B }, - { 0x41C, UPPER_CASE, 0x43C }, - { 0x41D, UPPER_CASE, 0x43D }, - { 0x41E, UPPER_CASE, 0x43E }, - { 0x41F, UPPER_CASE, 0x43F }, - { 0x420, UPPER_CASE, 0x440 }, - { 0x421, UPPER_CASE, 0x441 }, - { 0x422, UPPER_CASE, 0x442 }, - { 0x423, UPPER_CASE, 0x443 }, - { 0x424, UPPER_CASE, 0x444 }, - { 0x425, UPPER_CASE, 0x445 }, - { 0x426, UPPER_CASE, 0x446 }, - { 0x427, UPPER_CASE, 0x447 }, - { 0x428, UPPER_CASE, 0x448 }, - { 0x429, UPPER_CASE, 0x449 }, - { 0x42A, UPPER_CASE, 0x44A }, - { 0x42B, UPPER_CASE, 0x44B }, - { 0x42C, UPPER_CASE, 0x44C }, - { 0x42D, UPPER_CASE, 0x44D }, - { 0x42E, UPPER_CASE, 0x44E }, - { 0x42F, UPPER_CASE, 0x44F }, - { 0x430, LOWER_CASE, 0x410 }, - { 0x431, LOWER_CASE, 0x411 }, - { 0x432, LOWER_CASE, 0x412 }, - { 0x433, LOWER_CASE, 0x413 }, - { 0x434, LOWER_CASE, 0x414 }, - { 0x435, LOWER_CASE, 0x415 }, - { 0x436, LOWER_CASE, 0x416 }, - { 0x437, LOWER_CASE, 0x417 }, - { 0x438, LOWER_CASE, 0x418 }, - { 0x439, LOWER_CASE, 0x419 }, - { 0x43A, LOWER_CASE, 0x41A }, - { 0x43B, LOWER_CASE, 0x41B }, - { 0x43C, LOWER_CASE, 0x41C }, - { 0x43D, LOWER_CASE, 0x41D }, - { 0x43E, LOWER_CASE, 0x41E }, - { 0x43F, LOWER_CASE, 0x41F }, - { 0x440, LOWER_CASE, 0x420 }, - { 0x441, LOWER_CASE, 0x421 }, - { 0x442, LOWER_CASE, 0x422 }, - { 0x443, LOWER_CASE, 0x423 }, - { 0x444, LOWER_CASE, 0x424 }, - { 0x445, LOWER_CASE, 0x425 }, - { 0x446, LOWER_CASE, 0x426 }, - { 0x447, LOWER_CASE, 0x427 }, - { 0x448, LOWER_CASE, 0x428 }, - { 0x449, LOWER_CASE, 0x429 }, - { 0x44A, LOWER_CASE, 0x42A }, - { 0x44B, LOWER_CASE, 0x42B }, - { 0x44C, LOWER_CASE, 0x42C }, - { 0x44D, LOWER_CASE, 0x42D }, - { 0x44E, LOWER_CASE, 0x42E }, - { 0x44F, LOWER_CASE, 0x42F }, - { 0x450, LOWER_CASE, 0x400 }, - { 0x451, LOWER_CASE, 0x401 }, - { 0x452, LOWER_CASE, 0x402 }, - { 0x453, LOWER_CASE, 0x403 }, - { 0x454, LOWER_CASE, 0x404 }, - { 0x455, LOWER_CASE, 0x405 }, - { 0x456, LOWER_CASE, 0x406 }, - { 0x457, LOWER_CASE, 0x407 }, - { 0x458, LOWER_CASE, 0x408 }, - { 0x459, LOWER_CASE, 0x409 }, - { 0x45A, LOWER_CASE, 0x40A }, - { 0x45B, LOWER_CASE, 0x40B }, - { 0x45C, LOWER_CASE, 0x40C }, - { 0x45D, LOWER_CASE, 0x40D }, - { 0x45E, LOWER_CASE, 0x40E }, - { 0x45F, LOWER_CASE, 0x40F }, - { 0x460, UPPER_CASE, 0x461 }, - { 0x461, LOWER_CASE, 0x460 }, - { 0x462, UPPER_CASE, 0x463 }, - { 0x463, LOWER_CASE, 0x462 }, - { 0x464, UPPER_CASE, 0x465 }, - { 0x465, LOWER_CASE, 0x464 }, - { 0x466, UPPER_CASE, 0x467 }, - { 0x467, LOWER_CASE, 0x466 }, - { 0x468, UPPER_CASE, 0x469 }, - { 0x469, LOWER_CASE, 0x468 }, - { 0x46A, UPPER_CASE, 0x46B }, - { 0x46B, LOWER_CASE, 0x46A }, - { 0x46C, UPPER_CASE, 0x46D }, - { 0x46D, LOWER_CASE, 0x46C }, - { 0x46E, UPPER_CASE, 0x46F }, - { 0x46F, LOWER_CASE, 0x46E }, - { 0x470, UPPER_CASE, 0x471 }, - { 0x471, LOWER_CASE, 0x470 }, - { 0x472, UPPER_CASE, 0x473 }, - { 0x473, LOWER_CASE, 0x472 }, - { 0x474, UPPER_CASE, 0x475 }, - { 0x475, LOWER_CASE, 0x474 }, - { 0x476, UPPER_CASE, 0x477 }, - { 0x477, LOWER_CASE, 0x476 }, - { 0x478, UPPER_CASE, 0x479 }, - { 0x479, LOWER_CASE, 0x478 }, - { 0x47A, UPPER_CASE, 0x47B }, - { 0x47B, LOWER_CASE, 0x47A }, - { 0x47C, UPPER_CASE, 0x47D }, - { 0x47D, LOWER_CASE, 0x47C }, - { 0x47E, UPPER_CASE, 0x47F }, - { 0x47F, LOWER_CASE, 0x47E }, - { 0x480, UPPER_CASE, 0x481 }, - { 0x481, LOWER_CASE, 0x480 }, - { 0x48A, UPPER_CASE, 0x48B }, - { 0x48B, LOWER_CASE, 0x48A }, - { 0x48C, UPPER_CASE, 0x48D }, - { 0x48D, LOWER_CASE, 0x48C }, - { 0x48E, UPPER_CASE, 0x48F }, - { 0x48F, LOWER_CASE, 0x48E }, - { 0x490, UPPER_CASE, 0x491 }, - { 0x491, LOWER_CASE, 0x490 }, - { 0x492, UPPER_CASE, 0x493 }, - { 0x493, LOWER_CASE, 0x492 }, - { 0x494, UPPER_CASE, 0x495 }, - { 0x495, LOWER_CASE, 0x494 }, - { 0x496, UPPER_CASE, 0x497 }, - { 0x497, LOWER_CASE, 0x496 }, - { 0x498, UPPER_CASE, 0x499 }, - { 0x499, LOWER_CASE, 0x498 }, - { 0x49A, UPPER_CASE, 0x49B }, - { 0x49B, LOWER_CASE, 0x49A }, - { 0x49C, UPPER_CASE, 0x49D }, - { 0x49D, LOWER_CASE, 0x49C }, - { 0x49E, UPPER_CASE, 0x49F }, - { 0x49F, LOWER_CASE, 0x49E }, - { 0x4A0, UPPER_CASE, 0x4A1 }, - { 0x4A1, LOWER_CASE, 0x4A0 }, - { 0x4A2, UPPER_CASE, 0x4A3 }, - { 0x4A3, LOWER_CASE, 0x4A2 }, - { 0x4A4, UPPER_CASE, 0x4A5 }, - { 0x4A5, LOWER_CASE, 0x4A4 }, - { 0x4A6, UPPER_CASE, 0x4A7 }, - { 0x4A7, LOWER_CASE, 0x4A6 }, - { 0x4A8, UPPER_CASE, 0x4A9 }, - { 0x4A9, LOWER_CASE, 0x4A8 }, - { 0x4AA, UPPER_CASE, 0x4AB }, - { 0x4AB, LOWER_CASE, 0x4AA }, - { 0x4AC, UPPER_CASE, 0x4AD }, - { 0x4AD, LOWER_CASE, 0x4AC }, - { 0x4AE, UPPER_CASE, 0x4AF }, - { 0x4AF, LOWER_CASE, 0x4AE }, - { 0x4B0, UPPER_CASE, 0x4B1 }, - { 0x4B1, LOWER_CASE, 0x4B0 }, - { 0x4B2, UPPER_CASE, 0x4B3 }, - { 0x4B3, LOWER_CASE, 0x4B2 }, - { 0x4B4, UPPER_CASE, 0x4B5 }, - { 0x4B5, LOWER_CASE, 0x4B4 }, - { 0x4B6, UPPER_CASE, 0x4B7 }, - { 0x4B7, LOWER_CASE, 0x4B6 }, - { 0x4B8, UPPER_CASE, 0x4B9 }, - { 0x4B9, LOWER_CASE, 0x4B8 }, - { 0x4BA, UPPER_CASE, 0x4BB }, - { 0x4BB, LOWER_CASE, 0x4BA }, - { 0x4BC, UPPER_CASE, 0x4BD }, - { 0x4BD, LOWER_CASE, 0x4BC }, - { 0x4BE, UPPER_CASE, 0x4BF }, - { 0x4BF, LOWER_CASE, 0x4BE }, - { 0x4C0, UPPER_CASE, 0x4CF }, - { 0x4C1, UPPER_CASE, 0x4C2 }, - { 0x4C2, LOWER_CASE, 0x4C1 }, - { 0x4C3, UPPER_CASE, 0x4C4 }, - { 0x4C4, LOWER_CASE, 0x4C3 }, - { 0x4C5, UPPER_CASE, 0x4C6 }, - { 0x4C6, LOWER_CASE, 0x4C5 }, - { 0x4C7, UPPER_CASE, 0x4C8 }, - { 0x4C8, LOWER_CASE, 0x4C7 }, - { 0x4C9, UPPER_CASE, 0x4CA }, - { 0x4CA, LOWER_CASE, 0x4C9 }, - { 0x4CB, UPPER_CASE, 0x4CC }, - { 0x4CC, LOWER_CASE, 0x4CB }, - { 0x4CD, UPPER_CASE, 0x4CE }, - { 0x4CE, LOWER_CASE, 0x4CD }, - { 0x4CF, LOWER_CASE, 0x4C0 }, - { 0x4D0, UPPER_CASE, 0x4D1 }, - { 0x4D1, LOWER_CASE, 0x4D0 }, - { 0x4D2, UPPER_CASE, 0x4D3 }, - { 0x4D3, LOWER_CASE, 0x4D2 }, - { 0x4D4, UPPER_CASE, 0x4D5 }, - { 0x4D5, LOWER_CASE, 0x4D4 }, - { 0x4D6, UPPER_CASE, 0x4D7 }, - { 0x4D7, LOWER_CASE, 0x4D6 }, - { 0x4D8, UPPER_CASE, 0x4D9 }, - { 0x4D9, LOWER_CASE, 0x4D8 }, - { 0x4DA, UPPER_CASE, 0x4DB }, - { 0x4DB, LOWER_CASE, 0x4DA }, - { 0x4DC, UPPER_CASE, 0x4DD }, - { 0x4DD, LOWER_CASE, 0x4DC }, - { 0x4DE, UPPER_CASE, 0x4DF }, - { 0x4DF, LOWER_CASE, 0x4DE }, - { 0x4E0, UPPER_CASE, 0x4E1 }, - { 0x4E1, LOWER_CASE, 0x4E0 }, - { 0x4E2, UPPER_CASE, 0x4E3 }, - { 0x4E3, LOWER_CASE, 0x4E2 }, - { 0x4E4, UPPER_CASE, 0x4E5 }, - { 0x4E5, LOWER_CASE, 0x4E4 }, - { 0x4E6, UPPER_CASE, 0x4E7 }, - { 0x4E7, LOWER_CASE, 0x4E6 }, - { 0x4E8, UPPER_CASE, 0x4E9 }, - { 0x4E9, LOWER_CASE, 0x4E8 }, - { 0x4EA, UPPER_CASE, 0x4EB }, - { 0x4EB, LOWER_CASE, 0x4EA }, - { 0x4EC, UPPER_CASE, 0x4ED }, - { 0x4ED, LOWER_CASE, 0x4EC }, - { 0x4EE, UPPER_CASE, 0x4EF }, - { 0x4EF, LOWER_CASE, 0x4EE }, - { 0x4F0, UPPER_CASE, 0x4F1 }, - { 0x4F1, LOWER_CASE, 0x4F0 }, - { 0x4F2, UPPER_CASE, 0x4F3 }, - { 0x4F3, LOWER_CASE, 0x4F2 }, - { 0x4F4, UPPER_CASE, 0x4F5 }, - { 0x4F5, LOWER_CASE, 0x4F4 }, - { 0x4F6, UPPER_CASE, 0x4F7 }, - { 0x4F7, LOWER_CASE, 0x4F6 }, - { 0x4F8, UPPER_CASE, 0x4F9 }, - { 0x4F9, LOWER_CASE, 0x4F8 }, - { 0x4FA, UPPER_CASE, 0x4FB }, - { 0x4FB, LOWER_CASE, 0x4FA }, - { 0x4FC, UPPER_CASE, 0x4FD }, - { 0x4FD, LOWER_CASE, 0x4FC }, - { 0x4FE, UPPER_CASE, 0x4FF }, - { 0x4FF, LOWER_CASE, 0x4FE }, - { 0x500, UPPER_CASE, 0x501 }, - { 0x501, LOWER_CASE, 0x500 }, - { 0x502, UPPER_CASE, 0x503 }, - { 0x503, LOWER_CASE, 0x502 }, - { 0x504, UPPER_CASE, 0x505 }, - { 0x505, LOWER_CASE, 0x504 }, - { 0x506, UPPER_CASE, 0x507 }, - { 0x507, LOWER_CASE, 0x506 }, - { 0x508, UPPER_CASE, 0x509 }, - { 0x509, LOWER_CASE, 0x508 }, - { 0x50A, UPPER_CASE, 0x50B }, - { 0x50B, LOWER_CASE, 0x50A }, - { 0x50C, UPPER_CASE, 0x50D }, - { 0x50D, LOWER_CASE, 0x50C }, - { 0x50E, UPPER_CASE, 0x50F }, - { 0x50F, LOWER_CASE, 0x50E }, - { 0x510, UPPER_CASE, 0x511 }, - { 0x511, LOWER_CASE, 0x510 }, - { 0x512, UPPER_CASE, 0x513 }, - { 0x513, LOWER_CASE, 0x512 }, - { 0x514, UPPER_CASE, 0x515 }, - { 0x515, LOWER_CASE, 0x514 }, - { 0x516, UPPER_CASE, 0x517 }, - { 0x517, LOWER_CASE, 0x516 }, - { 0x518, UPPER_CASE, 0x519 }, - { 0x519, LOWER_CASE, 0x518 }, - { 0x51A, UPPER_CASE, 0x51B }, - { 0x51B, LOWER_CASE, 0x51A }, - { 0x51C, UPPER_CASE, 0x51D }, - { 0x51D, LOWER_CASE, 0x51C }, - { 0x51E, UPPER_CASE, 0x51F }, - { 0x51F, LOWER_CASE, 0x51E }, - { 0x520, UPPER_CASE, 0x521 }, - { 0x521, LOWER_CASE, 0x520 }, - { 0x522, UPPER_CASE, 0x523 }, - { 0x523, LOWER_CASE, 0x522 }, - { 0x524, UPPER_CASE, 0x525 }, - { 0x525, LOWER_CASE, 0x524 }, - { 0x526, UPPER_CASE, 0x527 }, - { 0x527, LOWER_CASE, 0x526 }, - { 0x528, UPPER_CASE, 0x529 }, - { 0x529, LOWER_CASE, 0x528 }, - { 0x52A, UPPER_CASE, 0x52B }, - { 0x52B, LOWER_CASE, 0x52A }, - { 0x52C, UPPER_CASE, 0x52D }, - { 0x52D, LOWER_CASE, 0x52C }, - { 0x52E, UPPER_CASE, 0x52F }, - { 0x52F, LOWER_CASE, 0x52E }, - { 0x531, UPPER_CASE, 0x561 }, - { 0x532, UPPER_CASE, 0x562 }, - { 0x533, UPPER_CASE, 0x563 }, - { 0x534, UPPER_CASE, 0x564 }, - { 0x535, UPPER_CASE, 0x565 }, - { 0x536, UPPER_CASE, 0x566 }, - { 0x537, UPPER_CASE, 0x567 }, - { 0x538, UPPER_CASE, 0x568 }, - { 0x539, UPPER_CASE, 0x569 }, - { 0x53A, UPPER_CASE, 0x56A }, - { 0x53B, UPPER_CASE, 0x56B }, - { 0x53C, UPPER_CASE, 0x56C }, - { 0x53D, UPPER_CASE, 0x56D }, - { 0x53E, UPPER_CASE, 0x56E }, - { 0x53F, UPPER_CASE, 0x56F }, - { 0x540, UPPER_CASE, 0x570 }, - { 0x541, UPPER_CASE, 0x571 }, - { 0x542, UPPER_CASE, 0x572 }, - { 0x543, UPPER_CASE, 0x573 }, - { 0x544, UPPER_CASE, 0x574 }, - { 0x545, UPPER_CASE, 0x575 }, - { 0x546, UPPER_CASE, 0x576 }, - { 0x547, UPPER_CASE, 0x577 }, - { 0x548, UPPER_CASE, 0x578 }, - { 0x549, UPPER_CASE, 0x579 }, - { 0x54A, UPPER_CASE, 0x57A }, - { 0x54B, UPPER_CASE, 0x57B }, - { 0x54C, UPPER_CASE, 0x57C }, - { 0x54D, UPPER_CASE, 0x57D }, - { 0x54E, UPPER_CASE, 0x57E }, - { 0x54F, UPPER_CASE, 0x57F }, - { 0x550, UPPER_CASE, 0x580 }, - { 0x551, UPPER_CASE, 0x581 }, - { 0x552, UPPER_CASE, 0x582 }, - { 0x553, UPPER_CASE, 0x583 }, - { 0x554, UPPER_CASE, 0x584 }, - { 0x555, UPPER_CASE, 0x585 }, - { 0x556, UPPER_CASE, 0x586 }, - { 0x561, LOWER_CASE, 0x531 }, - { 0x562, LOWER_CASE, 0x532 }, - { 0x563, LOWER_CASE, 0x533 }, - { 0x564, LOWER_CASE, 0x534 }, - { 0x565, LOWER_CASE, 0x535 }, - { 0x566, LOWER_CASE, 0x536 }, - { 0x567, LOWER_CASE, 0x537 }, - { 0x568, LOWER_CASE, 0x538 }, - { 0x569, LOWER_CASE, 0x539 }, - { 0x56A, LOWER_CASE, 0x53A }, - { 0x56B, LOWER_CASE, 0x53B }, - { 0x56C, LOWER_CASE, 0x53C }, - { 0x56D, LOWER_CASE, 0x53D }, - { 0x56E, LOWER_CASE, 0x53E }, - { 0x56F, LOWER_CASE, 0x53F }, - { 0x570, LOWER_CASE, 0x540 }, - { 0x571, LOWER_CASE, 0x541 }, - { 0x572, LOWER_CASE, 0x542 }, - { 0x573, LOWER_CASE, 0x543 }, - { 0x574, LOWER_CASE, 0x544 }, - { 0x575, LOWER_CASE, 0x545 }, - { 0x576, LOWER_CASE, 0x546 }, - { 0x577, LOWER_CASE, 0x547 }, - { 0x578, LOWER_CASE, 0x548 }, - { 0x579, LOWER_CASE, 0x549 }, - { 0x57A, LOWER_CASE, 0x54A }, - { 0x57B, LOWER_CASE, 0x54B }, - { 0x57C, LOWER_CASE, 0x54C }, - { 0x57D, LOWER_CASE, 0x54D }, - { 0x57E, LOWER_CASE, 0x54E }, - { 0x57F, LOWER_CASE, 0x54F }, - { 0x580, LOWER_CASE, 0x550 }, - { 0x581, LOWER_CASE, 0x551 }, - { 0x582, LOWER_CASE, 0x552 }, - { 0x583, LOWER_CASE, 0x553 }, - { 0x584, LOWER_CASE, 0x554 }, - { 0x585, LOWER_CASE, 0x555 }, - { 0x586, LOWER_CASE, 0x556 }, - { 0x10A0, UPPER_CASE, 0x2D00 }, - { 0x10A1, UPPER_CASE, 0x2D01 }, - { 0x10A2, UPPER_CASE, 0x2D02 }, - { 0x10A3, UPPER_CASE, 0x2D03 }, - { 0x10A4, UPPER_CASE, 0x2D04 }, - { 0x10A5, UPPER_CASE, 0x2D05 }, - { 0x10A6, UPPER_CASE, 0x2D06 }, - { 0x10A7, UPPER_CASE, 0x2D07 }, - { 0x10A8, UPPER_CASE, 0x2D08 }, - { 0x10A9, UPPER_CASE, 0x2D09 }, - { 0x10AA, UPPER_CASE, 0x2D0A }, - { 0x10AB, UPPER_CASE, 0x2D0B }, - { 0x10AC, UPPER_CASE, 0x2D0C }, - { 0x10AD, UPPER_CASE, 0x2D0D }, - { 0x10AE, UPPER_CASE, 0x2D0E }, - { 0x10AF, UPPER_CASE, 0x2D0F }, - { 0x10B0, UPPER_CASE, 0x2D10 }, - { 0x10B1, UPPER_CASE, 0x2D11 }, - { 0x10B2, UPPER_CASE, 0x2D12 }, - { 0x10B3, UPPER_CASE, 0x2D13 }, - { 0x10B4, UPPER_CASE, 0x2D14 }, - { 0x10B5, UPPER_CASE, 0x2D15 }, - { 0x10B6, UPPER_CASE, 0x2D16 }, - { 0x10B7, UPPER_CASE, 0x2D17 }, - { 0x10B8, UPPER_CASE, 0x2D18 }, - { 0x10B9, UPPER_CASE, 0x2D19 }, - { 0x10BA, UPPER_CASE, 0x2D1A }, - { 0x10BB, UPPER_CASE, 0x2D1B }, - { 0x10BC, UPPER_CASE, 0x2D1C }, - { 0x10BD, UPPER_CASE, 0x2D1D }, - { 0x10BE, UPPER_CASE, 0x2D1E }, - { 0x10BF, UPPER_CASE, 0x2D1F }, - { 0x10C0, UPPER_CASE, 0x2D20 }, - { 0x10C1, UPPER_CASE, 0x2D21 }, - { 0x10C2, UPPER_CASE, 0x2D22 }, - { 0x10C3, UPPER_CASE, 0x2D23 }, - { 0x10C4, UPPER_CASE, 0x2D24 }, - { 0x10C5, UPPER_CASE, 0x2D25 }, - { 0x10C7, UPPER_CASE, 0x2D27 }, - { 0x10CD, UPPER_CASE, 0x2D2D }, - { 0x10D0, LOWER_CASE, 0x1C90 }, - { 0x10D1, LOWER_CASE, 0x1C91 }, - { 0x10D2, LOWER_CASE, 0x1C92 }, - { 0x10D3, LOWER_CASE, 0x1C93 }, - { 0x10D4, LOWER_CASE, 0x1C94 }, - { 0x10D5, LOWER_CASE, 0x1C95 }, - { 0x10D6, LOWER_CASE, 0x1C96 }, - { 0x10D7, LOWER_CASE, 0x1C97 }, - { 0x10D8, LOWER_CASE, 0x1C98 }, - { 0x10D9, LOWER_CASE, 0x1C99 }, - { 0x10DA, LOWER_CASE, 0x1C9A }, - { 0x10DB, LOWER_CASE, 0x1C9B }, - { 0x10DC, LOWER_CASE, 0x1C9C }, - { 0x10DD, LOWER_CASE, 0x1C9D }, - { 0x10DE, LOWER_CASE, 0x1C9E }, - { 0x10DF, LOWER_CASE, 0x1C9F }, - { 0x10E0, LOWER_CASE, 0x1CA0 }, - { 0x10E1, LOWER_CASE, 0x1CA1 }, - { 0x10E2, LOWER_CASE, 0x1CA2 }, - { 0x10E3, LOWER_CASE, 0x1CA3 }, - { 0x10E4, LOWER_CASE, 0x1CA4 }, - { 0x10E5, LOWER_CASE, 0x1CA5 }, - { 0x10E6, LOWER_CASE, 0x1CA6 }, - { 0x10E7, LOWER_CASE, 0x1CA7 }, - { 0x10E8, LOWER_CASE, 0x1CA8 }, - { 0x10E9, LOWER_CASE, 0x1CA9 }, - { 0x10EA, LOWER_CASE, 0x1CAA }, - { 0x10EB, LOWER_CASE, 0x1CAB }, - { 0x10EC, LOWER_CASE, 0x1CAC }, - { 0x10ED, LOWER_CASE, 0x1CAD }, - { 0x10EE, LOWER_CASE, 0x1CAE }, - { 0x10EF, LOWER_CASE, 0x1CAF }, - { 0x10F0, LOWER_CASE, 0x1CB0 }, - { 0x10F1, LOWER_CASE, 0x1CB1 }, - { 0x10F2, LOWER_CASE, 0x1CB2 }, - { 0x10F3, LOWER_CASE, 0x1CB3 }, - { 0x10F4, LOWER_CASE, 0x1CB4 }, - { 0x10F5, LOWER_CASE, 0x1CB5 }, - { 0x10F6, LOWER_CASE, 0x1CB6 }, - { 0x10F7, LOWER_CASE, 0x1CB7 }, - { 0x10F8, LOWER_CASE, 0x1CB8 }, - { 0x10F9, LOWER_CASE, 0x1CB9 }, - { 0x10FA, LOWER_CASE, 0x1CBA }, - { 0x10FD, LOWER_CASE, 0x1CBD }, - { 0x10FE, LOWER_CASE, 0x1CBE }, - { 0x10FF, LOWER_CASE, 0x1CBF }, - { 0x13A0, UPPER_CASE, 0xAB70 }, - { 0x13A1, UPPER_CASE, 0xAB71 }, - { 0x13A2, UPPER_CASE, 0xAB72 }, - { 0x13A3, UPPER_CASE, 0xAB73 }, - { 0x13A4, UPPER_CASE, 0xAB74 }, - { 0x13A5, UPPER_CASE, 0xAB75 }, - { 0x13A6, UPPER_CASE, 0xAB76 }, - { 0x13A7, UPPER_CASE, 0xAB77 }, - { 0x13A8, UPPER_CASE, 0xAB78 }, - { 0x13A9, UPPER_CASE, 0xAB79 }, - { 0x13AA, UPPER_CASE, 0xAB7A }, - { 0x13AB, UPPER_CASE, 0xAB7B }, - { 0x13AC, UPPER_CASE, 0xAB7C }, - { 0x13AD, UPPER_CASE, 0xAB7D }, - { 0x13AE, UPPER_CASE, 0xAB7E }, - { 0x13AF, UPPER_CASE, 0xAB7F }, - { 0x13B0, UPPER_CASE, 0xAB80 }, - { 0x13B1, UPPER_CASE, 0xAB81 }, - { 0x13B2, UPPER_CASE, 0xAB82 }, - { 0x13B3, UPPER_CASE, 0xAB83 }, - { 0x13B4, UPPER_CASE, 0xAB84 }, - { 0x13B5, UPPER_CASE, 0xAB85 }, - { 0x13B6, UPPER_CASE, 0xAB86 }, - { 0x13B7, UPPER_CASE, 0xAB87 }, - { 0x13B8, UPPER_CASE, 0xAB88 }, - { 0x13B9, UPPER_CASE, 0xAB89 }, - { 0x13BA, UPPER_CASE, 0xAB8A }, - { 0x13BB, UPPER_CASE, 0xAB8B }, - { 0x13BC, UPPER_CASE, 0xAB8C }, - { 0x13BD, UPPER_CASE, 0xAB8D }, - { 0x13BE, UPPER_CASE, 0xAB8E }, - { 0x13BF, UPPER_CASE, 0xAB8F }, - { 0x13C0, UPPER_CASE, 0xAB90 }, - { 0x13C1, UPPER_CASE, 0xAB91 }, - { 0x13C2, UPPER_CASE, 0xAB92 }, - { 0x13C3, UPPER_CASE, 0xAB93 }, - { 0x13C4, UPPER_CASE, 0xAB94 }, - { 0x13C5, UPPER_CASE, 0xAB95 }, - { 0x13C6, UPPER_CASE, 0xAB96 }, - { 0x13C7, UPPER_CASE, 0xAB97 }, - { 0x13C8, UPPER_CASE, 0xAB98 }, - { 0x13C9, UPPER_CASE, 0xAB99 }, - { 0x13CA, UPPER_CASE, 0xAB9A }, - { 0x13CB, UPPER_CASE, 0xAB9B }, - { 0x13CC, UPPER_CASE, 0xAB9C }, - { 0x13CD, UPPER_CASE, 0xAB9D }, - { 0x13CE, UPPER_CASE, 0xAB9E }, - { 0x13CF, UPPER_CASE, 0xAB9F }, - { 0x13D0, UPPER_CASE, 0xABA0 }, - { 0x13D1, UPPER_CASE, 0xABA1 }, - { 0x13D2, UPPER_CASE, 0xABA2 }, - { 0x13D3, UPPER_CASE, 0xABA3 }, - { 0x13D4, UPPER_CASE, 0xABA4 }, - { 0x13D5, UPPER_CASE, 0xABA5 }, - { 0x13D6, UPPER_CASE, 0xABA6 }, - { 0x13D7, UPPER_CASE, 0xABA7 }, - { 0x13D8, UPPER_CASE, 0xABA8 }, - { 0x13D9, UPPER_CASE, 0xABA9 }, - { 0x13DA, UPPER_CASE, 0xABAA }, - { 0x13DB, UPPER_CASE, 0xABAB }, - { 0x13DC, UPPER_CASE, 0xABAC }, - { 0x13DD, UPPER_CASE, 0xABAD }, - { 0x13DE, UPPER_CASE, 0xABAE }, - { 0x13DF, UPPER_CASE, 0xABAF }, - { 0x13E0, UPPER_CASE, 0xABB0 }, - { 0x13E1, UPPER_CASE, 0xABB1 }, - { 0x13E2, UPPER_CASE, 0xABB2 }, - { 0x13E3, UPPER_CASE, 0xABB3 }, - { 0x13E4, UPPER_CASE, 0xABB4 }, - { 0x13E5, UPPER_CASE, 0xABB5 }, - { 0x13E6, UPPER_CASE, 0xABB6 }, - { 0x13E7, UPPER_CASE, 0xABB7 }, - { 0x13E8, UPPER_CASE, 0xABB8 }, - { 0x13E9, UPPER_CASE, 0xABB9 }, - { 0x13EA, UPPER_CASE, 0xABBA }, - { 0x13EB, UPPER_CASE, 0xABBB }, - { 0x13EC, UPPER_CASE, 0xABBC }, - { 0x13ED, UPPER_CASE, 0xABBD }, - { 0x13EE, UPPER_CASE, 0xABBE }, - { 0x13EF, UPPER_CASE, 0xABBF }, - { 0x13F0, UPPER_CASE, 0x13F8 }, - { 0x13F1, UPPER_CASE, 0x13F9 }, - { 0x13F2, UPPER_CASE, 0x13FA }, - { 0x13F3, UPPER_CASE, 0x13FB }, - { 0x13F4, UPPER_CASE, 0x13FC }, - { 0x13F5, UPPER_CASE, 0x13FD }, - { 0x13F8, LOWER_CASE, 0x13F0 }, - { 0x13F9, LOWER_CASE, 0x13F1 }, - { 0x13FA, LOWER_CASE, 0x13F2 }, - { 0x13FB, LOWER_CASE, 0x13F3 }, - { 0x13FC, LOWER_CASE, 0x13F4 }, - { 0x13FD, LOWER_CASE, 0x13F5 }, - { 0x1C80, LOWER_CASE, 0x412 }, - { 0x1C81, LOWER_CASE, 0x414 }, - { 0x1C82, LOWER_CASE, 0x41E }, - { 0x1C83, LOWER_CASE, 0x421 }, - { 0x1C84, LOWER_CASE, 0x422 }, - { 0x1C85, LOWER_CASE, 0x422 }, - { 0x1C86, LOWER_CASE, 0x42A }, - { 0x1C87, LOWER_CASE, 0x462 }, - { 0x1C88, LOWER_CASE, 0xA64A }, - { 0x1C90, UPPER_CASE, 0x10D0 }, - { 0x1C91, UPPER_CASE, 0x10D1 }, - { 0x1C92, UPPER_CASE, 0x10D2 }, - { 0x1C93, UPPER_CASE, 0x10D3 }, - { 0x1C94, UPPER_CASE, 0x10D4 }, - { 0x1C95, UPPER_CASE, 0x10D5 }, - { 0x1C96, UPPER_CASE, 0x10D6 }, - { 0x1C97, UPPER_CASE, 0x10D7 }, - { 0x1C98, UPPER_CASE, 0x10D8 }, - { 0x1C99, UPPER_CASE, 0x10D9 }, - { 0x1C9A, UPPER_CASE, 0x10DA }, - { 0x1C9B, UPPER_CASE, 0x10DB }, - { 0x1C9C, UPPER_CASE, 0x10DC }, - { 0x1C9D, UPPER_CASE, 0x10DD }, - { 0x1C9E, UPPER_CASE, 0x10DE }, - { 0x1C9F, UPPER_CASE, 0x10DF }, - { 0x1CA0, UPPER_CASE, 0x10E0 }, - { 0x1CA1, UPPER_CASE, 0x10E1 }, - { 0x1CA2, UPPER_CASE, 0x10E2 }, - { 0x1CA3, UPPER_CASE, 0x10E3 }, - { 0x1CA4, UPPER_CASE, 0x10E4 }, - { 0x1CA5, UPPER_CASE, 0x10E5 }, - { 0x1CA6, UPPER_CASE, 0x10E6 }, - { 0x1CA7, UPPER_CASE, 0x10E7 }, - { 0x1CA8, UPPER_CASE, 0x10E8 }, - { 0x1CA9, UPPER_CASE, 0x10E9 }, - { 0x1CAA, UPPER_CASE, 0x10EA }, - { 0x1CAB, UPPER_CASE, 0x10EB }, - { 0x1CAC, UPPER_CASE, 0x10EC }, - { 0x1CAD, UPPER_CASE, 0x10ED }, - { 0x1CAE, UPPER_CASE, 0x10EE }, - { 0x1CAF, UPPER_CASE, 0x10EF }, - { 0x1CB0, UPPER_CASE, 0x10F0 }, - { 0x1CB1, UPPER_CASE, 0x10F1 }, - { 0x1CB2, UPPER_CASE, 0x10F2 }, - { 0x1CB3, UPPER_CASE, 0x10F3 }, - { 0x1CB4, UPPER_CASE, 0x10F4 }, - { 0x1CB5, UPPER_CASE, 0x10F5 }, - { 0x1CB6, UPPER_CASE, 0x10F6 }, - { 0x1CB7, UPPER_CASE, 0x10F7 }, - { 0x1CB8, UPPER_CASE, 0x10F8 }, - { 0x1CB9, UPPER_CASE, 0x10F9 }, - { 0x1CBA, UPPER_CASE, 0x10FA }, - { 0x1CBD, UPPER_CASE, 0x10FD }, - { 0x1CBE, UPPER_CASE, 0x10FE }, - { 0x1CBF, UPPER_CASE, 0x10FF }, - { 0x1D79, LOWER_CASE, 0xA77D }, - { 0x1D7D, LOWER_CASE, 0x2C63 }, - { 0x1D8E, LOWER_CASE, 0xA7C6 }, - { 0x1E00, UPPER_CASE, 0x1E01 }, - { 0x1E01, LOWER_CASE, 0x1E00 }, - { 0x1E02, UPPER_CASE, 0x1E03 }, - { 0x1E03, LOWER_CASE, 0x1E02 }, - { 0x1E04, UPPER_CASE, 0x1E05 }, - { 0x1E05, LOWER_CASE, 0x1E04 }, - { 0x1E06, UPPER_CASE, 0x1E07 }, - { 0x1E07, LOWER_CASE, 0x1E06 }, - { 0x1E08, UPPER_CASE, 0x1E09 }, - { 0x1E09, LOWER_CASE, 0x1E08 }, - { 0x1E0A, UPPER_CASE, 0x1E0B }, - { 0x1E0B, LOWER_CASE, 0x1E0A }, - { 0x1E0C, UPPER_CASE, 0x1E0D }, - { 0x1E0D, LOWER_CASE, 0x1E0C }, - { 0x1E0E, UPPER_CASE, 0x1E0F }, - { 0x1E0F, LOWER_CASE, 0x1E0E }, - { 0x1E10, UPPER_CASE, 0x1E11 }, - { 0x1E11, LOWER_CASE, 0x1E10 }, - { 0x1E12, UPPER_CASE, 0x1E13 }, - { 0x1E13, LOWER_CASE, 0x1E12 }, - { 0x1E14, UPPER_CASE, 0x1E15 }, - { 0x1E15, LOWER_CASE, 0x1E14 }, - { 0x1E16, UPPER_CASE, 0x1E17 }, - { 0x1E17, LOWER_CASE, 0x1E16 }, - { 0x1E18, UPPER_CASE, 0x1E19 }, - { 0x1E19, LOWER_CASE, 0x1E18 }, - { 0x1E1A, UPPER_CASE, 0x1E1B }, - { 0x1E1B, LOWER_CASE, 0x1E1A }, - { 0x1E1C, UPPER_CASE, 0x1E1D }, - { 0x1E1D, LOWER_CASE, 0x1E1C }, - { 0x1E1E, UPPER_CASE, 0x1E1F }, - { 0x1E1F, LOWER_CASE, 0x1E1E }, - { 0x1E20, UPPER_CASE, 0x1E21 }, - { 0x1E21, LOWER_CASE, 0x1E20 }, - { 0x1E22, UPPER_CASE, 0x1E23 }, - { 0x1E23, LOWER_CASE, 0x1E22 }, - { 0x1E24, UPPER_CASE, 0x1E25 }, - { 0x1E25, LOWER_CASE, 0x1E24 }, - { 0x1E26, UPPER_CASE, 0x1E27 }, - { 0x1E27, LOWER_CASE, 0x1E26 }, - { 0x1E28, UPPER_CASE, 0x1E29 }, - { 0x1E29, LOWER_CASE, 0x1E28 }, - { 0x1E2A, UPPER_CASE, 0x1E2B }, - { 0x1E2B, LOWER_CASE, 0x1E2A }, - { 0x1E2C, UPPER_CASE, 0x1E2D }, - { 0x1E2D, LOWER_CASE, 0x1E2C }, - { 0x1E2E, UPPER_CASE, 0x1E2F }, - { 0x1E2F, LOWER_CASE, 0x1E2E }, - { 0x1E30, UPPER_CASE, 0x1E31 }, - { 0x1E31, LOWER_CASE, 0x1E30 }, - { 0x1E32, UPPER_CASE, 0x1E33 }, - { 0x1E33, LOWER_CASE, 0x1E32 }, - { 0x1E34, UPPER_CASE, 0x1E35 }, - { 0x1E35, LOWER_CASE, 0x1E34 }, - { 0x1E36, UPPER_CASE, 0x1E37 }, - { 0x1E37, LOWER_CASE, 0x1E36 }, - { 0x1E38, UPPER_CASE, 0x1E39 }, - { 0x1E39, LOWER_CASE, 0x1E38 }, - { 0x1E3A, UPPER_CASE, 0x1E3B }, - { 0x1E3B, LOWER_CASE, 0x1E3A }, - { 0x1E3C, UPPER_CASE, 0x1E3D }, - { 0x1E3D, LOWER_CASE, 0x1E3C }, - { 0x1E3E, UPPER_CASE, 0x1E3F }, - { 0x1E3F, LOWER_CASE, 0x1E3E }, - { 0x1E40, UPPER_CASE, 0x1E41 }, - { 0x1E41, LOWER_CASE, 0x1E40 }, - { 0x1E42, UPPER_CASE, 0x1E43 }, - { 0x1E43, LOWER_CASE, 0x1E42 }, - { 0x1E44, UPPER_CASE, 0x1E45 }, - { 0x1E45, LOWER_CASE, 0x1E44 }, - { 0x1E46, UPPER_CASE, 0x1E47 }, - { 0x1E47, LOWER_CASE, 0x1E46 }, - { 0x1E48, UPPER_CASE, 0x1E49 }, - { 0x1E49, LOWER_CASE, 0x1E48 }, - { 0x1E4A, UPPER_CASE, 0x1E4B }, - { 0x1E4B, LOWER_CASE, 0x1E4A }, - { 0x1E4C, UPPER_CASE, 0x1E4D }, - { 0x1E4D, LOWER_CASE, 0x1E4C }, - { 0x1E4E, UPPER_CASE, 0x1E4F }, - { 0x1E4F, LOWER_CASE, 0x1E4E }, - { 0x1E50, UPPER_CASE, 0x1E51 }, - { 0x1E51, LOWER_CASE, 0x1E50 }, - { 0x1E52, UPPER_CASE, 0x1E53 }, - { 0x1E53, LOWER_CASE, 0x1E52 }, - { 0x1E54, UPPER_CASE, 0x1E55 }, - { 0x1E55, LOWER_CASE, 0x1E54 }, - { 0x1E56, UPPER_CASE, 0x1E57 }, - { 0x1E57, LOWER_CASE, 0x1E56 }, - { 0x1E58, UPPER_CASE, 0x1E59 }, - { 0x1E59, LOWER_CASE, 0x1E58 }, - { 0x1E5A, UPPER_CASE, 0x1E5B }, - { 0x1E5B, LOWER_CASE, 0x1E5A }, - { 0x1E5C, UPPER_CASE, 0x1E5D }, - { 0x1E5D, LOWER_CASE, 0x1E5C }, - { 0x1E5E, UPPER_CASE, 0x1E5F }, - { 0x1E5F, LOWER_CASE, 0x1E5E }, - { 0x1E60, UPPER_CASE, 0x1E61 }, - { 0x1E61, LOWER_CASE, 0x1E60 }, - { 0x1E62, UPPER_CASE, 0x1E63 }, - { 0x1E63, LOWER_CASE, 0x1E62 }, - { 0x1E64, UPPER_CASE, 0x1E65 }, - { 0x1E65, LOWER_CASE, 0x1E64 }, - { 0x1E66, UPPER_CASE, 0x1E67 }, - { 0x1E67, LOWER_CASE, 0x1E66 }, - { 0x1E68, UPPER_CASE, 0x1E69 }, - { 0x1E69, LOWER_CASE, 0x1E68 }, - { 0x1E6A, UPPER_CASE, 0x1E6B }, - { 0x1E6B, LOWER_CASE, 0x1E6A }, - { 0x1E6C, UPPER_CASE, 0x1E6D }, - { 0x1E6D, LOWER_CASE, 0x1E6C }, - { 0x1E6E, UPPER_CASE, 0x1E6F }, - { 0x1E6F, LOWER_CASE, 0x1E6E }, - { 0x1E70, UPPER_CASE, 0x1E71 }, - { 0x1E71, LOWER_CASE, 0x1E70 }, - { 0x1E72, UPPER_CASE, 0x1E73 }, - { 0x1E73, LOWER_CASE, 0x1E72 }, - { 0x1E74, UPPER_CASE, 0x1E75 }, - { 0x1E75, LOWER_CASE, 0x1E74 }, - { 0x1E76, UPPER_CASE, 0x1E77 }, - { 0x1E77, LOWER_CASE, 0x1E76 }, - { 0x1E78, UPPER_CASE, 0x1E79 }, - { 0x1E79, LOWER_CASE, 0x1E78 }, - { 0x1E7A, UPPER_CASE, 0x1E7B }, - { 0x1E7B, LOWER_CASE, 0x1E7A }, - { 0x1E7C, UPPER_CASE, 0x1E7D }, - { 0x1E7D, LOWER_CASE, 0x1E7C }, - { 0x1E7E, UPPER_CASE, 0x1E7F }, - { 0x1E7F, LOWER_CASE, 0x1E7E }, - { 0x1E80, UPPER_CASE, 0x1E81 }, - { 0x1E81, LOWER_CASE, 0x1E80 }, - { 0x1E82, UPPER_CASE, 0x1E83 }, - { 0x1E83, LOWER_CASE, 0x1E82 }, - { 0x1E84, UPPER_CASE, 0x1E85 }, - { 0x1E85, LOWER_CASE, 0x1E84 }, - { 0x1E86, UPPER_CASE, 0x1E87 }, - { 0x1E87, LOWER_CASE, 0x1E86 }, - { 0x1E88, UPPER_CASE, 0x1E89 }, - { 0x1E89, LOWER_CASE, 0x1E88 }, - { 0x1E8A, UPPER_CASE, 0x1E8B }, - { 0x1E8B, LOWER_CASE, 0x1E8A }, - { 0x1E8C, UPPER_CASE, 0x1E8D }, - { 0x1E8D, LOWER_CASE, 0x1E8C }, - { 0x1E8E, UPPER_CASE, 0x1E8F }, - { 0x1E8F, LOWER_CASE, 0x1E8E }, - { 0x1E90, UPPER_CASE, 0x1E91 }, - { 0x1E91, LOWER_CASE, 0x1E90 }, - { 0x1E92, UPPER_CASE, 0x1E93 }, - { 0x1E93, LOWER_CASE, 0x1E92 }, - { 0x1E94, UPPER_CASE, 0x1E95 }, - { 0x1E95, LOWER_CASE, 0x1E94 }, - { 0x1E9B, LOWER_CASE, 0x1E60 }, - { 0x1E9E, UPPER_CASE, 0xDF }, - { 0x1EA0, UPPER_CASE, 0x1EA1 }, - { 0x1EA1, LOWER_CASE, 0x1EA0 }, - { 0x1EA2, UPPER_CASE, 0x1EA3 }, - { 0x1EA3, LOWER_CASE, 0x1EA2 }, - { 0x1EA4, UPPER_CASE, 0x1EA5 }, - { 0x1EA5, LOWER_CASE, 0x1EA4 }, - { 0x1EA6, UPPER_CASE, 0x1EA7 }, - { 0x1EA7, LOWER_CASE, 0x1EA6 }, - { 0x1EA8, UPPER_CASE, 0x1EA9 }, - { 0x1EA9, LOWER_CASE, 0x1EA8 }, - { 0x1EAA, UPPER_CASE, 0x1EAB }, - { 0x1EAB, LOWER_CASE, 0x1EAA }, - { 0x1EAC, UPPER_CASE, 0x1EAD }, - { 0x1EAD, LOWER_CASE, 0x1EAC }, - { 0x1EAE, UPPER_CASE, 0x1EAF }, - { 0x1EAF, LOWER_CASE, 0x1EAE }, - { 0x1EB0, UPPER_CASE, 0x1EB1 }, - { 0x1EB1, LOWER_CASE, 0x1EB0 }, - { 0x1EB2, UPPER_CASE, 0x1EB3 }, - { 0x1EB3, LOWER_CASE, 0x1EB2 }, - { 0x1EB4, UPPER_CASE, 0x1EB5 }, - { 0x1EB5, LOWER_CASE, 0x1EB4 }, - { 0x1EB6, UPPER_CASE, 0x1EB7 }, - { 0x1EB7, LOWER_CASE, 0x1EB6 }, - { 0x1EB8, UPPER_CASE, 0x1EB9 }, - { 0x1EB9, LOWER_CASE, 0x1EB8 }, - { 0x1EBA, UPPER_CASE, 0x1EBB }, - { 0x1EBB, LOWER_CASE, 0x1EBA }, - { 0x1EBC, UPPER_CASE, 0x1EBD }, - { 0x1EBD, LOWER_CASE, 0x1EBC }, - { 0x1EBE, UPPER_CASE, 0x1EBF }, - { 0x1EBF, LOWER_CASE, 0x1EBE }, - { 0x1EC0, UPPER_CASE, 0x1EC1 }, - { 0x1EC1, LOWER_CASE, 0x1EC0 }, - { 0x1EC2, UPPER_CASE, 0x1EC3 }, - { 0x1EC3, LOWER_CASE, 0x1EC2 }, - { 0x1EC4, UPPER_CASE, 0x1EC5 }, - { 0x1EC5, LOWER_CASE, 0x1EC4 }, - { 0x1EC6, UPPER_CASE, 0x1EC7 }, - { 0x1EC7, LOWER_CASE, 0x1EC6 }, - { 0x1EC8, UPPER_CASE, 0x1EC9 }, - { 0x1EC9, LOWER_CASE, 0x1EC8 }, - { 0x1ECA, UPPER_CASE, 0x1ECB }, - { 0x1ECB, LOWER_CASE, 0x1ECA }, - { 0x1ECC, UPPER_CASE, 0x1ECD }, - { 0x1ECD, LOWER_CASE, 0x1ECC }, - { 0x1ECE, UPPER_CASE, 0x1ECF }, - { 0x1ECF, LOWER_CASE, 0x1ECE }, - { 0x1ED0, UPPER_CASE, 0x1ED1 }, - { 0x1ED1, LOWER_CASE, 0x1ED0 }, - { 0x1ED2, UPPER_CASE, 0x1ED3 }, - { 0x1ED3, LOWER_CASE, 0x1ED2 }, - { 0x1ED4, UPPER_CASE, 0x1ED5 }, - { 0x1ED5, LOWER_CASE, 0x1ED4 }, - { 0x1ED6, UPPER_CASE, 0x1ED7 }, - { 0x1ED7, LOWER_CASE, 0x1ED6 }, - { 0x1ED8, UPPER_CASE, 0x1ED9 }, - { 0x1ED9, LOWER_CASE, 0x1ED8 }, - { 0x1EDA, UPPER_CASE, 0x1EDB }, - { 0x1EDB, LOWER_CASE, 0x1EDA }, - { 0x1EDC, UPPER_CASE, 0x1EDD }, - { 0x1EDD, LOWER_CASE, 0x1EDC }, - { 0x1EDE, UPPER_CASE, 0x1EDF }, - { 0x1EDF, LOWER_CASE, 0x1EDE }, - { 0x1EE0, UPPER_CASE, 0x1EE1 }, - { 0x1EE1, LOWER_CASE, 0x1EE0 }, - { 0x1EE2, UPPER_CASE, 0x1EE3 }, - { 0x1EE3, LOWER_CASE, 0x1EE2 }, - { 0x1EE4, UPPER_CASE, 0x1EE5 }, - { 0x1EE5, LOWER_CASE, 0x1EE4 }, - { 0x1EE6, UPPER_CASE, 0x1EE7 }, - { 0x1EE7, LOWER_CASE, 0x1EE6 }, - { 0x1EE8, UPPER_CASE, 0x1EE9 }, - { 0x1EE9, LOWER_CASE, 0x1EE8 }, - { 0x1EEA, UPPER_CASE, 0x1EEB }, - { 0x1EEB, LOWER_CASE, 0x1EEA }, - { 0x1EEC, UPPER_CASE, 0x1EED }, - { 0x1EED, LOWER_CASE, 0x1EEC }, - { 0x1EEE, UPPER_CASE, 0x1EEF }, - { 0x1EEF, LOWER_CASE, 0x1EEE }, - { 0x1EF0, UPPER_CASE, 0x1EF1 }, - { 0x1EF1, LOWER_CASE, 0x1EF0 }, - { 0x1EF2, UPPER_CASE, 0x1EF3 }, - { 0x1EF3, LOWER_CASE, 0x1EF2 }, - { 0x1EF4, UPPER_CASE, 0x1EF5 }, - { 0x1EF5, LOWER_CASE, 0x1EF4 }, - { 0x1EF6, UPPER_CASE, 0x1EF7 }, - { 0x1EF7, LOWER_CASE, 0x1EF6 }, - { 0x1EF8, UPPER_CASE, 0x1EF9 }, - { 0x1EF9, LOWER_CASE, 0x1EF8 }, - { 0x1EFA, UPPER_CASE, 0x1EFB }, - { 0x1EFB, LOWER_CASE, 0x1EFA }, - { 0x1EFC, UPPER_CASE, 0x1EFD }, - { 0x1EFD, LOWER_CASE, 0x1EFC }, - { 0x1EFE, UPPER_CASE, 0x1EFF }, - { 0x1EFF, LOWER_CASE, 0x1EFE }, - { 0x1F00, LOWER_CASE, 0x1F08 }, - { 0x1F01, LOWER_CASE, 0x1F09 }, - { 0x1F02, LOWER_CASE, 0x1F0A }, - { 0x1F03, LOWER_CASE, 0x1F0B }, - { 0x1F04, LOWER_CASE, 0x1F0C }, - { 0x1F05, LOWER_CASE, 0x1F0D }, - { 0x1F06, LOWER_CASE, 0x1F0E }, - { 0x1F07, LOWER_CASE, 0x1F0F }, - { 0x1F08, UPPER_CASE, 0x1F00 }, - { 0x1F09, UPPER_CASE, 0x1F01 }, - { 0x1F0A, UPPER_CASE, 0x1F02 }, - { 0x1F0B, UPPER_CASE, 0x1F03 }, - { 0x1F0C, UPPER_CASE, 0x1F04 }, - { 0x1F0D, UPPER_CASE, 0x1F05 }, - { 0x1F0E, UPPER_CASE, 0x1F06 }, - { 0x1F0F, UPPER_CASE, 0x1F07 }, - { 0x1F10, LOWER_CASE, 0x1F18 }, - { 0x1F11, LOWER_CASE, 0x1F19 }, - { 0x1F12, LOWER_CASE, 0x1F1A }, - { 0x1F13, LOWER_CASE, 0x1F1B }, - { 0x1F14, LOWER_CASE, 0x1F1C }, - { 0x1F15, LOWER_CASE, 0x1F1D }, - { 0x1F18, UPPER_CASE, 0x1F10 }, - { 0x1F19, UPPER_CASE, 0x1F11 }, - { 0x1F1A, UPPER_CASE, 0x1F12 }, - { 0x1F1B, UPPER_CASE, 0x1F13 }, - { 0x1F1C, UPPER_CASE, 0x1F14 }, - { 0x1F1D, UPPER_CASE, 0x1F15 }, - { 0x1F20, LOWER_CASE, 0x1F28 }, - { 0x1F21, LOWER_CASE, 0x1F29 }, - { 0x1F22, LOWER_CASE, 0x1F2A }, - { 0x1F23, LOWER_CASE, 0x1F2B }, - { 0x1F24, LOWER_CASE, 0x1F2C }, - { 0x1F25, LOWER_CASE, 0x1F2D }, - { 0x1F26, LOWER_CASE, 0x1F2E }, - { 0x1F27, LOWER_CASE, 0x1F2F }, - { 0x1F28, UPPER_CASE, 0x1F20 }, - { 0x1F29, UPPER_CASE, 0x1F21 }, - { 0x1F2A, UPPER_CASE, 0x1F22 }, - { 0x1F2B, UPPER_CASE, 0x1F23 }, - { 0x1F2C, UPPER_CASE, 0x1F24 }, - { 0x1F2D, UPPER_CASE, 0x1F25 }, - { 0x1F2E, UPPER_CASE, 0x1F26 }, - { 0x1F2F, UPPER_CASE, 0x1F27 }, - { 0x1F30, LOWER_CASE, 0x1F38 }, - { 0x1F31, LOWER_CASE, 0x1F39 }, - { 0x1F32, LOWER_CASE, 0x1F3A }, - { 0x1F33, LOWER_CASE, 0x1F3B }, - { 0x1F34, LOWER_CASE, 0x1F3C }, - { 0x1F35, LOWER_CASE, 0x1F3D }, - { 0x1F36, LOWER_CASE, 0x1F3E }, - { 0x1F37, LOWER_CASE, 0x1F3F }, - { 0x1F38, UPPER_CASE, 0x1F30 }, - { 0x1F39, UPPER_CASE, 0x1F31 }, - { 0x1F3A, UPPER_CASE, 0x1F32 }, - { 0x1F3B, UPPER_CASE, 0x1F33 }, - { 0x1F3C, UPPER_CASE, 0x1F34 }, - { 0x1F3D, UPPER_CASE, 0x1F35 }, - { 0x1F3E, UPPER_CASE, 0x1F36 }, - { 0x1F3F, UPPER_CASE, 0x1F37 }, - { 0x1F40, LOWER_CASE, 0x1F48 }, - { 0x1F41, LOWER_CASE, 0x1F49 }, - { 0x1F42, LOWER_CASE, 0x1F4A }, - { 0x1F43, LOWER_CASE, 0x1F4B }, - { 0x1F44, LOWER_CASE, 0x1F4C }, - { 0x1F45, LOWER_CASE, 0x1F4D }, - { 0x1F48, UPPER_CASE, 0x1F40 }, - { 0x1F49, UPPER_CASE, 0x1F41 }, - { 0x1F4A, UPPER_CASE, 0x1F42 }, - { 0x1F4B, UPPER_CASE, 0x1F43 }, - { 0x1F4C, UPPER_CASE, 0x1F44 }, - { 0x1F4D, UPPER_CASE, 0x1F45 }, - { 0x1F51, LOWER_CASE, 0x1F59 }, - { 0x1F53, LOWER_CASE, 0x1F5B }, - { 0x1F55, LOWER_CASE, 0x1F5D }, - { 0x1F57, LOWER_CASE, 0x1F5F }, - { 0x1F59, UPPER_CASE, 0x1F51 }, - { 0x1F5B, UPPER_CASE, 0x1F53 }, - { 0x1F5D, UPPER_CASE, 0x1F55 }, - { 0x1F5F, UPPER_CASE, 0x1F57 }, - { 0x1F60, LOWER_CASE, 0x1F68 }, - { 0x1F61, LOWER_CASE, 0x1F69 }, - { 0x1F62, LOWER_CASE, 0x1F6A }, - { 0x1F63, LOWER_CASE, 0x1F6B }, - { 0x1F64, LOWER_CASE, 0x1F6C }, - { 0x1F65, LOWER_CASE, 0x1F6D }, - { 0x1F66, LOWER_CASE, 0x1F6E }, - { 0x1F67, LOWER_CASE, 0x1F6F }, - { 0x1F68, UPPER_CASE, 0x1F60 }, - { 0x1F69, UPPER_CASE, 0x1F61 }, - { 0x1F6A, UPPER_CASE, 0x1F62 }, - { 0x1F6B, UPPER_CASE, 0x1F63 }, - { 0x1F6C, UPPER_CASE, 0x1F64 }, - { 0x1F6D, UPPER_CASE, 0x1F65 }, - { 0x1F6E, UPPER_CASE, 0x1F66 }, - { 0x1F6F, UPPER_CASE, 0x1F67 }, - { 0x1F70, LOWER_CASE, 0x1FBA }, - { 0x1F71, LOWER_CASE, 0x1FBB }, - { 0x1F72, LOWER_CASE, 0x1FC8 }, - { 0x1F73, LOWER_CASE, 0x1FC9 }, - { 0x1F74, LOWER_CASE, 0x1FCA }, - { 0x1F75, LOWER_CASE, 0x1FCB }, - { 0x1F76, LOWER_CASE, 0x1FDA }, - { 0x1F77, LOWER_CASE, 0x1FDB }, - { 0x1F78, LOWER_CASE, 0x1FF8 }, - { 0x1F79, LOWER_CASE, 0x1FF9 }, - { 0x1F7A, LOWER_CASE, 0x1FEA }, - { 0x1F7B, LOWER_CASE, 0x1FEB }, - { 0x1F7C, LOWER_CASE, 0x1FFA }, - { 0x1F7D, LOWER_CASE, 0x1FFB }, - { 0x1F80, LOWER_CASE, 0x1F88 }, - { 0x1F81, LOWER_CASE, 0x1F89 }, - { 0x1F82, LOWER_CASE, 0x1F8A }, - { 0x1F83, LOWER_CASE, 0x1F8B }, - { 0x1F84, LOWER_CASE, 0x1F8C }, - { 0x1F85, LOWER_CASE, 0x1F8D }, - { 0x1F86, LOWER_CASE, 0x1F8E }, - { 0x1F87, LOWER_CASE, 0x1F8F }, - { 0x1F88, UPPER_CASE, 0x1F80 }, - { 0x1F89, UPPER_CASE, 0x1F81 }, - { 0x1F8A, UPPER_CASE, 0x1F82 }, - { 0x1F8B, UPPER_CASE, 0x1F83 }, - { 0x1F8C, UPPER_CASE, 0x1F84 }, - { 0x1F8D, UPPER_CASE, 0x1F85 }, - { 0x1F8E, UPPER_CASE, 0x1F86 }, - { 0x1F8F, UPPER_CASE, 0x1F87 }, - { 0x1F90, LOWER_CASE, 0x1F98 }, - { 0x1F91, LOWER_CASE, 0x1F99 }, - { 0x1F92, LOWER_CASE, 0x1F9A }, - { 0x1F93, LOWER_CASE, 0x1F9B }, - { 0x1F94, LOWER_CASE, 0x1F9C }, - { 0x1F95, LOWER_CASE, 0x1F9D }, - { 0x1F96, LOWER_CASE, 0x1F9E }, - { 0x1F97, LOWER_CASE, 0x1F9F }, - { 0x1F98, UPPER_CASE, 0x1F90 }, - { 0x1F99, UPPER_CASE, 0x1F91 }, - { 0x1F9A, UPPER_CASE, 0x1F92 }, - { 0x1F9B, UPPER_CASE, 0x1F93 }, - { 0x1F9C, UPPER_CASE, 0x1F94 }, - { 0x1F9D, UPPER_CASE, 0x1F95 }, - { 0x1F9E, UPPER_CASE, 0x1F96 }, - { 0x1F9F, UPPER_CASE, 0x1F97 }, - { 0x1FA0, LOWER_CASE, 0x1FA8 }, - { 0x1FA1, LOWER_CASE, 0x1FA9 }, - { 0x1FA2, LOWER_CASE, 0x1FAA }, - { 0x1FA3, LOWER_CASE, 0x1FAB }, - { 0x1FA4, LOWER_CASE, 0x1FAC }, - { 0x1FA5, LOWER_CASE, 0x1FAD }, - { 0x1FA6, LOWER_CASE, 0x1FAE }, - { 0x1FA7, LOWER_CASE, 0x1FAF }, - { 0x1FA8, UPPER_CASE, 0x1FA0 }, - { 0x1FA9, UPPER_CASE, 0x1FA1 }, - { 0x1FAA, UPPER_CASE, 0x1FA2 }, - { 0x1FAB, UPPER_CASE, 0x1FA3 }, - { 0x1FAC, UPPER_CASE, 0x1FA4 }, - { 0x1FAD, UPPER_CASE, 0x1FA5 }, - { 0x1FAE, UPPER_CASE, 0x1FA6 }, - { 0x1FAF, UPPER_CASE, 0x1FA7 }, - { 0x1FB0, LOWER_CASE, 0x1FB8 }, - { 0x1FB1, LOWER_CASE, 0x1FB9 }, - { 0x1FB3, LOWER_CASE, 0x1FBC }, - { 0x1FB8, UPPER_CASE, 0x1FB0 }, - { 0x1FB9, UPPER_CASE, 0x1FB1 }, - { 0x1FBA, UPPER_CASE, 0x1F70 }, - { 0x1FBB, UPPER_CASE, 0x1F71 }, - { 0x1FBC, UPPER_CASE, 0x1FB3 }, - { 0x1FBE, LOWER_CASE, 0x399 }, - { 0x1FC3, LOWER_CASE, 0x1FCC }, - { 0x1FC8, UPPER_CASE, 0x1F72 }, - { 0x1FC9, UPPER_CASE, 0x1F73 }, - { 0x1FCA, UPPER_CASE, 0x1F74 }, - { 0x1FCB, UPPER_CASE, 0x1F75 }, - { 0x1FCC, UPPER_CASE, 0x1FC3 }, - { 0x1FD0, LOWER_CASE, 0x1FD8 }, - { 0x1FD1, LOWER_CASE, 0x1FD9 }, - { 0x1FD8, UPPER_CASE, 0x1FD0 }, - { 0x1FD9, UPPER_CASE, 0x1FD1 }, - { 0x1FDA, UPPER_CASE, 0x1F76 }, - { 0x1FDB, UPPER_CASE, 0x1F77 }, - { 0x1FE0, LOWER_CASE, 0x1FE8 }, - { 0x1FE1, LOWER_CASE, 0x1FE9 }, - { 0x1FE5, LOWER_CASE, 0x1FEC }, - { 0x1FE8, UPPER_CASE, 0x1FE0 }, - { 0x1FE9, UPPER_CASE, 0x1FE1 }, - { 0x1FEA, UPPER_CASE, 0x1F7A }, - { 0x1FEB, UPPER_CASE, 0x1F7B }, - { 0x1FEC, UPPER_CASE, 0x1FE5 }, - { 0x1FF3, LOWER_CASE, 0x1FFC }, - { 0x1FF8, UPPER_CASE, 0x1F78 }, - { 0x1FF9, UPPER_CASE, 0x1F79 }, - { 0x1FFA, UPPER_CASE, 0x1F7C }, - { 0x1FFB, UPPER_CASE, 0x1F7D }, - { 0x1FFC, UPPER_CASE, 0x1FF3 }, - { 0x2126, UPPER_CASE, 0x3C9 }, - { 0x212A, UPPER_CASE, 0x6B }, - { 0x212B, UPPER_CASE, 0xE5 }, - { 0x2132, UPPER_CASE, 0x214E }, - { 0x214E, LOWER_CASE, 0x2132 }, - { 0x2160, UPPER_CASE, 0x2170 }, - { 0x2161, UPPER_CASE, 0x2171 }, - { 0x2162, UPPER_CASE, 0x2172 }, - { 0x2163, UPPER_CASE, 0x2173 }, - { 0x2164, UPPER_CASE, 0x2174 }, - { 0x2165, UPPER_CASE, 0x2175 }, - { 0x2166, UPPER_CASE, 0x2176 }, - { 0x2167, UPPER_CASE, 0x2177 }, - { 0x2168, UPPER_CASE, 0x2178 }, - { 0x2169, UPPER_CASE, 0x2179 }, - { 0x216A, UPPER_CASE, 0x217A }, - { 0x216B, UPPER_CASE, 0x217B }, - { 0x216C, UPPER_CASE, 0x217C }, - { 0x216D, UPPER_CASE, 0x217D }, - { 0x216E, UPPER_CASE, 0x217E }, - { 0x216F, UPPER_CASE, 0x217F }, - { 0x2170, LOWER_CASE, 0x2160 }, - { 0x2171, LOWER_CASE, 0x2161 }, - { 0x2172, LOWER_CASE, 0x2162 }, - { 0x2173, LOWER_CASE, 0x2163 }, - { 0x2174, LOWER_CASE, 0x2164 }, - { 0x2175, LOWER_CASE, 0x2165 }, - { 0x2176, LOWER_CASE, 0x2166 }, - { 0x2177, LOWER_CASE, 0x2167 }, - { 0x2178, LOWER_CASE, 0x2168 }, - { 0x2179, LOWER_CASE, 0x2169 }, - { 0x217A, LOWER_CASE, 0x216A }, - { 0x217B, LOWER_CASE, 0x216B }, - { 0x217C, LOWER_CASE, 0x216C }, - { 0x217D, LOWER_CASE, 0x216D }, - { 0x217E, LOWER_CASE, 0x216E }, - { 0x217F, LOWER_CASE, 0x216F }, - { 0x2183, UPPER_CASE, 0x2184 }, - { 0x2184, LOWER_CASE, 0x2183 }, - { 0x24B6, UPPER_CASE, 0x24D0 }, - { 0x24B7, UPPER_CASE, 0x24D1 }, - { 0x24B8, UPPER_CASE, 0x24D2 }, - { 0x24B9, UPPER_CASE, 0x24D3 }, - { 0x24BA, UPPER_CASE, 0x24D4 }, - { 0x24BB, UPPER_CASE, 0x24D5 }, - { 0x24BC, UPPER_CASE, 0x24D6 }, - { 0x24BD, UPPER_CASE, 0x24D7 }, - { 0x24BE, UPPER_CASE, 0x24D8 }, - { 0x24BF, UPPER_CASE, 0x24D9 }, - { 0x24C0, UPPER_CASE, 0x24DA }, - { 0x24C1, UPPER_CASE, 0x24DB }, - { 0x24C2, UPPER_CASE, 0x24DC }, - { 0x24C3, UPPER_CASE, 0x24DD }, - { 0x24C4, UPPER_CASE, 0x24DE }, - { 0x24C5, UPPER_CASE, 0x24DF }, - { 0x24C6, UPPER_CASE, 0x24E0 }, - { 0x24C7, UPPER_CASE, 0x24E1 }, - { 0x24C8, UPPER_CASE, 0x24E2 }, - { 0x24C9, UPPER_CASE, 0x24E3 }, - { 0x24CA, UPPER_CASE, 0x24E4 }, - { 0x24CB, UPPER_CASE, 0x24E5 }, - { 0x24CC, UPPER_CASE, 0x24E6 }, - { 0x24CD, UPPER_CASE, 0x24E7 }, - { 0x24CE, UPPER_CASE, 0x24E8 }, - { 0x24CF, UPPER_CASE, 0x24E9 }, - { 0x24D0, LOWER_CASE, 0x24B6 }, - { 0x24D1, LOWER_CASE, 0x24B7 }, - { 0x24D2, LOWER_CASE, 0x24B8 }, - { 0x24D3, LOWER_CASE, 0x24B9 }, - { 0x24D4, LOWER_CASE, 0x24BA }, - { 0x24D5, LOWER_CASE, 0x24BB }, - { 0x24D6, LOWER_CASE, 0x24BC }, - { 0x24D7, LOWER_CASE, 0x24BD }, - { 0x24D8, LOWER_CASE, 0x24BE }, - { 0x24D9, LOWER_CASE, 0x24BF }, - { 0x24DA, LOWER_CASE, 0x24C0 }, - { 0x24DB, LOWER_CASE, 0x24C1 }, - { 0x24DC, LOWER_CASE, 0x24C2 }, - { 0x24DD, LOWER_CASE, 0x24C3 }, - { 0x24DE, LOWER_CASE, 0x24C4 }, - { 0x24DF, LOWER_CASE, 0x24C5 }, - { 0x24E0, LOWER_CASE, 0x24C6 }, - { 0x24E1, LOWER_CASE, 0x24C7 }, - { 0x24E2, LOWER_CASE, 0x24C8 }, - { 0x24E3, LOWER_CASE, 0x24C9 }, - { 0x24E4, LOWER_CASE, 0x24CA }, - { 0x24E5, LOWER_CASE, 0x24CB }, - { 0x24E6, LOWER_CASE, 0x24CC }, - { 0x24E7, LOWER_CASE, 0x24CD }, - { 0x24E8, LOWER_CASE, 0x24CE }, - { 0x24E9, LOWER_CASE, 0x24CF }, - { 0x2C00, UPPER_CASE, 0x2C30 }, - { 0x2C01, UPPER_CASE, 0x2C31 }, - { 0x2C02, UPPER_CASE, 0x2C32 }, - { 0x2C03, UPPER_CASE, 0x2C33 }, - { 0x2C04, UPPER_CASE, 0x2C34 }, - { 0x2C05, UPPER_CASE, 0x2C35 }, - { 0x2C06, UPPER_CASE, 0x2C36 }, - { 0x2C07, UPPER_CASE, 0x2C37 }, - { 0x2C08, UPPER_CASE, 0x2C38 }, - { 0x2C09, UPPER_CASE, 0x2C39 }, - { 0x2C0A, UPPER_CASE, 0x2C3A }, - { 0x2C0B, UPPER_CASE, 0x2C3B }, - { 0x2C0C, UPPER_CASE, 0x2C3C }, - { 0x2C0D, UPPER_CASE, 0x2C3D }, - { 0x2C0E, UPPER_CASE, 0x2C3E }, - { 0x2C0F, UPPER_CASE, 0x2C3F }, - { 0x2C10, UPPER_CASE, 0x2C40 }, - { 0x2C11, UPPER_CASE, 0x2C41 }, - { 0x2C12, UPPER_CASE, 0x2C42 }, - { 0x2C13, UPPER_CASE, 0x2C43 }, - { 0x2C14, UPPER_CASE, 0x2C44 }, - { 0x2C15, UPPER_CASE, 0x2C45 }, - { 0x2C16, UPPER_CASE, 0x2C46 }, - { 0x2C17, UPPER_CASE, 0x2C47 }, - { 0x2C18, UPPER_CASE, 0x2C48 }, - { 0x2C19, UPPER_CASE, 0x2C49 }, - { 0x2C1A, UPPER_CASE, 0x2C4A }, - { 0x2C1B, UPPER_CASE, 0x2C4B }, - { 0x2C1C, UPPER_CASE, 0x2C4C }, - { 0x2C1D, UPPER_CASE, 0x2C4D }, - { 0x2C1E, UPPER_CASE, 0x2C4E }, - { 0x2C1F, UPPER_CASE, 0x2C4F }, - { 0x2C20, UPPER_CASE, 0x2C50 }, - { 0x2C21, UPPER_CASE, 0x2C51 }, - { 0x2C22, UPPER_CASE, 0x2C52 }, - { 0x2C23, UPPER_CASE, 0x2C53 }, - { 0x2C24, UPPER_CASE, 0x2C54 }, - { 0x2C25, UPPER_CASE, 0x2C55 }, - { 0x2C26, UPPER_CASE, 0x2C56 }, - { 0x2C27, UPPER_CASE, 0x2C57 }, - { 0x2C28, UPPER_CASE, 0x2C58 }, - { 0x2C29, UPPER_CASE, 0x2C59 }, - { 0x2C2A, UPPER_CASE, 0x2C5A }, - { 0x2C2B, UPPER_CASE, 0x2C5B }, - { 0x2C2C, UPPER_CASE, 0x2C5C }, - { 0x2C2D, UPPER_CASE, 0x2C5D }, - { 0x2C2E, UPPER_CASE, 0x2C5E }, - { 0x2C2F, UPPER_CASE, 0x2C5F }, - { 0x2C30, LOWER_CASE, 0x2C00 }, - { 0x2C31, LOWER_CASE, 0x2C01 }, - { 0x2C32, LOWER_CASE, 0x2C02 }, - { 0x2C33, LOWER_CASE, 0x2C03 }, - { 0x2C34, LOWER_CASE, 0x2C04 }, - { 0x2C35, LOWER_CASE, 0x2C05 }, - { 0x2C36, LOWER_CASE, 0x2C06 }, - { 0x2C37, LOWER_CASE, 0x2C07 }, - { 0x2C38, LOWER_CASE, 0x2C08 }, - { 0x2C39, LOWER_CASE, 0x2C09 }, - { 0x2C3A, LOWER_CASE, 0x2C0A }, - { 0x2C3B, LOWER_CASE, 0x2C0B }, - { 0x2C3C, LOWER_CASE, 0x2C0C }, - { 0x2C3D, LOWER_CASE, 0x2C0D }, - { 0x2C3E, LOWER_CASE, 0x2C0E }, - { 0x2C3F, LOWER_CASE, 0x2C0F }, - { 0x2C40, LOWER_CASE, 0x2C10 }, - { 0x2C41, LOWER_CASE, 0x2C11 }, - { 0x2C42, LOWER_CASE, 0x2C12 }, - { 0x2C43, LOWER_CASE, 0x2C13 }, - { 0x2C44, LOWER_CASE, 0x2C14 }, - { 0x2C45, LOWER_CASE, 0x2C15 }, - { 0x2C46, LOWER_CASE, 0x2C16 }, - { 0x2C47, LOWER_CASE, 0x2C17 }, - { 0x2C48, LOWER_CASE, 0x2C18 }, - { 0x2C49, LOWER_CASE, 0x2C19 }, - { 0x2C4A, LOWER_CASE, 0x2C1A }, - { 0x2C4B, LOWER_CASE, 0x2C1B }, - { 0x2C4C, LOWER_CASE, 0x2C1C }, - { 0x2C4D, LOWER_CASE, 0x2C1D }, - { 0x2C4E, LOWER_CASE, 0x2C1E }, - { 0x2C4F, LOWER_CASE, 0x2C1F }, - { 0x2C50, LOWER_CASE, 0x2C20 }, - { 0x2C51, LOWER_CASE, 0x2C21 }, - { 0x2C52, LOWER_CASE, 0x2C22 }, - { 0x2C53, LOWER_CASE, 0x2C23 }, - { 0x2C54, LOWER_CASE, 0x2C24 }, - { 0x2C55, LOWER_CASE, 0x2C25 }, - { 0x2C56, LOWER_CASE, 0x2C26 }, - { 0x2C57, LOWER_CASE, 0x2C27 }, - { 0x2C58, LOWER_CASE, 0x2C28 }, - { 0x2C59, LOWER_CASE, 0x2C29 }, - { 0x2C5A, LOWER_CASE, 0x2C2A }, - { 0x2C5B, LOWER_CASE, 0x2C2B }, - { 0x2C5C, LOWER_CASE, 0x2C2C }, - { 0x2C5D, LOWER_CASE, 0x2C2D }, - { 0x2C5E, LOWER_CASE, 0x2C2E }, - { 0x2C5F, LOWER_CASE, 0x2C2F }, - { 0x2C60, UPPER_CASE, 0x2C61 }, - { 0x2C61, LOWER_CASE, 0x2C60 }, - { 0x2C62, UPPER_CASE, 0x26B }, - { 0x2C63, UPPER_CASE, 0x1D7D }, - { 0x2C64, UPPER_CASE, 0x27D }, - { 0x2C65, LOWER_CASE, 0x23A }, - { 0x2C66, LOWER_CASE, 0x23E }, - { 0x2C67, UPPER_CASE, 0x2C68 }, - { 0x2C68, LOWER_CASE, 0x2C67 }, - { 0x2C69, UPPER_CASE, 0x2C6A }, - { 0x2C6A, LOWER_CASE, 0x2C69 }, - { 0x2C6B, UPPER_CASE, 0x2C6C }, - { 0x2C6C, LOWER_CASE, 0x2C6B }, - { 0x2C6D, UPPER_CASE, 0x251 }, - { 0x2C6E, UPPER_CASE, 0x271 }, - { 0x2C6F, UPPER_CASE, 0x250 }, - { 0x2C70, UPPER_CASE, 0x252 }, - { 0x2C72, UPPER_CASE, 0x2C73 }, - { 0x2C73, LOWER_CASE, 0x2C72 }, - { 0x2C75, UPPER_CASE, 0x2C76 }, - { 0x2C76, LOWER_CASE, 0x2C75 }, - { 0x2C7E, UPPER_CASE, 0x23F }, - { 0x2C7F, UPPER_CASE, 0x240 }, - { 0x2C80, UPPER_CASE, 0x2C81 }, - { 0x2C81, LOWER_CASE, 0x2C80 }, - { 0x2C82, UPPER_CASE, 0x2C83 }, - { 0x2C83, LOWER_CASE, 0x2C82 }, - { 0x2C84, UPPER_CASE, 0x2C85 }, - { 0x2C85, LOWER_CASE, 0x2C84 }, - { 0x2C86, UPPER_CASE, 0x2C87 }, - { 0x2C87, LOWER_CASE, 0x2C86 }, - { 0x2C88, UPPER_CASE, 0x2C89 }, - { 0x2C89, LOWER_CASE, 0x2C88 }, - { 0x2C8A, UPPER_CASE, 0x2C8B }, - { 0x2C8B, LOWER_CASE, 0x2C8A }, - { 0x2C8C, UPPER_CASE, 0x2C8D }, - { 0x2C8D, LOWER_CASE, 0x2C8C }, - { 0x2C8E, UPPER_CASE, 0x2C8F }, - { 0x2C8F, LOWER_CASE, 0x2C8E }, - { 0x2C90, UPPER_CASE, 0x2C91 }, - { 0x2C91, LOWER_CASE, 0x2C90 }, - { 0x2C92, UPPER_CASE, 0x2C93 }, - { 0x2C93, LOWER_CASE, 0x2C92 }, - { 0x2C94, UPPER_CASE, 0x2C95 }, - { 0x2C95, LOWER_CASE, 0x2C94 }, - { 0x2C96, UPPER_CASE, 0x2C97 }, - { 0x2C97, LOWER_CASE, 0x2C96 }, - { 0x2C98, UPPER_CASE, 0x2C99 }, - { 0x2C99, LOWER_CASE, 0x2C98 }, - { 0x2C9A, UPPER_CASE, 0x2C9B }, - { 0x2C9B, LOWER_CASE, 0x2C9A }, - { 0x2C9C, UPPER_CASE, 0x2C9D }, - { 0x2C9D, LOWER_CASE, 0x2C9C }, - { 0x2C9E, UPPER_CASE, 0x2C9F }, - { 0x2C9F, LOWER_CASE, 0x2C9E }, - { 0x2CA0, UPPER_CASE, 0x2CA1 }, - { 0x2CA1, LOWER_CASE, 0x2CA0 }, - { 0x2CA2, UPPER_CASE, 0x2CA3 }, - { 0x2CA3, LOWER_CASE, 0x2CA2 }, - { 0x2CA4, UPPER_CASE, 0x2CA5 }, - { 0x2CA5, LOWER_CASE, 0x2CA4 }, - { 0x2CA6, UPPER_CASE, 0x2CA7 }, - { 0x2CA7, LOWER_CASE, 0x2CA6 }, - { 0x2CA8, UPPER_CASE, 0x2CA9 }, - { 0x2CA9, LOWER_CASE, 0x2CA8 }, - { 0x2CAA, UPPER_CASE, 0x2CAB }, - { 0x2CAB, LOWER_CASE, 0x2CAA }, - { 0x2CAC, UPPER_CASE, 0x2CAD }, - { 0x2CAD, LOWER_CASE, 0x2CAC }, - { 0x2CAE, UPPER_CASE, 0x2CAF }, - { 0x2CAF, LOWER_CASE, 0x2CAE }, - { 0x2CB0, UPPER_CASE, 0x2CB1 }, - { 0x2CB1, LOWER_CASE, 0x2CB0 }, - { 0x2CB2, UPPER_CASE, 0x2CB3 }, - { 0x2CB3, LOWER_CASE, 0x2CB2 }, - { 0x2CB4, UPPER_CASE, 0x2CB5 }, - { 0x2CB5, LOWER_CASE, 0x2CB4 }, - { 0x2CB6, UPPER_CASE, 0x2CB7 }, - { 0x2CB7, LOWER_CASE, 0x2CB6 }, - { 0x2CB8, UPPER_CASE, 0x2CB9 }, - { 0x2CB9, LOWER_CASE, 0x2CB8 }, - { 0x2CBA, UPPER_CASE, 0x2CBB }, - { 0x2CBB, LOWER_CASE, 0x2CBA }, - { 0x2CBC, UPPER_CASE, 0x2CBD }, - { 0x2CBD, LOWER_CASE, 0x2CBC }, - { 0x2CBE, UPPER_CASE, 0x2CBF }, - { 0x2CBF, LOWER_CASE, 0x2CBE }, - { 0x2CC0, UPPER_CASE, 0x2CC1 }, - { 0x2CC1, LOWER_CASE, 0x2CC0 }, - { 0x2CC2, UPPER_CASE, 0x2CC3 }, - { 0x2CC3, LOWER_CASE, 0x2CC2 }, - { 0x2CC4, UPPER_CASE, 0x2CC5 }, - { 0x2CC5, LOWER_CASE, 0x2CC4 }, - { 0x2CC6, UPPER_CASE, 0x2CC7 }, - { 0x2CC7, LOWER_CASE, 0x2CC6 }, - { 0x2CC8, UPPER_CASE, 0x2CC9 }, - { 0x2CC9, LOWER_CASE, 0x2CC8 }, - { 0x2CCA, UPPER_CASE, 0x2CCB }, - { 0x2CCB, LOWER_CASE, 0x2CCA }, - { 0x2CCC, UPPER_CASE, 0x2CCD }, - { 0x2CCD, LOWER_CASE, 0x2CCC }, - { 0x2CCE, UPPER_CASE, 0x2CCF }, - { 0x2CCF, LOWER_CASE, 0x2CCE }, - { 0x2CD0, UPPER_CASE, 0x2CD1 }, - { 0x2CD1, LOWER_CASE, 0x2CD0 }, - { 0x2CD2, UPPER_CASE, 0x2CD3 }, - { 0x2CD3, LOWER_CASE, 0x2CD2 }, - { 0x2CD4, UPPER_CASE, 0x2CD5 }, - { 0x2CD5, LOWER_CASE, 0x2CD4 }, - { 0x2CD6, UPPER_CASE, 0x2CD7 }, - { 0x2CD7, LOWER_CASE, 0x2CD6 }, - { 0x2CD8, UPPER_CASE, 0x2CD9 }, - { 0x2CD9, LOWER_CASE, 0x2CD8 }, - { 0x2CDA, UPPER_CASE, 0x2CDB }, - { 0x2CDB, LOWER_CASE, 0x2CDA }, - { 0x2CDC, UPPER_CASE, 0x2CDD }, - { 0x2CDD, LOWER_CASE, 0x2CDC }, - { 0x2CDE, UPPER_CASE, 0x2CDF }, - { 0x2CDF, LOWER_CASE, 0x2CDE }, - { 0x2CE0, UPPER_CASE, 0x2CE1 }, - { 0x2CE1, LOWER_CASE, 0x2CE0 }, - { 0x2CE2, UPPER_CASE, 0x2CE3 }, - { 0x2CE3, LOWER_CASE, 0x2CE2 }, - { 0x2CEB, UPPER_CASE, 0x2CEC }, - { 0x2CEC, LOWER_CASE, 0x2CEB }, - { 0x2CED, UPPER_CASE, 0x2CEE }, - { 0x2CEE, LOWER_CASE, 0x2CED }, - { 0x2CF2, UPPER_CASE, 0x2CF3 }, - { 0x2CF3, LOWER_CASE, 0x2CF2 }, - { 0x2D00, LOWER_CASE, 0x10A0 }, - { 0x2D01, LOWER_CASE, 0x10A1 }, - { 0x2D02, LOWER_CASE, 0x10A2 }, - { 0x2D03, LOWER_CASE, 0x10A3 }, - { 0x2D04, LOWER_CASE, 0x10A4 }, - { 0x2D05, LOWER_CASE, 0x10A5 }, - { 0x2D06, LOWER_CASE, 0x10A6 }, - { 0x2D07, LOWER_CASE, 0x10A7 }, - { 0x2D08, LOWER_CASE, 0x10A8 }, - { 0x2D09, LOWER_CASE, 0x10A9 }, - { 0x2D0A, LOWER_CASE, 0x10AA }, - { 0x2D0B, LOWER_CASE, 0x10AB }, - { 0x2D0C, LOWER_CASE, 0x10AC }, - { 0x2D0D, LOWER_CASE, 0x10AD }, - { 0x2D0E, LOWER_CASE, 0x10AE }, - { 0x2D0F, LOWER_CASE, 0x10AF }, - { 0x2D10, LOWER_CASE, 0x10B0 }, - { 0x2D11, LOWER_CASE, 0x10B1 }, - { 0x2D12, LOWER_CASE, 0x10B2 }, - { 0x2D13, LOWER_CASE, 0x10B3 }, - { 0x2D14, LOWER_CASE, 0x10B4 }, - { 0x2D15, LOWER_CASE, 0x10B5 }, - { 0x2D16, LOWER_CASE, 0x10B6 }, - { 0x2D17, LOWER_CASE, 0x10B7 }, - { 0x2D18, LOWER_CASE, 0x10B8 }, - { 0x2D19, LOWER_CASE, 0x10B9 }, - { 0x2D1A, LOWER_CASE, 0x10BA }, - { 0x2D1B, LOWER_CASE, 0x10BB }, - { 0x2D1C, LOWER_CASE, 0x10BC }, - { 0x2D1D, LOWER_CASE, 0x10BD }, - { 0x2D1E, LOWER_CASE, 0x10BE }, - { 0x2D1F, LOWER_CASE, 0x10BF }, - { 0x2D20, LOWER_CASE, 0x10C0 }, - { 0x2D21, LOWER_CASE, 0x10C1 }, - { 0x2D22, LOWER_CASE, 0x10C2 }, - { 0x2D23, LOWER_CASE, 0x10C3 }, - { 0x2D24, LOWER_CASE, 0x10C4 }, - { 0x2D25, LOWER_CASE, 0x10C5 }, - { 0x2D27, LOWER_CASE, 0x10C7 }, - { 0x2D2D, LOWER_CASE, 0x10CD }, - { 0xA640, UPPER_CASE, 0xA641 }, - { 0xA641, LOWER_CASE, 0xA640 }, - { 0xA642, UPPER_CASE, 0xA643 }, - { 0xA643, LOWER_CASE, 0xA642 }, - { 0xA644, UPPER_CASE, 0xA645 }, - { 0xA645, LOWER_CASE, 0xA644 }, - { 0xA646, UPPER_CASE, 0xA647 }, - { 0xA647, LOWER_CASE, 0xA646 }, - { 0xA648, UPPER_CASE, 0xA649 }, - { 0xA649, LOWER_CASE, 0xA648 }, - { 0xA64A, UPPER_CASE, 0xA64B }, - { 0xA64B, LOWER_CASE, 0xA64A }, - { 0xA64C, UPPER_CASE, 0xA64D }, - { 0xA64D, LOWER_CASE, 0xA64C }, - { 0xA64E, UPPER_CASE, 0xA64F }, - { 0xA64F, LOWER_CASE, 0xA64E }, - { 0xA650, UPPER_CASE, 0xA651 }, - { 0xA651, LOWER_CASE, 0xA650 }, - { 0xA652, UPPER_CASE, 0xA653 }, - { 0xA653, LOWER_CASE, 0xA652 }, - { 0xA654, UPPER_CASE, 0xA655 }, - { 0xA655, LOWER_CASE, 0xA654 }, - { 0xA656, UPPER_CASE, 0xA657 }, - { 0xA657, LOWER_CASE, 0xA656 }, - { 0xA658, UPPER_CASE, 0xA659 }, - { 0xA659, LOWER_CASE, 0xA658 }, - { 0xA65A, UPPER_CASE, 0xA65B }, - { 0xA65B, LOWER_CASE, 0xA65A }, - { 0xA65C, UPPER_CASE, 0xA65D }, - { 0xA65D, LOWER_CASE, 0xA65C }, - { 0xA65E, UPPER_CASE, 0xA65F }, - { 0xA65F, LOWER_CASE, 0xA65E }, - { 0xA660, UPPER_CASE, 0xA661 }, - { 0xA661, LOWER_CASE, 0xA660 }, - { 0xA662, UPPER_CASE, 0xA663 }, - { 0xA663, LOWER_CASE, 0xA662 }, - { 0xA664, UPPER_CASE, 0xA665 }, - { 0xA665, LOWER_CASE, 0xA664 }, - { 0xA666, UPPER_CASE, 0xA667 }, - { 0xA667, LOWER_CASE, 0xA666 }, - { 0xA668, UPPER_CASE, 0xA669 }, - { 0xA669, LOWER_CASE, 0xA668 }, - { 0xA66A, UPPER_CASE, 0xA66B }, - { 0xA66B, LOWER_CASE, 0xA66A }, - { 0xA66C, UPPER_CASE, 0xA66D }, - { 0xA66D, LOWER_CASE, 0xA66C }, - { 0xA680, UPPER_CASE, 0xA681 }, - { 0xA681, LOWER_CASE, 0xA680 }, - { 0xA682, UPPER_CASE, 0xA683 }, - { 0xA683, LOWER_CASE, 0xA682 }, - { 0xA684, UPPER_CASE, 0xA685 }, - { 0xA685, LOWER_CASE, 0xA684 }, - { 0xA686, UPPER_CASE, 0xA687 }, - { 0xA687, LOWER_CASE, 0xA686 }, - { 0xA688, UPPER_CASE, 0xA689 }, - { 0xA689, LOWER_CASE, 0xA688 }, - { 0xA68A, UPPER_CASE, 0xA68B }, - { 0xA68B, LOWER_CASE, 0xA68A }, - { 0xA68C, UPPER_CASE, 0xA68D }, - { 0xA68D, LOWER_CASE, 0xA68C }, - { 0xA68E, UPPER_CASE, 0xA68F }, - { 0xA68F, LOWER_CASE, 0xA68E }, - { 0xA690, UPPER_CASE, 0xA691 }, - { 0xA691, LOWER_CASE, 0xA690 }, - { 0xA692, UPPER_CASE, 0xA693 }, - { 0xA693, LOWER_CASE, 0xA692 }, - { 0xA694, UPPER_CASE, 0xA695 }, - { 0xA695, LOWER_CASE, 0xA694 }, - { 0xA696, UPPER_CASE, 0xA697 }, - { 0xA697, LOWER_CASE, 0xA696 }, - { 0xA698, UPPER_CASE, 0xA699 }, - { 0xA699, LOWER_CASE, 0xA698 }, - { 0xA69A, UPPER_CASE, 0xA69B }, - { 0xA69B, LOWER_CASE, 0xA69A }, - { 0xA722, UPPER_CASE, 0xA723 }, - { 0xA723, LOWER_CASE, 0xA722 }, - { 0xA724, UPPER_CASE, 0xA725 }, - { 0xA725, LOWER_CASE, 0xA724 }, - { 0xA726, UPPER_CASE, 0xA727 }, - { 0xA727, LOWER_CASE, 0xA726 }, - { 0xA728, UPPER_CASE, 0xA729 }, - { 0xA729, LOWER_CASE, 0xA728 }, - { 0xA72A, UPPER_CASE, 0xA72B }, - { 0xA72B, LOWER_CASE, 0xA72A }, - { 0xA72C, UPPER_CASE, 0xA72D }, - { 0xA72D, LOWER_CASE, 0xA72C }, - { 0xA72E, UPPER_CASE, 0xA72F }, - { 0xA72F, LOWER_CASE, 0xA72E }, - { 0xA732, UPPER_CASE, 0xA733 }, - { 0xA733, LOWER_CASE, 0xA732 }, - { 0xA734, UPPER_CASE, 0xA735 }, - { 0xA735, LOWER_CASE, 0xA734 }, - { 0xA736, UPPER_CASE, 0xA737 }, - { 0xA737, LOWER_CASE, 0xA736 }, - { 0xA738, UPPER_CASE, 0xA739 }, - { 0xA739, LOWER_CASE, 0xA738 }, - { 0xA73A, UPPER_CASE, 0xA73B }, - { 0xA73B, LOWER_CASE, 0xA73A }, - { 0xA73C, UPPER_CASE, 0xA73D }, - { 0xA73D, LOWER_CASE, 0xA73C }, - { 0xA73E, UPPER_CASE, 0xA73F }, - { 0xA73F, LOWER_CASE, 0xA73E }, - { 0xA740, UPPER_CASE, 0xA741 }, - { 0xA741, LOWER_CASE, 0xA740 }, - { 0xA742, UPPER_CASE, 0xA743 }, - { 0xA743, LOWER_CASE, 0xA742 }, - { 0xA744, UPPER_CASE, 0xA745 }, - { 0xA745, LOWER_CASE, 0xA744 }, - { 0xA746, UPPER_CASE, 0xA747 }, - { 0xA747, LOWER_CASE, 0xA746 }, - { 0xA748, UPPER_CASE, 0xA749 }, - { 0xA749, LOWER_CASE, 0xA748 }, - { 0xA74A, UPPER_CASE, 0xA74B }, - { 0xA74B, LOWER_CASE, 0xA74A }, - { 0xA74C, UPPER_CASE, 0xA74D }, - { 0xA74D, LOWER_CASE, 0xA74C }, - { 0xA74E, UPPER_CASE, 0xA74F }, - { 0xA74F, LOWER_CASE, 0xA74E }, - { 0xA750, UPPER_CASE, 0xA751 }, - { 0xA751, LOWER_CASE, 0xA750 }, - { 0xA752, UPPER_CASE, 0xA753 }, - { 0xA753, LOWER_CASE, 0xA752 }, - { 0xA754, UPPER_CASE, 0xA755 }, - { 0xA755, LOWER_CASE, 0xA754 }, - { 0xA756, UPPER_CASE, 0xA757 }, - { 0xA757, LOWER_CASE, 0xA756 }, - { 0xA758, UPPER_CASE, 0xA759 }, - { 0xA759, LOWER_CASE, 0xA758 }, - { 0xA75A, UPPER_CASE, 0xA75B }, - { 0xA75B, LOWER_CASE, 0xA75A }, - { 0xA75C, UPPER_CASE, 0xA75D }, - { 0xA75D, LOWER_CASE, 0xA75C }, - { 0xA75E, UPPER_CASE, 0xA75F }, - { 0xA75F, LOWER_CASE, 0xA75E }, - { 0xA760, UPPER_CASE, 0xA761 }, - { 0xA761, LOWER_CASE, 0xA760 }, - { 0xA762, UPPER_CASE, 0xA763 }, - { 0xA763, LOWER_CASE, 0xA762 }, - { 0xA764, UPPER_CASE, 0xA765 }, - { 0xA765, LOWER_CASE, 0xA764 }, - { 0xA766, UPPER_CASE, 0xA767 }, - { 0xA767, LOWER_CASE, 0xA766 }, - { 0xA768, UPPER_CASE, 0xA769 }, - { 0xA769, LOWER_CASE, 0xA768 }, - { 0xA76A, UPPER_CASE, 0xA76B }, - { 0xA76B, LOWER_CASE, 0xA76A }, - { 0xA76C, UPPER_CASE, 0xA76D }, - { 0xA76D, LOWER_CASE, 0xA76C }, - { 0xA76E, UPPER_CASE, 0xA76F }, - { 0xA76F, LOWER_CASE, 0xA76E }, - { 0xA779, UPPER_CASE, 0xA77A }, - { 0xA77A, LOWER_CASE, 0xA779 }, - { 0xA77B, UPPER_CASE, 0xA77C }, - { 0xA77C, LOWER_CASE, 0xA77B }, - { 0xA77D, UPPER_CASE, 0x1D79 }, - { 0xA77E, UPPER_CASE, 0xA77F }, - { 0xA77F, LOWER_CASE, 0xA77E }, - { 0xA780, UPPER_CASE, 0xA781 }, - { 0xA781, LOWER_CASE, 0xA780 }, - { 0xA782, UPPER_CASE, 0xA783 }, - { 0xA783, LOWER_CASE, 0xA782 }, - { 0xA784, UPPER_CASE, 0xA785 }, - { 0xA785, LOWER_CASE, 0xA784 }, - { 0xA786, UPPER_CASE, 0xA787 }, - { 0xA787, LOWER_CASE, 0xA786 }, - { 0xA78B, UPPER_CASE, 0xA78C }, - { 0xA78C, LOWER_CASE, 0xA78B }, - { 0xA78D, UPPER_CASE, 0x265 }, - { 0xA790, UPPER_CASE, 0xA791 }, - { 0xA791, LOWER_CASE, 0xA790 }, - { 0xA792, UPPER_CASE, 0xA793 }, - { 0xA793, LOWER_CASE, 0xA792 }, - { 0xA794, LOWER_CASE, 0xA7C4 }, - { 0xA796, UPPER_CASE, 0xA797 }, - { 0xA797, LOWER_CASE, 0xA796 }, - { 0xA798, UPPER_CASE, 0xA799 }, - { 0xA799, LOWER_CASE, 0xA798 }, - { 0xA79A, UPPER_CASE, 0xA79B }, - { 0xA79B, LOWER_CASE, 0xA79A }, - { 0xA79C, UPPER_CASE, 0xA79D }, - { 0xA79D, LOWER_CASE, 0xA79C }, - { 0xA79E, UPPER_CASE, 0xA79F }, - { 0xA79F, LOWER_CASE, 0xA79E }, - { 0xA7A0, UPPER_CASE, 0xA7A1 }, - { 0xA7A1, LOWER_CASE, 0xA7A0 }, - { 0xA7A2, UPPER_CASE, 0xA7A3 }, - { 0xA7A3, LOWER_CASE, 0xA7A2 }, - { 0xA7A4, UPPER_CASE, 0xA7A5 }, - { 0xA7A5, LOWER_CASE, 0xA7A4 }, - { 0xA7A6, UPPER_CASE, 0xA7A7 }, - { 0xA7A7, LOWER_CASE, 0xA7A6 }, - { 0xA7A8, UPPER_CASE, 0xA7A9 }, - { 0xA7A9, LOWER_CASE, 0xA7A8 }, - { 0xA7AA, UPPER_CASE, 0x266 }, - { 0xA7AB, UPPER_CASE, 0x25C }, - { 0xA7AC, UPPER_CASE, 0x261 }, - { 0xA7AD, UPPER_CASE, 0x26C }, - { 0xA7AE, UPPER_CASE, 0x26A }, - { 0xA7B0, UPPER_CASE, 0x29E }, - { 0xA7B1, UPPER_CASE, 0x287 }, - { 0xA7B2, UPPER_CASE, 0x29D }, - { 0xA7B3, UPPER_CASE, 0xAB53 }, - { 0xA7B4, UPPER_CASE, 0xA7B5 }, - { 0xA7B5, LOWER_CASE, 0xA7B4 }, - { 0xA7B6, UPPER_CASE, 0xA7B7 }, - { 0xA7B7, LOWER_CASE, 0xA7B6 }, - { 0xA7B8, UPPER_CASE, 0xA7B9 }, - { 0xA7B9, LOWER_CASE, 0xA7B8 }, - { 0xA7BA, UPPER_CASE, 0xA7BB }, - { 0xA7BB, LOWER_CASE, 0xA7BA }, - { 0xA7BC, UPPER_CASE, 0xA7BD }, - { 0xA7BD, LOWER_CASE, 0xA7BC }, - { 0xA7BE, UPPER_CASE, 0xA7BF }, - { 0xA7BF, LOWER_CASE, 0xA7BE }, - { 0xA7C0, UPPER_CASE, 0xA7C1 }, - { 0xA7C1, LOWER_CASE, 0xA7C0 }, - { 0xA7C2, UPPER_CASE, 0xA7C3 }, - { 0xA7C3, LOWER_CASE, 0xA7C2 }, - { 0xA7C4, UPPER_CASE, 0xA794 }, - { 0xA7C5, UPPER_CASE, 0x282 }, - { 0xA7C6, UPPER_CASE, 0x1D8E }, - { 0xA7C7, UPPER_CASE, 0xA7C8 }, - { 0xA7C8, LOWER_CASE, 0xA7C7 }, - { 0xA7C9, UPPER_CASE, 0xA7CA }, - { 0xA7CA, LOWER_CASE, 0xA7C9 }, - { 0xA7D0, UPPER_CASE, 0xA7D1 }, - { 0xA7D1, LOWER_CASE, 0xA7D0 }, - { 0xA7D6, UPPER_CASE, 0xA7D7 }, - { 0xA7D7, LOWER_CASE, 0xA7D6 }, - { 0xA7D8, UPPER_CASE, 0xA7D9 }, - { 0xA7D9, LOWER_CASE, 0xA7D8 }, - { 0xA7F5, UPPER_CASE, 0xA7F6 }, - { 0xA7F6, LOWER_CASE, 0xA7F5 }, - { 0xAB53, LOWER_CASE, 0xA7B3 }, - { 0xAB70, LOWER_CASE, 0x13A0 }, - { 0xAB71, LOWER_CASE, 0x13A1 }, - { 0xAB72, LOWER_CASE, 0x13A2 }, - { 0xAB73, LOWER_CASE, 0x13A3 }, - { 0xAB74, LOWER_CASE, 0x13A4 }, - { 0xAB75, LOWER_CASE, 0x13A5 }, - { 0xAB76, LOWER_CASE, 0x13A6 }, - { 0xAB77, LOWER_CASE, 0x13A7 }, - { 0xAB78, LOWER_CASE, 0x13A8 }, - { 0xAB79, LOWER_CASE, 0x13A9 }, - { 0xAB7A, LOWER_CASE, 0x13AA }, - { 0xAB7B, LOWER_CASE, 0x13AB }, - { 0xAB7C, LOWER_CASE, 0x13AC }, - { 0xAB7D, LOWER_CASE, 0x13AD }, - { 0xAB7E, LOWER_CASE, 0x13AE }, - { 0xAB7F, LOWER_CASE, 0x13AF }, - { 0xAB80, LOWER_CASE, 0x13B0 }, - { 0xAB81, LOWER_CASE, 0x13B1 }, - { 0xAB82, LOWER_CASE, 0x13B2 }, - { 0xAB83, LOWER_CASE, 0x13B3 }, - { 0xAB84, LOWER_CASE, 0x13B4 }, - { 0xAB85, LOWER_CASE, 0x13B5 }, - { 0xAB86, LOWER_CASE, 0x13B6 }, - { 0xAB87, LOWER_CASE, 0x13B7 }, - { 0xAB88, LOWER_CASE, 0x13B8 }, - { 0xAB89, LOWER_CASE, 0x13B9 }, - { 0xAB8A, LOWER_CASE, 0x13BA }, - { 0xAB8B, LOWER_CASE, 0x13BB }, - { 0xAB8C, LOWER_CASE, 0x13BC }, - { 0xAB8D, LOWER_CASE, 0x13BD }, - { 0xAB8E, LOWER_CASE, 0x13BE }, - { 0xAB8F, LOWER_CASE, 0x13BF }, - { 0xAB90, LOWER_CASE, 0x13C0 }, - { 0xAB91, LOWER_CASE, 0x13C1 }, - { 0xAB92, LOWER_CASE, 0x13C2 }, - { 0xAB93, LOWER_CASE, 0x13C3 }, - { 0xAB94, LOWER_CASE, 0x13C4 }, - { 0xAB95, LOWER_CASE, 0x13C5 }, - { 0xAB96, LOWER_CASE, 0x13C6 }, - { 0xAB97, LOWER_CASE, 0x13C7 }, - { 0xAB98, LOWER_CASE, 0x13C8 }, - { 0xAB99, LOWER_CASE, 0x13C9 }, - { 0xAB9A, LOWER_CASE, 0x13CA }, - { 0xAB9B, LOWER_CASE, 0x13CB }, - { 0xAB9C, LOWER_CASE, 0x13CC }, - { 0xAB9D, LOWER_CASE, 0x13CD }, - { 0xAB9E, LOWER_CASE, 0x13CE }, - { 0xAB9F, LOWER_CASE, 0x13CF }, - { 0xABA0, LOWER_CASE, 0x13D0 }, - { 0xABA1, LOWER_CASE, 0x13D1 }, - { 0xABA2, LOWER_CASE, 0x13D2 }, - { 0xABA3, LOWER_CASE, 0x13D3 }, - { 0xABA4, LOWER_CASE, 0x13D4 }, - { 0xABA5, LOWER_CASE, 0x13D5 }, - { 0xABA6, LOWER_CASE, 0x13D6 }, - { 0xABA7, LOWER_CASE, 0x13D7 }, - { 0xABA8, LOWER_CASE, 0x13D8 }, - { 0xABA9, LOWER_CASE, 0x13D9 }, - { 0xABAA, LOWER_CASE, 0x13DA }, - { 0xABAB, LOWER_CASE, 0x13DB }, - { 0xABAC, LOWER_CASE, 0x13DC }, - { 0xABAD, LOWER_CASE, 0x13DD }, - { 0xABAE, LOWER_CASE, 0x13DE }, - { 0xABAF, LOWER_CASE, 0x13DF }, - { 0xABB0, LOWER_CASE, 0x13E0 }, - { 0xABB1, LOWER_CASE, 0x13E1 }, - { 0xABB2, LOWER_CASE, 0x13E2 }, - { 0xABB3, LOWER_CASE, 0x13E3 }, - { 0xABB4, LOWER_CASE, 0x13E4 }, - { 0xABB5, LOWER_CASE, 0x13E5 }, - { 0xABB6, LOWER_CASE, 0x13E6 }, - { 0xABB7, LOWER_CASE, 0x13E7 }, - { 0xABB8, LOWER_CASE, 0x13E8 }, - { 0xABB9, LOWER_CASE, 0x13E9 }, - { 0xABBA, LOWER_CASE, 0x13EA }, - { 0xABBB, LOWER_CASE, 0x13EB }, - { 0xABBC, LOWER_CASE, 0x13EC }, - { 0xABBD, LOWER_CASE, 0x13ED }, - { 0xABBE, LOWER_CASE, 0x13EE }, - { 0xABBF, LOWER_CASE, 0x13EF }, - { 0xFF21, UPPER_CASE, 0xFF41 }, - { 0xFF22, UPPER_CASE, 0xFF42 }, - { 0xFF23, UPPER_CASE, 0xFF43 }, - { 0xFF24, UPPER_CASE, 0xFF44 }, - { 0xFF25, UPPER_CASE, 0xFF45 }, - { 0xFF26, UPPER_CASE, 0xFF46 }, - { 0xFF27, UPPER_CASE, 0xFF47 }, - { 0xFF28, UPPER_CASE, 0xFF48 }, - { 0xFF29, UPPER_CASE, 0xFF49 }, - { 0xFF2A, UPPER_CASE, 0xFF4A }, - { 0xFF2B, UPPER_CASE, 0xFF4B }, - { 0xFF2C, UPPER_CASE, 0xFF4C }, - { 0xFF2D, UPPER_CASE, 0xFF4D }, - { 0xFF2E, UPPER_CASE, 0xFF4E }, - { 0xFF2F, UPPER_CASE, 0xFF4F }, - { 0xFF30, UPPER_CASE, 0xFF50 }, - { 0xFF31, UPPER_CASE, 0xFF51 }, - { 0xFF32, UPPER_CASE, 0xFF52 }, - { 0xFF33, UPPER_CASE, 0xFF53 }, - { 0xFF34, UPPER_CASE, 0xFF54 }, - { 0xFF35, UPPER_CASE, 0xFF55 }, - { 0xFF36, UPPER_CASE, 0xFF56 }, - { 0xFF37, UPPER_CASE, 0xFF57 }, - { 0xFF38, UPPER_CASE, 0xFF58 }, - { 0xFF39, UPPER_CASE, 0xFF59 }, - { 0xFF3A, UPPER_CASE, 0xFF5A }, - { 0xFF41, LOWER_CASE, 0xFF21 }, - { 0xFF42, LOWER_CASE, 0xFF22 }, - { 0xFF43, LOWER_CASE, 0xFF23 }, - { 0xFF44, LOWER_CASE, 0xFF24 }, - { 0xFF45, LOWER_CASE, 0xFF25 }, - { 0xFF46, LOWER_CASE, 0xFF26 }, - { 0xFF47, LOWER_CASE, 0xFF27 }, - { 0xFF48, LOWER_CASE, 0xFF28 }, - { 0xFF49, LOWER_CASE, 0xFF29 }, - { 0xFF4A, LOWER_CASE, 0xFF2A }, - { 0xFF4B, LOWER_CASE, 0xFF2B }, - { 0xFF4C, LOWER_CASE, 0xFF2C }, - { 0xFF4D, LOWER_CASE, 0xFF2D }, - { 0xFF4E, LOWER_CASE, 0xFF2E }, - { 0xFF4F, LOWER_CASE, 0xFF2F }, - { 0xFF50, LOWER_CASE, 0xFF30 }, - { 0xFF51, LOWER_CASE, 0xFF31 }, - { 0xFF52, LOWER_CASE, 0xFF32 }, - { 0xFF53, LOWER_CASE, 0xFF33 }, - { 0xFF54, LOWER_CASE, 0xFF34 }, - { 0xFF55, LOWER_CASE, 0xFF35 }, - { 0xFF56, LOWER_CASE, 0xFF36 }, - { 0xFF57, LOWER_CASE, 0xFF37 }, - { 0xFF58, LOWER_CASE, 0xFF38 }, - { 0xFF59, LOWER_CASE, 0xFF39 }, - { 0xFF5A, LOWER_CASE, 0xFF3A }, -}; -CONST UINT UNICODE_DATA_SIZE = sizeof(UnicodeData)/sizeof(UnicodeDataRec); diff --git a/src/coreclr/pal/src/locale/unicodedata.cs b/src/coreclr/pal/src/locale/unicodedata.cs deleted file mode 100644 index 955b96fe955d1..0000000000000 --- a/src/coreclr/pal/src/locale/unicodedata.cs +++ /dev/null @@ -1,64 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Globalization; -using System.IO; - -class Program -{ - static void Main(string[] args) - { - Console.WriteLine("// Licensed to the .NET Foundation under one or more agreements."); - Console.WriteLine("// The .NET Foundation licenses this file to you under the MIT license."); - Console.WriteLine(); - - Console.WriteLine("#include \"pal/unicodedata.h\""); - - Console.WriteLine(); - Console.WriteLine("//"); - Console.WriteLine("// THIS FILE IS GENERATED. DO NOT HAND EDIT."); - Console.WriteLine("// IF YOU NEED TO UPDATE UNICODE VERSION FOLLOW THE GUIDE AT src/libraries/System.Private.CoreLib/Tools/GenUnicodeProp/Updating-Unicode-Versions.md"); - Console.WriteLine("//"); - Console.WriteLine(); - - Console.WriteLine("CONST UnicodeDataRec UnicodeData[] = {"); - - string sourceFileName = args[0]; - - using (StreamReader sourceFile = File.OpenText(sourceFileName)) - while (sourceFile.ReadLine() is string line) - { - var fields = line.Split(';'); - - var code = int.Parse(fields[0], NumberStyles.HexNumber); - - bool hasUpperCaseMapping = fields[12].Length != 0; - bool hasLowerCaseMapping = fields[13].Length != 0; - - if (!hasLowerCaseMapping && !hasUpperCaseMapping) - continue; - - - int opposingCase = hasUpperCaseMapping ? - int.Parse(fields[12], NumberStyles.HexNumber) : - int.Parse(fields[13], NumberStyles.HexNumber); - - // These won't fit in 16 bits - no point carrying them - if (code > 0xFFFF) - continue; - - Debug.Assert(opposingCase <= 0xFFFF); - - string specifier = hasUpperCaseMapping ? "LOWER_CASE" : "UPPER_CASE"; - - Console.WriteLine($" {{ 0x{code:X}, {specifier}, 0x{opposingCase:X} }},"); - } - - Console.WriteLine("};"); - - Console.WriteLine("CONST UINT UNICODE_DATA_SIZE = sizeof(UnicodeData)/sizeof(UnicodeDataRec);"); - } -} diff --git a/src/coreclr/pal/src/misc/fmtmessage.cpp b/src/coreclr/pal/src/misc/fmtmessage.cpp index 0598914b06cb5..621db45e21b31 100644 --- a/src/coreclr/pal/src/misc/fmtmessage.cpp +++ b/src/coreclr/pal/src/misc/fmtmessage.cpp @@ -30,7 +30,6 @@ Revision History: #include #include #include -#include SET_DEFAULT_DEBUG_CHANNEL(MISC); @@ -335,6 +334,7 @@ FormatMessageW( goto exit; } + #define iswdigit(c) (c >= L'0' && c <= L'9') /* Process the string. */ lpReturnString = lpWorkingString; diff --git a/src/coreclr/pal/src/safecrt/wcslwr_s.cpp b/src/coreclr/pal/src/safecrt/wcslwr_s.cpp index 184776f21ee95..11c426226e632 100644 --- a/src/coreclr/pal/src/safecrt/wcslwr_s.cpp +++ b/src/coreclr/pal/src/safecrt/wcslwr_s.cpp @@ -11,10 +11,10 @@ * *******************************************************************************/ -#include #include #include #include +#include #include "internal_securecrt.h" #include "mbusafecrt_internal.h" @@ -30,7 +30,7 @@ DLLEXPORT errno_t __cdecl _wcslwr_s(char16_t *string, size_t sz) for (int i = 0; string[i] != 0; i++) { - string[i] = (char16_t)towlower(string[i]); + string[i] = (char16_t)minipal_tolower_invariant(string[i]); } _FILL_STRING(string, sz, length + 1); diff --git a/src/coreclr/pal/tests/palsuite/common/palsuite.h b/src/coreclr/pal/tests/palsuite/common/palsuite.h index 9494daed71beb..d92aa8b8ed08d 100644 --- a/src/coreclr/pal/tests/palsuite/common/palsuite.h +++ b/src/coreclr/pal/tests/palsuite/common/palsuite.h @@ -26,6 +26,7 @@ typedef unsigned short char16_t; #include #include #include +#include #define PALTEST(testfunc, testname) \ int __cdecl testfunc(int argc, char* argv[]); \ diff --git a/src/coreclr/utilcode/sstring.cpp b/src/coreclr/utilcode/sstring.cpp index d87efd8e10f0b..014ab6fc155f9 100644 --- a/src/coreclr/utilcode/sstring.cpp +++ b/src/coreclr/utilcode/sstring.cpp @@ -10,7 +10,7 @@ #include "sstring.h" #include "ex.h" #include "holder.h" - +#include #if defined(_MSC_VER) #pragma inline_depth (25) @@ -87,7 +87,7 @@ static WCHAR MapChar(WCHAR wc, DWORD dwFlags) #ifdef SELF_NO_HOST toupper(wc); #else - PAL_ToUpperInvariant(wc); + minipal_toupper_invariant(wc); #endif } else @@ -97,7 +97,7 @@ static WCHAR MapChar(WCHAR wc, DWORD dwFlags) #ifdef SELF_NO_HOST tolower(wc); #else - PAL_ToLowerInvariant(wc); + minipal_tolower_invariant(wc); #endif } #endif // !TARGET_UNIX diff --git a/src/libraries/System.Private.CoreLib/Tools/GenUnicodeProp/Updating-Unicode-Versions.md b/src/libraries/System.Private.CoreLib/Tools/GenUnicodeProp/Updating-Unicode-Versions.md index 03e0dd016e8d3..7a9087f4134e6 100644 --- a/src/libraries/System.Private.CoreLib/Tools/GenUnicodeProp/Updating-Unicode-Versions.md +++ b/src/libraries/System.Private.CoreLib/Tools/GenUnicodeProp/Updating-Unicode-Versions.md @@ -41,7 +41,7 @@ This should be done automatically by dependency-flow, so in theory there shouldn - System.Globalization.Tests.csproj - System.Globalization.Nls.Tests.csproj - System.Text.Encodings.Web.Tests.csproj -4. If the new Unicode data contains casing changes/updates, then we will also need to update `src/coreclr/pal/src/locale/unicodedata.cpp` file. This file is used by most of the reflection stack whenever you specify the `BindingFlags.IgnoreCase`. In order to regenerate the contents of the `unicdedata.cpp` file, you need to run the Program located at `src/coreclr/pal/src/locale/unicodedata.cs` and give a full path to the new UnicodeData.txt as a parameter. +4. If the new Unicode data contains casing changes/updates, then we will also need to update `src/native/minipal/UnicodeDataGenerator/unicodedata.c` file. This file is used by most of the reflection stack whenever you specify the `BindingFlags.IgnoreCase`. In order to regenerate the contents of the `unicdedata.c` file, you need to run the Program located at `src/native/minipal/UnicodeDataGenerator/unicodedata.cs` and give a full path to the new UnicodeData.txt as a parameter. 5. Update the Regex casing equivalence table using the UnicodeData.txt file from the new Unicode version. You can find the instructions on how to do this [here](../../../System.Text.RegularExpressions/tools/Readme.md). 6. Finally, last step is to update the license for the Unicode data into our [Third party notices](../../../../../THIRD-PARTY-NOTICES.TXT) by copying the contents located in `https://www.unicode.org/license.html` to the section that has the Unicode license in our notices. 7. That's it, now commit all of the changed files, and send a PR into dotnet/runtime with the updates. If there were any special things you had to do that are not noted on this document, PLEASE UPDATE THESE INSTRUCTIONS to facilitate future updates. diff --git a/src/native/minipal/UnicodeDataGenerator/UnicodeDataGenerator.csproj b/src/native/minipal/UnicodeDataGenerator/UnicodeDataGenerator.csproj new file mode 100644 index 0000000000000..962ce8016a36a --- /dev/null +++ b/src/native/minipal/UnicodeDataGenerator/UnicodeDataGenerator.csproj @@ -0,0 +1,8 @@ + + + + $(NetCoreAppToolCurrent) + enable + + + diff --git a/src/native/minipal/UnicodeDataGenerator/unicodedata.cs b/src/native/minipal/UnicodeDataGenerator/unicodedata.cs new file mode 100644 index 0000000000000..7c3244ccda971 --- /dev/null +++ b/src/native/minipal/UnicodeDataGenerator/unicodedata.cs @@ -0,0 +1,111 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System; +using System.Diagnostics; +using System.Globalization; +using System.IO; +using System.Linq; + +Console.WriteLine(@" +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// +// THIS FILE IS GENERATED. DO NOT HAND EDIT. +// IF YOU NEED TO UPDATE UNICODE VERSION FOLLOW THE GUIDE AT src/libraries/System.Private.CoreLib/Tools/GenUnicodeProp/Updating-Unicode-Versions.md +// + +#include + +typedef struct +{ + CHAR16_T code; + uint8_t upperOrLower; + CHAR16_T opposingCode; +} UnicodeDataRec; + +#define UPPER_CASE 0 +#define LOWER_CASE 1 + +const UnicodeDataRec UnicodeData[] = +{"); + +string sourceFileName = args[0]; + +int numberOfCases = 0; +using StreamReader sourceFile = File.OpenText(sourceFileName); +while (sourceFile.ReadLine() is string line) +{ + var fields = line.Split(';'); + + var code = int.Parse(fields[0], NumberStyles.HexNumber); + + bool hasUpperCaseMapping = fields[12].Length != 0; + bool hasLowerCaseMapping = fields[13].Length != 0; + + if (!hasLowerCaseMapping && !hasUpperCaseMapping) + continue; + + + int opposingCase = hasUpperCaseMapping ? + int.Parse(fields[12], NumberStyles.HexNumber) : + int.Parse(fields[13], NumberStyles.HexNumber); + + // These won't fit in 16 bits - no point carrying them + if (code > 0xFFFF) + continue; + + Debug.Assert(opposingCase <= 0xFFFF); + + string specifier = hasUpperCaseMapping ? "LOWER_CASE" : "UPPER_CASE"; + Console.WriteLine($" {{ 0x{code:X}, {specifier}, 0x{opposingCase:X} }},"); + + numberOfCases++; +} + +Console.WriteLine("};"); + +Console.WriteLine($@" +#define UNICODE_DATA_SIZE {numberOfCases}"); + +Console.WriteLine(@" +static int UnicodeDataComp(const void *opposingCode, const void *elem) +{ + CHAR16_T code = ((UnicodeDataRec*)elem)->code; + + if (*((CHAR16_T*)opposingCode) < code) + { + return -1; + } + else if (*((CHAR16_T*)opposingCode) > code) + { + return 1; + } + else + { + return 0; + } +} + +const CHAR16_T minipal_toupper_invariant(const CHAR16_T code) +{ + UnicodeDataRec *record = (UnicodeDataRec *) bsearch(&code, UnicodeData, UNICODE_DATA_SIZE, + sizeof(UnicodeDataRec), UnicodeDataComp); + + if (!record || record->upperOrLower != LOWER_CASE) + return code; + + return record->opposingCode; +} + +const CHAR16_T minipal_tolower_invariant(const CHAR16_T code) +{ + UnicodeDataRec *record = (UnicodeDataRec *) bsearch(&code, UnicodeData, UNICODE_DATA_SIZE, + sizeof(UnicodeDataRec), UnicodeDataComp); + + if (!record || record->upperOrLower != UPPER_CASE) + return code; + + return record->opposingCode; +}"); diff --git a/src/native/minipal/unicodedata.c b/src/native/minipal/unicodedata.c new file mode 100644 index 0000000000000..4d624cc8ca04f --- /dev/null +++ b/src/native/minipal/unicodedata.c @@ -0,0 +1,2425 @@ + +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// +// THIS FILE IS GENERATED. DO NOT HAND EDIT. +// IF YOU NEED TO UPDATE UNICODE VERSION FOLLOW THE GUIDE AT src/libraries/System.Private.CoreLib/Tools/GenUnicodeProp/Updating-Unicode-Versions.md +// + +#include + +typedef struct +{ + CHAR16_T code; + uint8_t upperOrLower; + CHAR16_T opposingCode; +} UnicodeDataRec; + +#define UPPER_CASE 0 +#define LOWER_CASE 1 + +const UnicodeDataRec UnicodeData[] = +{ + { 0x41, UPPER_CASE, 0x61 }, + { 0x42, UPPER_CASE, 0x62 }, + { 0x43, UPPER_CASE, 0x63 }, + { 0x44, UPPER_CASE, 0x64 }, + { 0x45, UPPER_CASE, 0x65 }, + { 0x46, UPPER_CASE, 0x66 }, + { 0x47, UPPER_CASE, 0x67 }, + { 0x48, UPPER_CASE, 0x68 }, + { 0x49, UPPER_CASE, 0x69 }, + { 0x4A, UPPER_CASE, 0x6A }, + { 0x4B, UPPER_CASE, 0x6B }, + { 0x4C, UPPER_CASE, 0x6C }, + { 0x4D, UPPER_CASE, 0x6D }, + { 0x4E, UPPER_CASE, 0x6E }, + { 0x4F, UPPER_CASE, 0x6F }, + { 0x50, UPPER_CASE, 0x70 }, + { 0x51, UPPER_CASE, 0x71 }, + { 0x52, UPPER_CASE, 0x72 }, + { 0x53, UPPER_CASE, 0x73 }, + { 0x54, UPPER_CASE, 0x74 }, + { 0x55, UPPER_CASE, 0x75 }, + { 0x56, UPPER_CASE, 0x76 }, + { 0x57, UPPER_CASE, 0x77 }, + { 0x58, UPPER_CASE, 0x78 }, + { 0x59, UPPER_CASE, 0x79 }, + { 0x5A, UPPER_CASE, 0x7A }, + { 0x61, LOWER_CASE, 0x41 }, + { 0x62, LOWER_CASE, 0x42 }, + { 0x63, LOWER_CASE, 0x43 }, + { 0x64, LOWER_CASE, 0x44 }, + { 0x65, LOWER_CASE, 0x45 }, + { 0x66, LOWER_CASE, 0x46 }, + { 0x67, LOWER_CASE, 0x47 }, + { 0x68, LOWER_CASE, 0x48 }, + { 0x69, LOWER_CASE, 0x49 }, + { 0x6A, LOWER_CASE, 0x4A }, + { 0x6B, LOWER_CASE, 0x4B }, + { 0x6C, LOWER_CASE, 0x4C }, + { 0x6D, LOWER_CASE, 0x4D }, + { 0x6E, LOWER_CASE, 0x4E }, + { 0x6F, LOWER_CASE, 0x4F }, + { 0x70, LOWER_CASE, 0x50 }, + { 0x71, LOWER_CASE, 0x51 }, + { 0x72, LOWER_CASE, 0x52 }, + { 0x73, LOWER_CASE, 0x53 }, + { 0x74, LOWER_CASE, 0x54 }, + { 0x75, LOWER_CASE, 0x55 }, + { 0x76, LOWER_CASE, 0x56 }, + { 0x77, LOWER_CASE, 0x57 }, + { 0x78, LOWER_CASE, 0x58 }, + { 0x79, LOWER_CASE, 0x59 }, + { 0x7A, LOWER_CASE, 0x5A }, + { 0xB5, LOWER_CASE, 0x39C }, + { 0xC0, UPPER_CASE, 0xE0 }, + { 0xC1, UPPER_CASE, 0xE1 }, + { 0xC2, UPPER_CASE, 0xE2 }, + { 0xC3, UPPER_CASE, 0xE3 }, + { 0xC4, UPPER_CASE, 0xE4 }, + { 0xC5, UPPER_CASE, 0xE5 }, + { 0xC6, UPPER_CASE, 0xE6 }, + { 0xC7, UPPER_CASE, 0xE7 }, + { 0xC8, UPPER_CASE, 0xE8 }, + { 0xC9, UPPER_CASE, 0xE9 }, + { 0xCA, UPPER_CASE, 0xEA }, + { 0xCB, UPPER_CASE, 0xEB }, + { 0xCC, UPPER_CASE, 0xEC }, + { 0xCD, UPPER_CASE, 0xED }, + { 0xCE, UPPER_CASE, 0xEE }, + { 0xCF, UPPER_CASE, 0xEF }, + { 0xD0, UPPER_CASE, 0xF0 }, + { 0xD1, UPPER_CASE, 0xF1 }, + { 0xD2, UPPER_CASE, 0xF2 }, + { 0xD3, UPPER_CASE, 0xF3 }, + { 0xD4, UPPER_CASE, 0xF4 }, + { 0xD5, UPPER_CASE, 0xF5 }, + { 0xD6, UPPER_CASE, 0xF6 }, + { 0xD8, UPPER_CASE, 0xF8 }, + { 0xD9, UPPER_CASE, 0xF9 }, + { 0xDA, UPPER_CASE, 0xFA }, + { 0xDB, UPPER_CASE, 0xFB }, + { 0xDC, UPPER_CASE, 0xFC }, + { 0xDD, UPPER_CASE, 0xFD }, + { 0xDE, UPPER_CASE, 0xFE }, + { 0xE0, LOWER_CASE, 0xC0 }, + { 0xE1, LOWER_CASE, 0xC1 }, + { 0xE2, LOWER_CASE, 0xC2 }, + { 0xE3, LOWER_CASE, 0xC3 }, + { 0xE4, LOWER_CASE, 0xC4 }, + { 0xE5, LOWER_CASE, 0xC5 }, + { 0xE6, LOWER_CASE, 0xC6 }, + { 0xE7, LOWER_CASE, 0xC7 }, + { 0xE8, LOWER_CASE, 0xC8 }, + { 0xE9, LOWER_CASE, 0xC9 }, + { 0xEA, LOWER_CASE, 0xCA }, + { 0xEB, LOWER_CASE, 0xCB }, + { 0xEC, LOWER_CASE, 0xCC }, + { 0xED, LOWER_CASE, 0xCD }, + { 0xEE, LOWER_CASE, 0xCE }, + { 0xEF, LOWER_CASE, 0xCF }, + { 0xF0, LOWER_CASE, 0xD0 }, + { 0xF1, LOWER_CASE, 0xD1 }, + { 0xF2, LOWER_CASE, 0xD2 }, + { 0xF3, LOWER_CASE, 0xD3 }, + { 0xF4, LOWER_CASE, 0xD4 }, + { 0xF5, LOWER_CASE, 0xD5 }, + { 0xF6, LOWER_CASE, 0xD6 }, + { 0xF8, LOWER_CASE, 0xD8 }, + { 0xF9, LOWER_CASE, 0xD9 }, + { 0xFA, LOWER_CASE, 0xDA }, + { 0xFB, LOWER_CASE, 0xDB }, + { 0xFC, LOWER_CASE, 0xDC }, + { 0xFD, LOWER_CASE, 0xDD }, + { 0xFE, LOWER_CASE, 0xDE }, + { 0xFF, LOWER_CASE, 0x178 }, + { 0x100, UPPER_CASE, 0x101 }, + { 0x101, LOWER_CASE, 0x100 }, + { 0x102, UPPER_CASE, 0x103 }, + { 0x103, LOWER_CASE, 0x102 }, + { 0x104, UPPER_CASE, 0x105 }, + { 0x105, LOWER_CASE, 0x104 }, + { 0x106, UPPER_CASE, 0x107 }, + { 0x107, LOWER_CASE, 0x106 }, + { 0x108, UPPER_CASE, 0x109 }, + { 0x109, LOWER_CASE, 0x108 }, + { 0x10A, UPPER_CASE, 0x10B }, + { 0x10B, LOWER_CASE, 0x10A }, + { 0x10C, UPPER_CASE, 0x10D }, + { 0x10D, LOWER_CASE, 0x10C }, + { 0x10E, UPPER_CASE, 0x10F }, + { 0x10F, LOWER_CASE, 0x10E }, + { 0x110, UPPER_CASE, 0x111 }, + { 0x111, LOWER_CASE, 0x110 }, + { 0x112, UPPER_CASE, 0x113 }, + { 0x113, LOWER_CASE, 0x112 }, + { 0x114, UPPER_CASE, 0x115 }, + { 0x115, LOWER_CASE, 0x114 }, + { 0x116, UPPER_CASE, 0x117 }, + { 0x117, LOWER_CASE, 0x116 }, + { 0x118, UPPER_CASE, 0x119 }, + { 0x119, LOWER_CASE, 0x118 }, + { 0x11A, UPPER_CASE, 0x11B }, + { 0x11B, LOWER_CASE, 0x11A }, + { 0x11C, UPPER_CASE, 0x11D }, + { 0x11D, LOWER_CASE, 0x11C }, + { 0x11E, UPPER_CASE, 0x11F }, + { 0x11F, LOWER_CASE, 0x11E }, + { 0x120, UPPER_CASE, 0x121 }, + { 0x121, LOWER_CASE, 0x120 }, + { 0x122, UPPER_CASE, 0x123 }, + { 0x123, LOWER_CASE, 0x122 }, + { 0x124, UPPER_CASE, 0x125 }, + { 0x125, LOWER_CASE, 0x124 }, + { 0x126, UPPER_CASE, 0x127 }, + { 0x127, LOWER_CASE, 0x126 }, + { 0x128, UPPER_CASE, 0x129 }, + { 0x129, LOWER_CASE, 0x128 }, + { 0x12A, UPPER_CASE, 0x12B }, + { 0x12B, LOWER_CASE, 0x12A }, + { 0x12C, UPPER_CASE, 0x12D }, + { 0x12D, LOWER_CASE, 0x12C }, + { 0x12E, UPPER_CASE, 0x12F }, + { 0x12F, LOWER_CASE, 0x12E }, + { 0x130, UPPER_CASE, 0x69 }, + { 0x131, LOWER_CASE, 0x49 }, + { 0x132, UPPER_CASE, 0x133 }, + { 0x133, LOWER_CASE, 0x132 }, + { 0x134, UPPER_CASE, 0x135 }, + { 0x135, LOWER_CASE, 0x134 }, + { 0x136, UPPER_CASE, 0x137 }, + { 0x137, LOWER_CASE, 0x136 }, + { 0x139, UPPER_CASE, 0x13A }, + { 0x13A, LOWER_CASE, 0x139 }, + { 0x13B, UPPER_CASE, 0x13C }, + { 0x13C, LOWER_CASE, 0x13B }, + { 0x13D, UPPER_CASE, 0x13E }, + { 0x13E, LOWER_CASE, 0x13D }, + { 0x13F, UPPER_CASE, 0x140 }, + { 0x140, LOWER_CASE, 0x13F }, + { 0x141, UPPER_CASE, 0x142 }, + { 0x142, LOWER_CASE, 0x141 }, + { 0x143, UPPER_CASE, 0x144 }, + { 0x144, LOWER_CASE, 0x143 }, + { 0x145, UPPER_CASE, 0x146 }, + { 0x146, LOWER_CASE, 0x145 }, + { 0x147, UPPER_CASE, 0x148 }, + { 0x148, LOWER_CASE, 0x147 }, + { 0x14A, UPPER_CASE, 0x14B }, + { 0x14B, LOWER_CASE, 0x14A }, + { 0x14C, UPPER_CASE, 0x14D }, + { 0x14D, LOWER_CASE, 0x14C }, + { 0x14E, UPPER_CASE, 0x14F }, + { 0x14F, LOWER_CASE, 0x14E }, + { 0x150, UPPER_CASE, 0x151 }, + { 0x151, LOWER_CASE, 0x150 }, + { 0x152, UPPER_CASE, 0x153 }, + { 0x153, LOWER_CASE, 0x152 }, + { 0x154, UPPER_CASE, 0x155 }, + { 0x155, LOWER_CASE, 0x154 }, + { 0x156, UPPER_CASE, 0x157 }, + { 0x157, LOWER_CASE, 0x156 }, + { 0x158, UPPER_CASE, 0x159 }, + { 0x159, LOWER_CASE, 0x158 }, + { 0x15A, UPPER_CASE, 0x15B }, + { 0x15B, LOWER_CASE, 0x15A }, + { 0x15C, UPPER_CASE, 0x15D }, + { 0x15D, LOWER_CASE, 0x15C }, + { 0x15E, UPPER_CASE, 0x15F }, + { 0x15F, LOWER_CASE, 0x15E }, + { 0x160, UPPER_CASE, 0x161 }, + { 0x161, LOWER_CASE, 0x160 }, + { 0x162, UPPER_CASE, 0x163 }, + { 0x163, LOWER_CASE, 0x162 }, + { 0x164, UPPER_CASE, 0x165 }, + { 0x165, LOWER_CASE, 0x164 }, + { 0x166, UPPER_CASE, 0x167 }, + { 0x167, LOWER_CASE, 0x166 }, + { 0x168, UPPER_CASE, 0x169 }, + { 0x169, LOWER_CASE, 0x168 }, + { 0x16A, UPPER_CASE, 0x16B }, + { 0x16B, LOWER_CASE, 0x16A }, + { 0x16C, UPPER_CASE, 0x16D }, + { 0x16D, LOWER_CASE, 0x16C }, + { 0x16E, UPPER_CASE, 0x16F }, + { 0x16F, LOWER_CASE, 0x16E }, + { 0x170, UPPER_CASE, 0x171 }, + { 0x171, LOWER_CASE, 0x170 }, + { 0x172, UPPER_CASE, 0x173 }, + { 0x173, LOWER_CASE, 0x172 }, + { 0x174, UPPER_CASE, 0x175 }, + { 0x175, LOWER_CASE, 0x174 }, + { 0x176, UPPER_CASE, 0x177 }, + { 0x177, LOWER_CASE, 0x176 }, + { 0x178, UPPER_CASE, 0xFF }, + { 0x179, UPPER_CASE, 0x17A }, + { 0x17A, LOWER_CASE, 0x179 }, + { 0x17B, UPPER_CASE, 0x17C }, + { 0x17C, LOWER_CASE, 0x17B }, + { 0x17D, UPPER_CASE, 0x17E }, + { 0x17E, LOWER_CASE, 0x17D }, + { 0x17F, LOWER_CASE, 0x53 }, + { 0x180, LOWER_CASE, 0x243 }, + { 0x181, UPPER_CASE, 0x253 }, + { 0x182, UPPER_CASE, 0x183 }, + { 0x183, LOWER_CASE, 0x182 }, + { 0x184, UPPER_CASE, 0x185 }, + { 0x185, LOWER_CASE, 0x184 }, + { 0x186, UPPER_CASE, 0x254 }, + { 0x187, UPPER_CASE, 0x188 }, + { 0x188, LOWER_CASE, 0x187 }, + { 0x189, UPPER_CASE, 0x256 }, + { 0x18A, UPPER_CASE, 0x257 }, + { 0x18B, UPPER_CASE, 0x18C }, + { 0x18C, LOWER_CASE, 0x18B }, + { 0x18E, UPPER_CASE, 0x1DD }, + { 0x18F, UPPER_CASE, 0x259 }, + { 0x190, UPPER_CASE, 0x25B }, + { 0x191, UPPER_CASE, 0x192 }, + { 0x192, LOWER_CASE, 0x191 }, + { 0x193, UPPER_CASE, 0x260 }, + { 0x194, UPPER_CASE, 0x263 }, + { 0x195, LOWER_CASE, 0x1F6 }, + { 0x196, UPPER_CASE, 0x269 }, + { 0x197, UPPER_CASE, 0x268 }, + { 0x198, UPPER_CASE, 0x199 }, + { 0x199, LOWER_CASE, 0x198 }, + { 0x19A, LOWER_CASE, 0x23D }, + { 0x19C, UPPER_CASE, 0x26F }, + { 0x19D, UPPER_CASE, 0x272 }, + { 0x19E, LOWER_CASE, 0x220 }, + { 0x19F, UPPER_CASE, 0x275 }, + { 0x1A0, UPPER_CASE, 0x1A1 }, + { 0x1A1, LOWER_CASE, 0x1A0 }, + { 0x1A2, UPPER_CASE, 0x1A3 }, + { 0x1A3, LOWER_CASE, 0x1A2 }, + { 0x1A4, UPPER_CASE, 0x1A5 }, + { 0x1A5, LOWER_CASE, 0x1A4 }, + { 0x1A6, UPPER_CASE, 0x280 }, + { 0x1A7, UPPER_CASE, 0x1A8 }, + { 0x1A8, LOWER_CASE, 0x1A7 }, + { 0x1A9, UPPER_CASE, 0x283 }, + { 0x1AC, UPPER_CASE, 0x1AD }, + { 0x1AD, LOWER_CASE, 0x1AC }, + { 0x1AE, UPPER_CASE, 0x288 }, + { 0x1AF, UPPER_CASE, 0x1B0 }, + { 0x1B0, LOWER_CASE, 0x1AF }, + { 0x1B1, UPPER_CASE, 0x28A }, + { 0x1B2, UPPER_CASE, 0x28B }, + { 0x1B3, UPPER_CASE, 0x1B4 }, + { 0x1B4, LOWER_CASE, 0x1B3 }, + { 0x1B5, UPPER_CASE, 0x1B6 }, + { 0x1B6, LOWER_CASE, 0x1B5 }, + { 0x1B7, UPPER_CASE, 0x292 }, + { 0x1B8, UPPER_CASE, 0x1B9 }, + { 0x1B9, LOWER_CASE, 0x1B8 }, + { 0x1BC, UPPER_CASE, 0x1BD }, + { 0x1BD, LOWER_CASE, 0x1BC }, + { 0x1BF, LOWER_CASE, 0x1F7 }, + { 0x1C4, UPPER_CASE, 0x1C6 }, + { 0x1C5, LOWER_CASE, 0x1C4 }, + { 0x1C6, LOWER_CASE, 0x1C4 }, + { 0x1C7, UPPER_CASE, 0x1C9 }, + { 0x1C8, LOWER_CASE, 0x1C7 }, + { 0x1C9, LOWER_CASE, 0x1C7 }, + { 0x1CA, UPPER_CASE, 0x1CC }, + { 0x1CB, LOWER_CASE, 0x1CA }, + { 0x1CC, LOWER_CASE, 0x1CA }, + { 0x1CD, UPPER_CASE, 0x1CE }, + { 0x1CE, LOWER_CASE, 0x1CD }, + { 0x1CF, UPPER_CASE, 0x1D0 }, + { 0x1D0, LOWER_CASE, 0x1CF }, + { 0x1D1, UPPER_CASE, 0x1D2 }, + { 0x1D2, LOWER_CASE, 0x1D1 }, + { 0x1D3, UPPER_CASE, 0x1D4 }, + { 0x1D4, LOWER_CASE, 0x1D3 }, + { 0x1D5, UPPER_CASE, 0x1D6 }, + { 0x1D6, LOWER_CASE, 0x1D5 }, + { 0x1D7, UPPER_CASE, 0x1D8 }, + { 0x1D8, LOWER_CASE, 0x1D7 }, + { 0x1D9, UPPER_CASE, 0x1DA }, + { 0x1DA, LOWER_CASE, 0x1D9 }, + { 0x1DB, UPPER_CASE, 0x1DC }, + { 0x1DC, LOWER_CASE, 0x1DB }, + { 0x1DD, LOWER_CASE, 0x18E }, + { 0x1DE, UPPER_CASE, 0x1DF }, + { 0x1DF, LOWER_CASE, 0x1DE }, + { 0x1E0, UPPER_CASE, 0x1E1 }, + { 0x1E1, LOWER_CASE, 0x1E0 }, + { 0x1E2, UPPER_CASE, 0x1E3 }, + { 0x1E3, LOWER_CASE, 0x1E2 }, + { 0x1E4, UPPER_CASE, 0x1E5 }, + { 0x1E5, LOWER_CASE, 0x1E4 }, + { 0x1E6, UPPER_CASE, 0x1E7 }, + { 0x1E7, LOWER_CASE, 0x1E6 }, + { 0x1E8, UPPER_CASE, 0x1E9 }, + { 0x1E9, LOWER_CASE, 0x1E8 }, + { 0x1EA, UPPER_CASE, 0x1EB }, + { 0x1EB, LOWER_CASE, 0x1EA }, + { 0x1EC, UPPER_CASE, 0x1ED }, + { 0x1ED, LOWER_CASE, 0x1EC }, + { 0x1EE, UPPER_CASE, 0x1EF }, + { 0x1EF, LOWER_CASE, 0x1EE }, + { 0x1F1, UPPER_CASE, 0x1F3 }, + { 0x1F2, LOWER_CASE, 0x1F1 }, + { 0x1F3, LOWER_CASE, 0x1F1 }, + { 0x1F4, UPPER_CASE, 0x1F5 }, + { 0x1F5, LOWER_CASE, 0x1F4 }, + { 0x1F6, UPPER_CASE, 0x195 }, + { 0x1F7, UPPER_CASE, 0x1BF }, + { 0x1F8, UPPER_CASE, 0x1F9 }, + { 0x1F9, LOWER_CASE, 0x1F8 }, + { 0x1FA, UPPER_CASE, 0x1FB }, + { 0x1FB, LOWER_CASE, 0x1FA }, + { 0x1FC, UPPER_CASE, 0x1FD }, + { 0x1FD, LOWER_CASE, 0x1FC }, + { 0x1FE, UPPER_CASE, 0x1FF }, + { 0x1FF, LOWER_CASE, 0x1FE }, + { 0x200, UPPER_CASE, 0x201 }, + { 0x201, LOWER_CASE, 0x200 }, + { 0x202, UPPER_CASE, 0x203 }, + { 0x203, LOWER_CASE, 0x202 }, + { 0x204, UPPER_CASE, 0x205 }, + { 0x205, LOWER_CASE, 0x204 }, + { 0x206, UPPER_CASE, 0x207 }, + { 0x207, LOWER_CASE, 0x206 }, + { 0x208, UPPER_CASE, 0x209 }, + { 0x209, LOWER_CASE, 0x208 }, + { 0x20A, UPPER_CASE, 0x20B }, + { 0x20B, LOWER_CASE, 0x20A }, + { 0x20C, UPPER_CASE, 0x20D }, + { 0x20D, LOWER_CASE, 0x20C }, + { 0x20E, UPPER_CASE, 0x20F }, + { 0x20F, LOWER_CASE, 0x20E }, + { 0x210, UPPER_CASE, 0x211 }, + { 0x211, LOWER_CASE, 0x210 }, + { 0x212, UPPER_CASE, 0x213 }, + { 0x213, LOWER_CASE, 0x212 }, + { 0x214, UPPER_CASE, 0x215 }, + { 0x215, LOWER_CASE, 0x214 }, + { 0x216, UPPER_CASE, 0x217 }, + { 0x217, LOWER_CASE, 0x216 }, + { 0x218, UPPER_CASE, 0x219 }, + { 0x219, LOWER_CASE, 0x218 }, + { 0x21A, UPPER_CASE, 0x21B }, + { 0x21B, LOWER_CASE, 0x21A }, + { 0x21C, UPPER_CASE, 0x21D }, + { 0x21D, LOWER_CASE, 0x21C }, + { 0x21E, UPPER_CASE, 0x21F }, + { 0x21F, LOWER_CASE, 0x21E }, + { 0x220, UPPER_CASE, 0x19E }, + { 0x222, UPPER_CASE, 0x223 }, + { 0x223, LOWER_CASE, 0x222 }, + { 0x224, UPPER_CASE, 0x225 }, + { 0x225, LOWER_CASE, 0x224 }, + { 0x226, UPPER_CASE, 0x227 }, + { 0x227, LOWER_CASE, 0x226 }, + { 0x228, UPPER_CASE, 0x229 }, + { 0x229, LOWER_CASE, 0x228 }, + { 0x22A, UPPER_CASE, 0x22B }, + { 0x22B, LOWER_CASE, 0x22A }, + { 0x22C, UPPER_CASE, 0x22D }, + { 0x22D, LOWER_CASE, 0x22C }, + { 0x22E, UPPER_CASE, 0x22F }, + { 0x22F, LOWER_CASE, 0x22E }, + { 0x230, UPPER_CASE, 0x231 }, + { 0x231, LOWER_CASE, 0x230 }, + { 0x232, UPPER_CASE, 0x233 }, + { 0x233, LOWER_CASE, 0x232 }, + { 0x23A, UPPER_CASE, 0x2C65 }, + { 0x23B, UPPER_CASE, 0x23C }, + { 0x23C, LOWER_CASE, 0x23B }, + { 0x23D, UPPER_CASE, 0x19A }, + { 0x23E, UPPER_CASE, 0x2C66 }, + { 0x23F, LOWER_CASE, 0x2C7E }, + { 0x240, LOWER_CASE, 0x2C7F }, + { 0x241, UPPER_CASE, 0x242 }, + { 0x242, LOWER_CASE, 0x241 }, + { 0x243, UPPER_CASE, 0x180 }, + { 0x244, UPPER_CASE, 0x289 }, + { 0x245, UPPER_CASE, 0x28C }, + { 0x246, UPPER_CASE, 0x247 }, + { 0x247, LOWER_CASE, 0x246 }, + { 0x248, UPPER_CASE, 0x249 }, + { 0x249, LOWER_CASE, 0x248 }, + { 0x24A, UPPER_CASE, 0x24B }, + { 0x24B, LOWER_CASE, 0x24A }, + { 0x24C, UPPER_CASE, 0x24D }, + { 0x24D, LOWER_CASE, 0x24C }, + { 0x24E, UPPER_CASE, 0x24F }, + { 0x24F, LOWER_CASE, 0x24E }, + { 0x250, LOWER_CASE, 0x2C6F }, + { 0x251, LOWER_CASE, 0x2C6D }, + { 0x252, LOWER_CASE, 0x2C70 }, + { 0x253, LOWER_CASE, 0x181 }, + { 0x254, LOWER_CASE, 0x186 }, + { 0x256, LOWER_CASE, 0x189 }, + { 0x257, LOWER_CASE, 0x18A }, + { 0x259, LOWER_CASE, 0x18F }, + { 0x25B, LOWER_CASE, 0x190 }, + { 0x25C, LOWER_CASE, 0xA7AB }, + { 0x260, LOWER_CASE, 0x193 }, + { 0x261, LOWER_CASE, 0xA7AC }, + { 0x263, LOWER_CASE, 0x194 }, + { 0x265, LOWER_CASE, 0xA78D }, + { 0x266, LOWER_CASE, 0xA7AA }, + { 0x268, LOWER_CASE, 0x197 }, + { 0x269, LOWER_CASE, 0x196 }, + { 0x26A, LOWER_CASE, 0xA7AE }, + { 0x26B, LOWER_CASE, 0x2C62 }, + { 0x26C, LOWER_CASE, 0xA7AD }, + { 0x26F, LOWER_CASE, 0x19C }, + { 0x271, LOWER_CASE, 0x2C6E }, + { 0x272, LOWER_CASE, 0x19D }, + { 0x275, LOWER_CASE, 0x19F }, + { 0x27D, LOWER_CASE, 0x2C64 }, + { 0x280, LOWER_CASE, 0x1A6 }, + { 0x282, LOWER_CASE, 0xA7C5 }, + { 0x283, LOWER_CASE, 0x1A9 }, + { 0x287, LOWER_CASE, 0xA7B1 }, + { 0x288, LOWER_CASE, 0x1AE }, + { 0x289, LOWER_CASE, 0x244 }, + { 0x28A, LOWER_CASE, 0x1B1 }, + { 0x28B, LOWER_CASE, 0x1B2 }, + { 0x28C, LOWER_CASE, 0x245 }, + { 0x292, LOWER_CASE, 0x1B7 }, + { 0x29D, LOWER_CASE, 0xA7B2 }, + { 0x29E, LOWER_CASE, 0xA7B0 }, + { 0x345, LOWER_CASE, 0x399 }, + { 0x370, UPPER_CASE, 0x371 }, + { 0x371, LOWER_CASE, 0x370 }, + { 0x372, UPPER_CASE, 0x373 }, + { 0x373, LOWER_CASE, 0x372 }, + { 0x376, UPPER_CASE, 0x377 }, + { 0x377, LOWER_CASE, 0x376 }, + { 0x37B, LOWER_CASE, 0x3FD }, + { 0x37C, LOWER_CASE, 0x3FE }, + { 0x37D, LOWER_CASE, 0x3FF }, + { 0x37F, UPPER_CASE, 0x3F3 }, + { 0x386, UPPER_CASE, 0x3AC }, + { 0x388, UPPER_CASE, 0x3AD }, + { 0x389, UPPER_CASE, 0x3AE }, + { 0x38A, UPPER_CASE, 0x3AF }, + { 0x38C, UPPER_CASE, 0x3CC }, + { 0x38E, UPPER_CASE, 0x3CD }, + { 0x38F, UPPER_CASE, 0x3CE }, + { 0x391, UPPER_CASE, 0x3B1 }, + { 0x392, UPPER_CASE, 0x3B2 }, + { 0x393, UPPER_CASE, 0x3B3 }, + { 0x394, UPPER_CASE, 0x3B4 }, + { 0x395, UPPER_CASE, 0x3B5 }, + { 0x396, UPPER_CASE, 0x3B6 }, + { 0x397, UPPER_CASE, 0x3B7 }, + { 0x398, UPPER_CASE, 0x3B8 }, + { 0x399, UPPER_CASE, 0x3B9 }, + { 0x39A, UPPER_CASE, 0x3BA }, + { 0x39B, UPPER_CASE, 0x3BB }, + { 0x39C, UPPER_CASE, 0x3BC }, + { 0x39D, UPPER_CASE, 0x3BD }, + { 0x39E, UPPER_CASE, 0x3BE }, + { 0x39F, UPPER_CASE, 0x3BF }, + { 0x3A0, UPPER_CASE, 0x3C0 }, + { 0x3A1, UPPER_CASE, 0x3C1 }, + { 0x3A3, UPPER_CASE, 0x3C3 }, + { 0x3A4, UPPER_CASE, 0x3C4 }, + { 0x3A5, UPPER_CASE, 0x3C5 }, + { 0x3A6, UPPER_CASE, 0x3C6 }, + { 0x3A7, UPPER_CASE, 0x3C7 }, + { 0x3A8, UPPER_CASE, 0x3C8 }, + { 0x3A9, UPPER_CASE, 0x3C9 }, + { 0x3AA, UPPER_CASE, 0x3CA }, + { 0x3AB, UPPER_CASE, 0x3CB }, + { 0x3AC, LOWER_CASE, 0x386 }, + { 0x3AD, LOWER_CASE, 0x388 }, + { 0x3AE, LOWER_CASE, 0x389 }, + { 0x3AF, LOWER_CASE, 0x38A }, + { 0x3B1, LOWER_CASE, 0x391 }, + { 0x3B2, LOWER_CASE, 0x392 }, + { 0x3B3, LOWER_CASE, 0x393 }, + { 0x3B4, LOWER_CASE, 0x394 }, + { 0x3B5, LOWER_CASE, 0x395 }, + { 0x3B6, LOWER_CASE, 0x396 }, + { 0x3B7, LOWER_CASE, 0x397 }, + { 0x3B8, LOWER_CASE, 0x398 }, + { 0x3B9, LOWER_CASE, 0x399 }, + { 0x3BA, LOWER_CASE, 0x39A }, + { 0x3BB, LOWER_CASE, 0x39B }, + { 0x3BC, LOWER_CASE, 0x39C }, + { 0x3BD, LOWER_CASE, 0x39D }, + { 0x3BE, LOWER_CASE, 0x39E }, + { 0x3BF, LOWER_CASE, 0x39F }, + { 0x3C0, LOWER_CASE, 0x3A0 }, + { 0x3C1, LOWER_CASE, 0x3A1 }, + { 0x3C2, LOWER_CASE, 0x3A3 }, + { 0x3C3, LOWER_CASE, 0x3A3 }, + { 0x3C4, LOWER_CASE, 0x3A4 }, + { 0x3C5, LOWER_CASE, 0x3A5 }, + { 0x3C6, LOWER_CASE, 0x3A6 }, + { 0x3C7, LOWER_CASE, 0x3A7 }, + { 0x3C8, LOWER_CASE, 0x3A8 }, + { 0x3C9, LOWER_CASE, 0x3A9 }, + { 0x3CA, LOWER_CASE, 0x3AA }, + { 0x3CB, LOWER_CASE, 0x3AB }, + { 0x3CC, LOWER_CASE, 0x38C }, + { 0x3CD, LOWER_CASE, 0x38E }, + { 0x3CE, LOWER_CASE, 0x38F }, + { 0x3CF, UPPER_CASE, 0x3D7 }, + { 0x3D0, LOWER_CASE, 0x392 }, + { 0x3D1, LOWER_CASE, 0x398 }, + { 0x3D5, LOWER_CASE, 0x3A6 }, + { 0x3D6, LOWER_CASE, 0x3A0 }, + { 0x3D7, LOWER_CASE, 0x3CF }, + { 0x3D8, UPPER_CASE, 0x3D9 }, + { 0x3D9, LOWER_CASE, 0x3D8 }, + { 0x3DA, UPPER_CASE, 0x3DB }, + { 0x3DB, LOWER_CASE, 0x3DA }, + { 0x3DC, UPPER_CASE, 0x3DD }, + { 0x3DD, LOWER_CASE, 0x3DC }, + { 0x3DE, UPPER_CASE, 0x3DF }, + { 0x3DF, LOWER_CASE, 0x3DE }, + { 0x3E0, UPPER_CASE, 0x3E1 }, + { 0x3E1, LOWER_CASE, 0x3E0 }, + { 0x3E2, UPPER_CASE, 0x3E3 }, + { 0x3E3, LOWER_CASE, 0x3E2 }, + { 0x3E4, UPPER_CASE, 0x3E5 }, + { 0x3E5, LOWER_CASE, 0x3E4 }, + { 0x3E6, UPPER_CASE, 0x3E7 }, + { 0x3E7, LOWER_CASE, 0x3E6 }, + { 0x3E8, UPPER_CASE, 0x3E9 }, + { 0x3E9, LOWER_CASE, 0x3E8 }, + { 0x3EA, UPPER_CASE, 0x3EB }, + { 0x3EB, LOWER_CASE, 0x3EA }, + { 0x3EC, UPPER_CASE, 0x3ED }, + { 0x3ED, LOWER_CASE, 0x3EC }, + { 0x3EE, UPPER_CASE, 0x3EF }, + { 0x3EF, LOWER_CASE, 0x3EE }, + { 0x3F0, LOWER_CASE, 0x39A }, + { 0x3F1, LOWER_CASE, 0x3A1 }, + { 0x3F2, LOWER_CASE, 0x3F9 }, + { 0x3F3, LOWER_CASE, 0x37F }, + { 0x3F4, UPPER_CASE, 0x3B8 }, + { 0x3F5, LOWER_CASE, 0x395 }, + { 0x3F7, UPPER_CASE, 0x3F8 }, + { 0x3F8, LOWER_CASE, 0x3F7 }, + { 0x3F9, UPPER_CASE, 0x3F2 }, + { 0x3FA, UPPER_CASE, 0x3FB }, + { 0x3FB, LOWER_CASE, 0x3FA }, + { 0x3FD, UPPER_CASE, 0x37B }, + { 0x3FE, UPPER_CASE, 0x37C }, + { 0x3FF, UPPER_CASE, 0x37D }, + { 0x400, UPPER_CASE, 0x450 }, + { 0x401, UPPER_CASE, 0x451 }, + { 0x402, UPPER_CASE, 0x452 }, + { 0x403, UPPER_CASE, 0x453 }, + { 0x404, UPPER_CASE, 0x454 }, + { 0x405, UPPER_CASE, 0x455 }, + { 0x406, UPPER_CASE, 0x456 }, + { 0x407, UPPER_CASE, 0x457 }, + { 0x408, UPPER_CASE, 0x458 }, + { 0x409, UPPER_CASE, 0x459 }, + { 0x40A, UPPER_CASE, 0x45A }, + { 0x40B, UPPER_CASE, 0x45B }, + { 0x40C, UPPER_CASE, 0x45C }, + { 0x40D, UPPER_CASE, 0x45D }, + { 0x40E, UPPER_CASE, 0x45E }, + { 0x40F, UPPER_CASE, 0x45F }, + { 0x410, UPPER_CASE, 0x430 }, + { 0x411, UPPER_CASE, 0x431 }, + { 0x412, UPPER_CASE, 0x432 }, + { 0x413, UPPER_CASE, 0x433 }, + { 0x414, UPPER_CASE, 0x434 }, + { 0x415, UPPER_CASE, 0x435 }, + { 0x416, UPPER_CASE, 0x436 }, + { 0x417, UPPER_CASE, 0x437 }, + { 0x418, UPPER_CASE, 0x438 }, + { 0x419, UPPER_CASE, 0x439 }, + { 0x41A, UPPER_CASE, 0x43A }, + { 0x41B, UPPER_CASE, 0x43B }, + { 0x41C, UPPER_CASE, 0x43C }, + { 0x41D, UPPER_CASE, 0x43D }, + { 0x41E, UPPER_CASE, 0x43E }, + { 0x41F, UPPER_CASE, 0x43F }, + { 0x420, UPPER_CASE, 0x440 }, + { 0x421, UPPER_CASE, 0x441 }, + { 0x422, UPPER_CASE, 0x442 }, + { 0x423, UPPER_CASE, 0x443 }, + { 0x424, UPPER_CASE, 0x444 }, + { 0x425, UPPER_CASE, 0x445 }, + { 0x426, UPPER_CASE, 0x446 }, + { 0x427, UPPER_CASE, 0x447 }, + { 0x428, UPPER_CASE, 0x448 }, + { 0x429, UPPER_CASE, 0x449 }, + { 0x42A, UPPER_CASE, 0x44A }, + { 0x42B, UPPER_CASE, 0x44B }, + { 0x42C, UPPER_CASE, 0x44C }, + { 0x42D, UPPER_CASE, 0x44D }, + { 0x42E, UPPER_CASE, 0x44E }, + { 0x42F, UPPER_CASE, 0x44F }, + { 0x430, LOWER_CASE, 0x410 }, + { 0x431, LOWER_CASE, 0x411 }, + { 0x432, LOWER_CASE, 0x412 }, + { 0x433, LOWER_CASE, 0x413 }, + { 0x434, LOWER_CASE, 0x414 }, + { 0x435, LOWER_CASE, 0x415 }, + { 0x436, LOWER_CASE, 0x416 }, + { 0x437, LOWER_CASE, 0x417 }, + { 0x438, LOWER_CASE, 0x418 }, + { 0x439, LOWER_CASE, 0x419 }, + { 0x43A, LOWER_CASE, 0x41A }, + { 0x43B, LOWER_CASE, 0x41B }, + { 0x43C, LOWER_CASE, 0x41C }, + { 0x43D, LOWER_CASE, 0x41D }, + { 0x43E, LOWER_CASE, 0x41E }, + { 0x43F, LOWER_CASE, 0x41F }, + { 0x440, LOWER_CASE, 0x420 }, + { 0x441, LOWER_CASE, 0x421 }, + { 0x442, LOWER_CASE, 0x422 }, + { 0x443, LOWER_CASE, 0x423 }, + { 0x444, LOWER_CASE, 0x424 }, + { 0x445, LOWER_CASE, 0x425 }, + { 0x446, LOWER_CASE, 0x426 }, + { 0x447, LOWER_CASE, 0x427 }, + { 0x448, LOWER_CASE, 0x428 }, + { 0x449, LOWER_CASE, 0x429 }, + { 0x44A, LOWER_CASE, 0x42A }, + { 0x44B, LOWER_CASE, 0x42B }, + { 0x44C, LOWER_CASE, 0x42C }, + { 0x44D, LOWER_CASE, 0x42D }, + { 0x44E, LOWER_CASE, 0x42E }, + { 0x44F, LOWER_CASE, 0x42F }, + { 0x450, LOWER_CASE, 0x400 }, + { 0x451, LOWER_CASE, 0x401 }, + { 0x452, LOWER_CASE, 0x402 }, + { 0x453, LOWER_CASE, 0x403 }, + { 0x454, LOWER_CASE, 0x404 }, + { 0x455, LOWER_CASE, 0x405 }, + { 0x456, LOWER_CASE, 0x406 }, + { 0x457, LOWER_CASE, 0x407 }, + { 0x458, LOWER_CASE, 0x408 }, + { 0x459, LOWER_CASE, 0x409 }, + { 0x45A, LOWER_CASE, 0x40A }, + { 0x45B, LOWER_CASE, 0x40B }, + { 0x45C, LOWER_CASE, 0x40C }, + { 0x45D, LOWER_CASE, 0x40D }, + { 0x45E, LOWER_CASE, 0x40E }, + { 0x45F, LOWER_CASE, 0x40F }, + { 0x460, UPPER_CASE, 0x461 }, + { 0x461, LOWER_CASE, 0x460 }, + { 0x462, UPPER_CASE, 0x463 }, + { 0x463, LOWER_CASE, 0x462 }, + { 0x464, UPPER_CASE, 0x465 }, + { 0x465, LOWER_CASE, 0x464 }, + { 0x466, UPPER_CASE, 0x467 }, + { 0x467, LOWER_CASE, 0x466 }, + { 0x468, UPPER_CASE, 0x469 }, + { 0x469, LOWER_CASE, 0x468 }, + { 0x46A, UPPER_CASE, 0x46B }, + { 0x46B, LOWER_CASE, 0x46A }, + { 0x46C, UPPER_CASE, 0x46D }, + { 0x46D, LOWER_CASE, 0x46C }, + { 0x46E, UPPER_CASE, 0x46F }, + { 0x46F, LOWER_CASE, 0x46E }, + { 0x470, UPPER_CASE, 0x471 }, + { 0x471, LOWER_CASE, 0x470 }, + { 0x472, UPPER_CASE, 0x473 }, + { 0x473, LOWER_CASE, 0x472 }, + { 0x474, UPPER_CASE, 0x475 }, + { 0x475, LOWER_CASE, 0x474 }, + { 0x476, UPPER_CASE, 0x477 }, + { 0x477, LOWER_CASE, 0x476 }, + { 0x478, UPPER_CASE, 0x479 }, + { 0x479, LOWER_CASE, 0x478 }, + { 0x47A, UPPER_CASE, 0x47B }, + { 0x47B, LOWER_CASE, 0x47A }, + { 0x47C, UPPER_CASE, 0x47D }, + { 0x47D, LOWER_CASE, 0x47C }, + { 0x47E, UPPER_CASE, 0x47F }, + { 0x47F, LOWER_CASE, 0x47E }, + { 0x480, UPPER_CASE, 0x481 }, + { 0x481, LOWER_CASE, 0x480 }, + { 0x48A, UPPER_CASE, 0x48B }, + { 0x48B, LOWER_CASE, 0x48A }, + { 0x48C, UPPER_CASE, 0x48D }, + { 0x48D, LOWER_CASE, 0x48C }, + { 0x48E, UPPER_CASE, 0x48F }, + { 0x48F, LOWER_CASE, 0x48E }, + { 0x490, UPPER_CASE, 0x491 }, + { 0x491, LOWER_CASE, 0x490 }, + { 0x492, UPPER_CASE, 0x493 }, + { 0x493, LOWER_CASE, 0x492 }, + { 0x494, UPPER_CASE, 0x495 }, + { 0x495, LOWER_CASE, 0x494 }, + { 0x496, UPPER_CASE, 0x497 }, + { 0x497, LOWER_CASE, 0x496 }, + { 0x498, UPPER_CASE, 0x499 }, + { 0x499, LOWER_CASE, 0x498 }, + { 0x49A, UPPER_CASE, 0x49B }, + { 0x49B, LOWER_CASE, 0x49A }, + { 0x49C, UPPER_CASE, 0x49D }, + { 0x49D, LOWER_CASE, 0x49C }, + { 0x49E, UPPER_CASE, 0x49F }, + { 0x49F, LOWER_CASE, 0x49E }, + { 0x4A0, UPPER_CASE, 0x4A1 }, + { 0x4A1, LOWER_CASE, 0x4A0 }, + { 0x4A2, UPPER_CASE, 0x4A3 }, + { 0x4A3, LOWER_CASE, 0x4A2 }, + { 0x4A4, UPPER_CASE, 0x4A5 }, + { 0x4A5, LOWER_CASE, 0x4A4 }, + { 0x4A6, UPPER_CASE, 0x4A7 }, + { 0x4A7, LOWER_CASE, 0x4A6 }, + { 0x4A8, UPPER_CASE, 0x4A9 }, + { 0x4A9, LOWER_CASE, 0x4A8 }, + { 0x4AA, UPPER_CASE, 0x4AB }, + { 0x4AB, LOWER_CASE, 0x4AA }, + { 0x4AC, UPPER_CASE, 0x4AD }, + { 0x4AD, LOWER_CASE, 0x4AC }, + { 0x4AE, UPPER_CASE, 0x4AF }, + { 0x4AF, LOWER_CASE, 0x4AE }, + { 0x4B0, UPPER_CASE, 0x4B1 }, + { 0x4B1, LOWER_CASE, 0x4B0 }, + { 0x4B2, UPPER_CASE, 0x4B3 }, + { 0x4B3, LOWER_CASE, 0x4B2 }, + { 0x4B4, UPPER_CASE, 0x4B5 }, + { 0x4B5, LOWER_CASE, 0x4B4 }, + { 0x4B6, UPPER_CASE, 0x4B7 }, + { 0x4B7, LOWER_CASE, 0x4B6 }, + { 0x4B8, UPPER_CASE, 0x4B9 }, + { 0x4B9, LOWER_CASE, 0x4B8 }, + { 0x4BA, UPPER_CASE, 0x4BB }, + { 0x4BB, LOWER_CASE, 0x4BA }, + { 0x4BC, UPPER_CASE, 0x4BD }, + { 0x4BD, LOWER_CASE, 0x4BC }, + { 0x4BE, UPPER_CASE, 0x4BF }, + { 0x4BF, LOWER_CASE, 0x4BE }, + { 0x4C0, UPPER_CASE, 0x4CF }, + { 0x4C1, UPPER_CASE, 0x4C2 }, + { 0x4C2, LOWER_CASE, 0x4C1 }, + { 0x4C3, UPPER_CASE, 0x4C4 }, + { 0x4C4, LOWER_CASE, 0x4C3 }, + { 0x4C5, UPPER_CASE, 0x4C6 }, + { 0x4C6, LOWER_CASE, 0x4C5 }, + { 0x4C7, UPPER_CASE, 0x4C8 }, + { 0x4C8, LOWER_CASE, 0x4C7 }, + { 0x4C9, UPPER_CASE, 0x4CA }, + { 0x4CA, LOWER_CASE, 0x4C9 }, + { 0x4CB, UPPER_CASE, 0x4CC }, + { 0x4CC, LOWER_CASE, 0x4CB }, + { 0x4CD, UPPER_CASE, 0x4CE }, + { 0x4CE, LOWER_CASE, 0x4CD }, + { 0x4CF, LOWER_CASE, 0x4C0 }, + { 0x4D0, UPPER_CASE, 0x4D1 }, + { 0x4D1, LOWER_CASE, 0x4D0 }, + { 0x4D2, UPPER_CASE, 0x4D3 }, + { 0x4D3, LOWER_CASE, 0x4D2 }, + { 0x4D4, UPPER_CASE, 0x4D5 }, + { 0x4D5, LOWER_CASE, 0x4D4 }, + { 0x4D6, UPPER_CASE, 0x4D7 }, + { 0x4D7, LOWER_CASE, 0x4D6 }, + { 0x4D8, UPPER_CASE, 0x4D9 }, + { 0x4D9, LOWER_CASE, 0x4D8 }, + { 0x4DA, UPPER_CASE, 0x4DB }, + { 0x4DB, LOWER_CASE, 0x4DA }, + { 0x4DC, UPPER_CASE, 0x4DD }, + { 0x4DD, LOWER_CASE, 0x4DC }, + { 0x4DE, UPPER_CASE, 0x4DF }, + { 0x4DF, LOWER_CASE, 0x4DE }, + { 0x4E0, UPPER_CASE, 0x4E1 }, + { 0x4E1, LOWER_CASE, 0x4E0 }, + { 0x4E2, UPPER_CASE, 0x4E3 }, + { 0x4E3, LOWER_CASE, 0x4E2 }, + { 0x4E4, UPPER_CASE, 0x4E5 }, + { 0x4E5, LOWER_CASE, 0x4E4 }, + { 0x4E6, UPPER_CASE, 0x4E7 }, + { 0x4E7, LOWER_CASE, 0x4E6 }, + { 0x4E8, UPPER_CASE, 0x4E9 }, + { 0x4E9, LOWER_CASE, 0x4E8 }, + { 0x4EA, UPPER_CASE, 0x4EB }, + { 0x4EB, LOWER_CASE, 0x4EA }, + { 0x4EC, UPPER_CASE, 0x4ED }, + { 0x4ED, LOWER_CASE, 0x4EC }, + { 0x4EE, UPPER_CASE, 0x4EF }, + { 0x4EF, LOWER_CASE, 0x4EE }, + { 0x4F0, UPPER_CASE, 0x4F1 }, + { 0x4F1, LOWER_CASE, 0x4F0 }, + { 0x4F2, UPPER_CASE, 0x4F3 }, + { 0x4F3, LOWER_CASE, 0x4F2 }, + { 0x4F4, UPPER_CASE, 0x4F5 }, + { 0x4F5, LOWER_CASE, 0x4F4 }, + { 0x4F6, UPPER_CASE, 0x4F7 }, + { 0x4F7, LOWER_CASE, 0x4F6 }, + { 0x4F8, UPPER_CASE, 0x4F9 }, + { 0x4F9, LOWER_CASE, 0x4F8 }, + { 0x4FA, UPPER_CASE, 0x4FB }, + { 0x4FB, LOWER_CASE, 0x4FA }, + { 0x4FC, UPPER_CASE, 0x4FD }, + { 0x4FD, LOWER_CASE, 0x4FC }, + { 0x4FE, UPPER_CASE, 0x4FF }, + { 0x4FF, LOWER_CASE, 0x4FE }, + { 0x500, UPPER_CASE, 0x501 }, + { 0x501, LOWER_CASE, 0x500 }, + { 0x502, UPPER_CASE, 0x503 }, + { 0x503, LOWER_CASE, 0x502 }, + { 0x504, UPPER_CASE, 0x505 }, + { 0x505, LOWER_CASE, 0x504 }, + { 0x506, UPPER_CASE, 0x507 }, + { 0x507, LOWER_CASE, 0x506 }, + { 0x508, UPPER_CASE, 0x509 }, + { 0x509, LOWER_CASE, 0x508 }, + { 0x50A, UPPER_CASE, 0x50B }, + { 0x50B, LOWER_CASE, 0x50A }, + { 0x50C, UPPER_CASE, 0x50D }, + { 0x50D, LOWER_CASE, 0x50C }, + { 0x50E, UPPER_CASE, 0x50F }, + { 0x50F, LOWER_CASE, 0x50E }, + { 0x510, UPPER_CASE, 0x511 }, + { 0x511, LOWER_CASE, 0x510 }, + { 0x512, UPPER_CASE, 0x513 }, + { 0x513, LOWER_CASE, 0x512 }, + { 0x514, UPPER_CASE, 0x515 }, + { 0x515, LOWER_CASE, 0x514 }, + { 0x516, UPPER_CASE, 0x517 }, + { 0x517, LOWER_CASE, 0x516 }, + { 0x518, UPPER_CASE, 0x519 }, + { 0x519, LOWER_CASE, 0x518 }, + { 0x51A, UPPER_CASE, 0x51B }, + { 0x51B, LOWER_CASE, 0x51A }, + { 0x51C, UPPER_CASE, 0x51D }, + { 0x51D, LOWER_CASE, 0x51C }, + { 0x51E, UPPER_CASE, 0x51F }, + { 0x51F, LOWER_CASE, 0x51E }, + { 0x520, UPPER_CASE, 0x521 }, + { 0x521, LOWER_CASE, 0x520 }, + { 0x522, UPPER_CASE, 0x523 }, + { 0x523, LOWER_CASE, 0x522 }, + { 0x524, UPPER_CASE, 0x525 }, + { 0x525, LOWER_CASE, 0x524 }, + { 0x526, UPPER_CASE, 0x527 }, + { 0x527, LOWER_CASE, 0x526 }, + { 0x528, UPPER_CASE, 0x529 }, + { 0x529, LOWER_CASE, 0x528 }, + { 0x52A, UPPER_CASE, 0x52B }, + { 0x52B, LOWER_CASE, 0x52A }, + { 0x52C, UPPER_CASE, 0x52D }, + { 0x52D, LOWER_CASE, 0x52C }, + { 0x52E, UPPER_CASE, 0x52F }, + { 0x52F, LOWER_CASE, 0x52E }, + { 0x531, UPPER_CASE, 0x561 }, + { 0x532, UPPER_CASE, 0x562 }, + { 0x533, UPPER_CASE, 0x563 }, + { 0x534, UPPER_CASE, 0x564 }, + { 0x535, UPPER_CASE, 0x565 }, + { 0x536, UPPER_CASE, 0x566 }, + { 0x537, UPPER_CASE, 0x567 }, + { 0x538, UPPER_CASE, 0x568 }, + { 0x539, UPPER_CASE, 0x569 }, + { 0x53A, UPPER_CASE, 0x56A }, + { 0x53B, UPPER_CASE, 0x56B }, + { 0x53C, UPPER_CASE, 0x56C }, + { 0x53D, UPPER_CASE, 0x56D }, + { 0x53E, UPPER_CASE, 0x56E }, + { 0x53F, UPPER_CASE, 0x56F }, + { 0x540, UPPER_CASE, 0x570 }, + { 0x541, UPPER_CASE, 0x571 }, + { 0x542, UPPER_CASE, 0x572 }, + { 0x543, UPPER_CASE, 0x573 }, + { 0x544, UPPER_CASE, 0x574 }, + { 0x545, UPPER_CASE, 0x575 }, + { 0x546, UPPER_CASE, 0x576 }, + { 0x547, UPPER_CASE, 0x577 }, + { 0x548, UPPER_CASE, 0x578 }, + { 0x549, UPPER_CASE, 0x579 }, + { 0x54A, UPPER_CASE, 0x57A }, + { 0x54B, UPPER_CASE, 0x57B }, + { 0x54C, UPPER_CASE, 0x57C }, + { 0x54D, UPPER_CASE, 0x57D }, + { 0x54E, UPPER_CASE, 0x57E }, + { 0x54F, UPPER_CASE, 0x57F }, + { 0x550, UPPER_CASE, 0x580 }, + { 0x551, UPPER_CASE, 0x581 }, + { 0x552, UPPER_CASE, 0x582 }, + { 0x553, UPPER_CASE, 0x583 }, + { 0x554, UPPER_CASE, 0x584 }, + { 0x555, UPPER_CASE, 0x585 }, + { 0x556, UPPER_CASE, 0x586 }, + { 0x561, LOWER_CASE, 0x531 }, + { 0x562, LOWER_CASE, 0x532 }, + { 0x563, LOWER_CASE, 0x533 }, + { 0x564, LOWER_CASE, 0x534 }, + { 0x565, LOWER_CASE, 0x535 }, + { 0x566, LOWER_CASE, 0x536 }, + { 0x567, LOWER_CASE, 0x537 }, + { 0x568, LOWER_CASE, 0x538 }, + { 0x569, LOWER_CASE, 0x539 }, + { 0x56A, LOWER_CASE, 0x53A }, + { 0x56B, LOWER_CASE, 0x53B }, + { 0x56C, LOWER_CASE, 0x53C }, + { 0x56D, LOWER_CASE, 0x53D }, + { 0x56E, LOWER_CASE, 0x53E }, + { 0x56F, LOWER_CASE, 0x53F }, + { 0x570, LOWER_CASE, 0x540 }, + { 0x571, LOWER_CASE, 0x541 }, + { 0x572, LOWER_CASE, 0x542 }, + { 0x573, LOWER_CASE, 0x543 }, + { 0x574, LOWER_CASE, 0x544 }, + { 0x575, LOWER_CASE, 0x545 }, + { 0x576, LOWER_CASE, 0x546 }, + { 0x577, LOWER_CASE, 0x547 }, + { 0x578, LOWER_CASE, 0x548 }, + { 0x579, LOWER_CASE, 0x549 }, + { 0x57A, LOWER_CASE, 0x54A }, + { 0x57B, LOWER_CASE, 0x54B }, + { 0x57C, LOWER_CASE, 0x54C }, + { 0x57D, LOWER_CASE, 0x54D }, + { 0x57E, LOWER_CASE, 0x54E }, + { 0x57F, LOWER_CASE, 0x54F }, + { 0x580, LOWER_CASE, 0x550 }, + { 0x581, LOWER_CASE, 0x551 }, + { 0x582, LOWER_CASE, 0x552 }, + { 0x583, LOWER_CASE, 0x553 }, + { 0x584, LOWER_CASE, 0x554 }, + { 0x585, LOWER_CASE, 0x555 }, + { 0x586, LOWER_CASE, 0x556 }, + { 0x10A0, UPPER_CASE, 0x2D00 }, + { 0x10A1, UPPER_CASE, 0x2D01 }, + { 0x10A2, UPPER_CASE, 0x2D02 }, + { 0x10A3, UPPER_CASE, 0x2D03 }, + { 0x10A4, UPPER_CASE, 0x2D04 }, + { 0x10A5, UPPER_CASE, 0x2D05 }, + { 0x10A6, UPPER_CASE, 0x2D06 }, + { 0x10A7, UPPER_CASE, 0x2D07 }, + { 0x10A8, UPPER_CASE, 0x2D08 }, + { 0x10A9, UPPER_CASE, 0x2D09 }, + { 0x10AA, UPPER_CASE, 0x2D0A }, + { 0x10AB, UPPER_CASE, 0x2D0B }, + { 0x10AC, UPPER_CASE, 0x2D0C }, + { 0x10AD, UPPER_CASE, 0x2D0D }, + { 0x10AE, UPPER_CASE, 0x2D0E }, + { 0x10AF, UPPER_CASE, 0x2D0F }, + { 0x10B0, UPPER_CASE, 0x2D10 }, + { 0x10B1, UPPER_CASE, 0x2D11 }, + { 0x10B2, UPPER_CASE, 0x2D12 }, + { 0x10B3, UPPER_CASE, 0x2D13 }, + { 0x10B4, UPPER_CASE, 0x2D14 }, + { 0x10B5, UPPER_CASE, 0x2D15 }, + { 0x10B6, UPPER_CASE, 0x2D16 }, + { 0x10B7, UPPER_CASE, 0x2D17 }, + { 0x10B8, UPPER_CASE, 0x2D18 }, + { 0x10B9, UPPER_CASE, 0x2D19 }, + { 0x10BA, UPPER_CASE, 0x2D1A }, + { 0x10BB, UPPER_CASE, 0x2D1B }, + { 0x10BC, UPPER_CASE, 0x2D1C }, + { 0x10BD, UPPER_CASE, 0x2D1D }, + { 0x10BE, UPPER_CASE, 0x2D1E }, + { 0x10BF, UPPER_CASE, 0x2D1F }, + { 0x10C0, UPPER_CASE, 0x2D20 }, + { 0x10C1, UPPER_CASE, 0x2D21 }, + { 0x10C2, UPPER_CASE, 0x2D22 }, + { 0x10C3, UPPER_CASE, 0x2D23 }, + { 0x10C4, UPPER_CASE, 0x2D24 }, + { 0x10C5, UPPER_CASE, 0x2D25 }, + { 0x10C7, UPPER_CASE, 0x2D27 }, + { 0x10CD, UPPER_CASE, 0x2D2D }, + { 0x10D0, LOWER_CASE, 0x1C90 }, + { 0x10D1, LOWER_CASE, 0x1C91 }, + { 0x10D2, LOWER_CASE, 0x1C92 }, + { 0x10D3, LOWER_CASE, 0x1C93 }, + { 0x10D4, LOWER_CASE, 0x1C94 }, + { 0x10D5, LOWER_CASE, 0x1C95 }, + { 0x10D6, LOWER_CASE, 0x1C96 }, + { 0x10D7, LOWER_CASE, 0x1C97 }, + { 0x10D8, LOWER_CASE, 0x1C98 }, + { 0x10D9, LOWER_CASE, 0x1C99 }, + { 0x10DA, LOWER_CASE, 0x1C9A }, + { 0x10DB, LOWER_CASE, 0x1C9B }, + { 0x10DC, LOWER_CASE, 0x1C9C }, + { 0x10DD, LOWER_CASE, 0x1C9D }, + { 0x10DE, LOWER_CASE, 0x1C9E }, + { 0x10DF, LOWER_CASE, 0x1C9F }, + { 0x10E0, LOWER_CASE, 0x1CA0 }, + { 0x10E1, LOWER_CASE, 0x1CA1 }, + { 0x10E2, LOWER_CASE, 0x1CA2 }, + { 0x10E3, LOWER_CASE, 0x1CA3 }, + { 0x10E4, LOWER_CASE, 0x1CA4 }, + { 0x10E5, LOWER_CASE, 0x1CA5 }, + { 0x10E6, LOWER_CASE, 0x1CA6 }, + { 0x10E7, LOWER_CASE, 0x1CA7 }, + { 0x10E8, LOWER_CASE, 0x1CA8 }, + { 0x10E9, LOWER_CASE, 0x1CA9 }, + { 0x10EA, LOWER_CASE, 0x1CAA }, + { 0x10EB, LOWER_CASE, 0x1CAB }, + { 0x10EC, LOWER_CASE, 0x1CAC }, + { 0x10ED, LOWER_CASE, 0x1CAD }, + { 0x10EE, LOWER_CASE, 0x1CAE }, + { 0x10EF, LOWER_CASE, 0x1CAF }, + { 0x10F0, LOWER_CASE, 0x1CB0 }, + { 0x10F1, LOWER_CASE, 0x1CB1 }, + { 0x10F2, LOWER_CASE, 0x1CB2 }, + { 0x10F3, LOWER_CASE, 0x1CB3 }, + { 0x10F4, LOWER_CASE, 0x1CB4 }, + { 0x10F5, LOWER_CASE, 0x1CB5 }, + { 0x10F6, LOWER_CASE, 0x1CB6 }, + { 0x10F7, LOWER_CASE, 0x1CB7 }, + { 0x10F8, LOWER_CASE, 0x1CB8 }, + { 0x10F9, LOWER_CASE, 0x1CB9 }, + { 0x10FA, LOWER_CASE, 0x1CBA }, + { 0x10FD, LOWER_CASE, 0x1CBD }, + { 0x10FE, LOWER_CASE, 0x1CBE }, + { 0x10FF, LOWER_CASE, 0x1CBF }, + { 0x13A0, UPPER_CASE, 0xAB70 }, + { 0x13A1, UPPER_CASE, 0xAB71 }, + { 0x13A2, UPPER_CASE, 0xAB72 }, + { 0x13A3, UPPER_CASE, 0xAB73 }, + { 0x13A4, UPPER_CASE, 0xAB74 }, + { 0x13A5, UPPER_CASE, 0xAB75 }, + { 0x13A6, UPPER_CASE, 0xAB76 }, + { 0x13A7, UPPER_CASE, 0xAB77 }, + { 0x13A8, UPPER_CASE, 0xAB78 }, + { 0x13A9, UPPER_CASE, 0xAB79 }, + { 0x13AA, UPPER_CASE, 0xAB7A }, + { 0x13AB, UPPER_CASE, 0xAB7B }, + { 0x13AC, UPPER_CASE, 0xAB7C }, + { 0x13AD, UPPER_CASE, 0xAB7D }, + { 0x13AE, UPPER_CASE, 0xAB7E }, + { 0x13AF, UPPER_CASE, 0xAB7F }, + { 0x13B0, UPPER_CASE, 0xAB80 }, + { 0x13B1, UPPER_CASE, 0xAB81 }, + { 0x13B2, UPPER_CASE, 0xAB82 }, + { 0x13B3, UPPER_CASE, 0xAB83 }, + { 0x13B4, UPPER_CASE, 0xAB84 }, + { 0x13B5, UPPER_CASE, 0xAB85 }, + { 0x13B6, UPPER_CASE, 0xAB86 }, + { 0x13B7, UPPER_CASE, 0xAB87 }, + { 0x13B8, UPPER_CASE, 0xAB88 }, + { 0x13B9, UPPER_CASE, 0xAB89 }, + { 0x13BA, UPPER_CASE, 0xAB8A }, + { 0x13BB, UPPER_CASE, 0xAB8B }, + { 0x13BC, UPPER_CASE, 0xAB8C }, + { 0x13BD, UPPER_CASE, 0xAB8D }, + { 0x13BE, UPPER_CASE, 0xAB8E }, + { 0x13BF, UPPER_CASE, 0xAB8F }, + { 0x13C0, UPPER_CASE, 0xAB90 }, + { 0x13C1, UPPER_CASE, 0xAB91 }, + { 0x13C2, UPPER_CASE, 0xAB92 }, + { 0x13C3, UPPER_CASE, 0xAB93 }, + { 0x13C4, UPPER_CASE, 0xAB94 }, + { 0x13C5, UPPER_CASE, 0xAB95 }, + { 0x13C6, UPPER_CASE, 0xAB96 }, + { 0x13C7, UPPER_CASE, 0xAB97 }, + { 0x13C8, UPPER_CASE, 0xAB98 }, + { 0x13C9, UPPER_CASE, 0xAB99 }, + { 0x13CA, UPPER_CASE, 0xAB9A }, + { 0x13CB, UPPER_CASE, 0xAB9B }, + { 0x13CC, UPPER_CASE, 0xAB9C }, + { 0x13CD, UPPER_CASE, 0xAB9D }, + { 0x13CE, UPPER_CASE, 0xAB9E }, + { 0x13CF, UPPER_CASE, 0xAB9F }, + { 0x13D0, UPPER_CASE, 0xABA0 }, + { 0x13D1, UPPER_CASE, 0xABA1 }, + { 0x13D2, UPPER_CASE, 0xABA2 }, + { 0x13D3, UPPER_CASE, 0xABA3 }, + { 0x13D4, UPPER_CASE, 0xABA4 }, + { 0x13D5, UPPER_CASE, 0xABA5 }, + { 0x13D6, UPPER_CASE, 0xABA6 }, + { 0x13D7, UPPER_CASE, 0xABA7 }, + { 0x13D8, UPPER_CASE, 0xABA8 }, + { 0x13D9, UPPER_CASE, 0xABA9 }, + { 0x13DA, UPPER_CASE, 0xABAA }, + { 0x13DB, UPPER_CASE, 0xABAB }, + { 0x13DC, UPPER_CASE, 0xABAC }, + { 0x13DD, UPPER_CASE, 0xABAD }, + { 0x13DE, UPPER_CASE, 0xABAE }, + { 0x13DF, UPPER_CASE, 0xABAF }, + { 0x13E0, UPPER_CASE, 0xABB0 }, + { 0x13E1, UPPER_CASE, 0xABB1 }, + { 0x13E2, UPPER_CASE, 0xABB2 }, + { 0x13E3, UPPER_CASE, 0xABB3 }, + { 0x13E4, UPPER_CASE, 0xABB4 }, + { 0x13E5, UPPER_CASE, 0xABB5 }, + { 0x13E6, UPPER_CASE, 0xABB6 }, + { 0x13E7, UPPER_CASE, 0xABB7 }, + { 0x13E8, UPPER_CASE, 0xABB8 }, + { 0x13E9, UPPER_CASE, 0xABB9 }, + { 0x13EA, UPPER_CASE, 0xABBA }, + { 0x13EB, UPPER_CASE, 0xABBB }, + { 0x13EC, UPPER_CASE, 0xABBC }, + { 0x13ED, UPPER_CASE, 0xABBD }, + { 0x13EE, UPPER_CASE, 0xABBE }, + { 0x13EF, UPPER_CASE, 0xABBF }, + { 0x13F0, UPPER_CASE, 0x13F8 }, + { 0x13F1, UPPER_CASE, 0x13F9 }, + { 0x13F2, UPPER_CASE, 0x13FA }, + { 0x13F3, UPPER_CASE, 0x13FB }, + { 0x13F4, UPPER_CASE, 0x13FC }, + { 0x13F5, UPPER_CASE, 0x13FD }, + { 0x13F8, LOWER_CASE, 0x13F0 }, + { 0x13F9, LOWER_CASE, 0x13F1 }, + { 0x13FA, LOWER_CASE, 0x13F2 }, + { 0x13FB, LOWER_CASE, 0x13F3 }, + { 0x13FC, LOWER_CASE, 0x13F4 }, + { 0x13FD, LOWER_CASE, 0x13F5 }, + { 0x1C80, LOWER_CASE, 0x412 }, + { 0x1C81, LOWER_CASE, 0x414 }, + { 0x1C82, LOWER_CASE, 0x41E }, + { 0x1C83, LOWER_CASE, 0x421 }, + { 0x1C84, LOWER_CASE, 0x422 }, + { 0x1C85, LOWER_CASE, 0x422 }, + { 0x1C86, LOWER_CASE, 0x42A }, + { 0x1C87, LOWER_CASE, 0x462 }, + { 0x1C88, LOWER_CASE, 0xA64A }, + { 0x1C90, UPPER_CASE, 0x10D0 }, + { 0x1C91, UPPER_CASE, 0x10D1 }, + { 0x1C92, UPPER_CASE, 0x10D2 }, + { 0x1C93, UPPER_CASE, 0x10D3 }, + { 0x1C94, UPPER_CASE, 0x10D4 }, + { 0x1C95, UPPER_CASE, 0x10D5 }, + { 0x1C96, UPPER_CASE, 0x10D6 }, + { 0x1C97, UPPER_CASE, 0x10D7 }, + { 0x1C98, UPPER_CASE, 0x10D8 }, + { 0x1C99, UPPER_CASE, 0x10D9 }, + { 0x1C9A, UPPER_CASE, 0x10DA }, + { 0x1C9B, UPPER_CASE, 0x10DB }, + { 0x1C9C, UPPER_CASE, 0x10DC }, + { 0x1C9D, UPPER_CASE, 0x10DD }, + { 0x1C9E, UPPER_CASE, 0x10DE }, + { 0x1C9F, UPPER_CASE, 0x10DF }, + { 0x1CA0, UPPER_CASE, 0x10E0 }, + { 0x1CA1, UPPER_CASE, 0x10E1 }, + { 0x1CA2, UPPER_CASE, 0x10E2 }, + { 0x1CA3, UPPER_CASE, 0x10E3 }, + { 0x1CA4, UPPER_CASE, 0x10E4 }, + { 0x1CA5, UPPER_CASE, 0x10E5 }, + { 0x1CA6, UPPER_CASE, 0x10E6 }, + { 0x1CA7, UPPER_CASE, 0x10E7 }, + { 0x1CA8, UPPER_CASE, 0x10E8 }, + { 0x1CA9, UPPER_CASE, 0x10E9 }, + { 0x1CAA, UPPER_CASE, 0x10EA }, + { 0x1CAB, UPPER_CASE, 0x10EB }, + { 0x1CAC, UPPER_CASE, 0x10EC }, + { 0x1CAD, UPPER_CASE, 0x10ED }, + { 0x1CAE, UPPER_CASE, 0x10EE }, + { 0x1CAF, UPPER_CASE, 0x10EF }, + { 0x1CB0, UPPER_CASE, 0x10F0 }, + { 0x1CB1, UPPER_CASE, 0x10F1 }, + { 0x1CB2, UPPER_CASE, 0x10F2 }, + { 0x1CB3, UPPER_CASE, 0x10F3 }, + { 0x1CB4, UPPER_CASE, 0x10F4 }, + { 0x1CB5, UPPER_CASE, 0x10F5 }, + { 0x1CB6, UPPER_CASE, 0x10F6 }, + { 0x1CB7, UPPER_CASE, 0x10F7 }, + { 0x1CB8, UPPER_CASE, 0x10F8 }, + { 0x1CB9, UPPER_CASE, 0x10F9 }, + { 0x1CBA, UPPER_CASE, 0x10FA }, + { 0x1CBD, UPPER_CASE, 0x10FD }, + { 0x1CBE, UPPER_CASE, 0x10FE }, + { 0x1CBF, UPPER_CASE, 0x10FF }, + { 0x1D79, LOWER_CASE, 0xA77D }, + { 0x1D7D, LOWER_CASE, 0x2C63 }, + { 0x1D8E, LOWER_CASE, 0xA7C6 }, + { 0x1E00, UPPER_CASE, 0x1E01 }, + { 0x1E01, LOWER_CASE, 0x1E00 }, + { 0x1E02, UPPER_CASE, 0x1E03 }, + { 0x1E03, LOWER_CASE, 0x1E02 }, + { 0x1E04, UPPER_CASE, 0x1E05 }, + { 0x1E05, LOWER_CASE, 0x1E04 }, + { 0x1E06, UPPER_CASE, 0x1E07 }, + { 0x1E07, LOWER_CASE, 0x1E06 }, + { 0x1E08, UPPER_CASE, 0x1E09 }, + { 0x1E09, LOWER_CASE, 0x1E08 }, + { 0x1E0A, UPPER_CASE, 0x1E0B }, + { 0x1E0B, LOWER_CASE, 0x1E0A }, + { 0x1E0C, UPPER_CASE, 0x1E0D }, + { 0x1E0D, LOWER_CASE, 0x1E0C }, + { 0x1E0E, UPPER_CASE, 0x1E0F }, + { 0x1E0F, LOWER_CASE, 0x1E0E }, + { 0x1E10, UPPER_CASE, 0x1E11 }, + { 0x1E11, LOWER_CASE, 0x1E10 }, + { 0x1E12, UPPER_CASE, 0x1E13 }, + { 0x1E13, LOWER_CASE, 0x1E12 }, + { 0x1E14, UPPER_CASE, 0x1E15 }, + { 0x1E15, LOWER_CASE, 0x1E14 }, + { 0x1E16, UPPER_CASE, 0x1E17 }, + { 0x1E17, LOWER_CASE, 0x1E16 }, + { 0x1E18, UPPER_CASE, 0x1E19 }, + { 0x1E19, LOWER_CASE, 0x1E18 }, + { 0x1E1A, UPPER_CASE, 0x1E1B }, + { 0x1E1B, LOWER_CASE, 0x1E1A }, + { 0x1E1C, UPPER_CASE, 0x1E1D }, + { 0x1E1D, LOWER_CASE, 0x1E1C }, + { 0x1E1E, UPPER_CASE, 0x1E1F }, + { 0x1E1F, LOWER_CASE, 0x1E1E }, + { 0x1E20, UPPER_CASE, 0x1E21 }, + { 0x1E21, LOWER_CASE, 0x1E20 }, + { 0x1E22, UPPER_CASE, 0x1E23 }, + { 0x1E23, LOWER_CASE, 0x1E22 }, + { 0x1E24, UPPER_CASE, 0x1E25 }, + { 0x1E25, LOWER_CASE, 0x1E24 }, + { 0x1E26, UPPER_CASE, 0x1E27 }, + { 0x1E27, LOWER_CASE, 0x1E26 }, + { 0x1E28, UPPER_CASE, 0x1E29 }, + { 0x1E29, LOWER_CASE, 0x1E28 }, + { 0x1E2A, UPPER_CASE, 0x1E2B }, + { 0x1E2B, LOWER_CASE, 0x1E2A }, + { 0x1E2C, UPPER_CASE, 0x1E2D }, + { 0x1E2D, LOWER_CASE, 0x1E2C }, + { 0x1E2E, UPPER_CASE, 0x1E2F }, + { 0x1E2F, LOWER_CASE, 0x1E2E }, + { 0x1E30, UPPER_CASE, 0x1E31 }, + { 0x1E31, LOWER_CASE, 0x1E30 }, + { 0x1E32, UPPER_CASE, 0x1E33 }, + { 0x1E33, LOWER_CASE, 0x1E32 }, + { 0x1E34, UPPER_CASE, 0x1E35 }, + { 0x1E35, LOWER_CASE, 0x1E34 }, + { 0x1E36, UPPER_CASE, 0x1E37 }, + { 0x1E37, LOWER_CASE, 0x1E36 }, + { 0x1E38, UPPER_CASE, 0x1E39 }, + { 0x1E39, LOWER_CASE, 0x1E38 }, + { 0x1E3A, UPPER_CASE, 0x1E3B }, + { 0x1E3B, LOWER_CASE, 0x1E3A }, + { 0x1E3C, UPPER_CASE, 0x1E3D }, + { 0x1E3D, LOWER_CASE, 0x1E3C }, + { 0x1E3E, UPPER_CASE, 0x1E3F }, + { 0x1E3F, LOWER_CASE, 0x1E3E }, + { 0x1E40, UPPER_CASE, 0x1E41 }, + { 0x1E41, LOWER_CASE, 0x1E40 }, + { 0x1E42, UPPER_CASE, 0x1E43 }, + { 0x1E43, LOWER_CASE, 0x1E42 }, + { 0x1E44, UPPER_CASE, 0x1E45 }, + { 0x1E45, LOWER_CASE, 0x1E44 }, + { 0x1E46, UPPER_CASE, 0x1E47 }, + { 0x1E47, LOWER_CASE, 0x1E46 }, + { 0x1E48, UPPER_CASE, 0x1E49 }, + { 0x1E49, LOWER_CASE, 0x1E48 }, + { 0x1E4A, UPPER_CASE, 0x1E4B }, + { 0x1E4B, LOWER_CASE, 0x1E4A }, + { 0x1E4C, UPPER_CASE, 0x1E4D }, + { 0x1E4D, LOWER_CASE, 0x1E4C }, + { 0x1E4E, UPPER_CASE, 0x1E4F }, + { 0x1E4F, LOWER_CASE, 0x1E4E }, + { 0x1E50, UPPER_CASE, 0x1E51 }, + { 0x1E51, LOWER_CASE, 0x1E50 }, + { 0x1E52, UPPER_CASE, 0x1E53 }, + { 0x1E53, LOWER_CASE, 0x1E52 }, + { 0x1E54, UPPER_CASE, 0x1E55 }, + { 0x1E55, LOWER_CASE, 0x1E54 }, + { 0x1E56, UPPER_CASE, 0x1E57 }, + { 0x1E57, LOWER_CASE, 0x1E56 }, + { 0x1E58, UPPER_CASE, 0x1E59 }, + { 0x1E59, LOWER_CASE, 0x1E58 }, + { 0x1E5A, UPPER_CASE, 0x1E5B }, + { 0x1E5B, LOWER_CASE, 0x1E5A }, + { 0x1E5C, UPPER_CASE, 0x1E5D }, + { 0x1E5D, LOWER_CASE, 0x1E5C }, + { 0x1E5E, UPPER_CASE, 0x1E5F }, + { 0x1E5F, LOWER_CASE, 0x1E5E }, + { 0x1E60, UPPER_CASE, 0x1E61 }, + { 0x1E61, LOWER_CASE, 0x1E60 }, + { 0x1E62, UPPER_CASE, 0x1E63 }, + { 0x1E63, LOWER_CASE, 0x1E62 }, + { 0x1E64, UPPER_CASE, 0x1E65 }, + { 0x1E65, LOWER_CASE, 0x1E64 }, + { 0x1E66, UPPER_CASE, 0x1E67 }, + { 0x1E67, LOWER_CASE, 0x1E66 }, + { 0x1E68, UPPER_CASE, 0x1E69 }, + { 0x1E69, LOWER_CASE, 0x1E68 }, + { 0x1E6A, UPPER_CASE, 0x1E6B }, + { 0x1E6B, LOWER_CASE, 0x1E6A }, + { 0x1E6C, UPPER_CASE, 0x1E6D }, + { 0x1E6D, LOWER_CASE, 0x1E6C }, + { 0x1E6E, UPPER_CASE, 0x1E6F }, + { 0x1E6F, LOWER_CASE, 0x1E6E }, + { 0x1E70, UPPER_CASE, 0x1E71 }, + { 0x1E71, LOWER_CASE, 0x1E70 }, + { 0x1E72, UPPER_CASE, 0x1E73 }, + { 0x1E73, LOWER_CASE, 0x1E72 }, + { 0x1E74, UPPER_CASE, 0x1E75 }, + { 0x1E75, LOWER_CASE, 0x1E74 }, + { 0x1E76, UPPER_CASE, 0x1E77 }, + { 0x1E77, LOWER_CASE, 0x1E76 }, + { 0x1E78, UPPER_CASE, 0x1E79 }, + { 0x1E79, LOWER_CASE, 0x1E78 }, + { 0x1E7A, UPPER_CASE, 0x1E7B }, + { 0x1E7B, LOWER_CASE, 0x1E7A }, + { 0x1E7C, UPPER_CASE, 0x1E7D }, + { 0x1E7D, LOWER_CASE, 0x1E7C }, + { 0x1E7E, UPPER_CASE, 0x1E7F }, + { 0x1E7F, LOWER_CASE, 0x1E7E }, + { 0x1E80, UPPER_CASE, 0x1E81 }, + { 0x1E81, LOWER_CASE, 0x1E80 }, + { 0x1E82, UPPER_CASE, 0x1E83 }, + { 0x1E83, LOWER_CASE, 0x1E82 }, + { 0x1E84, UPPER_CASE, 0x1E85 }, + { 0x1E85, LOWER_CASE, 0x1E84 }, + { 0x1E86, UPPER_CASE, 0x1E87 }, + { 0x1E87, LOWER_CASE, 0x1E86 }, + { 0x1E88, UPPER_CASE, 0x1E89 }, + { 0x1E89, LOWER_CASE, 0x1E88 }, + { 0x1E8A, UPPER_CASE, 0x1E8B }, + { 0x1E8B, LOWER_CASE, 0x1E8A }, + { 0x1E8C, UPPER_CASE, 0x1E8D }, + { 0x1E8D, LOWER_CASE, 0x1E8C }, + { 0x1E8E, UPPER_CASE, 0x1E8F }, + { 0x1E8F, LOWER_CASE, 0x1E8E }, + { 0x1E90, UPPER_CASE, 0x1E91 }, + { 0x1E91, LOWER_CASE, 0x1E90 }, + { 0x1E92, UPPER_CASE, 0x1E93 }, + { 0x1E93, LOWER_CASE, 0x1E92 }, + { 0x1E94, UPPER_CASE, 0x1E95 }, + { 0x1E95, LOWER_CASE, 0x1E94 }, + { 0x1E9B, LOWER_CASE, 0x1E60 }, + { 0x1E9E, UPPER_CASE, 0xDF }, + { 0x1EA0, UPPER_CASE, 0x1EA1 }, + { 0x1EA1, LOWER_CASE, 0x1EA0 }, + { 0x1EA2, UPPER_CASE, 0x1EA3 }, + { 0x1EA3, LOWER_CASE, 0x1EA2 }, + { 0x1EA4, UPPER_CASE, 0x1EA5 }, + { 0x1EA5, LOWER_CASE, 0x1EA4 }, + { 0x1EA6, UPPER_CASE, 0x1EA7 }, + { 0x1EA7, LOWER_CASE, 0x1EA6 }, + { 0x1EA8, UPPER_CASE, 0x1EA9 }, + { 0x1EA9, LOWER_CASE, 0x1EA8 }, + { 0x1EAA, UPPER_CASE, 0x1EAB }, + { 0x1EAB, LOWER_CASE, 0x1EAA }, + { 0x1EAC, UPPER_CASE, 0x1EAD }, + { 0x1EAD, LOWER_CASE, 0x1EAC }, + { 0x1EAE, UPPER_CASE, 0x1EAF }, + { 0x1EAF, LOWER_CASE, 0x1EAE }, + { 0x1EB0, UPPER_CASE, 0x1EB1 }, + { 0x1EB1, LOWER_CASE, 0x1EB0 }, + { 0x1EB2, UPPER_CASE, 0x1EB3 }, + { 0x1EB3, LOWER_CASE, 0x1EB2 }, + { 0x1EB4, UPPER_CASE, 0x1EB5 }, + { 0x1EB5, LOWER_CASE, 0x1EB4 }, + { 0x1EB6, UPPER_CASE, 0x1EB7 }, + { 0x1EB7, LOWER_CASE, 0x1EB6 }, + { 0x1EB8, UPPER_CASE, 0x1EB9 }, + { 0x1EB9, LOWER_CASE, 0x1EB8 }, + { 0x1EBA, UPPER_CASE, 0x1EBB }, + { 0x1EBB, LOWER_CASE, 0x1EBA }, + { 0x1EBC, UPPER_CASE, 0x1EBD }, + { 0x1EBD, LOWER_CASE, 0x1EBC }, + { 0x1EBE, UPPER_CASE, 0x1EBF }, + { 0x1EBF, LOWER_CASE, 0x1EBE }, + { 0x1EC0, UPPER_CASE, 0x1EC1 }, + { 0x1EC1, LOWER_CASE, 0x1EC0 }, + { 0x1EC2, UPPER_CASE, 0x1EC3 }, + { 0x1EC3, LOWER_CASE, 0x1EC2 }, + { 0x1EC4, UPPER_CASE, 0x1EC5 }, + { 0x1EC5, LOWER_CASE, 0x1EC4 }, + { 0x1EC6, UPPER_CASE, 0x1EC7 }, + { 0x1EC7, LOWER_CASE, 0x1EC6 }, + { 0x1EC8, UPPER_CASE, 0x1EC9 }, + { 0x1EC9, LOWER_CASE, 0x1EC8 }, + { 0x1ECA, UPPER_CASE, 0x1ECB }, + { 0x1ECB, LOWER_CASE, 0x1ECA }, + { 0x1ECC, UPPER_CASE, 0x1ECD }, + { 0x1ECD, LOWER_CASE, 0x1ECC }, + { 0x1ECE, UPPER_CASE, 0x1ECF }, + { 0x1ECF, LOWER_CASE, 0x1ECE }, + { 0x1ED0, UPPER_CASE, 0x1ED1 }, + { 0x1ED1, LOWER_CASE, 0x1ED0 }, + { 0x1ED2, UPPER_CASE, 0x1ED3 }, + { 0x1ED3, LOWER_CASE, 0x1ED2 }, + { 0x1ED4, UPPER_CASE, 0x1ED5 }, + { 0x1ED5, LOWER_CASE, 0x1ED4 }, + { 0x1ED6, UPPER_CASE, 0x1ED7 }, + { 0x1ED7, LOWER_CASE, 0x1ED6 }, + { 0x1ED8, UPPER_CASE, 0x1ED9 }, + { 0x1ED9, LOWER_CASE, 0x1ED8 }, + { 0x1EDA, UPPER_CASE, 0x1EDB }, + { 0x1EDB, LOWER_CASE, 0x1EDA }, + { 0x1EDC, UPPER_CASE, 0x1EDD }, + { 0x1EDD, LOWER_CASE, 0x1EDC }, + { 0x1EDE, UPPER_CASE, 0x1EDF }, + { 0x1EDF, LOWER_CASE, 0x1EDE }, + { 0x1EE0, UPPER_CASE, 0x1EE1 }, + { 0x1EE1, LOWER_CASE, 0x1EE0 }, + { 0x1EE2, UPPER_CASE, 0x1EE3 }, + { 0x1EE3, LOWER_CASE, 0x1EE2 }, + { 0x1EE4, UPPER_CASE, 0x1EE5 }, + { 0x1EE5, LOWER_CASE, 0x1EE4 }, + { 0x1EE6, UPPER_CASE, 0x1EE7 }, + { 0x1EE7, LOWER_CASE, 0x1EE6 }, + { 0x1EE8, UPPER_CASE, 0x1EE9 }, + { 0x1EE9, LOWER_CASE, 0x1EE8 }, + { 0x1EEA, UPPER_CASE, 0x1EEB }, + { 0x1EEB, LOWER_CASE, 0x1EEA }, + { 0x1EEC, UPPER_CASE, 0x1EED }, + { 0x1EED, LOWER_CASE, 0x1EEC }, + { 0x1EEE, UPPER_CASE, 0x1EEF }, + { 0x1EEF, LOWER_CASE, 0x1EEE }, + { 0x1EF0, UPPER_CASE, 0x1EF1 }, + { 0x1EF1, LOWER_CASE, 0x1EF0 }, + { 0x1EF2, UPPER_CASE, 0x1EF3 }, + { 0x1EF3, LOWER_CASE, 0x1EF2 }, + { 0x1EF4, UPPER_CASE, 0x1EF5 }, + { 0x1EF5, LOWER_CASE, 0x1EF4 }, + { 0x1EF6, UPPER_CASE, 0x1EF7 }, + { 0x1EF7, LOWER_CASE, 0x1EF6 }, + { 0x1EF8, UPPER_CASE, 0x1EF9 }, + { 0x1EF9, LOWER_CASE, 0x1EF8 }, + { 0x1EFA, UPPER_CASE, 0x1EFB }, + { 0x1EFB, LOWER_CASE, 0x1EFA }, + { 0x1EFC, UPPER_CASE, 0x1EFD }, + { 0x1EFD, LOWER_CASE, 0x1EFC }, + { 0x1EFE, UPPER_CASE, 0x1EFF }, + { 0x1EFF, LOWER_CASE, 0x1EFE }, + { 0x1F00, LOWER_CASE, 0x1F08 }, + { 0x1F01, LOWER_CASE, 0x1F09 }, + { 0x1F02, LOWER_CASE, 0x1F0A }, + { 0x1F03, LOWER_CASE, 0x1F0B }, + { 0x1F04, LOWER_CASE, 0x1F0C }, + { 0x1F05, LOWER_CASE, 0x1F0D }, + { 0x1F06, LOWER_CASE, 0x1F0E }, + { 0x1F07, LOWER_CASE, 0x1F0F }, + { 0x1F08, UPPER_CASE, 0x1F00 }, + { 0x1F09, UPPER_CASE, 0x1F01 }, + { 0x1F0A, UPPER_CASE, 0x1F02 }, + { 0x1F0B, UPPER_CASE, 0x1F03 }, + { 0x1F0C, UPPER_CASE, 0x1F04 }, + { 0x1F0D, UPPER_CASE, 0x1F05 }, + { 0x1F0E, UPPER_CASE, 0x1F06 }, + { 0x1F0F, UPPER_CASE, 0x1F07 }, + { 0x1F10, LOWER_CASE, 0x1F18 }, + { 0x1F11, LOWER_CASE, 0x1F19 }, + { 0x1F12, LOWER_CASE, 0x1F1A }, + { 0x1F13, LOWER_CASE, 0x1F1B }, + { 0x1F14, LOWER_CASE, 0x1F1C }, + { 0x1F15, LOWER_CASE, 0x1F1D }, + { 0x1F18, UPPER_CASE, 0x1F10 }, + { 0x1F19, UPPER_CASE, 0x1F11 }, + { 0x1F1A, UPPER_CASE, 0x1F12 }, + { 0x1F1B, UPPER_CASE, 0x1F13 }, + { 0x1F1C, UPPER_CASE, 0x1F14 }, + { 0x1F1D, UPPER_CASE, 0x1F15 }, + { 0x1F20, LOWER_CASE, 0x1F28 }, + { 0x1F21, LOWER_CASE, 0x1F29 }, + { 0x1F22, LOWER_CASE, 0x1F2A }, + { 0x1F23, LOWER_CASE, 0x1F2B }, + { 0x1F24, LOWER_CASE, 0x1F2C }, + { 0x1F25, LOWER_CASE, 0x1F2D }, + { 0x1F26, LOWER_CASE, 0x1F2E }, + { 0x1F27, LOWER_CASE, 0x1F2F }, + { 0x1F28, UPPER_CASE, 0x1F20 }, + { 0x1F29, UPPER_CASE, 0x1F21 }, + { 0x1F2A, UPPER_CASE, 0x1F22 }, + { 0x1F2B, UPPER_CASE, 0x1F23 }, + { 0x1F2C, UPPER_CASE, 0x1F24 }, + { 0x1F2D, UPPER_CASE, 0x1F25 }, + { 0x1F2E, UPPER_CASE, 0x1F26 }, + { 0x1F2F, UPPER_CASE, 0x1F27 }, + { 0x1F30, LOWER_CASE, 0x1F38 }, + { 0x1F31, LOWER_CASE, 0x1F39 }, + { 0x1F32, LOWER_CASE, 0x1F3A }, + { 0x1F33, LOWER_CASE, 0x1F3B }, + { 0x1F34, LOWER_CASE, 0x1F3C }, + { 0x1F35, LOWER_CASE, 0x1F3D }, + { 0x1F36, LOWER_CASE, 0x1F3E }, + { 0x1F37, LOWER_CASE, 0x1F3F }, + { 0x1F38, UPPER_CASE, 0x1F30 }, + { 0x1F39, UPPER_CASE, 0x1F31 }, + { 0x1F3A, UPPER_CASE, 0x1F32 }, + { 0x1F3B, UPPER_CASE, 0x1F33 }, + { 0x1F3C, UPPER_CASE, 0x1F34 }, + { 0x1F3D, UPPER_CASE, 0x1F35 }, + { 0x1F3E, UPPER_CASE, 0x1F36 }, + { 0x1F3F, UPPER_CASE, 0x1F37 }, + { 0x1F40, LOWER_CASE, 0x1F48 }, + { 0x1F41, LOWER_CASE, 0x1F49 }, + { 0x1F42, LOWER_CASE, 0x1F4A }, + { 0x1F43, LOWER_CASE, 0x1F4B }, + { 0x1F44, LOWER_CASE, 0x1F4C }, + { 0x1F45, LOWER_CASE, 0x1F4D }, + { 0x1F48, UPPER_CASE, 0x1F40 }, + { 0x1F49, UPPER_CASE, 0x1F41 }, + { 0x1F4A, UPPER_CASE, 0x1F42 }, + { 0x1F4B, UPPER_CASE, 0x1F43 }, + { 0x1F4C, UPPER_CASE, 0x1F44 }, + { 0x1F4D, UPPER_CASE, 0x1F45 }, + { 0x1F51, LOWER_CASE, 0x1F59 }, + { 0x1F53, LOWER_CASE, 0x1F5B }, + { 0x1F55, LOWER_CASE, 0x1F5D }, + { 0x1F57, LOWER_CASE, 0x1F5F }, + { 0x1F59, UPPER_CASE, 0x1F51 }, + { 0x1F5B, UPPER_CASE, 0x1F53 }, + { 0x1F5D, UPPER_CASE, 0x1F55 }, + { 0x1F5F, UPPER_CASE, 0x1F57 }, + { 0x1F60, LOWER_CASE, 0x1F68 }, + { 0x1F61, LOWER_CASE, 0x1F69 }, + { 0x1F62, LOWER_CASE, 0x1F6A }, + { 0x1F63, LOWER_CASE, 0x1F6B }, + { 0x1F64, LOWER_CASE, 0x1F6C }, + { 0x1F65, LOWER_CASE, 0x1F6D }, + { 0x1F66, LOWER_CASE, 0x1F6E }, + { 0x1F67, LOWER_CASE, 0x1F6F }, + { 0x1F68, UPPER_CASE, 0x1F60 }, + { 0x1F69, UPPER_CASE, 0x1F61 }, + { 0x1F6A, UPPER_CASE, 0x1F62 }, + { 0x1F6B, UPPER_CASE, 0x1F63 }, + { 0x1F6C, UPPER_CASE, 0x1F64 }, + { 0x1F6D, UPPER_CASE, 0x1F65 }, + { 0x1F6E, UPPER_CASE, 0x1F66 }, + { 0x1F6F, UPPER_CASE, 0x1F67 }, + { 0x1F70, LOWER_CASE, 0x1FBA }, + { 0x1F71, LOWER_CASE, 0x1FBB }, + { 0x1F72, LOWER_CASE, 0x1FC8 }, + { 0x1F73, LOWER_CASE, 0x1FC9 }, + { 0x1F74, LOWER_CASE, 0x1FCA }, + { 0x1F75, LOWER_CASE, 0x1FCB }, + { 0x1F76, LOWER_CASE, 0x1FDA }, + { 0x1F77, LOWER_CASE, 0x1FDB }, + { 0x1F78, LOWER_CASE, 0x1FF8 }, + { 0x1F79, LOWER_CASE, 0x1FF9 }, + { 0x1F7A, LOWER_CASE, 0x1FEA }, + { 0x1F7B, LOWER_CASE, 0x1FEB }, + { 0x1F7C, LOWER_CASE, 0x1FFA }, + { 0x1F7D, LOWER_CASE, 0x1FFB }, + { 0x1F80, LOWER_CASE, 0x1F88 }, + { 0x1F81, LOWER_CASE, 0x1F89 }, + { 0x1F82, LOWER_CASE, 0x1F8A }, + { 0x1F83, LOWER_CASE, 0x1F8B }, + { 0x1F84, LOWER_CASE, 0x1F8C }, + { 0x1F85, LOWER_CASE, 0x1F8D }, + { 0x1F86, LOWER_CASE, 0x1F8E }, + { 0x1F87, LOWER_CASE, 0x1F8F }, + { 0x1F88, UPPER_CASE, 0x1F80 }, + { 0x1F89, UPPER_CASE, 0x1F81 }, + { 0x1F8A, UPPER_CASE, 0x1F82 }, + { 0x1F8B, UPPER_CASE, 0x1F83 }, + { 0x1F8C, UPPER_CASE, 0x1F84 }, + { 0x1F8D, UPPER_CASE, 0x1F85 }, + { 0x1F8E, UPPER_CASE, 0x1F86 }, + { 0x1F8F, UPPER_CASE, 0x1F87 }, + { 0x1F90, LOWER_CASE, 0x1F98 }, + { 0x1F91, LOWER_CASE, 0x1F99 }, + { 0x1F92, LOWER_CASE, 0x1F9A }, + { 0x1F93, LOWER_CASE, 0x1F9B }, + { 0x1F94, LOWER_CASE, 0x1F9C }, + { 0x1F95, LOWER_CASE, 0x1F9D }, + { 0x1F96, LOWER_CASE, 0x1F9E }, + { 0x1F97, LOWER_CASE, 0x1F9F }, + { 0x1F98, UPPER_CASE, 0x1F90 }, + { 0x1F99, UPPER_CASE, 0x1F91 }, + { 0x1F9A, UPPER_CASE, 0x1F92 }, + { 0x1F9B, UPPER_CASE, 0x1F93 }, + { 0x1F9C, UPPER_CASE, 0x1F94 }, + { 0x1F9D, UPPER_CASE, 0x1F95 }, + { 0x1F9E, UPPER_CASE, 0x1F96 }, + { 0x1F9F, UPPER_CASE, 0x1F97 }, + { 0x1FA0, LOWER_CASE, 0x1FA8 }, + { 0x1FA1, LOWER_CASE, 0x1FA9 }, + { 0x1FA2, LOWER_CASE, 0x1FAA }, + { 0x1FA3, LOWER_CASE, 0x1FAB }, + { 0x1FA4, LOWER_CASE, 0x1FAC }, + { 0x1FA5, LOWER_CASE, 0x1FAD }, + { 0x1FA6, LOWER_CASE, 0x1FAE }, + { 0x1FA7, LOWER_CASE, 0x1FAF }, + { 0x1FA8, UPPER_CASE, 0x1FA0 }, + { 0x1FA9, UPPER_CASE, 0x1FA1 }, + { 0x1FAA, UPPER_CASE, 0x1FA2 }, + { 0x1FAB, UPPER_CASE, 0x1FA3 }, + { 0x1FAC, UPPER_CASE, 0x1FA4 }, + { 0x1FAD, UPPER_CASE, 0x1FA5 }, + { 0x1FAE, UPPER_CASE, 0x1FA6 }, + { 0x1FAF, UPPER_CASE, 0x1FA7 }, + { 0x1FB0, LOWER_CASE, 0x1FB8 }, + { 0x1FB1, LOWER_CASE, 0x1FB9 }, + { 0x1FB3, LOWER_CASE, 0x1FBC }, + { 0x1FB8, UPPER_CASE, 0x1FB0 }, + { 0x1FB9, UPPER_CASE, 0x1FB1 }, + { 0x1FBA, UPPER_CASE, 0x1F70 }, + { 0x1FBB, UPPER_CASE, 0x1F71 }, + { 0x1FBC, UPPER_CASE, 0x1FB3 }, + { 0x1FBE, LOWER_CASE, 0x399 }, + { 0x1FC3, LOWER_CASE, 0x1FCC }, + { 0x1FC8, UPPER_CASE, 0x1F72 }, + { 0x1FC9, UPPER_CASE, 0x1F73 }, + { 0x1FCA, UPPER_CASE, 0x1F74 }, + { 0x1FCB, UPPER_CASE, 0x1F75 }, + { 0x1FCC, UPPER_CASE, 0x1FC3 }, + { 0x1FD0, LOWER_CASE, 0x1FD8 }, + { 0x1FD1, LOWER_CASE, 0x1FD9 }, + { 0x1FD8, UPPER_CASE, 0x1FD0 }, + { 0x1FD9, UPPER_CASE, 0x1FD1 }, + { 0x1FDA, UPPER_CASE, 0x1F76 }, + { 0x1FDB, UPPER_CASE, 0x1F77 }, + { 0x1FE0, LOWER_CASE, 0x1FE8 }, + { 0x1FE1, LOWER_CASE, 0x1FE9 }, + { 0x1FE5, LOWER_CASE, 0x1FEC }, + { 0x1FE8, UPPER_CASE, 0x1FE0 }, + { 0x1FE9, UPPER_CASE, 0x1FE1 }, + { 0x1FEA, UPPER_CASE, 0x1F7A }, + { 0x1FEB, UPPER_CASE, 0x1F7B }, + { 0x1FEC, UPPER_CASE, 0x1FE5 }, + { 0x1FF3, LOWER_CASE, 0x1FFC }, + { 0x1FF8, UPPER_CASE, 0x1F78 }, + { 0x1FF9, UPPER_CASE, 0x1F79 }, + { 0x1FFA, UPPER_CASE, 0x1F7C }, + { 0x1FFB, UPPER_CASE, 0x1F7D }, + { 0x1FFC, UPPER_CASE, 0x1FF3 }, + { 0x2126, UPPER_CASE, 0x3C9 }, + { 0x212A, UPPER_CASE, 0x6B }, + { 0x212B, UPPER_CASE, 0xE5 }, + { 0x2132, UPPER_CASE, 0x214E }, + { 0x214E, LOWER_CASE, 0x2132 }, + { 0x2160, UPPER_CASE, 0x2170 }, + { 0x2161, UPPER_CASE, 0x2171 }, + { 0x2162, UPPER_CASE, 0x2172 }, + { 0x2163, UPPER_CASE, 0x2173 }, + { 0x2164, UPPER_CASE, 0x2174 }, + { 0x2165, UPPER_CASE, 0x2175 }, + { 0x2166, UPPER_CASE, 0x2176 }, + { 0x2167, UPPER_CASE, 0x2177 }, + { 0x2168, UPPER_CASE, 0x2178 }, + { 0x2169, UPPER_CASE, 0x2179 }, + { 0x216A, UPPER_CASE, 0x217A }, + { 0x216B, UPPER_CASE, 0x217B }, + { 0x216C, UPPER_CASE, 0x217C }, + { 0x216D, UPPER_CASE, 0x217D }, + { 0x216E, UPPER_CASE, 0x217E }, + { 0x216F, UPPER_CASE, 0x217F }, + { 0x2170, LOWER_CASE, 0x2160 }, + { 0x2171, LOWER_CASE, 0x2161 }, + { 0x2172, LOWER_CASE, 0x2162 }, + { 0x2173, LOWER_CASE, 0x2163 }, + { 0x2174, LOWER_CASE, 0x2164 }, + { 0x2175, LOWER_CASE, 0x2165 }, + { 0x2176, LOWER_CASE, 0x2166 }, + { 0x2177, LOWER_CASE, 0x2167 }, + { 0x2178, LOWER_CASE, 0x2168 }, + { 0x2179, LOWER_CASE, 0x2169 }, + { 0x217A, LOWER_CASE, 0x216A }, + { 0x217B, LOWER_CASE, 0x216B }, + { 0x217C, LOWER_CASE, 0x216C }, + { 0x217D, LOWER_CASE, 0x216D }, + { 0x217E, LOWER_CASE, 0x216E }, + { 0x217F, LOWER_CASE, 0x216F }, + { 0x2183, UPPER_CASE, 0x2184 }, + { 0x2184, LOWER_CASE, 0x2183 }, + { 0x24B6, UPPER_CASE, 0x24D0 }, + { 0x24B7, UPPER_CASE, 0x24D1 }, + { 0x24B8, UPPER_CASE, 0x24D2 }, + { 0x24B9, UPPER_CASE, 0x24D3 }, + { 0x24BA, UPPER_CASE, 0x24D4 }, + { 0x24BB, UPPER_CASE, 0x24D5 }, + { 0x24BC, UPPER_CASE, 0x24D6 }, + { 0x24BD, UPPER_CASE, 0x24D7 }, + { 0x24BE, UPPER_CASE, 0x24D8 }, + { 0x24BF, UPPER_CASE, 0x24D9 }, + { 0x24C0, UPPER_CASE, 0x24DA }, + { 0x24C1, UPPER_CASE, 0x24DB }, + { 0x24C2, UPPER_CASE, 0x24DC }, + { 0x24C3, UPPER_CASE, 0x24DD }, + { 0x24C4, UPPER_CASE, 0x24DE }, + { 0x24C5, UPPER_CASE, 0x24DF }, + { 0x24C6, UPPER_CASE, 0x24E0 }, + { 0x24C7, UPPER_CASE, 0x24E1 }, + { 0x24C8, UPPER_CASE, 0x24E2 }, + { 0x24C9, UPPER_CASE, 0x24E3 }, + { 0x24CA, UPPER_CASE, 0x24E4 }, + { 0x24CB, UPPER_CASE, 0x24E5 }, + { 0x24CC, UPPER_CASE, 0x24E6 }, + { 0x24CD, UPPER_CASE, 0x24E7 }, + { 0x24CE, UPPER_CASE, 0x24E8 }, + { 0x24CF, UPPER_CASE, 0x24E9 }, + { 0x24D0, LOWER_CASE, 0x24B6 }, + { 0x24D1, LOWER_CASE, 0x24B7 }, + { 0x24D2, LOWER_CASE, 0x24B8 }, + { 0x24D3, LOWER_CASE, 0x24B9 }, + { 0x24D4, LOWER_CASE, 0x24BA }, + { 0x24D5, LOWER_CASE, 0x24BB }, + { 0x24D6, LOWER_CASE, 0x24BC }, + { 0x24D7, LOWER_CASE, 0x24BD }, + { 0x24D8, LOWER_CASE, 0x24BE }, + { 0x24D9, LOWER_CASE, 0x24BF }, + { 0x24DA, LOWER_CASE, 0x24C0 }, + { 0x24DB, LOWER_CASE, 0x24C1 }, + { 0x24DC, LOWER_CASE, 0x24C2 }, + { 0x24DD, LOWER_CASE, 0x24C3 }, + { 0x24DE, LOWER_CASE, 0x24C4 }, + { 0x24DF, LOWER_CASE, 0x24C5 }, + { 0x24E0, LOWER_CASE, 0x24C6 }, + { 0x24E1, LOWER_CASE, 0x24C7 }, + { 0x24E2, LOWER_CASE, 0x24C8 }, + { 0x24E3, LOWER_CASE, 0x24C9 }, + { 0x24E4, LOWER_CASE, 0x24CA }, + { 0x24E5, LOWER_CASE, 0x24CB }, + { 0x24E6, LOWER_CASE, 0x24CC }, + { 0x24E7, LOWER_CASE, 0x24CD }, + { 0x24E8, LOWER_CASE, 0x24CE }, + { 0x24E9, LOWER_CASE, 0x24CF }, + { 0x2C00, UPPER_CASE, 0x2C30 }, + { 0x2C01, UPPER_CASE, 0x2C31 }, + { 0x2C02, UPPER_CASE, 0x2C32 }, + { 0x2C03, UPPER_CASE, 0x2C33 }, + { 0x2C04, UPPER_CASE, 0x2C34 }, + { 0x2C05, UPPER_CASE, 0x2C35 }, + { 0x2C06, UPPER_CASE, 0x2C36 }, + { 0x2C07, UPPER_CASE, 0x2C37 }, + { 0x2C08, UPPER_CASE, 0x2C38 }, + { 0x2C09, UPPER_CASE, 0x2C39 }, + { 0x2C0A, UPPER_CASE, 0x2C3A }, + { 0x2C0B, UPPER_CASE, 0x2C3B }, + { 0x2C0C, UPPER_CASE, 0x2C3C }, + { 0x2C0D, UPPER_CASE, 0x2C3D }, + { 0x2C0E, UPPER_CASE, 0x2C3E }, + { 0x2C0F, UPPER_CASE, 0x2C3F }, + { 0x2C10, UPPER_CASE, 0x2C40 }, + { 0x2C11, UPPER_CASE, 0x2C41 }, + { 0x2C12, UPPER_CASE, 0x2C42 }, + { 0x2C13, UPPER_CASE, 0x2C43 }, + { 0x2C14, UPPER_CASE, 0x2C44 }, + { 0x2C15, UPPER_CASE, 0x2C45 }, + { 0x2C16, UPPER_CASE, 0x2C46 }, + { 0x2C17, UPPER_CASE, 0x2C47 }, + { 0x2C18, UPPER_CASE, 0x2C48 }, + { 0x2C19, UPPER_CASE, 0x2C49 }, + { 0x2C1A, UPPER_CASE, 0x2C4A }, + { 0x2C1B, UPPER_CASE, 0x2C4B }, + { 0x2C1C, UPPER_CASE, 0x2C4C }, + { 0x2C1D, UPPER_CASE, 0x2C4D }, + { 0x2C1E, UPPER_CASE, 0x2C4E }, + { 0x2C1F, UPPER_CASE, 0x2C4F }, + { 0x2C20, UPPER_CASE, 0x2C50 }, + { 0x2C21, UPPER_CASE, 0x2C51 }, + { 0x2C22, UPPER_CASE, 0x2C52 }, + { 0x2C23, UPPER_CASE, 0x2C53 }, + { 0x2C24, UPPER_CASE, 0x2C54 }, + { 0x2C25, UPPER_CASE, 0x2C55 }, + { 0x2C26, UPPER_CASE, 0x2C56 }, + { 0x2C27, UPPER_CASE, 0x2C57 }, + { 0x2C28, UPPER_CASE, 0x2C58 }, + { 0x2C29, UPPER_CASE, 0x2C59 }, + { 0x2C2A, UPPER_CASE, 0x2C5A }, + { 0x2C2B, UPPER_CASE, 0x2C5B }, + { 0x2C2C, UPPER_CASE, 0x2C5C }, + { 0x2C2D, UPPER_CASE, 0x2C5D }, + { 0x2C2E, UPPER_CASE, 0x2C5E }, + { 0x2C2F, UPPER_CASE, 0x2C5F }, + { 0x2C30, LOWER_CASE, 0x2C00 }, + { 0x2C31, LOWER_CASE, 0x2C01 }, + { 0x2C32, LOWER_CASE, 0x2C02 }, + { 0x2C33, LOWER_CASE, 0x2C03 }, + { 0x2C34, LOWER_CASE, 0x2C04 }, + { 0x2C35, LOWER_CASE, 0x2C05 }, + { 0x2C36, LOWER_CASE, 0x2C06 }, + { 0x2C37, LOWER_CASE, 0x2C07 }, + { 0x2C38, LOWER_CASE, 0x2C08 }, + { 0x2C39, LOWER_CASE, 0x2C09 }, + { 0x2C3A, LOWER_CASE, 0x2C0A }, + { 0x2C3B, LOWER_CASE, 0x2C0B }, + { 0x2C3C, LOWER_CASE, 0x2C0C }, + { 0x2C3D, LOWER_CASE, 0x2C0D }, + { 0x2C3E, LOWER_CASE, 0x2C0E }, + { 0x2C3F, LOWER_CASE, 0x2C0F }, + { 0x2C40, LOWER_CASE, 0x2C10 }, + { 0x2C41, LOWER_CASE, 0x2C11 }, + { 0x2C42, LOWER_CASE, 0x2C12 }, + { 0x2C43, LOWER_CASE, 0x2C13 }, + { 0x2C44, LOWER_CASE, 0x2C14 }, + { 0x2C45, LOWER_CASE, 0x2C15 }, + { 0x2C46, LOWER_CASE, 0x2C16 }, + { 0x2C47, LOWER_CASE, 0x2C17 }, + { 0x2C48, LOWER_CASE, 0x2C18 }, + { 0x2C49, LOWER_CASE, 0x2C19 }, + { 0x2C4A, LOWER_CASE, 0x2C1A }, + { 0x2C4B, LOWER_CASE, 0x2C1B }, + { 0x2C4C, LOWER_CASE, 0x2C1C }, + { 0x2C4D, LOWER_CASE, 0x2C1D }, + { 0x2C4E, LOWER_CASE, 0x2C1E }, + { 0x2C4F, LOWER_CASE, 0x2C1F }, + { 0x2C50, LOWER_CASE, 0x2C20 }, + { 0x2C51, LOWER_CASE, 0x2C21 }, + { 0x2C52, LOWER_CASE, 0x2C22 }, + { 0x2C53, LOWER_CASE, 0x2C23 }, + { 0x2C54, LOWER_CASE, 0x2C24 }, + { 0x2C55, LOWER_CASE, 0x2C25 }, + { 0x2C56, LOWER_CASE, 0x2C26 }, + { 0x2C57, LOWER_CASE, 0x2C27 }, + { 0x2C58, LOWER_CASE, 0x2C28 }, + { 0x2C59, LOWER_CASE, 0x2C29 }, + { 0x2C5A, LOWER_CASE, 0x2C2A }, + { 0x2C5B, LOWER_CASE, 0x2C2B }, + { 0x2C5C, LOWER_CASE, 0x2C2C }, + { 0x2C5D, LOWER_CASE, 0x2C2D }, + { 0x2C5E, LOWER_CASE, 0x2C2E }, + { 0x2C5F, LOWER_CASE, 0x2C2F }, + { 0x2C60, UPPER_CASE, 0x2C61 }, + { 0x2C61, LOWER_CASE, 0x2C60 }, + { 0x2C62, UPPER_CASE, 0x26B }, + { 0x2C63, UPPER_CASE, 0x1D7D }, + { 0x2C64, UPPER_CASE, 0x27D }, + { 0x2C65, LOWER_CASE, 0x23A }, + { 0x2C66, LOWER_CASE, 0x23E }, + { 0x2C67, UPPER_CASE, 0x2C68 }, + { 0x2C68, LOWER_CASE, 0x2C67 }, + { 0x2C69, UPPER_CASE, 0x2C6A }, + { 0x2C6A, LOWER_CASE, 0x2C69 }, + { 0x2C6B, UPPER_CASE, 0x2C6C }, + { 0x2C6C, LOWER_CASE, 0x2C6B }, + { 0x2C6D, UPPER_CASE, 0x251 }, + { 0x2C6E, UPPER_CASE, 0x271 }, + { 0x2C6F, UPPER_CASE, 0x250 }, + { 0x2C70, UPPER_CASE, 0x252 }, + { 0x2C72, UPPER_CASE, 0x2C73 }, + { 0x2C73, LOWER_CASE, 0x2C72 }, + { 0x2C75, UPPER_CASE, 0x2C76 }, + { 0x2C76, LOWER_CASE, 0x2C75 }, + { 0x2C7E, UPPER_CASE, 0x23F }, + { 0x2C7F, UPPER_CASE, 0x240 }, + { 0x2C80, UPPER_CASE, 0x2C81 }, + { 0x2C81, LOWER_CASE, 0x2C80 }, + { 0x2C82, UPPER_CASE, 0x2C83 }, + { 0x2C83, LOWER_CASE, 0x2C82 }, + { 0x2C84, UPPER_CASE, 0x2C85 }, + { 0x2C85, LOWER_CASE, 0x2C84 }, + { 0x2C86, UPPER_CASE, 0x2C87 }, + { 0x2C87, LOWER_CASE, 0x2C86 }, + { 0x2C88, UPPER_CASE, 0x2C89 }, + { 0x2C89, LOWER_CASE, 0x2C88 }, + { 0x2C8A, UPPER_CASE, 0x2C8B }, + { 0x2C8B, LOWER_CASE, 0x2C8A }, + { 0x2C8C, UPPER_CASE, 0x2C8D }, + { 0x2C8D, LOWER_CASE, 0x2C8C }, + { 0x2C8E, UPPER_CASE, 0x2C8F }, + { 0x2C8F, LOWER_CASE, 0x2C8E }, + { 0x2C90, UPPER_CASE, 0x2C91 }, + { 0x2C91, LOWER_CASE, 0x2C90 }, + { 0x2C92, UPPER_CASE, 0x2C93 }, + { 0x2C93, LOWER_CASE, 0x2C92 }, + { 0x2C94, UPPER_CASE, 0x2C95 }, + { 0x2C95, LOWER_CASE, 0x2C94 }, + { 0x2C96, UPPER_CASE, 0x2C97 }, + { 0x2C97, LOWER_CASE, 0x2C96 }, + { 0x2C98, UPPER_CASE, 0x2C99 }, + { 0x2C99, LOWER_CASE, 0x2C98 }, + { 0x2C9A, UPPER_CASE, 0x2C9B }, + { 0x2C9B, LOWER_CASE, 0x2C9A }, + { 0x2C9C, UPPER_CASE, 0x2C9D }, + { 0x2C9D, LOWER_CASE, 0x2C9C }, + { 0x2C9E, UPPER_CASE, 0x2C9F }, + { 0x2C9F, LOWER_CASE, 0x2C9E }, + { 0x2CA0, UPPER_CASE, 0x2CA1 }, + { 0x2CA1, LOWER_CASE, 0x2CA0 }, + { 0x2CA2, UPPER_CASE, 0x2CA3 }, + { 0x2CA3, LOWER_CASE, 0x2CA2 }, + { 0x2CA4, UPPER_CASE, 0x2CA5 }, + { 0x2CA5, LOWER_CASE, 0x2CA4 }, + { 0x2CA6, UPPER_CASE, 0x2CA7 }, + { 0x2CA7, LOWER_CASE, 0x2CA6 }, + { 0x2CA8, UPPER_CASE, 0x2CA9 }, + { 0x2CA9, LOWER_CASE, 0x2CA8 }, + { 0x2CAA, UPPER_CASE, 0x2CAB }, + { 0x2CAB, LOWER_CASE, 0x2CAA }, + { 0x2CAC, UPPER_CASE, 0x2CAD }, + { 0x2CAD, LOWER_CASE, 0x2CAC }, + { 0x2CAE, UPPER_CASE, 0x2CAF }, + { 0x2CAF, LOWER_CASE, 0x2CAE }, + { 0x2CB0, UPPER_CASE, 0x2CB1 }, + { 0x2CB1, LOWER_CASE, 0x2CB0 }, + { 0x2CB2, UPPER_CASE, 0x2CB3 }, + { 0x2CB3, LOWER_CASE, 0x2CB2 }, + { 0x2CB4, UPPER_CASE, 0x2CB5 }, + { 0x2CB5, LOWER_CASE, 0x2CB4 }, + { 0x2CB6, UPPER_CASE, 0x2CB7 }, + { 0x2CB7, LOWER_CASE, 0x2CB6 }, + { 0x2CB8, UPPER_CASE, 0x2CB9 }, + { 0x2CB9, LOWER_CASE, 0x2CB8 }, + { 0x2CBA, UPPER_CASE, 0x2CBB }, + { 0x2CBB, LOWER_CASE, 0x2CBA }, + { 0x2CBC, UPPER_CASE, 0x2CBD }, + { 0x2CBD, LOWER_CASE, 0x2CBC }, + { 0x2CBE, UPPER_CASE, 0x2CBF }, + { 0x2CBF, LOWER_CASE, 0x2CBE }, + { 0x2CC0, UPPER_CASE, 0x2CC1 }, + { 0x2CC1, LOWER_CASE, 0x2CC0 }, + { 0x2CC2, UPPER_CASE, 0x2CC3 }, + { 0x2CC3, LOWER_CASE, 0x2CC2 }, + { 0x2CC4, UPPER_CASE, 0x2CC5 }, + { 0x2CC5, LOWER_CASE, 0x2CC4 }, + { 0x2CC6, UPPER_CASE, 0x2CC7 }, + { 0x2CC7, LOWER_CASE, 0x2CC6 }, + { 0x2CC8, UPPER_CASE, 0x2CC9 }, + { 0x2CC9, LOWER_CASE, 0x2CC8 }, + { 0x2CCA, UPPER_CASE, 0x2CCB }, + { 0x2CCB, LOWER_CASE, 0x2CCA }, + { 0x2CCC, UPPER_CASE, 0x2CCD }, + { 0x2CCD, LOWER_CASE, 0x2CCC }, + { 0x2CCE, UPPER_CASE, 0x2CCF }, + { 0x2CCF, LOWER_CASE, 0x2CCE }, + { 0x2CD0, UPPER_CASE, 0x2CD1 }, + { 0x2CD1, LOWER_CASE, 0x2CD0 }, + { 0x2CD2, UPPER_CASE, 0x2CD3 }, + { 0x2CD3, LOWER_CASE, 0x2CD2 }, + { 0x2CD4, UPPER_CASE, 0x2CD5 }, + { 0x2CD5, LOWER_CASE, 0x2CD4 }, + { 0x2CD6, UPPER_CASE, 0x2CD7 }, + { 0x2CD7, LOWER_CASE, 0x2CD6 }, + { 0x2CD8, UPPER_CASE, 0x2CD9 }, + { 0x2CD9, LOWER_CASE, 0x2CD8 }, + { 0x2CDA, UPPER_CASE, 0x2CDB }, + { 0x2CDB, LOWER_CASE, 0x2CDA }, + { 0x2CDC, UPPER_CASE, 0x2CDD }, + { 0x2CDD, LOWER_CASE, 0x2CDC }, + { 0x2CDE, UPPER_CASE, 0x2CDF }, + { 0x2CDF, LOWER_CASE, 0x2CDE }, + { 0x2CE0, UPPER_CASE, 0x2CE1 }, + { 0x2CE1, LOWER_CASE, 0x2CE0 }, + { 0x2CE2, UPPER_CASE, 0x2CE3 }, + { 0x2CE3, LOWER_CASE, 0x2CE2 }, + { 0x2CEB, UPPER_CASE, 0x2CEC }, + { 0x2CEC, LOWER_CASE, 0x2CEB }, + { 0x2CED, UPPER_CASE, 0x2CEE }, + { 0x2CEE, LOWER_CASE, 0x2CED }, + { 0x2CF2, UPPER_CASE, 0x2CF3 }, + { 0x2CF3, LOWER_CASE, 0x2CF2 }, + { 0x2D00, LOWER_CASE, 0x10A0 }, + { 0x2D01, LOWER_CASE, 0x10A1 }, + { 0x2D02, LOWER_CASE, 0x10A2 }, + { 0x2D03, LOWER_CASE, 0x10A3 }, + { 0x2D04, LOWER_CASE, 0x10A4 }, + { 0x2D05, LOWER_CASE, 0x10A5 }, + { 0x2D06, LOWER_CASE, 0x10A6 }, + { 0x2D07, LOWER_CASE, 0x10A7 }, + { 0x2D08, LOWER_CASE, 0x10A8 }, + { 0x2D09, LOWER_CASE, 0x10A9 }, + { 0x2D0A, LOWER_CASE, 0x10AA }, + { 0x2D0B, LOWER_CASE, 0x10AB }, + { 0x2D0C, LOWER_CASE, 0x10AC }, + { 0x2D0D, LOWER_CASE, 0x10AD }, + { 0x2D0E, LOWER_CASE, 0x10AE }, + { 0x2D0F, LOWER_CASE, 0x10AF }, + { 0x2D10, LOWER_CASE, 0x10B0 }, + { 0x2D11, LOWER_CASE, 0x10B1 }, + { 0x2D12, LOWER_CASE, 0x10B2 }, + { 0x2D13, LOWER_CASE, 0x10B3 }, + { 0x2D14, LOWER_CASE, 0x10B4 }, + { 0x2D15, LOWER_CASE, 0x10B5 }, + { 0x2D16, LOWER_CASE, 0x10B6 }, + { 0x2D17, LOWER_CASE, 0x10B7 }, + { 0x2D18, LOWER_CASE, 0x10B8 }, + { 0x2D19, LOWER_CASE, 0x10B9 }, + { 0x2D1A, LOWER_CASE, 0x10BA }, + { 0x2D1B, LOWER_CASE, 0x10BB }, + { 0x2D1C, LOWER_CASE, 0x10BC }, + { 0x2D1D, LOWER_CASE, 0x10BD }, + { 0x2D1E, LOWER_CASE, 0x10BE }, + { 0x2D1F, LOWER_CASE, 0x10BF }, + { 0x2D20, LOWER_CASE, 0x10C0 }, + { 0x2D21, LOWER_CASE, 0x10C1 }, + { 0x2D22, LOWER_CASE, 0x10C2 }, + { 0x2D23, LOWER_CASE, 0x10C3 }, + { 0x2D24, LOWER_CASE, 0x10C4 }, + { 0x2D25, LOWER_CASE, 0x10C5 }, + { 0x2D27, LOWER_CASE, 0x10C7 }, + { 0x2D2D, LOWER_CASE, 0x10CD }, + { 0xA640, UPPER_CASE, 0xA641 }, + { 0xA641, LOWER_CASE, 0xA640 }, + { 0xA642, UPPER_CASE, 0xA643 }, + { 0xA643, LOWER_CASE, 0xA642 }, + { 0xA644, UPPER_CASE, 0xA645 }, + { 0xA645, LOWER_CASE, 0xA644 }, + { 0xA646, UPPER_CASE, 0xA647 }, + { 0xA647, LOWER_CASE, 0xA646 }, + { 0xA648, UPPER_CASE, 0xA649 }, + { 0xA649, LOWER_CASE, 0xA648 }, + { 0xA64A, UPPER_CASE, 0xA64B }, + { 0xA64B, LOWER_CASE, 0xA64A }, + { 0xA64C, UPPER_CASE, 0xA64D }, + { 0xA64D, LOWER_CASE, 0xA64C }, + { 0xA64E, UPPER_CASE, 0xA64F }, + { 0xA64F, LOWER_CASE, 0xA64E }, + { 0xA650, UPPER_CASE, 0xA651 }, + { 0xA651, LOWER_CASE, 0xA650 }, + { 0xA652, UPPER_CASE, 0xA653 }, + { 0xA653, LOWER_CASE, 0xA652 }, + { 0xA654, UPPER_CASE, 0xA655 }, + { 0xA655, LOWER_CASE, 0xA654 }, + { 0xA656, UPPER_CASE, 0xA657 }, + { 0xA657, LOWER_CASE, 0xA656 }, + { 0xA658, UPPER_CASE, 0xA659 }, + { 0xA659, LOWER_CASE, 0xA658 }, + { 0xA65A, UPPER_CASE, 0xA65B }, + { 0xA65B, LOWER_CASE, 0xA65A }, + { 0xA65C, UPPER_CASE, 0xA65D }, + { 0xA65D, LOWER_CASE, 0xA65C }, + { 0xA65E, UPPER_CASE, 0xA65F }, + { 0xA65F, LOWER_CASE, 0xA65E }, + { 0xA660, UPPER_CASE, 0xA661 }, + { 0xA661, LOWER_CASE, 0xA660 }, + { 0xA662, UPPER_CASE, 0xA663 }, + { 0xA663, LOWER_CASE, 0xA662 }, + { 0xA664, UPPER_CASE, 0xA665 }, + { 0xA665, LOWER_CASE, 0xA664 }, + { 0xA666, UPPER_CASE, 0xA667 }, + { 0xA667, LOWER_CASE, 0xA666 }, + { 0xA668, UPPER_CASE, 0xA669 }, + { 0xA669, LOWER_CASE, 0xA668 }, + { 0xA66A, UPPER_CASE, 0xA66B }, + { 0xA66B, LOWER_CASE, 0xA66A }, + { 0xA66C, UPPER_CASE, 0xA66D }, + { 0xA66D, LOWER_CASE, 0xA66C }, + { 0xA680, UPPER_CASE, 0xA681 }, + { 0xA681, LOWER_CASE, 0xA680 }, + { 0xA682, UPPER_CASE, 0xA683 }, + { 0xA683, LOWER_CASE, 0xA682 }, + { 0xA684, UPPER_CASE, 0xA685 }, + { 0xA685, LOWER_CASE, 0xA684 }, + { 0xA686, UPPER_CASE, 0xA687 }, + { 0xA687, LOWER_CASE, 0xA686 }, + { 0xA688, UPPER_CASE, 0xA689 }, + { 0xA689, LOWER_CASE, 0xA688 }, + { 0xA68A, UPPER_CASE, 0xA68B }, + { 0xA68B, LOWER_CASE, 0xA68A }, + { 0xA68C, UPPER_CASE, 0xA68D }, + { 0xA68D, LOWER_CASE, 0xA68C }, + { 0xA68E, UPPER_CASE, 0xA68F }, + { 0xA68F, LOWER_CASE, 0xA68E }, + { 0xA690, UPPER_CASE, 0xA691 }, + { 0xA691, LOWER_CASE, 0xA690 }, + { 0xA692, UPPER_CASE, 0xA693 }, + { 0xA693, LOWER_CASE, 0xA692 }, + { 0xA694, UPPER_CASE, 0xA695 }, + { 0xA695, LOWER_CASE, 0xA694 }, + { 0xA696, UPPER_CASE, 0xA697 }, + { 0xA697, LOWER_CASE, 0xA696 }, + { 0xA698, UPPER_CASE, 0xA699 }, + { 0xA699, LOWER_CASE, 0xA698 }, + { 0xA69A, UPPER_CASE, 0xA69B }, + { 0xA69B, LOWER_CASE, 0xA69A }, + { 0xA722, UPPER_CASE, 0xA723 }, + { 0xA723, LOWER_CASE, 0xA722 }, + { 0xA724, UPPER_CASE, 0xA725 }, + { 0xA725, LOWER_CASE, 0xA724 }, + { 0xA726, UPPER_CASE, 0xA727 }, + { 0xA727, LOWER_CASE, 0xA726 }, + { 0xA728, UPPER_CASE, 0xA729 }, + { 0xA729, LOWER_CASE, 0xA728 }, + { 0xA72A, UPPER_CASE, 0xA72B }, + { 0xA72B, LOWER_CASE, 0xA72A }, + { 0xA72C, UPPER_CASE, 0xA72D }, + { 0xA72D, LOWER_CASE, 0xA72C }, + { 0xA72E, UPPER_CASE, 0xA72F }, + { 0xA72F, LOWER_CASE, 0xA72E }, + { 0xA732, UPPER_CASE, 0xA733 }, + { 0xA733, LOWER_CASE, 0xA732 }, + { 0xA734, UPPER_CASE, 0xA735 }, + { 0xA735, LOWER_CASE, 0xA734 }, + { 0xA736, UPPER_CASE, 0xA737 }, + { 0xA737, LOWER_CASE, 0xA736 }, + { 0xA738, UPPER_CASE, 0xA739 }, + { 0xA739, LOWER_CASE, 0xA738 }, + { 0xA73A, UPPER_CASE, 0xA73B }, + { 0xA73B, LOWER_CASE, 0xA73A }, + { 0xA73C, UPPER_CASE, 0xA73D }, + { 0xA73D, LOWER_CASE, 0xA73C }, + { 0xA73E, UPPER_CASE, 0xA73F }, + { 0xA73F, LOWER_CASE, 0xA73E }, + { 0xA740, UPPER_CASE, 0xA741 }, + { 0xA741, LOWER_CASE, 0xA740 }, + { 0xA742, UPPER_CASE, 0xA743 }, + { 0xA743, LOWER_CASE, 0xA742 }, + { 0xA744, UPPER_CASE, 0xA745 }, + { 0xA745, LOWER_CASE, 0xA744 }, + { 0xA746, UPPER_CASE, 0xA747 }, + { 0xA747, LOWER_CASE, 0xA746 }, + { 0xA748, UPPER_CASE, 0xA749 }, + { 0xA749, LOWER_CASE, 0xA748 }, + { 0xA74A, UPPER_CASE, 0xA74B }, + { 0xA74B, LOWER_CASE, 0xA74A }, + { 0xA74C, UPPER_CASE, 0xA74D }, + { 0xA74D, LOWER_CASE, 0xA74C }, + { 0xA74E, UPPER_CASE, 0xA74F }, + { 0xA74F, LOWER_CASE, 0xA74E }, + { 0xA750, UPPER_CASE, 0xA751 }, + { 0xA751, LOWER_CASE, 0xA750 }, + { 0xA752, UPPER_CASE, 0xA753 }, + { 0xA753, LOWER_CASE, 0xA752 }, + { 0xA754, UPPER_CASE, 0xA755 }, + { 0xA755, LOWER_CASE, 0xA754 }, + { 0xA756, UPPER_CASE, 0xA757 }, + { 0xA757, LOWER_CASE, 0xA756 }, + { 0xA758, UPPER_CASE, 0xA759 }, + { 0xA759, LOWER_CASE, 0xA758 }, + { 0xA75A, UPPER_CASE, 0xA75B }, + { 0xA75B, LOWER_CASE, 0xA75A }, + { 0xA75C, UPPER_CASE, 0xA75D }, + { 0xA75D, LOWER_CASE, 0xA75C }, + { 0xA75E, UPPER_CASE, 0xA75F }, + { 0xA75F, LOWER_CASE, 0xA75E }, + { 0xA760, UPPER_CASE, 0xA761 }, + { 0xA761, LOWER_CASE, 0xA760 }, + { 0xA762, UPPER_CASE, 0xA763 }, + { 0xA763, LOWER_CASE, 0xA762 }, + { 0xA764, UPPER_CASE, 0xA765 }, + { 0xA765, LOWER_CASE, 0xA764 }, + { 0xA766, UPPER_CASE, 0xA767 }, + { 0xA767, LOWER_CASE, 0xA766 }, + { 0xA768, UPPER_CASE, 0xA769 }, + { 0xA769, LOWER_CASE, 0xA768 }, + { 0xA76A, UPPER_CASE, 0xA76B }, + { 0xA76B, LOWER_CASE, 0xA76A }, + { 0xA76C, UPPER_CASE, 0xA76D }, + { 0xA76D, LOWER_CASE, 0xA76C }, + { 0xA76E, UPPER_CASE, 0xA76F }, + { 0xA76F, LOWER_CASE, 0xA76E }, + { 0xA779, UPPER_CASE, 0xA77A }, + { 0xA77A, LOWER_CASE, 0xA779 }, + { 0xA77B, UPPER_CASE, 0xA77C }, + { 0xA77C, LOWER_CASE, 0xA77B }, + { 0xA77D, UPPER_CASE, 0x1D79 }, + { 0xA77E, UPPER_CASE, 0xA77F }, + { 0xA77F, LOWER_CASE, 0xA77E }, + { 0xA780, UPPER_CASE, 0xA781 }, + { 0xA781, LOWER_CASE, 0xA780 }, + { 0xA782, UPPER_CASE, 0xA783 }, + { 0xA783, LOWER_CASE, 0xA782 }, + { 0xA784, UPPER_CASE, 0xA785 }, + { 0xA785, LOWER_CASE, 0xA784 }, + { 0xA786, UPPER_CASE, 0xA787 }, + { 0xA787, LOWER_CASE, 0xA786 }, + { 0xA78B, UPPER_CASE, 0xA78C }, + { 0xA78C, LOWER_CASE, 0xA78B }, + { 0xA78D, UPPER_CASE, 0x265 }, + { 0xA790, UPPER_CASE, 0xA791 }, + { 0xA791, LOWER_CASE, 0xA790 }, + { 0xA792, UPPER_CASE, 0xA793 }, + { 0xA793, LOWER_CASE, 0xA792 }, + { 0xA794, LOWER_CASE, 0xA7C4 }, + { 0xA796, UPPER_CASE, 0xA797 }, + { 0xA797, LOWER_CASE, 0xA796 }, + { 0xA798, UPPER_CASE, 0xA799 }, + { 0xA799, LOWER_CASE, 0xA798 }, + { 0xA79A, UPPER_CASE, 0xA79B }, + { 0xA79B, LOWER_CASE, 0xA79A }, + { 0xA79C, UPPER_CASE, 0xA79D }, + { 0xA79D, LOWER_CASE, 0xA79C }, + { 0xA79E, UPPER_CASE, 0xA79F }, + { 0xA79F, LOWER_CASE, 0xA79E }, + { 0xA7A0, UPPER_CASE, 0xA7A1 }, + { 0xA7A1, LOWER_CASE, 0xA7A0 }, + { 0xA7A2, UPPER_CASE, 0xA7A3 }, + { 0xA7A3, LOWER_CASE, 0xA7A2 }, + { 0xA7A4, UPPER_CASE, 0xA7A5 }, + { 0xA7A5, LOWER_CASE, 0xA7A4 }, + { 0xA7A6, UPPER_CASE, 0xA7A7 }, + { 0xA7A7, LOWER_CASE, 0xA7A6 }, + { 0xA7A8, UPPER_CASE, 0xA7A9 }, + { 0xA7A9, LOWER_CASE, 0xA7A8 }, + { 0xA7AA, UPPER_CASE, 0x266 }, + { 0xA7AB, UPPER_CASE, 0x25C }, + { 0xA7AC, UPPER_CASE, 0x261 }, + { 0xA7AD, UPPER_CASE, 0x26C }, + { 0xA7AE, UPPER_CASE, 0x26A }, + { 0xA7B0, UPPER_CASE, 0x29E }, + { 0xA7B1, UPPER_CASE, 0x287 }, + { 0xA7B2, UPPER_CASE, 0x29D }, + { 0xA7B3, UPPER_CASE, 0xAB53 }, + { 0xA7B4, UPPER_CASE, 0xA7B5 }, + { 0xA7B5, LOWER_CASE, 0xA7B4 }, + { 0xA7B6, UPPER_CASE, 0xA7B7 }, + { 0xA7B7, LOWER_CASE, 0xA7B6 }, + { 0xA7B8, UPPER_CASE, 0xA7B9 }, + { 0xA7B9, LOWER_CASE, 0xA7B8 }, + { 0xA7BA, UPPER_CASE, 0xA7BB }, + { 0xA7BB, LOWER_CASE, 0xA7BA }, + { 0xA7BC, UPPER_CASE, 0xA7BD }, + { 0xA7BD, LOWER_CASE, 0xA7BC }, + { 0xA7BE, UPPER_CASE, 0xA7BF }, + { 0xA7BF, LOWER_CASE, 0xA7BE }, + { 0xA7C0, UPPER_CASE, 0xA7C1 }, + { 0xA7C1, LOWER_CASE, 0xA7C0 }, + { 0xA7C2, UPPER_CASE, 0xA7C3 }, + { 0xA7C3, LOWER_CASE, 0xA7C2 }, + { 0xA7C4, UPPER_CASE, 0xA794 }, + { 0xA7C5, UPPER_CASE, 0x282 }, + { 0xA7C6, UPPER_CASE, 0x1D8E }, + { 0xA7C7, UPPER_CASE, 0xA7C8 }, + { 0xA7C8, LOWER_CASE, 0xA7C7 }, + { 0xA7C9, UPPER_CASE, 0xA7CA }, + { 0xA7CA, LOWER_CASE, 0xA7C9 }, + { 0xA7D0, UPPER_CASE, 0xA7D1 }, + { 0xA7D1, LOWER_CASE, 0xA7D0 }, + { 0xA7D6, UPPER_CASE, 0xA7D7 }, + { 0xA7D7, LOWER_CASE, 0xA7D6 }, + { 0xA7D8, UPPER_CASE, 0xA7D9 }, + { 0xA7D9, LOWER_CASE, 0xA7D8 }, + { 0xA7F5, UPPER_CASE, 0xA7F6 }, + { 0xA7F6, LOWER_CASE, 0xA7F5 }, + { 0xAB53, LOWER_CASE, 0xA7B3 }, + { 0xAB70, LOWER_CASE, 0x13A0 }, + { 0xAB71, LOWER_CASE, 0x13A1 }, + { 0xAB72, LOWER_CASE, 0x13A2 }, + { 0xAB73, LOWER_CASE, 0x13A3 }, + { 0xAB74, LOWER_CASE, 0x13A4 }, + { 0xAB75, LOWER_CASE, 0x13A5 }, + { 0xAB76, LOWER_CASE, 0x13A6 }, + { 0xAB77, LOWER_CASE, 0x13A7 }, + { 0xAB78, LOWER_CASE, 0x13A8 }, + { 0xAB79, LOWER_CASE, 0x13A9 }, + { 0xAB7A, LOWER_CASE, 0x13AA }, + { 0xAB7B, LOWER_CASE, 0x13AB }, + { 0xAB7C, LOWER_CASE, 0x13AC }, + { 0xAB7D, LOWER_CASE, 0x13AD }, + { 0xAB7E, LOWER_CASE, 0x13AE }, + { 0xAB7F, LOWER_CASE, 0x13AF }, + { 0xAB80, LOWER_CASE, 0x13B0 }, + { 0xAB81, LOWER_CASE, 0x13B1 }, + { 0xAB82, LOWER_CASE, 0x13B2 }, + { 0xAB83, LOWER_CASE, 0x13B3 }, + { 0xAB84, LOWER_CASE, 0x13B4 }, + { 0xAB85, LOWER_CASE, 0x13B5 }, + { 0xAB86, LOWER_CASE, 0x13B6 }, + { 0xAB87, LOWER_CASE, 0x13B7 }, + { 0xAB88, LOWER_CASE, 0x13B8 }, + { 0xAB89, LOWER_CASE, 0x13B9 }, + { 0xAB8A, LOWER_CASE, 0x13BA }, + { 0xAB8B, LOWER_CASE, 0x13BB }, + { 0xAB8C, LOWER_CASE, 0x13BC }, + { 0xAB8D, LOWER_CASE, 0x13BD }, + { 0xAB8E, LOWER_CASE, 0x13BE }, + { 0xAB8F, LOWER_CASE, 0x13BF }, + { 0xAB90, LOWER_CASE, 0x13C0 }, + { 0xAB91, LOWER_CASE, 0x13C1 }, + { 0xAB92, LOWER_CASE, 0x13C2 }, + { 0xAB93, LOWER_CASE, 0x13C3 }, + { 0xAB94, LOWER_CASE, 0x13C4 }, + { 0xAB95, LOWER_CASE, 0x13C5 }, + { 0xAB96, LOWER_CASE, 0x13C6 }, + { 0xAB97, LOWER_CASE, 0x13C7 }, + { 0xAB98, LOWER_CASE, 0x13C8 }, + { 0xAB99, LOWER_CASE, 0x13C9 }, + { 0xAB9A, LOWER_CASE, 0x13CA }, + { 0xAB9B, LOWER_CASE, 0x13CB }, + { 0xAB9C, LOWER_CASE, 0x13CC }, + { 0xAB9D, LOWER_CASE, 0x13CD }, + { 0xAB9E, LOWER_CASE, 0x13CE }, + { 0xAB9F, LOWER_CASE, 0x13CF }, + { 0xABA0, LOWER_CASE, 0x13D0 }, + { 0xABA1, LOWER_CASE, 0x13D1 }, + { 0xABA2, LOWER_CASE, 0x13D2 }, + { 0xABA3, LOWER_CASE, 0x13D3 }, + { 0xABA4, LOWER_CASE, 0x13D4 }, + { 0xABA5, LOWER_CASE, 0x13D5 }, + { 0xABA6, LOWER_CASE, 0x13D6 }, + { 0xABA7, LOWER_CASE, 0x13D7 }, + { 0xABA8, LOWER_CASE, 0x13D8 }, + { 0xABA9, LOWER_CASE, 0x13D9 }, + { 0xABAA, LOWER_CASE, 0x13DA }, + { 0xABAB, LOWER_CASE, 0x13DB }, + { 0xABAC, LOWER_CASE, 0x13DC }, + { 0xABAD, LOWER_CASE, 0x13DD }, + { 0xABAE, LOWER_CASE, 0x13DE }, + { 0xABAF, LOWER_CASE, 0x13DF }, + { 0xABB0, LOWER_CASE, 0x13E0 }, + { 0xABB1, LOWER_CASE, 0x13E1 }, + { 0xABB2, LOWER_CASE, 0x13E2 }, + { 0xABB3, LOWER_CASE, 0x13E3 }, + { 0xABB4, LOWER_CASE, 0x13E4 }, + { 0xABB5, LOWER_CASE, 0x13E5 }, + { 0xABB6, LOWER_CASE, 0x13E6 }, + { 0xABB7, LOWER_CASE, 0x13E7 }, + { 0xABB8, LOWER_CASE, 0x13E8 }, + { 0xABB9, LOWER_CASE, 0x13E9 }, + { 0xABBA, LOWER_CASE, 0x13EA }, + { 0xABBB, LOWER_CASE, 0x13EB }, + { 0xABBC, LOWER_CASE, 0x13EC }, + { 0xABBD, LOWER_CASE, 0x13ED }, + { 0xABBE, LOWER_CASE, 0x13EE }, + { 0xABBF, LOWER_CASE, 0x13EF }, + { 0xFF21, UPPER_CASE, 0xFF41 }, + { 0xFF22, UPPER_CASE, 0xFF42 }, + { 0xFF23, UPPER_CASE, 0xFF43 }, + { 0xFF24, UPPER_CASE, 0xFF44 }, + { 0xFF25, UPPER_CASE, 0xFF45 }, + { 0xFF26, UPPER_CASE, 0xFF46 }, + { 0xFF27, UPPER_CASE, 0xFF47 }, + { 0xFF28, UPPER_CASE, 0xFF48 }, + { 0xFF29, UPPER_CASE, 0xFF49 }, + { 0xFF2A, UPPER_CASE, 0xFF4A }, + { 0xFF2B, UPPER_CASE, 0xFF4B }, + { 0xFF2C, UPPER_CASE, 0xFF4C }, + { 0xFF2D, UPPER_CASE, 0xFF4D }, + { 0xFF2E, UPPER_CASE, 0xFF4E }, + { 0xFF2F, UPPER_CASE, 0xFF4F }, + { 0xFF30, UPPER_CASE, 0xFF50 }, + { 0xFF31, UPPER_CASE, 0xFF51 }, + { 0xFF32, UPPER_CASE, 0xFF52 }, + { 0xFF33, UPPER_CASE, 0xFF53 }, + { 0xFF34, UPPER_CASE, 0xFF54 }, + { 0xFF35, UPPER_CASE, 0xFF55 }, + { 0xFF36, UPPER_CASE, 0xFF56 }, + { 0xFF37, UPPER_CASE, 0xFF57 }, + { 0xFF38, UPPER_CASE, 0xFF58 }, + { 0xFF39, UPPER_CASE, 0xFF59 }, + { 0xFF3A, UPPER_CASE, 0xFF5A }, + { 0xFF41, LOWER_CASE, 0xFF21 }, + { 0xFF42, LOWER_CASE, 0xFF22 }, + { 0xFF43, LOWER_CASE, 0xFF23 }, + { 0xFF44, LOWER_CASE, 0xFF24 }, + { 0xFF45, LOWER_CASE, 0xFF25 }, + { 0xFF46, LOWER_CASE, 0xFF26 }, + { 0xFF47, LOWER_CASE, 0xFF27 }, + { 0xFF48, LOWER_CASE, 0xFF28 }, + { 0xFF49, LOWER_CASE, 0xFF29 }, + { 0xFF4A, LOWER_CASE, 0xFF2A }, + { 0xFF4B, LOWER_CASE, 0xFF2B }, + { 0xFF4C, LOWER_CASE, 0xFF2C }, + { 0xFF4D, LOWER_CASE, 0xFF2D }, + { 0xFF4E, LOWER_CASE, 0xFF2E }, + { 0xFF4F, LOWER_CASE, 0xFF2F }, + { 0xFF50, LOWER_CASE, 0xFF30 }, + { 0xFF51, LOWER_CASE, 0xFF31 }, + { 0xFF52, LOWER_CASE, 0xFF32 }, + { 0xFF53, LOWER_CASE, 0xFF33 }, + { 0xFF54, LOWER_CASE, 0xFF34 }, + { 0xFF55, LOWER_CASE, 0xFF35 }, + { 0xFF56, LOWER_CASE, 0xFF36 }, + { 0xFF57, LOWER_CASE, 0xFF37 }, + { 0xFF58, LOWER_CASE, 0xFF38 }, + { 0xFF59, LOWER_CASE, 0xFF39 }, + { 0xFF5A, LOWER_CASE, 0xFF3A }, +}; + +#define UNICODE_DATA_SIZE 2359 + +static int UnicodeDataComp(const void *opposingCode, const void *elem) +{ + CHAR16_T code = ((UnicodeDataRec*)elem)->code; + + if (*((CHAR16_T*)opposingCode) < code) + { + return -1; + } + else if (*((CHAR16_T*)opposingCode) > code) + { + return 1; + } + else + { + return 0; + } +} + +const CHAR16_T minipal_toupper_invariant(const CHAR16_T code) +{ + UnicodeDataRec *record = (UnicodeDataRec *) bsearch(&code, UnicodeData, UNICODE_DATA_SIZE, + sizeof(UnicodeDataRec), UnicodeDataComp); + + if (!record || record->upperOrLower != LOWER_CASE) + return code; + + return record->opposingCode; +} + +const CHAR16_T minipal_tolower_invariant(const CHAR16_T code) +{ + UnicodeDataRec *record = (UnicodeDataRec *) bsearch(&code, UnicodeData, UNICODE_DATA_SIZE, + sizeof(UnicodeDataRec), UnicodeDataComp); + + if (!record || record->upperOrLower != UPPER_CASE) + return code; + + return record->opposingCode; +} diff --git a/src/native/minipal/utf8.h b/src/native/minipal/utf8.h index bd648f137a2bb..502f5a993723c 100644 --- a/src/native/minipal/utf8.h +++ b/src/native/minipal/utf8.h @@ -68,6 +68,22 @@ size_t minipal_convert_utf8_to_utf16(const char* source, size_t sourceLength, CH */ size_t minipal_convert_utf16_to_utf8(const CHAR16_T* source, size_t sourceLength, char* destination, size_t destinationLength, unsigned int flags); +/** + * Convert a UTF-16 character to uppercase using invariant culture. + * + * @param code The UTF-16 character to be converted. + * @return The uppercase equivalent of the character or the character itself if no conversion is necessary. + */ +const CHAR16_T minipal_toupper_invariant(const CHAR16_T code); + +/** + * Convert a UTF-16 character to lowercase using invariant culture. + * + * @param code The UTF-16 character to be converted. + * @return The lowercase equivalent of the character or the character itself if no conversion is necessary. + */ +const CHAR16_T minipal_tolower_invariant(const CHAR16_T code); + #ifdef __cplusplus } #endif // __cplusplus From 08bba19fa708f468cefe52421c6e26a05aa5b916 Mon Sep 17 00:00:00 2001 From: Adeel <3840695+am11@users.noreply.github.com> Date: Mon, 13 May 2024 00:43:12 +0300 Subject: [PATCH 02/11] Fix linux build --- src/coreclr/pal/inc/pal.h | 1 + src/native/minipal/UnicodeDataGenerator/unicodedata.cs | 1 + src/native/minipal/unicodedata.c | 1 + 3 files changed, 3 insertions(+) diff --git a/src/coreclr/pal/inc/pal.h b/src/coreclr/pal/inc/pal.h index 15b435154244b..de839864b921a 100644 --- a/src/coreclr/pal/inc/pal.h +++ b/src/coreclr/pal/inc/pal.h @@ -48,6 +48,7 @@ Module Name: #include #include #include +#include #ifdef __cplusplus extern "C++" diff --git a/src/native/minipal/UnicodeDataGenerator/unicodedata.cs b/src/native/minipal/UnicodeDataGenerator/unicodedata.cs index 7c3244ccda971..32148d5593a12 100644 --- a/src/native/minipal/UnicodeDataGenerator/unicodedata.cs +++ b/src/native/minipal/UnicodeDataGenerator/unicodedata.cs @@ -17,6 +17,7 @@ // #include +#include typedef struct { diff --git a/src/native/minipal/unicodedata.c b/src/native/minipal/unicodedata.c index 4d624cc8ca04f..2b3f19a95d9ed 100644 --- a/src/native/minipal/unicodedata.c +++ b/src/native/minipal/unicodedata.c @@ -8,6 +8,7 @@ // #include +#include typedef struct { From 7bdfdebc0f3567e903eaf02eecec40807db0ba23 Mon Sep 17 00:00:00 2001 From: Adeel <3840695+am11@users.noreply.github.com> Date: Mon, 13 May 2024 00:50:13 +0300 Subject: [PATCH 03/11] Revert wctype.h --- src/coreclr/pal/src/misc/fmtmessage.cpp | 2 +- src/coreclr/pal/tests/palsuite/common/palsuite.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/coreclr/pal/src/misc/fmtmessage.cpp b/src/coreclr/pal/src/misc/fmtmessage.cpp index 621db45e21b31..0598914b06cb5 100644 --- a/src/coreclr/pal/src/misc/fmtmessage.cpp +++ b/src/coreclr/pal/src/misc/fmtmessage.cpp @@ -30,6 +30,7 @@ Revision History: #include #include #include +#include SET_DEFAULT_DEBUG_CHANNEL(MISC); @@ -334,7 +335,6 @@ FormatMessageW( goto exit; } - #define iswdigit(c) (c >= L'0' && c <= L'9') /* Process the string. */ lpReturnString = lpWorkingString; diff --git a/src/coreclr/pal/tests/palsuite/common/palsuite.h b/src/coreclr/pal/tests/palsuite/common/palsuite.h index d92aa8b8ed08d..9494daed71beb 100644 --- a/src/coreclr/pal/tests/palsuite/common/palsuite.h +++ b/src/coreclr/pal/tests/palsuite/common/palsuite.h @@ -26,7 +26,6 @@ typedef unsigned short char16_t; #include #include #include -#include #define PALTEST(testfunc, testname) \ int __cdecl testfunc(int argc, char* argv[]); \ From 77bf2a0d769baa30adc62208a1a17f9aaa9e6a2e Mon Sep 17 00:00:00 2001 From: Adeel <3840695+am11@users.noreply.github.com> Date: Mon, 13 May 2024 09:16:20 +0300 Subject: [PATCH 04/11] Shave off a few bytes with 'static const' --- src/native/minipal/UnicodeDataGenerator/unicodedata.cs | 2 +- src/native/minipal/unicodedata.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/native/minipal/UnicodeDataGenerator/unicodedata.cs b/src/native/minipal/UnicodeDataGenerator/unicodedata.cs index 32148d5593a12..4b67a315ff098 100644 --- a/src/native/minipal/UnicodeDataGenerator/unicodedata.cs +++ b/src/native/minipal/UnicodeDataGenerator/unicodedata.cs @@ -29,7 +29,7 @@ typedef struct #define UPPER_CASE 0 #define LOWER_CASE 1 -const UnicodeDataRec UnicodeData[] = +static const UnicodeDataRec UnicodeData[] = {"); string sourceFileName = args[0]; diff --git a/src/native/minipal/unicodedata.c b/src/native/minipal/unicodedata.c index 2b3f19a95d9ed..6d4abd98f0dc8 100644 --- a/src/native/minipal/unicodedata.c +++ b/src/native/minipal/unicodedata.c @@ -20,7 +20,7 @@ typedef struct #define UPPER_CASE 0 #define LOWER_CASE 1 -const UnicodeDataRec UnicodeData[] = +static const UnicodeDataRec UnicodeData[] = { { 0x41, UPPER_CASE, 0x61 }, { 0x42, UPPER_CASE, 0x62 }, From d84d175ed2b6fd92b1a634669895f9c7323f2d40 Mon Sep 17 00:00:00 2001 From: Adeel <3840695+am11@users.noreply.github.com> Date: Mon, 13 May 2024 18:10:31 +0300 Subject: [PATCH 05/11] Address CR feedback --- .../UnicodeDataGenerator/{unicodedata.cs => Program.cs} | 4 ++-- src/native/minipal/unicodedata.c | 4 ++-- src/native/minipal/utf8.h | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) rename src/native/minipal/UnicodeDataGenerator/{unicodedata.cs => Program.cs} (95%) diff --git a/src/native/minipal/UnicodeDataGenerator/unicodedata.cs b/src/native/minipal/UnicodeDataGenerator/Program.cs similarity index 95% rename from src/native/minipal/UnicodeDataGenerator/unicodedata.cs rename to src/native/minipal/UnicodeDataGenerator/Program.cs index 4b67a315ff098..4dff0d15a71ee 100644 --- a/src/native/minipal/UnicodeDataGenerator/unicodedata.cs +++ b/src/native/minipal/UnicodeDataGenerator/Program.cs @@ -89,7 +89,7 @@ static int UnicodeDataComp(const void *opposingCode, const void *elem) } } -const CHAR16_T minipal_toupper_invariant(const CHAR16_T code) +CHAR16_T minipal_toupper_invariant(CHAR16_T code) { UnicodeDataRec *record = (UnicodeDataRec *) bsearch(&code, UnicodeData, UNICODE_DATA_SIZE, sizeof(UnicodeDataRec), UnicodeDataComp); @@ -100,7 +100,7 @@ const CHAR16_T minipal_toupper_invariant(const CHAR16_T code) return record->opposingCode; } -const CHAR16_T minipal_tolower_invariant(const CHAR16_T code) +CHAR16_T minipal_tolower_invariant(CHAR16_T code) { UnicodeDataRec *record = (UnicodeDataRec *) bsearch(&code, UnicodeData, UNICODE_DATA_SIZE, sizeof(UnicodeDataRec), UnicodeDataComp); diff --git a/src/native/minipal/unicodedata.c b/src/native/minipal/unicodedata.c index 6d4abd98f0dc8..ec058bd6dc6a1 100644 --- a/src/native/minipal/unicodedata.c +++ b/src/native/minipal/unicodedata.c @@ -2403,7 +2403,7 @@ static int UnicodeDataComp(const void *opposingCode, const void *elem) } } -const CHAR16_T minipal_toupper_invariant(const CHAR16_T code) +CHAR16_T minipal_toupper_invariant(CHAR16_T code) { UnicodeDataRec *record = (UnicodeDataRec *) bsearch(&code, UnicodeData, UNICODE_DATA_SIZE, sizeof(UnicodeDataRec), UnicodeDataComp); @@ -2414,7 +2414,7 @@ const CHAR16_T minipal_toupper_invariant(const CHAR16_T code) return record->opposingCode; } -const CHAR16_T minipal_tolower_invariant(const CHAR16_T code) +CHAR16_T minipal_tolower_invariant(CHAR16_T code) { UnicodeDataRec *record = (UnicodeDataRec *) bsearch(&code, UnicodeData, UNICODE_DATA_SIZE, sizeof(UnicodeDataRec), UnicodeDataComp); diff --git a/src/native/minipal/utf8.h b/src/native/minipal/utf8.h index 502f5a993723c..0d770b9b54f2a 100644 --- a/src/native/minipal/utf8.h +++ b/src/native/minipal/utf8.h @@ -74,7 +74,7 @@ size_t minipal_convert_utf16_to_utf8(const CHAR16_T* source, size_t sourceLength * @param code The UTF-16 character to be converted. * @return The uppercase equivalent of the character or the character itself if no conversion is necessary. */ -const CHAR16_T minipal_toupper_invariant(const CHAR16_T code); +CHAR16_T minipal_toupper_invariant(CHAR16_T code); /** * Convert a UTF-16 character to lowercase using invariant culture. @@ -82,7 +82,7 @@ const CHAR16_T minipal_toupper_invariant(const CHAR16_T code); * @param code The UTF-16 character to be converted. * @return The lowercase equivalent of the character or the character itself if no conversion is necessary. */ -const CHAR16_T minipal_tolower_invariant(const CHAR16_T code); +CHAR16_T minipal_tolower_invariant(CHAR16_T code); #ifdef __cplusplus } From cac13eae39968db1d805faf582ceb65b5e1744cf Mon Sep 17 00:00:00 2001 From: Adeel Mujahid <3840695+am11@users.noreply.github.com> Date: Mon, 13 May 2024 21:26:14 +0300 Subject: [PATCH 06/11] Add a separate header --- src/coreclr/pal/src/safecrt/wcslwr_s.cpp | 2 +- src/coreclr/utilcode/sstring.cpp | 2 +- src/native/minipal/strings.h | 34 ++++++++++++++++++++++++ src/native/minipal/unicodedata.c | 3 +-- src/native/minipal/utf8.h | 16 ----------- 5 files changed, 37 insertions(+), 20 deletions(-) create mode 100644 src/native/minipal/strings.h diff --git a/src/coreclr/pal/src/safecrt/wcslwr_s.cpp b/src/coreclr/pal/src/safecrt/wcslwr_s.cpp index 11c426226e632..85936d840e685 100644 --- a/src/coreclr/pal/src/safecrt/wcslwr_s.cpp +++ b/src/coreclr/pal/src/safecrt/wcslwr_s.cpp @@ -14,7 +14,7 @@ #include #include #include -#include +#include #include "internal_securecrt.h" #include "mbusafecrt_internal.h" diff --git a/src/coreclr/utilcode/sstring.cpp b/src/coreclr/utilcode/sstring.cpp index 014ab6fc155f9..1c7cab4c2c2bc 100644 --- a/src/coreclr/utilcode/sstring.cpp +++ b/src/coreclr/utilcode/sstring.cpp @@ -10,7 +10,7 @@ #include "sstring.h" #include "ex.h" #include "holder.h" -#include +#include #if defined(_MSC_VER) #pragma inline_depth (25) diff --git a/src/native/minipal/strings.h b/src/native/minipal/strings.h new file mode 100644 index 0000000000000..85d9c6097d97c --- /dev/null +++ b/src/native/minipal/strings.h @@ -0,0 +1,34 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +#ifndef HAVE_MINIPAL_STRING_H +#define HAVE_MINIPAL_STRING_H + +#include + +#ifdef __cplusplus +extern "C" +{ +#endif // __cplusplus + +/** + * Convert a UTF-16 character to uppercase using invariant culture. + * + * @param code The UTF-16 character to be converted. + * @return The uppercase equivalent of the character or the character itself if no conversion is necessary. + */ +CHAR16_T minipal_toupper_invariant(CHAR16_T code); + +/** + * Convert a UTF-16 character to lowercase using invariant culture. + * + * @param code The UTF-16 character to be converted. + * @return The lowercase equivalent of the character or the character itself if no conversion is necessary. + */ +CHAR16_T minipal_tolower_invariant(CHAR16_T code); + +#ifdef __cplusplus +} +#endif // __cplusplus + +#endif /* HAVE_MINIPAL_STRING_H */ diff --git a/src/native/minipal/unicodedata.c b/src/native/minipal/unicodedata.c index ec058bd6dc6a1..09d8f15de4126 100644 --- a/src/native/minipal/unicodedata.c +++ b/src/native/minipal/unicodedata.c @@ -7,8 +7,7 @@ // IF YOU NEED TO UPDATE UNICODE VERSION FOLLOW THE GUIDE AT src/libraries/System.Private.CoreLib/Tools/GenUnicodeProp/Updating-Unicode-Versions.md // -#include -#include +#include typedef struct { diff --git a/src/native/minipal/utf8.h b/src/native/minipal/utf8.h index 0d770b9b54f2a..bd648f137a2bb 100644 --- a/src/native/minipal/utf8.h +++ b/src/native/minipal/utf8.h @@ -68,22 +68,6 @@ size_t minipal_convert_utf8_to_utf16(const char* source, size_t sourceLength, CH */ size_t minipal_convert_utf16_to_utf8(const CHAR16_T* source, size_t sourceLength, char* destination, size_t destinationLength, unsigned int flags); -/** - * Convert a UTF-16 character to uppercase using invariant culture. - * - * @param code The UTF-16 character to be converted. - * @return The uppercase equivalent of the character or the character itself if no conversion is necessary. - */ -CHAR16_T minipal_toupper_invariant(CHAR16_T code); - -/** - * Convert a UTF-16 character to lowercase using invariant culture. - * - * @param code The UTF-16 character to be converted. - * @return The lowercase equivalent of the character or the character itself if no conversion is necessary. - */ -CHAR16_T minipal_tolower_invariant(CHAR16_T code); - #ifdef __cplusplus } #endif // __cplusplus From e649c7b700697227fe89919c7566b268a65186c6 Mon Sep 17 00:00:00 2001 From: Adeel <3840695+am11@users.noreply.github.com> Date: Wed, 15 May 2024 10:54:04 +0300 Subject: [PATCH 07/11] Regenerate unicodedata.c --- src/native/minipal/UnicodeDataGenerator/Program.cs | 2 +- src/native/minipal/unicodedata.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/native/minipal/UnicodeDataGenerator/Program.cs b/src/native/minipal/UnicodeDataGenerator/Program.cs index 4dff0d15a71ee..f4611ef26454f 100644 --- a/src/native/minipal/UnicodeDataGenerator/Program.cs +++ b/src/native/minipal/UnicodeDataGenerator/Program.cs @@ -16,7 +16,7 @@ // IF YOU NEED TO UPDATE UNICODE VERSION FOLLOW THE GUIDE AT src/libraries/System.Private.CoreLib/Tools/GenUnicodeProp/Updating-Unicode-Versions.md // -#include +#include #include typedef struct diff --git a/src/native/minipal/unicodedata.c b/src/native/minipal/unicodedata.c index 09d8f15de4126..18c1d02139723 100644 --- a/src/native/minipal/unicodedata.c +++ b/src/native/minipal/unicodedata.c @@ -8,6 +8,7 @@ // #include +#include typedef struct { From abacf5511c44a77f30d651d646aa30c89e5e30db Mon Sep 17 00:00:00 2001 From: Adeel <3840695+am11@users.noreply.github.com> Date: Wed, 15 May 2024 18:39:51 +0300 Subject: [PATCH 08/11] Address CR feedback --- src/native/minipal/UnicodeDataGenerator/Program.cs | 1 + src/native/minipal/strings.h | 8 ++++---- src/native/minipal/types.h | 6 ++++++ src/native/minipal/unicodedata.c | 1 + src/native/minipal/utf8.h | 7 +------ 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/native/minipal/UnicodeDataGenerator/Program.cs b/src/native/minipal/UnicodeDataGenerator/Program.cs index f4611ef26454f..370be5fe104e7 100644 --- a/src/native/minipal/UnicodeDataGenerator/Program.cs +++ b/src/native/minipal/UnicodeDataGenerator/Program.cs @@ -18,6 +18,7 @@ #include #include +#include typedef struct { diff --git a/src/native/minipal/strings.h b/src/native/minipal/strings.h index 85d9c6097d97c..250dada9f539c 100644 --- a/src/native/minipal/strings.h +++ b/src/native/minipal/strings.h @@ -1,10 +1,10 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#ifndef HAVE_MINIPAL_STRING_H -#define HAVE_MINIPAL_STRING_H +#ifndef HAVE_MINIPAL_STRINGS_H +#define HAVE_MINIPAL_STRINGS_H -#include +#include #ifdef __cplusplus extern "C" @@ -31,4 +31,4 @@ CHAR16_T minipal_tolower_invariant(CHAR16_T code); } #endif // __cplusplus -#endif /* HAVE_MINIPAL_STRING_H */ +#endif /* HAVE_MINIPAL_STRINGS_H */ diff --git a/src/native/minipal/types.h b/src/native/minipal/types.h index aa834ee1abee0..668156689ba00 100644 --- a/src/native/minipal/types.h +++ b/src/native/minipal/types.h @@ -22,4 +22,10 @@ #define PRIu64 FORMAT_PREFIX "lu" #endif +#ifdef TARGET_WINDOWS +typedef wchar_t CHAR16_T; +#else +typedef unsigned short CHAR16_T; +#endif + #endif // HAVE_MINIPAL_TYPES_H diff --git a/src/native/minipal/unicodedata.c b/src/native/minipal/unicodedata.c index 18c1d02139723..f2cf80138b9a8 100644 --- a/src/native/minipal/unicodedata.c +++ b/src/native/minipal/unicodedata.c @@ -9,6 +9,7 @@ #include #include +#include typedef struct { diff --git a/src/native/minipal/utf8.h b/src/native/minipal/utf8.h index bd648f137a2bb..bd6d8d261757f 100644 --- a/src/native/minipal/utf8.h +++ b/src/native/minipal/utf8.h @@ -5,6 +5,7 @@ #define HAVE_MINIPAL_UTF8_H #include +#include #include #include @@ -18,12 +19,6 @@ extern "C" { #endif // __cplusplus -#ifdef TARGET_WINDOWS -typedef wchar_t CHAR16_T; -#else -typedef unsigned short CHAR16_T; -#endif - /** * Get length of destination needed for UTF-8 to UTF-16 (UCS-2) conversion * From 0c7a37771cccbf8134654c57ef7d02e46560c3a6 Mon Sep 17 00:00:00 2001 From: Adeel Mujahid <3840695+am11@users.noreply.github.com> Date: Wed, 15 May 2024 21:06:47 +0300 Subject: [PATCH 09/11] Fix cl.exe /TC C mode (/TC) requires explicit windows.h as opposed to C++ mode (/TP). --- src/native/minipal/types.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/native/minipal/types.h b/src/native/minipal/types.h index 668156689ba00..5ffe75d961e31 100644 --- a/src/native/minipal/types.h +++ b/src/native/minipal/types.h @@ -4,6 +4,10 @@ #ifndef HAVE_MINIPAL_TYPES_H #define HAVE_MINIPAL_TYPES_H +#ifdef TARGET_WINDOWS +#include +#endif + #if defined(TARGET_32BIT) || defined(TARGET_OSX) || defined(TARGET_WINDOWS) #define FORMAT_PREFIX "l" #else From 6662320b27f93dcc1775488fe84e8adbc54e58a9 Mon Sep 17 00:00:00 2001 From: Adeel Mujahid <3840695+am11@users.noreply.github.com> Date: Wed, 15 May 2024 21:57:19 +0300 Subject: [PATCH 10/11] Update src/native/minipal/types.h --- src/native/minipal/types.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/native/minipal/types.h b/src/native/minipal/types.h index 5ffe75d961e31..7265c5248bdfa 100644 --- a/src/native/minipal/types.h +++ b/src/native/minipal/types.h @@ -5,7 +5,7 @@ #define HAVE_MINIPAL_TYPES_H #ifdef TARGET_WINDOWS -#include +#include #endif #if defined(TARGET_32BIT) || defined(TARGET_OSX) || defined(TARGET_WINDOWS) From 17d42ce594dc9cdccc807c09282f32bc987e7f38 Mon Sep 17 00:00:00 2001 From: Adeel <3840695+am11@users.noreply.github.com> Date: Thu, 16 May 2024 00:13:50 +0300 Subject: [PATCH 11/11] Cleanups --- src/native/minipal/UnicodeDataGenerator/Program.cs | 1 - src/native/minipal/types.h | 2 -- src/native/minipal/unicodedata.c | 1 - src/native/minipal/utf8.h | 1 - 4 files changed, 5 deletions(-) diff --git a/src/native/minipal/UnicodeDataGenerator/Program.cs b/src/native/minipal/UnicodeDataGenerator/Program.cs index 370be5fe104e7..f4611ef26454f 100644 --- a/src/native/minipal/UnicodeDataGenerator/Program.cs +++ b/src/native/minipal/UnicodeDataGenerator/Program.cs @@ -18,7 +18,6 @@ #include #include -#include typedef struct { diff --git a/src/native/minipal/types.h b/src/native/minipal/types.h index 7265c5248bdfa..997e9db21c97d 100644 --- a/src/native/minipal/types.h +++ b/src/native/minipal/types.h @@ -4,9 +4,7 @@ #ifndef HAVE_MINIPAL_TYPES_H #define HAVE_MINIPAL_TYPES_H -#ifdef TARGET_WINDOWS #include -#endif #if defined(TARGET_32BIT) || defined(TARGET_OSX) || defined(TARGET_WINDOWS) #define FORMAT_PREFIX "l" diff --git a/src/native/minipal/unicodedata.c b/src/native/minipal/unicodedata.c index f2cf80138b9a8..18c1d02139723 100644 --- a/src/native/minipal/unicodedata.c +++ b/src/native/minipal/unicodedata.c @@ -9,7 +9,6 @@ #include #include -#include typedef struct { diff --git a/src/native/minipal/utf8.h b/src/native/minipal/utf8.h index bd6d8d261757f..009f0f0c1712a 100644 --- a/src/native/minipal/utf8.h +++ b/src/native/minipal/utf8.h @@ -6,7 +6,6 @@ #include #include -#include #include #define MINIPAL_MB_NO_REPLACE_INVALID_CHARS 0x00000008